023-build-take-compiler-options-from-environment.patch (5510B)
1 From 5f9513eb341d520d10c48f8ba2bd145063405fdd Mon Sep 17 00:00:00 2001 2 From: Hauke Mehrtens <hauke@hauke-m.de> 3 Date: Sat, 10 Dec 2016 18:08:05 +0100 4 Subject: [PATCH 23/23] build: take compiler options from environment 5 6 This makes it possible to compile IoTivity with custom compiler 7 options. This way someone can use optimized compiler settings for the 8 target CPU. I want to use this in OpenWrt / LEDE to build specific 9 IoTivity binaries for each CPU architecture, there the build system 10 provides the matching compiler options. 11 12 Change-Id: I86772f73b81c41d7e96e51b434fd9e3b4992753a 13 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> 14 --- 15 build_common/SConscript | 25 +++++++++++++++++++++ 16 build_common/linux/SConscript | 27 ++++++++++++----------- 17 resource/csdk/connectivity/build/linux/SConscript | 27 ++++++++++++----------- 18 3 files changed, 53 insertions(+), 26 deletions(-) 19 20 --- a/build_common/SConscript 21 +++ b/build_common/SConscript 22 @@ -120,6 +120,7 @@ help_vars.Add(PathVariable('ANDROID_NDK' 23 help_vars.Add(PathVariable('ANDROID_HOME', 'Android SDK path', None, PathVariable.PathAccept)) 24 help_vars.Add(PathVariable('ANDROID_GRADLE', 'Gradle binary file', None, PathVariable.PathIsFile)) 25 help_vars.Add(EnumVariable('WITH_UPSTREAM_LIBCOAP', 'Use latest stable version of LibCoAP downloaded from github', default_with_upstream_libcoap, allowed_values=('0','1'))) 26 +help_vars.Add(BoolVariable('WITH_ENV', 'Use compiler options from environment', False)) 27 28 AddOption('--prefix', 29 dest='prefix', 30 @@ -153,6 +154,30 @@ else: 31 ) 32 Help(help_vars.GenerateHelpText(env)) 33 34 +if env.get('WITH_ENV'): 35 + env['ENV'] = os.environ 36 + if 'CC' in os.environ: 37 + env['CC'] = Split(os.environ['CC']) 38 + print "using CC from environment: %s" % env['CC'] 39 + if 'CXX' in os.environ: 40 + env['CXX'] = Split(os.environ['CXX']) 41 + print "using CXX from environment: %s" % env['CXX'] 42 + if 'CFLAGS' in os.environ: 43 + env['CFLAGS'] = Split(os.environ['CFLAGS']) 44 + print "using CFLAGS from environment: %s" % env['CFLAGS'] 45 + if 'CXXFLAGS' in os.environ: 46 + env['CXXFLAGS'] = Split(os.environ['CXXFLAGS']) 47 + print "using CXXFLAGS from environment: %s" % env['CXXFLAGS'] 48 + if 'CCFLAGS' in os.environ: 49 + env['CCFLAGS'] = Split(os.environ['CCFLAGS']) 50 + print "using CCFLAGS from environment: %s" % env['CCFLAGS'] 51 + if 'CPPFLAGS' in os.environ: 52 + env['CPPFLAGS'] = Split(os.environ['CPPFLAGS']) 53 + print "using CPPFLAGS from environment: %s" % env['CPPFLAGS'] 54 + if 'LDFLAGS' in os.environ: 55 + env['LINKFLAGS'] = Split(os.environ['LDFLAGS']) 56 + print "using LDFLAGS/LINKFLAGS from environment: %s" % env['LINKFLAGS'] 57 + 58 tc_set_msg = ''' 59 ************************************ Warning ********************************** 60 * Enviornment variable TC_PREFIX/TC_PATH is set. It will change the default * 61 --- a/build_common/linux/SConscript 62 +++ b/build_common/linux/SConscript 63 @@ -23,16 +23,17 @@ env.AppendUnique(CCFLAGS = ['-Wall', '-W 64 env.AppendUnique(LIBS = ['dl', 'pthread', 'uuid']) 65 66 # Set arch flags that match best TARGET_ARCH variable 67 -target_arch = env.get('TARGET_ARCH') 68 -if target_arch in ['x86']: 69 - env.AppendUnique(CCFLAGS = ['-m32']) 70 - env.AppendUnique(LINKFLAGS = ['-m32']) 71 -elif target_arch in ['x86_64']: 72 - env.AppendUnique(CCFLAGS = ['-m64']) 73 - env.AppendUnique(LINKFLAGS = ['-m64']) 74 -elif target_arch in ['arm']: 75 - env.AppendUnique(CPPFLAGS = ['-march=armv5te']) 76 -elif target_arch in ['arm-v7a', 'armeabi-v7a']: 77 - env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) 78 -elif target_arch.find('arm64') > 0: 79 - env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) 80 +if not env.get('WITH_ENV'): 81 + target_arch = env.get('TARGET_ARCH') 82 + if target_arch in ['x86']: 83 + env.AppendUnique(CCFLAGS = ['-m32']) 84 + env.AppendUnique(LINKFLAGS = ['-m32']) 85 + elif target_arch in ['x86_64']: 86 + env.AppendUnique(CCFLAGS = ['-m64']) 87 + env.AppendUnique(LINKFLAGS = ['-m64']) 88 + elif target_arch in ['arm']: 89 + env.AppendUnique(CPPFLAGS = ['-march=armv5te']) 90 + elif target_arch in ['arm-v7a', 'armeabi-v7a']: 91 + env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) 92 + elif target_arch.find('arm64') > 0: 93 + env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) 94 --- a/resource/csdk/connectivity/build/linux/SConscript 95 +++ b/resource/csdk/connectivity/build/linux/SConscript 96 @@ -22,16 +22,17 @@ env.AppendUnique(CCFLAGS = ['-Wall', '-f 97 env.AppendUnique(LIBS = ['dl', 'pthread']) 98 99 # Set arch flags 100 -target_arch = env.get('TARGET_ARCH') 101 -if target_arch in ['x86']: 102 - env.AppendUnique(CCFLAGS = ['-m32']) 103 - env.AppendUnique(LINKFLAGS = ['-m32']) 104 -elif target_arch in ['x86_64']: 105 - env.AppendUnique(CCFLAGS = ['-m64']) 106 - env.AppendUnique(LINKFLAGS = ['-m64']) 107 -elif target_arch in ['arm']: 108 - env.AppendUnique(CPPFLAGS = ['-march=armv5te']) 109 -elif target_arch in ['arm-v7a', 'armeabi-v7a']: 110 - env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) 111 -elif target_arch.find('arm64') > 0: 112 - env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) 113 +if not env.get('WITH_ENV'): 114 + target_arch = env.get('TARGET_ARCH') 115 + if target_arch in ['x86']: 116 + env.AppendUnique(CCFLAGS = ['-m32']) 117 + env.AppendUnique(LINKFLAGS = ['-m32']) 118 + elif target_arch in ['x86_64']: 119 + env.AppendUnique(CCFLAGS = ['-m64']) 120 + env.AppendUnique(LINKFLAGS = ['-m64']) 121 + elif target_arch in ['arm']: 122 + env.AppendUnique(CPPFLAGS = ['-march=armv5te']) 123 + elif target_arch in ['arm-v7a', 'armeabi-v7a']: 124 + env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) 125 + elif target_arch.find('arm64') > 0: 126 + env.AppendUnique(CPPFLAGS = ['-march=armv8-a'])