| # Copyright 2012 Google Inc. All Rights Reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| # main.scons for google-tv-pairing-protocol cpp library |
| |
| import os |
| import platform |
| import sys |
| |
| GTEST_INCLUDES = ['%s/include' % os.environ['GTEST_DIR']] |
| Export('GTEST_INCLUDES') |
| GMOCK_INCLUDES = ['%s/include' % os.environ['GMOCK_DIR']] |
| Export('GMOCK_INCLUDES') |
| OPENSSL_INCLUDES = ['%s/include' % os.environ['OPENSSL_DIR']] |
| Export('OPENSSL_INCLUDES') |
| |
| GTEST_LIBS = ['%s/lib/.libs' % os.environ['GTEST_DIR']] |
| Export('GTEST_LIBS') |
| GMOCK_LIBS = ['%s/lib/.libs' % os.environ['GMOCK_DIR']] |
| Export('GMOCK_LIBS') |
| OPENSSL_LIBS = [os.environ['OPENSSL_DIR']] |
| Export('OPENSSL_LIBS') |
| |
| build_environments = [] |
| |
| root_env = Environment( |
| tools = ['component_setup'], |
| BUILD_SCONSCRIPTS = [ |
| 'src/polo', |
| 'tests/polo', |
| ], |
| CPPPATH=['$MAIN_DIR/src'], |
| ) |
| |
| # Detect 64-bit build platform |
| DeclareBit('arch_64', 'Target platform is 64-bit') |
| DeclareBit('64bit', 'Target environment is 64-bit') |
| if platform.architecture()[0] == '64bit': |
| root_env.SetBits('arch_64') |
| |
| # Setup the linux environment |
| linux_env = root_env.Clone(tools = ['target_platform_linux']) |
| |
| linux_env.Append( |
| LINKFLAGS = ['-static', '-pthread'], |
| CCFLAGS = ['-fPIC'], |
| ) |
| |
| linux_32_env = linux_env.Clone() |
| linux_32_env.Append( |
| CCFLAGS = ['-m32'], |
| LINKFLAGS = ['-m32'], |
| LIBPATH = [ |
| #'/usr/lib32', |
| ] |
| ) |
| |
| linux_dbg_32_env = linux_32_env.Clone( |
| BUILD_TYPE = 'dbg', |
| BUILD_TYPE_DESCRIPTION = 'Linux 32-bit Debug Build', |
| tools = ['target_debug'], |
| ) |
| build_environments.append(linux_dbg_32_env) |
| |
| |
| linux_opt_32_env = linux_32_env.Clone( |
| BUILD_TYPE = 'opt', |
| BUILD_TYPE_DESCRIPTION = 'Linux 32-bit Release Build', |
| tools = ['target_optimized'] |
| ) |
| linux_opt_32_env.Append( |
| CCFLAGS = ['-O2'], |
| LINKFLAGS = ['--strip-all', '-s'], |
| ) |
| build_environments.append(linux_opt_32_env) |
| |
| # Add 64-bit linux environment if supported by build platform |
| if linux_env.Bit('arch_64'): |
| linux_64_env = linux_env.Clone() |
| linux_64_env.Append( |
| CCFLAGS = ['-m64'], |
| LINKFLAGS = ['-m64'], |
| LIBPATH = [ |
| #'/usr/lib64', |
| ] |
| ) |
| |
| linux_dbg_64_env = linux_64_env.Clone( |
| BUILD_TYPE = 'dbg64', |
| BUILD_TYPE_DESCRIPTION = 'Linux 64-bit Debug Build', |
| BUILD_GROUPS = ['default'], |
| tools = ['target_debug'], |
| ) |
| linux_dbg_64_env.SetBits('64bit') |
| build_environments.append(linux_dbg_64_env) |
| |
| linux_opt_64_env = linux_64_env.Clone( |
| BUILD_TYPE = 'opt64', |
| BUILD_TYPE_DESCRIPTION = 'Linux 64-bit Release Build', |
| tools = ['target_optimized'] |
| ) |
| linux_opt_64_env.Append( |
| CCFLAGS = ['-O2'], |
| LINKFLAGS = ['--strip-all'], |
| ) |
| linux_opt_64_env.SetBits('64bit') |
| build_environments.append(linux_opt_64_env) |
| |
| # Mac OSX Build Environment |
| mac_env = root_env.Clone(tools = ['target_platform_mac']) |
| mac_env.Append( |
| CCFLAGS = [ |
| '-arch', 'i386', |
| '-fPIC', |
| ], |
| CPPDEFINES = [ |
| 'OSX', |
| 'XP_MACOSX', |
| ], |
| FRAMEWORKS = [ |
| 'CoreFoundation', |
| 'IOKit', |
| ], |
| LIBS = [ |
| 'pthread', |
| ], |
| LINKFLAGS = [ |
| '-arch', 'i386', |
| '-Wl,-search_paths_first', |
| ], |
| ) |
| |
| mac_opt_env = mac_env.Clone( |
| BUILD_TYPE = 'opt', |
| BUILD_TYPE_DESCRIPTIONS = 'Mac Release Build', |
| ) |
| |
| mac_opt_env.Append( |
| CCFLAGS = [ |
| '-O2', |
| ], |
| LINKFLAGS = ['--string-all', '-s'], |
| tools = ['target_optimized'], |
| ) |
| build_environments.append(mac_opt_env) |
| |
| mac_dbg_env = mac_env.Clone( |
| BUILD_TYPE = 'dbg', |
| BUILD_TYPE_DESCRIPTION = 'Mac Debug Build', |
| ) |
| |
| mac_dbg_env.Append( |
| CCFLAGS = ['-O0'], |
| tools = ['target_debug'], |
| ) |
| build_environments.append(mac_dbg_env) |
| |
| |
| # Windows Build Environment |
| win_env = root_env.Clone(tools = ['target_platform_windows']) |
| |
| win_env.Append( |
| CCFLAGS = [ |
| '/EHsc', |
| ], |
| CPPDEFINES = [ |
| 'OS_WINDOWS', |
| 'WIN32', |
| '_WINDOWS', |
| '_WIN32_WINNT=0x0501', |
| 'WINVER=0x0501', |
| 'WIN32_LEAN_AND_MEAN', |
| 'GOOGLE_GLOG_DLL_DECL=', |
| 'NOGDI', |
| 'BOOST_ALL_NO_LIB', |
| 'BOOST_THREAD_BUILD_LIB', |
| '_X86_', |
| 'X86', |
| ], |
| ) |
| |
| # We need perl and nasm to be in the path. |
| if sys.platform == 'win32': |
| win_env['ENV']['PATH'] = os.environ['PRESCONS_PATH'] |
| win_env['ENV']['INCLUDE'] = os.environ['INCLUDE'] |
| win_env['ENV']['LIB'] = os.environ['LIB'] |
| |
| win_opt_env = win_env.Clone( |
| BUILD_TYPE = 'opt', |
| BUILD_TYPE_DESCRIPTION = 'Windows Release Build', |
| ) |
| |
| win_opt_env.Append( |
| CCFLAGS = [ |
| '/O1', |
| '/GS', |
| '/GL', |
| '/MT', |
| ], |
| CPPDEFINES = [ |
| 'NDEBUG', |
| ], |
| ARFLAGS = [ |
| '/LTCG', |
| ], |
| LINKFLAGS = [ |
| '/incremental:no', |
| '/LTCG', |
| '/opt:icf=32', |
| '/opt:ref', |
| ] |
| ) |
| build_environments.append(win_opt_env) |
| |
| win_dbg_env = win_env.Clone( |
| BUILD_TYPE = 'dbg', |
| BUILD_TYPE_DESCRIPTION = 'Windows Debug Build', |
| BUILD_GROUPS = ['default'], |
| ) |
| |
| win_dbg_env.Append( |
| CCFLAGS = [ |
| '/Fd$OBJ_ROOT/vc80.pdb', |
| '/MTd', |
| '/Od', |
| '/Z7', |
| ], |
| CPPDEFINES = [ |
| 'DEBUG', |
| '_DEBUG', |
| ], |
| ) |
| build_environments.append(win_dbg_env) |
| |
| BuildEnvironments(build_environments) |