15976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# -*- Python -*- 25976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 35976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 45976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# All the helper functions are defined in: 55976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# - site_scons/talk.py 65976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Use 'import talk' in any .scons file to get access to it. 75976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Add any new helper functions to it; unittest are available 85976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# in talk_unittest.py. 95976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Each 'component' that is built is defined in a .scons file. 115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# See talk.Components(...) for further info on file naming convention. 125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# To add a new platform clone and modify the root_env object. Remember to add 145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# the new environment object to the envs list otherwise it will not be included 155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# in the build. 165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgimport talk 215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgimport os 225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgimport platform 235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#------------------------------------------------------------------------------- 255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# The build files/directories to 'build'. 265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# If the name is the name of a directory then that directory shall contain a 275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# .scons file with the same name as the directory itself: 285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Ex: The directory session/phone contains a file called phone.scons 295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# This list must be in order of library dependencies. e.g., if 305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# session/phone/phone.scons defines a target that links to a library target 315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# defined in sound/sound.scons, then 'sound' must come first. 325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# When no particular order is imposed by library dependencies, try to keep in 335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# mostly alphabetical order. 345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgcomponents = talk.Components("libjingle.scons") 365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#------------------------------------------------------------------------------- 385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Build environments 395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# The list of build environments. 425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgenvs = [] 435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# The root of all builds. 455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgroot_env = Environment( 465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = [ 475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'component_bits', 485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'component_setup', 495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'replace_strings', 505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'talk_noops', 515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org #'talk_utils', 525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_SCONSCRIPTS = components, 545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org DESTINATION_ROOT = '$MAIN_DIR/build', 555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPPATH = [ 565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '$OBJ_ROOT', # generated headers are relative to here 575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '$MAIN_DIR/..', # TODO(dape): how can we use GOOGLECLIENT instead? 585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPDEFINES = [ 605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'LOGGING=1', 615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Feature selection 635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'FEATURE_ENABLE_SSL', 645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'FEATURE_ENABLE_VOICEMAIL', 655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'FEATURE_ENABLE_PSTN', 665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'HAVE_SRTP', 675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Ensure the os environment is captured for any scripts we call out to 695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ENV = os.environ, 705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# This is where we set common environments 735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Detect if building on 64-bit or 32-bit platform. 755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDeclareBit('build_platform_64bit', 'Platform of the build machine is 64-bit') 765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif platform.architecture()[0] == "64bit": 775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org root_env.SetBits('build_platform_64bit') 785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# This bit denotes that an env is for 64-bit builds. When set, all build 805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# artifacts will be 64-bit. When unset, all build artifacts will be 32-bit. 815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDeclareBit('host_platform_64bit', 825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'Platform of the host machine (where artifacts will execute) is ' 835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '64-bit') 845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# This bit denotes that we are cross-compiling using a sysroot. 865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDeclareBit('cross_compile', 875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'Cross compiling using the SYSROOT environment variable') 885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef CrossArch(env): 905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org """Return whether or not the host platform architecture differs from the build 915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org environment architecture.""" 925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org if env.Bit('cross_compile'): 935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # The architecture of the Python process may not match the architecture of 945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # the sysroot, so we just assume it's not a cross-arch build or that it 955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # doesn't matter. Currently it only matters if you try to build a cross-arch 965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Debian package, so just don't do that. 975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org return False 985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org else: 995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org return env.Bit('host_platform_64bit') != env.Bit('build_platform_64bit') 1005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgroot_env.AddMethod(CrossArch) 1015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDeclareBit('use_static_openssl', 'Build OpenSSL as a static library') 1035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDeclareBit('have_dbus_glib', 1055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'Whether the build system has the dbus-glib-1 package') 1065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDeclareBit('have_libpulse', 1075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'Whether the build system has the libpulse package') 1085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# List all the locales we localize to. 1115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgroot_env.AppendUnique(locales = [ 1125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'af', 'am', 'ar', 'bg', 'bn', 'ca', 'cs', 'da', 'de', 'el', 'en', 'en-GB', 1135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'es', 'es-419', 'et', 'eu', 'fa', 'fi', 'fil', 'fr', 'fr-CA', 'gl', 'gu', 1145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'hi', 'hr', 'hu', 'id', 'is', 'it', 'iw', 'ja', 'kn', 'ko', 'lt', 'lv', 1155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'ml', 'mr', 'ms', 'nl', 'no', 'or', 'pl', 'pt-BR', 'pt-PT', 'ro', 'ru', 1165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'sk', 'sl', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'tl', 'tr', 'uk', 'ur', 1175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'vi', 'zh-CN', 'zh-HK', 'zh-TW', 'zu']) 1185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgAddTargetGroup('all_breakpads', 'breakpad files can be built') 1205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgAddTargetGroup('all_dsym', 'dsym debug packages can be built') 1225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#------------------------------------------------------------------------------- 1245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# W I N D O W S 1255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 1265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_env = root_env.Clone( 1275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = [ 1285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'atlmfc_vc80', 1295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org #'code_signing', 1305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'component_targets_msvs', 1315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'directx_9_0_c', 1325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org #'grid_builder', 1335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'midl', 1345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'target_platform_windows' 1355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 1365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Don't use default vc80 midl.exe. It doesn't understand vista_sdk idl files. 1375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org MIDL = '$PLATFORM_SDK_VISTA_6_0_DIR/Bin/midl.exe ', 1385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org WIX_DIR = '$GOOGLECLIENT/third_party/wix/v3_0_2925/files', 1395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Flags for debug and optimization are added to CCFLAGS instead 1405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCPDBFLAGS = '', 1415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS_DEBUG = '', 1425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS_OPTIMIZED = '', 1435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # We force a x86 target even when building on x64 Windows platforms. 1445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org TARGET_ARCH = 'x86', 1455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 1465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_env.Decider('MD5-timestamp') 1495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_env.Append( 1505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org COMPONENT_LIBRARY_PUBLISH = True, # Put dlls in output dir too 1515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 1525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/Fd${TARGET}.pdb', # pdb per object allows --jobs= 1535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/WX', # warnings are errors 1545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/Zc:forScope', # handle 'for (int i = 0 ...)' right 1555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/EHs-c-', # disable C++ EH 1565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/GR-', # disable RTTI 1575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/Gy', # enable function level linking 1585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/wd4996', # ignore POSIX deprecated warnings 1595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # promote certain level 4 warnings 1615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/w14701', # potentially uninitialized var 1625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/w14702', # unreachable code 1635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/w14706', # assignment within a conditional 1645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/w14709', # comma operator within array index 1655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/w14063', # case 'identifier' is not a valid value for switch of enum 1665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/w14064', # switch of incomplete enum 'enumeration' 1675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/w14057', # 'identifier1' indirection to slightly different base 1685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # types from 'identifier2' 1695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/w14263', # member function does not override any base class virtual 1705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # member function 1715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/w14266', # no override available for virtual memberfunction from base 1725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # 'type'; function is hidden 1735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/w14296', # expression is always false 1745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/w14355', # 'this' : used in base member initializer list 1755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 1765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPDEFINES = [ 1775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '_ATL_CSTRING_EXPLICIT_CONSTRUCTORS', 1785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # TODO(dape): encapsulate all string operations that are not based 1795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # on std::string/std::wstring and make sure we use the safest versions 1805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # available on all platforms. 1815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '_CRT_SECURE_NO_WARNINGS', 1825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '_USE_32BIT_TIME_T', 1835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '_UNICODE', 1845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'UNICODE', 1855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '_HAS_EXCEPTIONS=0', 1865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'WIN32', 1875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # TODO(dape): remove this from logging.cc and enable here instead. 1885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org #'WIN32_LEAN_AND_MEAN', 1895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'WINVER=0x0500', 1915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '_WIN32_WINNT=0x0501', 1925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '_WIN32_IE=0x0501', 1935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # The Vista platform SDK 6.0 needs at least 1945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # this NTDDI version or else the headers 1955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # that LMI includes from it won't compile. 1965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'NTDDI_VERSION=NTDDI_WINXP', 1975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # npapi.h requires the following: 1995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '_WINDOWS', 2005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 2015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPPATH = [ 2025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '$THIRD_PARTY/wtl_71/include', 2035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '$PLATFORM_SDK_VISTA_6_0_DIR/Include', 2045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 2055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LIBPATH = [ 2065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '$PLATFORM_SDK_VISTA_6_0_DIR/Lib' 2075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 2085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LINKFLAGS = [ 2095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-manifest', # TODO(thaloun): Why do we need this? 2105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Some of the third-party libraries we link in don't have public symbols, so 2115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # ignore that linker warning. 2125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/ignore:4221', 2135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/nxcompat', # Binary was tested to be be compatible with Windows DEP. 2145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/dynamicbase', # Use ASLR to dynamically rebase at load-time. 2155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/fixed:no', # Binary can be loaded at any base-address. 2165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 2175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org MIDLFLAGS = [ 2185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/win32', 2195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/I$PLATFORM_SDK_VISTA_6_0_DIR/include' 2205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ] 2215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 2225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# TODO(dape): Figure out what this does; found it in 2245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# omaha/main.scons. This fixes the problem with redefinition 2255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# of OS_WINDOWS symbol. 2265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_env.FilterOut(CPPDEFINES = ['OS_WINDOWS=OS_WINDOWS']) 2275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Set up digital signing 2295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDeclareBit('test_signing', 'Sign binaries with the test certificate') 2305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_env.SetBitFromOption('test_signing', False) 2315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif win_env.Bit('test_signing'): 2325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org win_env.Replace( 2335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CERTIFICATE_PATH = win_env.File( 2345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '$GOOGLECLIENT/tools/test_key/testkey.pfx').abspath, 2355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CERTIFICATE_PASSWORD = 'test', 2365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 2375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgAddTargetGroup('signed_binaries', 'digitally signed binaries can be built') 2385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_dbg_env = win_env.Clone( 2405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'dbg', 2415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Windows debug build', 2425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = ['default', 'all'], 2435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = ['target_debug'], 2445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 2455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_dbg_env.Prepend( 2475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 2485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/ZI', # enable debugging 2495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/Od', # disable optimizations 2505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/MTd', # link with LIBCMTD.LIB debug lib 2515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/RTC1', # enable runtime checks 2525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 2535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 2545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgenvs.append(win_dbg_env) 2565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_dbg64_env = win_dbg_env.Clone( 2585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'dbg64', 2595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Windows debug 64bit build', 2605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = ['all'], 2615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 2625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_dbg64_env.FilterOut(CCFLAGS = ['/ZI']) 2645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_dbg64_env.Append( 2665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 2675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/Zi', # enable debugging that is 64 bit compatible. 2685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # TODO(fbarchard): fix warnings and remove these disables. 2695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/wd4244', # disable cast warning 2705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/wd4267', # disable cast warning 2715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 2725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ARFLAGS = [ 2735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/MACHINE:x64', 2745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 2755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPDEFINES = [ 2765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'WIN64', 2775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'ARCH_CPU_64_BITS', 2785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 2795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LIBFLAGS = [ 2805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/MACHINE:x64', 2815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 2825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LINKFLAGS = [ 2835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/MACHINE:x64', 2845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 2855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 2865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_dbg64_env.FilterOut(CPPDEFINES = ['_USE_32BIT_TIME_T']) 2885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_dbg64_env.Prepend( 2905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LIBPATH = [ 2915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '$VC80_DIR/vc/lib/amd64', 2925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '$ATLMFC_VC80_DIR/lib/amd64', 2935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '$PLATFORM_SDK_VISTA_6_0_DIR/Lib/x64', 2945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 2955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 2965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_dbg64_env.PrependENVPath( 2975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'PATH', 2985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org win_dbg64_env.Dir('$VC80_DIR/vc/bin/x86_amd64')) 2995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_dbg64_env.SetBits('host_platform_64bit') 3015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgenvs.append(win_dbg64_env) 3035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_coverage_env = win_dbg_env.Clone( 3055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = ['code_coverage'], 3065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'coverage', 3075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Windows code coverage build', 3085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = ['all'], 3095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 3105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_coverage_env.Append( 3125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPDEFINES = [ 3135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'COVERAGE_ENABLED', 3145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 3155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 3165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgenvs.append(win_coverage_env) 3185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_opt_env = win_env.Clone( 3205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'opt', 3215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Windows opt build', 3225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = ['all'], 3235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = ['target_optimized'], 3245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 3255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_opt_env.Prepend( 3275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS=[ 3285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/Zi', # enable debugging 3295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/O1', # optimize for size 3305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/fp:fast', # float faster but less precise 3315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/MT', # link with LIBCMT.LIB (multi-threaded, static linked crt) 3325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/GS', # enable security checks 3335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 3345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LINKFLAGS = [ 3355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/safeseh', # protect against attacks against exception handlers 3365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '/opt:ref', # Remove unused references (functions/data). 3375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 3385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 3395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgenvs.append(win_opt_env) 3415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#------------------------------------------------------------------------------- 3435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# P O S I X 3445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 3455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgposix_env = root_env.Clone() 3465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgposix_env.Append( 3475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPDEFINES = [ 3485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'HASHNAMESPACE=__gnu_cxx', 3495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'HASH_NAMESPACE=__gnu_cxx', 3505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'POSIX', 3515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'DISABLE_DYNAMIC_CAST', 3525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # The POSIX standard says we have to define this. 3535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '_REENTRANT', 3545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 3555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 3565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-Wall', 3575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-Werror', 3585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-Wno-switch', 3595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-fno-exceptions', 3605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Needed for a clean ABI and for link-time dead-code removal to work 3615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # properly. 3625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-fvisibility=hidden', 3635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Generate debugging info in the DWARF2 format. 3645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-gdwarf-2', 3655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Generate maximal debugging information. (It is stripped from what we ship 3665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # to users, so we want it for both dbg and opt.) 3675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Note that hammer automatically supplies "-g" for mac/linux dbg, so that 3685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # flag must be filtered out of linux_dbg and mac_dbg envs below. 3695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-g3', 3705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 3715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CXXFLAGS = [ 3725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-Wno-non-virtual-dtor', 3735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-Wno-ctor-dtor-privacy', 3745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-fno-rtti', 3755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 3765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 3775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Switch-hit between NSS and OpenSSL 3795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif 'NSS_BUILD_PLATFORM' in root_env['ENV']: 3805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org posix_env.AppendUnique(CPPDEFINES=['HAVE_NSS_SSL_H=1', 3815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'NSS_SSL_RELATIVE_PATH']) 3825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgelse: 3835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org posix_env.AppendUnique(CPPDEFINES=['HAVE_OPENSSL_SSL_H=1']) 3845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#------------------------------------------------------------------------------- 3875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# M A C OSX 3885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 3895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_env = posix_env.Clone( 3905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = [ 3915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'target_platform_mac', 3925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org #'talk_mac', 3935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org #'fill_plist', 3945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 3955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 3965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Use static OpenSSL on mac so that we can use the latest APIs on all 3975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# supported mac platforms (10.5+). 3985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_env.SetBits('use_static_openssl') 3995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 4005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# For libjingle we don't specify a sysroot or minimum OS version. 4015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_osx_version_min_32 = "" 4025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_osx_version_min_64 = "" 4035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 4045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Generic mac environment common to all targets 4055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_env.Append( 4065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPDEFINES = [ 4075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'OSX', 4085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 4105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-arch', 'i386', 4115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-fasm-blocks', 4125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LINKFLAGS = [ 4145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-Wl,-search_paths_first', 4155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # This flag makes all members of a static library be included in the 4165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # final exe - that increases the size of the exe, but without it 4175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Obj-C categories aren't properly included in the exe. 4185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # TODO(thaloun): consider only defining for libs that actually have objc. 4195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-ObjC', 4205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-arch', 'i386', 4215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-dead_strip', 4225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org FRAMEWORKS = [ 4245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'CoreServices', 4255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'Security', 4265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'SystemConfiguration', 4275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'OpenGL', 4285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'CoreAudio', 4295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'Quartz', 4305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'Cocoa', 4315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'QTKit', 4325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ] 4335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 4345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 4355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif 'NSS_BUILD_PLATFORM' in root_env['ENV']: 4365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org mac_env.AppendUnique(LINKFLAGS = ['-Lthird_party/mozilla/dist/' + root_env['ENV']['NSS_BUILD_PLATFORM'] + '/lib']) 4375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgelse: 4385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org mac_env.AppendUnique(LINKFLAGS = ['-Lthird_party/openssl']) 4395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 4405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 4415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# add debug flags to environment 4425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef mac_debug_include(env): 4435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.Append( 4445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 4455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-O0', 4465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPDEFINES = [ 4485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'DEBUG=1', 4495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 4515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Remove -g set by hammer, which is not what we want (we have set -g3 above). 4525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.FilterOut(CCFLAGS = ['-g']) 4535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 4545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# add 32/64 bit specific options to specified environment 4555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef mac_common_include_x86_32(env): 4565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.Append( 4575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 4585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-m32', 4595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LINKFLAGS = [ 4615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-m32', 4625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org FRAMEWORKS = [ 4645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'Carbon', 4655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'QuickTime', 4665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 4685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org envs.append(env) 4695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 4705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef mac_common_include_x86_64(env): 4715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.Append( 4725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 4735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-m64', 4745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-fPIC', 4755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPDEFINES = [ 4775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'ARCH_CPU_64_BITS', 4785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'CARBON_DEPRECATED', 4795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LINKFLAGS = [ 4815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-m64', 4825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org FRAMEWORKS = [ 4845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'AppKit', 4855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 4875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.SetBits('host_platform_64bit') 4885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org envs.append(env) 4895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 4905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef mac_osx_version_min(env, ver): 4915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org if ver != "": 4925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org sdk_path = '/Developer/SDKs/MacOSX%s.sdk' % ver 4935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.Append( 4945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 4955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-mmacosx-version-min=' + ver, 4965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-isysroot', sdk_path, 4975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 4985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LINKFLAGS = [ 4995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-mmacosx-version-min=' + ver, 5005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-isysroot', sdk_path, 5015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 5025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org osx_sdk_path = sdk_path, 5035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org osx_version_min = ver, 5045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 5055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Create all environments 5075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_dbg_env = mac_env.Clone( 5085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'dbg', 5095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Mac debug build', 5105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = ['default', 'all'], 5115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = ['target_debug'], 5125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 5135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_opt_env = mac_env.Clone( 5155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'opt', 5165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Mac opt build', 5175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = ['all'], 5185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = ['target_optimized'], 5195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 5205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_dbg64_env = mac_dbg_env.Clone( 5225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'dbg64', 5235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Mac debug 64bit build', 5245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = ['all'], 5255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 5265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_opt64_env = mac_opt_env.Clone( 5285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'opt64', 5295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Mac opt 64bit build', 5305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = ['all'], 5315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 5325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_debug_include(mac_dbg_env) 5345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_debug_include(mac_dbg64_env) 5355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_common_include_x86_32(mac_dbg_env) 5365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_common_include_x86_32(mac_opt_env) 5375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_common_include_x86_64(mac_dbg64_env) 5385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_common_include_x86_64(mac_opt64_env) 5395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_osx_version_min(mac_dbg_env, mac_osx_version_min_32) 5405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_osx_version_min(mac_opt_env, mac_osx_version_min_32) 5415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_osx_version_min(mac_dbg64_env, mac_osx_version_min_64) 5425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgmac_osx_version_min(mac_opt64_env, mac_osx_version_min_64) 5435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#------------------------------------------------------------------------------- 5465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# L I N U X 5475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 5485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_common_env = posix_env.Clone( 5495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = [ 5505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'target_platform_linux', 5515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'talk_linux', 5525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 5535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 5545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_common_env.Append( 5565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPDEFINES = [ 5575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'LINUX', 5585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 5595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 5605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Needed for link-time dead-code removal to work properly. 5615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-ffunction-sections', 5625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-fdata-sections', 5635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 5645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LINKFLAGS = [ 5655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Enable dead-code removal. 5665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-Wl,--gc-sections', 5675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Elide dependencies on shared libraries that we're not actually using. 5685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-Wl,--as-needed', 5695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-Wl,--start-group', 5705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 5715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org _LIBFLAGS = ['-Wl,--end-group'], 5725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 5735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Remove default rpath set by Hammer. Hammer sets it to LIB_DIR, which is wrong. 5755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# The rpath is the _run-time_ library search path for the resulting binary, i.e. 5765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# the one used by ld.so at load time. Setting it equal to the path to build 5775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# output on the build machine is nonsense. 5785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_common_env.Replace( 5795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org RPATH = [], 5805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 5815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Enable the optional DBus-GLib code if the build machine has the required 5835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# dependency. 5845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_common_env.EnableFeatureWherePackagePresent('have_dbus_glib', 5855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'HAVE_DBUS_GLIB', 5865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'dbus-glib-1') 5875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef linux_common_include_x86_32(env): 5895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org """Include x86-32 settings into an env based on linux_common.""" 5905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.Append( 5915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 5925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-m32', 5935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 5945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LINKFLAGS = [ 5955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-m32', 5965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 5975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 5985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 5995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef linux_common_include_x86_64(env): 6005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org """Include x86-64 settings into an env based on linux_common.""" 6015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.Append( 6025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 6035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-m64', 6045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-fPIC', 6055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 6065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LINKFLAGS = [ 6075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-m64', 6085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 6095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 6105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.SetBits('host_platform_64bit') 6115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 6125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#------------------------------------------------------------------------------- 6135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# L I N U X -- C R O S S -- B U I L D 6145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 6155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Cross build requires the following tool names be provided by the environment: 6165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_cross_common_env = linux_common_env.Clone( 6175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org AR = os.environ.get("AR"), 6185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org AS = os.environ.get("AS"), 6195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LD = os.environ.get("LD"), 6205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org NM = os.environ.get("NM"), 6215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org RANLIB = os.environ.get("RANLIB"), 6225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CC = str(os.environ.get("CC")) + 6235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ' --sysroot=' + str(os.environ.get("SYSROOT")), 6245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CXX = str(os.environ.get("CXX")) + 6255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ' --sysroot=' + str(os.environ.get("SYSROOT")), 6265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 6275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_cross_common_env.SetBits('cross_compile') 6285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 6295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# The rest of these paths and flags are optional: 6305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif os.environ.get("CPPPATH"): 6315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_cross_common_env.Append( 6325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPPATH = os.environ.get("CPPPATH").split(':'), 6335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 6345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif os.environ.get("LIBPATH"): 6355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_cross_common_env.Append( 6365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LIBPATH = os.environ.get("LIBPATH").split(':'), 6375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 6385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif os.environ.get("CFLAGS"): 6395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_cross_common_env.Append( 6405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CFLAGS = os.environ.get("CFLAGS").split(' '), 6415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 6425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif os.environ.get("CCFLAGS"): 6435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_cross_common_env.Append( 6445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = os.environ.get("CCFLAGS").split(' '), 6455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 6465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif os.environ.get("CXXFLAGS"): 6475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_cross_common_env.Append( 6485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CXXFLAGS = os.environ.get("CXXFLAGS").split(' '), 6495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 6505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif os.environ.get("LIBFLAGS"): 6515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_cross_common_env.Append( 6525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org _LIBFLAGS = os.environ.get("LIBFLAGS").split(' '), 6535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 6545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif os.environ.get("LINKFLAGS"): 6555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_cross_common_env.Prepend( 6565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org LINKFLAGS = os.environ.get("LINKFLAGS").split(' '), 6575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 6585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 6595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#------------------------------------------------------------------------------- 6605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# L I N U X -- T R A D I T I O N A L -- X 8 6 6615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# 6625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Settings that are specific to our desktop Linux x86 targets. 6635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef linux_common_include_traditional(env): 6645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org """Include traditional Linux settings into an env based on linux_common.""" 6655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # OpenSSL has infamously poor ABI stability, so that building against one 6665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # version and running against a different one often will not work. Since our 6675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # non-ChromeOS Linux builds are used on many different distros and distro 6685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # versions, this means we can't safely dynamically link to OpenSSL because the 6695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # product would end up being broken on any computer with a different version 6705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # installed. So instead we build it ourself and statically link to it. 6715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.SetBits('use_static_openssl') 6725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Enable the optional PulseAudio code if the build machine has the required 6735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # dependency. 6745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # TODO(?): This belongs in linux_common_env, but we can't safely move it there 6755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # yet because pkg-config is not being used properly with ChromeOS builds (see 6765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # TODO below). 6775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.EnableFeatureWherePackagePresent('have_libpulse', 6785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'HAVE_LIBPULSE', 6795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'libpulse') 6805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 6815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef linux_traditional_include_dbg(env): 6825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org """Include traditional Linux dbg settings into an env based on the above.""" 6835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Remove -g set by hammer, which is not what we want (we have set -g3 above). 6845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.FilterOut(CCFLAGS = ['-g']) 6855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 6865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef linux_traditional_include_opt(env): 6875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org """Include traditional Linux opt settings into an env based on the above.""" 6885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Remove -O2 set by hammer, which is not what we want. 6895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.FilterOut(CCFLAGS = ['-O2']) 6905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org env.Append(CCFLAGS = ['-Os']) 6915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 6925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef gen_linux_nonhermetic(linux_env, type_suffix, desc_suffix): 6935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org groups = ['nonhermetic'] 6945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org if not linux_env.CrossArch(): 6955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org groups = groups + ['nonhermetic-native'] 6965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # The non-hermetic, native-arch dbg build is the default. 6975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org dbg_groups = groups + ['default'] 6985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org native_desc = ', native ' 6995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # No suffix for native modes. 7005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org type_suffix = '' 7015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org else: 7025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org groups = groups + ['nonhermetic-cross'] 7035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org dbg_groups = groups 7045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org native_desc = ', cross-built for ' 7055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_dbg_env = linux_env.Clone( 7075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'dbg' + type_suffix, 7085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Linux debug build%s%s' % (native_desc, 7095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org desc_suffix), 7105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = dbg_groups, 7115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = ['target_debug'], 7125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 7135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_traditional_include_dbg(linux_dbg_env) 7145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org envs.append(linux_dbg_env) 7155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_opt_env = linux_env.Clone( 7175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'opt' + type_suffix, 7185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Linux optimized build%s%s' % (native_desc, 7195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org desc_suffix), 7205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = groups, 7215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = ['target_optimized'], 7225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 7235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_traditional_include_opt(linux_opt_env) 7245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org envs.append(linux_opt_env) 7255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_nonhermetic_common_env = linux_common_env.Clone() 7275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_common_include_traditional(linux_nonhermetic_common_env) 7285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_nonhermetic_x86_32_env = linux_nonhermetic_common_env.Clone() 7305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_common_include_x86_32(linux_nonhermetic_x86_32_env) 7315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orggen_linux_nonhermetic(linux_nonhermetic_x86_32_env, '32', '32-bit') 7325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_nonhermetic_x86_64_env = linux_nonhermetic_common_env.Clone() 7345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_common_include_x86_64(linux_nonhermetic_x86_64_env) 7355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orggen_linux_nonhermetic(linux_nonhermetic_x86_64_env, '64', '64-bit') 7365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgdef gen_linux_hermetic(linux_env, type_suffix, desc): 7385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org groups = ['hermetic'] 7395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_dbg_env = linux_env.Clone( 7415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'hermetic-dbg' + type_suffix, 7425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Hermetic %s Linux debug build' % desc, 7435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = groups, 7445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = ['target_debug'], 7455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 7465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_traditional_include_dbg(linux_dbg_env) 7475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org envs.append(linux_dbg_env) 7485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_opt_env = linux_env.Clone( 7505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'hermetic-opt' + type_suffix, 7515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Hermetic %s Linux optimized build' % desc, 7525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = groups, 7535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = ['target_optimized'], 7545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 7555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_traditional_include_opt(linux_opt_env) 7565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org envs.append(linux_opt_env) 7575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_hermetic_common_env = linux_cross_common_env.Clone() 7595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_common_include_traditional(linux_hermetic_common_env) 7605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_hermetic_x86_32_env = linux_hermetic_common_env.Clone() 7625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_common_include_x86_32(linux_hermetic_x86_32_env) 7635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orggen_linux_hermetic(linux_hermetic_x86_32_env, '32', '32-bit') 7645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_hermetic_x86_64_env = linux_hermetic_common_env.Clone() 7665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_common_include_x86_64(linux_hermetic_x86_64_env) 7675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orggen_linux_hermetic(linux_hermetic_x86_64_env, '64', '64-bit') 7685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#------------------------------------------------------------------------------- 7705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# L I N U X -- C R O S S -- B U I L D -- A R M 7715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# TODO(noahric): All the following Linux builds are running against a sysroot 7735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# but improperly using the host machine's pkg-config environment. The ChromeOS 7745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# ones should probably be using 7755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# https://cs.corp.google.com/#chrome/src/build/linux/pkg-config-wrapper. 7765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_cross_arm_env = linux_cross_common_env.Clone() 7785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_cross_arm_env.Append( 7795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CPPDEFINES = [ 7805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'NACL_BUILD_ARCH=arm', 7815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'DISABLE_EFFECTS=1', 7825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 7835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CCFLAGS = [ 7845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-fPIC', 7855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 7865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 7875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDeclareBit('arm', 'ARM build') 7885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_cross_arm_env.SetBits('arm') 7895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Detect NEON support from the -mfpu build flag. 7915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDeclareBit('arm_neon', 'ARM supporting neon') 7925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif '-mfpu=neon' in linux_cross_arm_env['CFLAGS'] or \ 7935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-mfpu=neon' in linux_cross_arm_env['CCFLAGS'] or \ 7945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-mfpu=neon' in linux_cross_arm_env['CXXFLAGS']: 7955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org print "Building with ARM NEON support." 7965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_cross_arm_env.SetBits('arm_neon') 7975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 7985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Detect hardfp from the -mfloat-abi build flag 7995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDeclareBit('arm_hardfp', 'ARM supporting hardfp') 8005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif '-mfloat-abi=hard' in linux_cross_arm_env['CFLAGS'] or \ 8015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-mfloat-abi=hard' in linux_cross_arm_env['CCFLAGS'] or \ 8025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '-mfloat-abi=hard' in linux_cross_arm_env['CXXFLAGS']: 8035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org print "Building with hard floating point support." 8045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org linux_cross_arm_env.SetBits('arm_hardfp') 8055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_cross_arm_dbg_env = linux_cross_arm_env.Clone( 8075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'arm-dbg', 8085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Cross-compiled ARM debug build', 8095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = ['arm'], 8105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = ['target_debug'], 8115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 8125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgenvs.append(linux_cross_arm_dbg_env) 8135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orglinux_cross_arm_opt_env = linux_cross_arm_env.Clone( 8155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE = 'arm-opt', 8165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_TYPE_DESCRIPTION = 'Cross-compiled ARM optimized build', 8175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org BUILD_GROUPS = ['arm'], 8185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org tools = ['target_optimized'], 8195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org) 8205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgenvs.append(linux_cross_arm_opt_env) 8215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Create a group for installers 8255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgAddTargetGroup('all_installers', 'installers that can be built') 8265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Parse child .scons files 8285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgBuildEnvironments(envs) 8295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Explicitly set which targets to build when not stated on commandline 8315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDefault(None) 8325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Build the following, which excludes unit test output (ie running them) 8335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# To run unittests, specify the test to run, or run_all_tests. See -h option. 8345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDefault(['all_libraries', 'all_programs', 'all_test_programs']) 8355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# .sln creation code lifted from googleclient/bar/main.scons. Must be after 8375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# the call to BuildEnvironments for all_foo aliases to be defined. 8385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org# Run 'hammer --mode=all --vsproj' to generate 8395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgDeclareBit('vsproj', 'Generate Visual Studio projects and solution files.') 8405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgwin_env.SetBitFromOption('vsproj', False) 8415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgif win_env.Bit('vsproj'): 8435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org vs_env = win_env.Clone() 8445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org vs_env.Append( 8455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org COMPONENT_VS_SOURCE_SUFFIXES = [ 8465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '.def', 8475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '.grd', 8485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '.html', 8495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '.idl', 8505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '.mk', 8515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '.txt', 8525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '.py', 8535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '.scons', 8545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org '.wxs.template', 8555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ] 8565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 8575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Source project 8595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org p = vs_env.ComponentVSDirProject( 8605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 'flute_source', 8615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ['$MAIN_DIR', 8625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 8635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org COMPONENT_VS_SOURCE_FOLDERS = [ 8645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Files are assigned to first matching folder. Folder names of None 8655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # are filters. 8665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org (None, '$DESTINATION_ROOT'), 8675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ('flute', '$MAIN_DIR'), 8685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ('google3', '$GOOGLE3'), 8695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ('third_party', '$THIRD_PARTY'), 8705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ], 8715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Force source project to main dir, so that Visual Studio can find the 8725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # source files corresponding to build errors. 8735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org COMPONENT_VS_PROJECT_DIR = '$MAIN_DIR', 8745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 8755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org vs_env.AlwaysBuild(p) 8765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # Solution and target projects 8785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org s = vs_env.ComponentVSSolution( 8795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org # 'libjingle', # Please uncomment this line if you build VS proj files. 8805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ['all_libraries', 'all_programs', 'all_test_programs'], 8815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org projects = [p], 8825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ) 8835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 8845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org print '***Unfortunately the vsproj creator isn\'t smart enough to ' 8855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org print '***automatically get the correct output locations. It is very easy' 8865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org print '***though to change it in the properties pane to the following' 8875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org print '***$(SolutionDir)/build/<foo>/staging/<bar>.exe' 8885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org Default(None) 8895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org Default([s]) 890