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 }