From 47b2ca9bcbd82af0c5363018723c869197d211db Mon Sep 17 00:00:00 2001 From: kichik Date: Thu, 15 Dec 2005 18:53:38 +0000 Subject: [PATCH] fixed bug #1370179 - endianness problem with FIX_ENDIAN_INT32_INPLACE git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4444 212acab6-be3b-0410-9dea-997c60f758d6 --- SCons/Config/gnu | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/SCons/Config/gnu b/SCons/Config/gnu index 3f31138f..99b9f12c 100644 --- a/SCons/Config/gnu +++ b/SCons/Config/gnu @@ -210,6 +210,36 @@ if conf.CheckPThread(): makensis_env.Append(LINKFLAGS = '-pthread') conf.Finish() +# +# GCC doesn't define __BIG_ENDIAN__ or __LITTLE_ENDIAN__, so manually check +# for the endianess and define __BIG_ENDIAN__ if needed. +# + +def check_big_endian(ctx): + ctx.Message('Checking for __BIG_ENDIAN__... ') + + test = """ + int main() { + #ifdef __BIG_ENDIAN__ + // already defined, no need to define again + return 0; + #else + int i = 1; + char *c = (char *) &i; + return c[0] != 1; + #endif + } + """ + + result = not ctx.TryRun(test, '.c')[0] + ctx.Result(result) + return result + +conf = defenv.Configure(custom_tests = { 'CheckBigEndian' : check_big_endian }) +if conf.CheckBigEndian(): + makensis_env.Append(CPPFLAGS = ['__BIG_ENDIAN__']) +conf.Finish() + ### return Return('stub_env makensis_env plugin_env util_env cp_util_env')