jbsrc/lib/src/extras/jb-endianness.c (1287B) - raw
1 /* 2 * JB, the Jean-Yves Lefort's Build System 3 * Copyright (C) 2008 Jean-Yves Lefort <jylefort@brutele.be> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 */ 19 20 #include "jb-util.h" 21 #include "jb-compile-options.h" 22 23 static gboolean 24 is_bigendian (void) 25 { 26 int i = 1; 27 28 return ((char *) &i)[sizeof(int) - 1] == 1; 29 } 30 31 void 32 jb_endianness_check (void) 33 { 34 jb_message_checking("the host CPU endianness"); 35 if (is_bigendian()) 36 { 37 jb_message_result_string("big-endian"); 38 jb_compile_options_add_cppflags(jb_compile_options, "-DWORDS_BIGENDIAN"); 39 } 40 else 41 jb_message_result_string("little-endian"); 42 }