From 5f9513eb341d520d10c48f8ba2bd145063405fdd Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sat, 10 Dec 2016 18:08:05 +0100 Subject: [PATCH 23/23] build: take compiler options from environment This makes it possible to compile IoTivity with custom compiler options. This way someone can use optimized compiler settings for the target CPU. I want to use this in OpenWrt / LEDE to build specific IoTivity binaries for each CPU architecture, there the build system provides the matching compiler options. Change-Id: I86772f73b81c41d7e96e51b434fd9e3b4992753a Signed-off-by: Hauke Mehrtens --- build_common/SConscript | 25 +++++++++++++++++++++ build_common/linux/SConscript | 27 ++++++++++++----------- resource/csdk/connectivity/build/linux/SConscript | 27 ++++++++++++----------- 3 files changed, 53 insertions(+), 26 deletions(-) --- a/build_common/SConscript +++ b/build_common/SConscript @@ -120,6 +120,7 @@ help_vars.Add(PathVariable('ANDROID_NDK' help_vars.Add(PathVariable('ANDROID_HOME', 'Android SDK path', None, PathVariable.PathAccept)) help_vars.Add(PathVariable('ANDROID_GRADLE', 'Gradle binary file', None, PathVariable.PathIsFile)) help_vars.Add(EnumVariable('WITH_UPSTREAM_LIBCOAP', 'Use latest stable version of LibCoAP downloaded from github', default_with_upstream_libcoap, allowed_values=('0','1'))) +help_vars.Add(BoolVariable('WITH_ENV', 'Use compiler options from environment', False)) AddOption('--prefix', dest='prefix', @@ -153,6 +154,30 @@ else: ) Help(help_vars.GenerateHelpText(env)) +if env.get('WITH_ENV'): + env['ENV'] = os.environ + if 'CC' in os.environ: + env['CC'] = Split(os.environ['CC']) + print "using CC from environment: %s" % env['CC'] + if 'CXX' in os.environ: + env['CXX'] = Split(os.environ['CXX']) + print "using CXX from environment: %s" % env['CXX'] + if 'CFLAGS' in os.environ: + env['CFLAGS'] = Split(os.environ['CFLAGS']) + print "using CFLAGS from environment: %s" % env['CFLAGS'] + if 'CXXFLAGS' in os.environ: + env['CXXFLAGS'] = Split(os.environ['CXXFLAGS']) + print "using CXXFLAGS from environment: %s" % env['CXXFLAGS'] + if 'CCFLAGS' in os.environ: + env['CCFLAGS'] = Split(os.environ['CCFLAGS']) + print "using CCFLAGS from environment: %s" % env['CCFLAGS'] + if 'CPPFLAGS' in os.environ: + env['CPPFLAGS'] = Split(os.environ['CPPFLAGS']) + print "using CPPFLAGS from environment: %s" % env['CPPFLAGS'] + if 'LDFLAGS' in os.environ: + env['LINKFLAGS'] = Split(os.environ['LDFLAGS']) + print "using LDFLAGS/LINKFLAGS from environment: %s" % env['LINKFLAGS'] + tc_set_msg = ''' ************************************ Warning ********************************** * Enviornment variable TC_PREFIX/TC_PATH is set. It will change the default * --- a/build_common/linux/SConscript +++ b/build_common/linux/SConscript @@ -23,16 +23,17 @@ env.AppendUnique(CCFLAGS = ['-Wall', '-W env.AppendUnique(LIBS = ['dl', 'pthread', 'uuid']) # Set arch flags that match best TARGET_ARCH variable -target_arch = env.get('TARGET_ARCH') -if target_arch in ['x86']: - env.AppendUnique(CCFLAGS = ['-m32']) - env.AppendUnique(LINKFLAGS = ['-m32']) -elif target_arch in ['x86_64']: - env.AppendUnique(CCFLAGS = ['-m64']) - env.AppendUnique(LINKFLAGS = ['-m64']) -elif target_arch in ['arm']: - env.AppendUnique(CPPFLAGS = ['-march=armv5te']) -elif target_arch in ['arm-v7a', 'armeabi-v7a']: - env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) -elif target_arch.find('arm64') > 0: - env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) +if not env.get('WITH_ENV'): + target_arch = env.get('TARGET_ARCH') + if target_arch in ['x86']: + env.AppendUnique(CCFLAGS = ['-m32']) + env.AppendUnique(LINKFLAGS = ['-m32']) + elif target_arch in ['x86_64']: + env.AppendUnique(CCFLAGS = ['-m64']) + env.AppendUnique(LINKFLAGS = ['-m64']) + elif target_arch in ['arm']: + env.AppendUnique(CPPFLAGS = ['-march=armv5te']) + elif target_arch in ['arm-v7a', 'armeabi-v7a']: + env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) + elif target_arch.find('arm64') > 0: + env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) --- a/resource/csdk/connectivity/build/linux/SConscript +++ b/resource/csdk/connectivity/build/linux/SConscript @@ -22,16 +22,17 @@ env.AppendUnique(CCFLAGS = ['-Wall', '-f env.AppendUnique(LIBS = ['dl', 'pthread']) # Set arch flags -target_arch = env.get('TARGET_ARCH') -if target_arch in ['x86']: - env.AppendUnique(CCFLAGS = ['-m32']) - env.AppendUnique(LINKFLAGS = ['-m32']) -elif target_arch in ['x86_64']: - env.AppendUnique(CCFLAGS = ['-m64']) - env.AppendUnique(LINKFLAGS = ['-m64']) -elif target_arch in ['arm']: - env.AppendUnique(CPPFLAGS = ['-march=armv5te']) -elif target_arch in ['arm-v7a', 'armeabi-v7a']: - env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) -elif target_arch.find('arm64') > 0: - env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) +if not env.get('WITH_ENV'): + target_arch = env.get('TARGET_ARCH') + if target_arch in ['x86']: + env.AppendUnique(CCFLAGS = ['-m32']) + env.AppendUnique(LINKFLAGS = ['-m32']) + elif target_arch in ['x86_64']: + env.AppendUnique(CCFLAGS = ['-m64']) + env.AppendUnique(LINKFLAGS = ['-m64']) + elif target_arch in ['arm']: + env.AppendUnique(CPPFLAGS = ['-march=armv5te']) + elif target_arch in ['arm-v7a', 'armeabi-v7a']: + env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) + elif target_arch.find('arm64') > 0: + env.AppendUnique(CPPFLAGS = ['-march=armv8-a'])