summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/libjingle/source/talk/main.scons
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/libjingle/source/talk/main.scons')
-rw-r--r--chromium/third_party/libjingle/source/talk/main.scons889
1 files changed, 0 insertions, 889 deletions
diff --git a/chromium/third_party/libjingle/source/talk/main.scons b/chromium/third_party/libjingle/source/talk/main.scons
deleted file mode 100644
index 76b24af6413..00000000000
--- a/chromium/third_party/libjingle/source/talk/main.scons
+++ /dev/null
@@ -1,889 +0,0 @@
-# -*- Python -*-
-#
-#
-# All the helper functions are defined in:
-# - site_scons/talk.py
-# Use 'import talk' in any .scons file to get access to it.
-# Add any new helper functions to it; unittest are available
-# in talk_unittest.py.
-#
-# Each 'component' that is built is defined in a .scons file.
-# See talk.Components(...) for further info on file naming convention.
-#
-# To add a new platform clone and modify the root_env object. Remember to add
-# the new environment object to the envs list otherwise it will not be included
-# in the build.
-#
-#
-#
-
-import talk
-import os
-import platform
-
-#-------------------------------------------------------------------------------
-# The build files/directories to 'build'.
-# If the name is the name of a directory then that directory shall contain a
-# .scons file with the same name as the directory itself:
-# Ex: The directory session/phone contains a file called phone.scons
-# This list must be in order of library dependencies. e.g., if
-# session/phone/phone.scons defines a target that links to a library target
-# defined in sound/sound.scons, then 'sound' must come first.
-# When no particular order is imposed by library dependencies, try to keep in
-# mostly alphabetical order.
-#
-components = talk.Components("libjingle.scons")
-
-#-------------------------------------------------------------------------------
-# Build environments
-#
-
-# The list of build environments.
-envs = []
-
-# The root of all builds.
-root_env = Environment(
- tools = [
- 'component_bits',
- 'component_setup',
- 'replace_strings',
- 'talk_noops',
- #'talk_utils',
- ],
- BUILD_SCONSCRIPTS = components,
- DESTINATION_ROOT = '$MAIN_DIR/build',
- CPPPATH = [
- '$OBJ_ROOT', # generated headers are relative to here
- '$MAIN_DIR/..', # TODO(dape): how can we use GOOGLECLIENT instead?
- ],
- CPPDEFINES = [
- 'LOGGING=1',
-
- # Feature selection
- 'FEATURE_ENABLE_SSL',
- 'FEATURE_ENABLE_VOICEMAIL',
- 'FEATURE_ENABLE_PSTN',
- 'HAVE_SRTP',
- ],
- # Ensure the os environment is captured for any scripts we call out to
- ENV = os.environ,
-)
-
-# This is where we set common environments
-#
-# Detect if building on 64-bit or 32-bit platform.
-DeclareBit('build_platform_64bit', 'Platform of the build machine is 64-bit')
-if platform.architecture()[0] == "64bit":
- root_env.SetBits('build_platform_64bit')
-
-# This bit denotes that an env is for 64-bit builds. When set, all build
-# artifacts will be 64-bit. When unset, all build artifacts will be 32-bit.
-DeclareBit('host_platform_64bit',
- 'Platform of the host machine (where artifacts will execute) is '
- '64-bit')
-
-# This bit denotes that we are cross-compiling using a sysroot.
-DeclareBit('cross_compile',
- 'Cross compiling using the SYSROOT environment variable')
-
-def CrossArch(env):
- """Return whether or not the host platform architecture differs from the build
- environment architecture."""
- if env.Bit('cross_compile'):
- # The architecture of the Python process may not match the architecture of
- # the sysroot, so we just assume it's not a cross-arch build or that it
- # doesn't matter. Currently it only matters if you try to build a cross-arch
- # Debian package, so just don't do that.
- return False
- else:
- return env.Bit('host_platform_64bit') != env.Bit('build_platform_64bit')
-root_env.AddMethod(CrossArch)
-
-DeclareBit('use_static_openssl', 'Build OpenSSL as a static library')
-
-DeclareBit('have_dbus_glib',
- 'Whether the build system has the dbus-glib-1 package')
-DeclareBit('have_libpulse',
- 'Whether the build system has the libpulse package')
-
-
-# List all the locales we localize to.
-root_env.AppendUnique(locales = [
- 'af', 'am', 'ar', 'bg', 'bn', 'ca', 'cs', 'da', 'de', 'el', 'en', 'en-GB',
- 'es', 'es-419', 'et', 'eu', 'fa', 'fi', 'fil', 'fr', 'fr-CA', 'gl', 'gu',
- 'hi', 'hr', 'hu', 'id', 'is', 'it', 'iw', 'ja', 'kn', 'ko', 'lt', 'lv',
- 'ml', 'mr', 'ms', 'nl', 'no', 'or', 'pl', 'pt-BR', 'pt-PT', 'ro', 'ru',
- 'sk', 'sl', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'tl', 'tr', 'uk', 'ur',
- 'vi', 'zh-CN', 'zh-HK', 'zh-TW', 'zu'])
-
-AddTargetGroup('all_breakpads', 'breakpad files can be built')
-
-AddTargetGroup('all_dsym', 'dsym debug packages can be built')
-
-#-------------------------------------------------------------------------------
-# W I N D O W S
-#
-win_env = root_env.Clone(
- tools = [
- 'atlmfc_vc80',
- #'code_signing',
- 'component_targets_msvs',
- 'directx_9_0_c',
- #'grid_builder',
- 'midl',
- 'target_platform_windows'
- ],
- # Don't use default vc80 midl.exe. It doesn't understand vista_sdk idl files.
- MIDL = '$PLATFORM_SDK_VISTA_6_0_DIR/Bin/midl.exe ',
- WIX_DIR = '$GOOGLECLIENT/third_party/wix/v3_0_2925/files',
- # Flags for debug and optimization are added to CCFLAGS instead
- CCPDBFLAGS = '',
- CCFLAGS_DEBUG = '',
- CCFLAGS_OPTIMIZED = '',
- # We force a x86 target even when building on x64 Windows platforms.
- TARGET_ARCH = 'x86',
-)
-
-
-win_env.Decider('MD5-timestamp')
-win_env.Append(
- COMPONENT_LIBRARY_PUBLISH = True, # Put dlls in output dir too
- CCFLAGS = [
- '/Fd${TARGET}.pdb', # pdb per object allows --jobs=
- '/WX', # warnings are errors
- '/Zc:forScope', # handle 'for (int i = 0 ...)' right
- '/EHs-c-', # disable C++ EH
- '/GR-', # disable RTTI
- '/Gy', # enable function level linking
- '/wd4996', # ignore POSIX deprecated warnings
-
- # promote certain level 4 warnings
- '/w14701', # potentially uninitialized var
- '/w14702', # unreachable code
- '/w14706', # assignment within a conditional
- '/w14709', # comma operator within array index
- '/w14063', # case 'identifier' is not a valid value for switch of enum
- '/w14064', # switch of incomplete enum 'enumeration'
- '/w14057', # 'identifier1' indirection to slightly different base
- # types from 'identifier2'
- '/w14263', # member function does not override any base class virtual
- # member function
- '/w14266', # no override available for virtual memberfunction from base
- # 'type'; function is hidden
- '/w14296', # expression is always false
- '/w14355', # 'this' : used in base member initializer list
- ],
- CPPDEFINES = [
- '_ATL_CSTRING_EXPLICIT_CONSTRUCTORS',
- # TODO(dape): encapsulate all string operations that are not based
- # on std::string/std::wstring and make sure we use the safest versions
- # available on all platforms.
- '_CRT_SECURE_NO_WARNINGS',
- '_USE_32BIT_TIME_T',
- '_UNICODE',
- 'UNICODE',
- '_HAS_EXCEPTIONS=0',
- 'WIN32',
- # TODO(dape): remove this from logging.cc and enable here instead.
- #'WIN32_LEAN_AND_MEAN',
-
- 'WINVER=0x0500',
- '_WIN32_WINNT=0x0501',
- '_WIN32_IE=0x0501',
- # The Vista platform SDK 6.0 needs at least
- # this NTDDI version or else the headers
- # that LMI includes from it won't compile.
- 'NTDDI_VERSION=NTDDI_WINXP',
-
- # npapi.h requires the following:
- '_WINDOWS',
- ],
- CPPPATH = [
- '$THIRD_PARTY/wtl_71/include',
- '$PLATFORM_SDK_VISTA_6_0_DIR/Include',
- ],
- LIBPATH = [
- '$PLATFORM_SDK_VISTA_6_0_DIR/Lib'
- ],
- LINKFLAGS = [
- '-manifest', # TODO(thaloun): Why do we need this?
- # Some of the third-party libraries we link in don't have public symbols, so
- # ignore that linker warning.
- '/ignore:4221',
- '/nxcompat', # Binary was tested to be be compatible with Windows DEP.
- '/dynamicbase', # Use ASLR to dynamically rebase at load-time.
- '/fixed:no', # Binary can be loaded at any base-address.
- ],
- MIDLFLAGS = [
- '/win32',
- '/I$PLATFORM_SDK_VISTA_6_0_DIR/include'
- ]
-)
-
-# TODO(dape): Figure out what this does; found it in
-# omaha/main.scons. This fixes the problem with redefinition
-# of OS_WINDOWS symbol.
-win_env.FilterOut(CPPDEFINES = ['OS_WINDOWS=OS_WINDOWS'])
-
-# Set up digital signing
-DeclareBit('test_signing', 'Sign binaries with the test certificate')
-win_env.SetBitFromOption('test_signing', False)
-if win_env.Bit('test_signing'):
- win_env.Replace(
- CERTIFICATE_PATH = win_env.File(
- '$GOOGLECLIENT/tools/test_key/testkey.pfx').abspath,
- CERTIFICATE_PASSWORD = 'test',
- )
-AddTargetGroup('signed_binaries', 'digitally signed binaries can be built')
-
-win_dbg_env = win_env.Clone(
- BUILD_TYPE = 'dbg',
- BUILD_TYPE_DESCRIPTION = 'Windows debug build',
- BUILD_GROUPS = ['default', 'all'],
- tools = ['target_debug'],
-)
-
-win_dbg_env.Prepend(
- CCFLAGS = [
- '/ZI', # enable debugging
- '/Od', # disable optimizations
- '/MTd', # link with LIBCMTD.LIB debug lib
- '/RTC1', # enable runtime checks
- ],
-)
-
-envs.append(win_dbg_env)
-
-win_dbg64_env = win_dbg_env.Clone(
- BUILD_TYPE = 'dbg64',
- BUILD_TYPE_DESCRIPTION = 'Windows debug 64bit build',
- BUILD_GROUPS = ['all'],
-)
-
-win_dbg64_env.FilterOut(CCFLAGS = ['/ZI'])
-
-win_dbg64_env.Append(
- CCFLAGS = [
- '/Zi', # enable debugging that is 64 bit compatible.
- # TODO(fbarchard): fix warnings and remove these disables.
- '/wd4244', # disable cast warning
- '/wd4267', # disable cast warning
- ],
- ARFLAGS = [
- '/MACHINE:x64',
- ],
- CPPDEFINES = [
- 'WIN64',
- 'ARCH_CPU_64_BITS',
- ],
- LIBFLAGS = [
- '/MACHINE:x64',
- ],
- LINKFLAGS = [
- '/MACHINE:x64',
- ],
-)
-
-win_dbg64_env.FilterOut(CPPDEFINES = ['_USE_32BIT_TIME_T'])
-
-win_dbg64_env.Prepend(
- LIBPATH = [
- '$VC80_DIR/vc/lib/amd64',
- '$ATLMFC_VC80_DIR/lib/amd64',
- '$PLATFORM_SDK_VISTA_6_0_DIR/Lib/x64',
- ],
-)
-win_dbg64_env.PrependENVPath(
- 'PATH',
- win_dbg64_env.Dir('$VC80_DIR/vc/bin/x86_amd64'))
-
-win_dbg64_env.SetBits('host_platform_64bit')
-
-envs.append(win_dbg64_env)
-
-win_coverage_env = win_dbg_env.Clone(
- tools = ['code_coverage'],
- BUILD_TYPE = 'coverage',
- BUILD_TYPE_DESCRIPTION = 'Windows code coverage build',
- BUILD_GROUPS = ['all'],
-)
-
-win_coverage_env.Append(
- CPPDEFINES = [
- 'COVERAGE_ENABLED',
- ],
-)
-
-envs.append(win_coverage_env)
-
-win_opt_env = win_env.Clone(
- BUILD_TYPE = 'opt',
- BUILD_TYPE_DESCRIPTION = 'Windows opt build',
- BUILD_GROUPS = ['all'],
- tools = ['target_optimized'],
-)
-
-win_opt_env.Prepend(
- CCFLAGS=[
- '/Zi', # enable debugging
- '/O1', # optimize for size
- '/fp:fast', # float faster but less precise
- '/MT', # link with LIBCMT.LIB (multi-threaded, static linked crt)
- '/GS', # enable security checks
- ],
- LINKFLAGS = [
- '/safeseh', # protect against attacks against exception handlers
- '/opt:ref', # Remove unused references (functions/data).
- ],
-)
-
-envs.append(win_opt_env)
-
-#-------------------------------------------------------------------------------
-# P O S I X
-#
-posix_env = root_env.Clone()
-posix_env.Append(
- CPPDEFINES = [
- 'HASHNAMESPACE=__gnu_cxx',
- 'HASH_NAMESPACE=__gnu_cxx',
- 'POSIX',
- 'DISABLE_DYNAMIC_CAST',
- # The POSIX standard says we have to define this.
- '_REENTRANT',
- ],
- CCFLAGS = [
- '-Wall',
- '-Werror',
- '-Wno-switch',
- '-fno-exceptions',
- # Needed for a clean ABI and for link-time dead-code removal to work
- # properly.
- '-fvisibility=hidden',
- # Generate debugging info in the DWARF2 format.
- '-gdwarf-2',
- # Generate maximal debugging information. (It is stripped from what we ship
- # to users, so we want it for both dbg and opt.)
- # Note that hammer automatically supplies "-g" for mac/linux dbg, so that
- # flag must be filtered out of linux_dbg and mac_dbg envs below.
- '-g3',
- ],
- CXXFLAGS = [
- '-Wno-non-virtual-dtor',
- '-Wno-ctor-dtor-privacy',
- '-fno-rtti',
- ],
-)
-
-# Switch-hit between NSS and OpenSSL
-if 'NSS_BUILD_PLATFORM' in root_env['ENV']:
- posix_env.AppendUnique(CPPDEFINES=['HAVE_NSS_SSL_H=1',
- 'NSS_SSL_RELATIVE_PATH'])
-else:
- posix_env.AppendUnique(CPPDEFINES=['HAVE_OPENSSL_SSL_H=1'])
-
-
-#-------------------------------------------------------------------------------
-# M A C OSX
-#
-mac_env = posix_env.Clone(
- tools = [
- 'target_platform_mac',
- #'talk_mac',
- #'fill_plist',
- ],
-)
-# Use static OpenSSL on mac so that we can use the latest APIs on all
-# supported mac platforms (10.5+).
-mac_env.SetBits('use_static_openssl')
-
-# For libjingle we don't specify a sysroot or minimum OS version.
-mac_osx_version_min_32 = ""
-mac_osx_version_min_64 = ""
-
-# Generic mac environment common to all targets
-mac_env.Append(
- CPPDEFINES = [
- 'OSX',
- ],
- CCFLAGS = [
- '-arch', 'i386',
- '-fasm-blocks',
- ],
- LINKFLAGS = [
- '-Wl,-search_paths_first',
- # This flag makes all members of a static library be included in the
- # final exe - that increases the size of the exe, but without it
- # Obj-C categories aren't properly included in the exe.
- # TODO(thaloun): consider only defining for libs that actually have objc.
- '-ObjC',
- '-arch', 'i386',
- '-dead_strip',
- ],
- FRAMEWORKS = [
- 'CoreServices',
- 'Security',
- 'SystemConfiguration',
- 'OpenGL',
- 'CoreAudio',
- 'Quartz',
- 'Cocoa',
- 'QTKit',
- ]
-)
-
-if 'NSS_BUILD_PLATFORM' in root_env['ENV']:
- mac_env.AppendUnique(LINKFLAGS = ['-Lthird_party/mozilla/dist/' + root_env['ENV']['NSS_BUILD_PLATFORM'] + '/lib'])
-else:
- mac_env.AppendUnique(LINKFLAGS = ['-Lthird_party/openssl'])
-
-
-# add debug flags to environment
-def mac_debug_include(env):
- env.Append(
- CCFLAGS = [
- '-O0',
- ],
- CPPDEFINES = [
- 'DEBUG=1',
- ],
- )
- # Remove -g set by hammer, which is not what we want (we have set -g3 above).
- env.FilterOut(CCFLAGS = ['-g'])
-
-# add 32/64 bit specific options to specified environment
-def mac_common_include_x86_32(env):
- env.Append(
- CCFLAGS = [
- '-m32',
- ],
- LINKFLAGS = [
- '-m32',
- ],
- FRAMEWORKS = [
- 'Carbon',
- 'QuickTime',
- ],
- )
- envs.append(env)
-
-def mac_common_include_x86_64(env):
- env.Append(
- CCFLAGS = [
- '-m64',
- '-fPIC',
- ],
- CPPDEFINES = [
- 'ARCH_CPU_64_BITS',
- 'CARBON_DEPRECATED',
- ],
- LINKFLAGS = [
- '-m64',
- ],
- FRAMEWORKS = [
- 'AppKit',
- ],
- )
- env.SetBits('host_platform_64bit')
- envs.append(env)
-
-def mac_osx_version_min(env, ver):
- if ver != "":
- sdk_path = '/Developer/SDKs/MacOSX%s.sdk' % ver
- env.Append(
- CCFLAGS = [
- '-mmacosx-version-min=' + ver,
- '-isysroot', sdk_path,
- ],
- LINKFLAGS = [
- '-mmacosx-version-min=' + ver,
- '-isysroot', sdk_path,
- ],
- osx_sdk_path = sdk_path,
- osx_version_min = ver,
- )
-
-# Create all environments
-mac_dbg_env = mac_env.Clone(
- BUILD_TYPE = 'dbg',
- BUILD_TYPE_DESCRIPTION = 'Mac debug build',
- BUILD_GROUPS = ['default', 'all'],
- tools = ['target_debug'],
-)
-
-mac_opt_env = mac_env.Clone(
- BUILD_TYPE = 'opt',
- BUILD_TYPE_DESCRIPTION = 'Mac opt build',
- BUILD_GROUPS = ['all'],
- tools = ['target_optimized'],
-)
-
-mac_dbg64_env = mac_dbg_env.Clone(
- BUILD_TYPE = 'dbg64',
- BUILD_TYPE_DESCRIPTION = 'Mac debug 64bit build',
- BUILD_GROUPS = ['all'],
-)
-
-mac_opt64_env = mac_opt_env.Clone(
- BUILD_TYPE = 'opt64',
- BUILD_TYPE_DESCRIPTION = 'Mac opt 64bit build',
- BUILD_GROUPS = ['all'],
-)
-
-mac_debug_include(mac_dbg_env)
-mac_debug_include(mac_dbg64_env)
-mac_common_include_x86_32(mac_dbg_env)
-mac_common_include_x86_32(mac_opt_env)
-mac_common_include_x86_64(mac_dbg64_env)
-mac_common_include_x86_64(mac_opt64_env)
-mac_osx_version_min(mac_dbg_env, mac_osx_version_min_32)
-mac_osx_version_min(mac_opt_env, mac_osx_version_min_32)
-mac_osx_version_min(mac_dbg64_env, mac_osx_version_min_64)
-mac_osx_version_min(mac_opt64_env, mac_osx_version_min_64)
-
-
-#-------------------------------------------------------------------------------
-# L I N U X
-#
-linux_common_env = posix_env.Clone(
- tools = [
- 'target_platform_linux',
- 'talk_linux',
- ],
-)
-
-linux_common_env.Append(
- CPPDEFINES = [
- 'LINUX',
- ],
- CCFLAGS = [
- # Needed for link-time dead-code removal to work properly.
- '-ffunction-sections',
- '-fdata-sections',
- ],
- LINKFLAGS = [
- # Enable dead-code removal.
- '-Wl,--gc-sections',
- # Elide dependencies on shared libraries that we're not actually using.
- '-Wl,--as-needed',
- '-Wl,--start-group',
- ],
- _LIBFLAGS = ['-Wl,--end-group'],
-)
-
-# Remove default rpath set by Hammer. Hammer sets it to LIB_DIR, which is wrong.
-# The rpath is the _run-time_ library search path for the resulting binary, i.e.
-# the one used by ld.so at load time. Setting it equal to the path to build
-# output on the build machine is nonsense.
-linux_common_env.Replace(
- RPATH = [],
-)
-
-# Enable the optional DBus-GLib code if the build machine has the required
-# dependency.
-linux_common_env.EnableFeatureWherePackagePresent('have_dbus_glib',
- 'HAVE_DBUS_GLIB',
- 'dbus-glib-1')
-
-def linux_common_include_x86_32(env):
- """Include x86-32 settings into an env based on linux_common."""
- env.Append(
- CCFLAGS = [
- '-m32',
- ],
- LINKFLAGS = [
- '-m32',
- ],
- )
-
-def linux_common_include_x86_64(env):
- """Include x86-64 settings into an env based on linux_common."""
- env.Append(
- CCFLAGS = [
- '-m64',
- '-fPIC',
- ],
- LINKFLAGS = [
- '-m64',
- ],
- )
- env.SetBits('host_platform_64bit')
-
-#-------------------------------------------------------------------------------
-# L I N U X -- C R O S S -- B U I L D
-
-# Cross build requires the following tool names be provided by the environment:
-linux_cross_common_env = linux_common_env.Clone(
- AR = os.environ.get("AR"),
- AS = os.environ.get("AS"),
- LD = os.environ.get("LD"),
- NM = os.environ.get("NM"),
- RANLIB = os.environ.get("RANLIB"),
- CC = str(os.environ.get("CC")) +
- ' --sysroot=' + str(os.environ.get("SYSROOT")),
- CXX = str(os.environ.get("CXX")) +
- ' --sysroot=' + str(os.environ.get("SYSROOT")),
-)
-linux_cross_common_env.SetBits('cross_compile')
-
-# The rest of these paths and flags are optional:
-if os.environ.get("CPPPATH"):
- linux_cross_common_env.Append(
- CPPPATH = os.environ.get("CPPPATH").split(':'),
- )
-if os.environ.get("LIBPATH"):
- linux_cross_common_env.Append(
- LIBPATH = os.environ.get("LIBPATH").split(':'),
- )
-if os.environ.get("CFLAGS"):
- linux_cross_common_env.Append(
- CFLAGS = os.environ.get("CFLAGS").split(' '),
- )
-if os.environ.get("CCFLAGS"):
- linux_cross_common_env.Append(
- CCFLAGS = os.environ.get("CCFLAGS").split(' '),
- )
-if os.environ.get("CXXFLAGS"):
- linux_cross_common_env.Append(
- CXXFLAGS = os.environ.get("CXXFLAGS").split(' '),
- )
-if os.environ.get("LIBFLAGS"):
- linux_cross_common_env.Append(
- _LIBFLAGS = os.environ.get("LIBFLAGS").split(' '),
- )
-if os.environ.get("LINKFLAGS"):
- linux_cross_common_env.Prepend(
- LINKFLAGS = os.environ.get("LINKFLAGS").split(' '),
- )
-
-#-------------------------------------------------------------------------------
-# L I N U X -- T R A D I T I O N A L -- X 8 6
-#
-# Settings that are specific to our desktop Linux x86 targets.
-def linux_common_include_traditional(env):
- """Include traditional Linux settings into an env based on linux_common."""
- # OpenSSL has infamously poor ABI stability, so that building against one
- # version and running against a different one often will not work. Since our
- # non-ChromeOS Linux builds are used on many different distros and distro
- # versions, this means we can't safely dynamically link to OpenSSL because the
- # product would end up being broken on any computer with a different version
- # installed. So instead we build it ourself and statically link to it.
- env.SetBits('use_static_openssl')
- # Enable the optional PulseAudio code if the build machine has the required
- # dependency.
- # TODO(?): This belongs in linux_common_env, but we can't safely move it there
- # yet because pkg-config is not being used properly with ChromeOS builds (see
- # TODO below).
- env.EnableFeatureWherePackagePresent('have_libpulse',
- 'HAVE_LIBPULSE',
- 'libpulse')
-
-def linux_traditional_include_dbg(env):
- """Include traditional Linux dbg settings into an env based on the above."""
- # Remove -g set by hammer, which is not what we want (we have set -g3 above).
- env.FilterOut(CCFLAGS = ['-g'])
-
-def linux_traditional_include_opt(env):
- """Include traditional Linux opt settings into an env based on the above."""
- # Remove -O2 set by hammer, which is not what we want.
- env.FilterOut(CCFLAGS = ['-O2'])
- env.Append(CCFLAGS = ['-Os'])
-
-def gen_linux_nonhermetic(linux_env, type_suffix, desc_suffix):
- groups = ['nonhermetic']
- if not linux_env.CrossArch():
- groups = groups + ['nonhermetic-native']
- # The non-hermetic, native-arch dbg build is the default.
- dbg_groups = groups + ['default']
- native_desc = ', native '
- # No suffix for native modes.
- type_suffix = ''
- else:
- groups = groups + ['nonhermetic-cross']
- dbg_groups = groups
- native_desc = ', cross-built for '
-
- linux_dbg_env = linux_env.Clone(
- BUILD_TYPE = 'dbg' + type_suffix,
- BUILD_TYPE_DESCRIPTION = 'Linux debug build%s%s' % (native_desc,
- desc_suffix),
- BUILD_GROUPS = dbg_groups,
- tools = ['target_debug'],
- )
- linux_traditional_include_dbg(linux_dbg_env)
- envs.append(linux_dbg_env)
-
- linux_opt_env = linux_env.Clone(
- BUILD_TYPE = 'opt' + type_suffix,
- BUILD_TYPE_DESCRIPTION = 'Linux optimized build%s%s' % (native_desc,
- desc_suffix),
- BUILD_GROUPS = groups,
- tools = ['target_optimized'],
- )
- linux_traditional_include_opt(linux_opt_env)
- envs.append(linux_opt_env)
-
-linux_nonhermetic_common_env = linux_common_env.Clone()
-linux_common_include_traditional(linux_nonhermetic_common_env)
-
-linux_nonhermetic_x86_32_env = linux_nonhermetic_common_env.Clone()
-linux_common_include_x86_32(linux_nonhermetic_x86_32_env)
-gen_linux_nonhermetic(linux_nonhermetic_x86_32_env, '32', '32-bit')
-
-linux_nonhermetic_x86_64_env = linux_nonhermetic_common_env.Clone()
-linux_common_include_x86_64(linux_nonhermetic_x86_64_env)
-gen_linux_nonhermetic(linux_nonhermetic_x86_64_env, '64', '64-bit')
-
-def gen_linux_hermetic(linux_env, type_suffix, desc):
- groups = ['hermetic']
-
- linux_dbg_env = linux_env.Clone(
- BUILD_TYPE = 'hermetic-dbg' + type_suffix,
- BUILD_TYPE_DESCRIPTION = 'Hermetic %s Linux debug build' % desc,
- BUILD_GROUPS = groups,
- tools = ['target_debug'],
- )
- linux_traditional_include_dbg(linux_dbg_env)
- envs.append(linux_dbg_env)
-
- linux_opt_env = linux_env.Clone(
- BUILD_TYPE = 'hermetic-opt' + type_suffix,
- BUILD_TYPE_DESCRIPTION = 'Hermetic %s Linux optimized build' % desc,
- BUILD_GROUPS = groups,
- tools = ['target_optimized'],
- )
- linux_traditional_include_opt(linux_opt_env)
- envs.append(linux_opt_env)
-
-linux_hermetic_common_env = linux_cross_common_env.Clone()
-linux_common_include_traditional(linux_hermetic_common_env)
-
-linux_hermetic_x86_32_env = linux_hermetic_common_env.Clone()
-linux_common_include_x86_32(linux_hermetic_x86_32_env)
-gen_linux_hermetic(linux_hermetic_x86_32_env, '32', '32-bit')
-
-linux_hermetic_x86_64_env = linux_hermetic_common_env.Clone()
-linux_common_include_x86_64(linux_hermetic_x86_64_env)
-gen_linux_hermetic(linux_hermetic_x86_64_env, '64', '64-bit')
-
-#-------------------------------------------------------------------------------
-# L I N U X -- C R O S S -- B U I L D -- A R M
-
-# TODO(noahric): All the following Linux builds are running against a sysroot
-# but improperly using the host machine's pkg-config environment. The ChromeOS
-# ones should probably be using
-# https://cs.corp.google.com/#chrome/src/build/linux/pkg-config-wrapper.
-
-linux_cross_arm_env = linux_cross_common_env.Clone()
-linux_cross_arm_env.Append(
- CPPDEFINES = [
- 'NACL_BUILD_ARCH=arm',
- 'DISABLE_EFFECTS=1',
- ],
- CCFLAGS = [
- '-fPIC',
- ],
-)
-DeclareBit('arm', 'ARM build')
-linux_cross_arm_env.SetBits('arm')
-
-# Detect NEON support from the -mfpu build flag.
-DeclareBit('arm_neon', 'ARM supporting neon')
-if '-mfpu=neon' in linux_cross_arm_env['CFLAGS'] or \
- '-mfpu=neon' in linux_cross_arm_env['CCFLAGS'] or \
- '-mfpu=neon' in linux_cross_arm_env['CXXFLAGS']:
- print "Building with ARM NEON support."
- linux_cross_arm_env.SetBits('arm_neon')
-
-# Detect hardfp from the -mfloat-abi build flag
-DeclareBit('arm_hardfp', 'ARM supporting hardfp')
-if '-mfloat-abi=hard' in linux_cross_arm_env['CFLAGS'] or \
- '-mfloat-abi=hard' in linux_cross_arm_env['CCFLAGS'] or \
- '-mfloat-abi=hard' in linux_cross_arm_env['CXXFLAGS']:
- print "Building with hard floating point support."
- linux_cross_arm_env.SetBits('arm_hardfp')
-
-linux_cross_arm_dbg_env = linux_cross_arm_env.Clone(
- BUILD_TYPE = 'arm-dbg',
- BUILD_TYPE_DESCRIPTION = 'Cross-compiled ARM debug build',
- BUILD_GROUPS = ['arm'],
- tools = ['target_debug'],
-)
-envs.append(linux_cross_arm_dbg_env)
-
-linux_cross_arm_opt_env = linux_cross_arm_env.Clone(
- BUILD_TYPE = 'arm-opt',
- BUILD_TYPE_DESCRIPTION = 'Cross-compiled ARM optimized build',
- BUILD_GROUPS = ['arm'],
- tools = ['target_optimized'],
-)
-envs.append(linux_cross_arm_opt_env)
-
-
-
-# Create a group for installers
-AddTargetGroup('all_installers', 'installers that can be built')
-
-# Parse child .scons files
-BuildEnvironments(envs)
-
-# Explicitly set which targets to build when not stated on commandline
-Default(None)
-# Build the following, which excludes unit test output (ie running them)
-# To run unittests, specify the test to run, or run_all_tests. See -h option.
-Default(['all_libraries', 'all_programs', 'all_test_programs'])
-
-# .sln creation code lifted from googleclient/bar/main.scons. Must be after
-# the call to BuildEnvironments for all_foo aliases to be defined.
-# Run 'hammer --mode=all --vsproj' to generate
-DeclareBit('vsproj', 'Generate Visual Studio projects and solution files.')
-win_env.SetBitFromOption('vsproj', False)
-
-if win_env.Bit('vsproj'):
- vs_env = win_env.Clone()
- vs_env.Append(
- COMPONENT_VS_SOURCE_SUFFIXES = [
- '.def',
- '.grd',
- '.html',
- '.idl',
- '.mk',
- '.txt',
- '.py',
- '.scons',
- '.wxs.template',
- ]
- )
-
- # Source project
- p = vs_env.ComponentVSDirProject(
- 'flute_source',
- ['$MAIN_DIR',
- ],
- COMPONENT_VS_SOURCE_FOLDERS = [
- # Files are assigned to first matching folder. Folder names of None
- # are filters.
- (None, '$DESTINATION_ROOT'),
- ('flute', '$MAIN_DIR'),
- ('google3', '$GOOGLE3'),
- ('third_party', '$THIRD_PARTY'),
- ],
- # Force source project to main dir, so that Visual Studio can find the
- # source files corresponding to build errors.
- COMPONENT_VS_PROJECT_DIR = '$MAIN_DIR',
- )
- vs_env.AlwaysBuild(p)
-
- # Solution and target projects
- s = vs_env.ComponentVSSolution(
- # 'libjingle', # Please uncomment this line if you build VS proj files.
- ['all_libraries', 'all_programs', 'all_test_programs'],
- projects = [p],
- )
-
- print '***Unfortunately the vsproj creator isn\'t smart enough to '
- print '***automatically get the correct output locations. It is very easy'
- print '***though to change it in the properties pane to the following'
- print '***$(SolutionDir)/build/<foo>/staging/<bar>.exe'
- Default(None)
- Default([s])