| Index: gears/SConscript
|
| diff --git a/gears/SConscript b/gears/SConscript
|
| deleted file mode 100644
|
| index 3d16d3e08eece7c77273591995711272a8b12872..0000000000000000000000000000000000000000
|
| --- a/gears/SConscript
|
| +++ /dev/null
|
| @@ -1,992 +0,0 @@
|
| -# Copyright (c) 2008 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -# Notes:
|
| -# This is the main Gears SConscript file. From here, we include sub-scripts
|
| -# that handle building various targets (third party libs, common exes, the
|
| -# browser plugins themselves, and installers). Some sub-scripts return a
|
| -# dictionary of variables to be appended to the environment, so other
|
| -# sub-scripts can use them.
|
| -#
|
| -# To check out the Gears sources, you need to make sure this directory is in
|
| -# your .gclient file, so its DEPS get processed. Example:
|
| -# { "name" : "src/gears",
|
| -# "url" : "svn://chrome-svn/chrome/trunk/src/gears",
|
| -# },
|
| -#
|
| -# This is a work-in-progress conversion of the current Gears set of Makefiles.
|
| -# A lot of the stuff doesn't translate to SCons-land well, and I'm not sure
|
| -# how faithful we want to be to the original.
|
| -#
|
| -# Questions:
|
| -# Should we flatten the output directory into
|
| -# Hammer/gears/platform/browser/*.obj like Gears does now? If so, how?
|
| -
|
| -# Notes to self:
|
| -# - os.path.abspath('.') (the CWD) is variant_dir if it exists, else it's the
|
| -# toplevel_dir (which contains the SConstruct).
|
| -# - env.Entry('.') is the entry representing the variant_dir.
|
| -# - env.Entry('#') is the entry representing the toplevel_dir.
|
| -# - str(entry) gives the path relative to variant_dir, or abspath if the entry
|
| -# is outside the variant_dir.
|
| -# - entry.path gives the path relative to toplevel_dir.
|
| -# - entry.abspath gives the absolute path.
|
| -
|
| -import os
|
| -
|
| -Import('env')
|
| -
|
| -env = env.Clone(
|
| - OPEN_DIR = "gears",
|
| - PRIVATE_DIR = "gears_internal",
|
| - THIRD_PARTY_DIR = "third_party",
|
| - PRIVATE_THIRD_PARTY_DIR = "third_party_internal",
|
| -)
|
| -
|
| -if not os.path.exists(env.Dir('#/$OPEN_DIR').abspath):
|
| - print 'Skipping Gears build: no perforce tree checked out.'
|
| - Return()
|
| -
|
| -# Argument switches
|
| -
|
| -# TODO: how do we detect linux vs osx?
|
| -os_guess = env['PLATFORM']
|
| -if os_guess == 'posix':
|
| - os_guess = 'linux'
|
| -elif os_guess == 'darwin':
|
| - os_guess = 'osx'
|
| -
|
| -# Map of OS -> valid browser targets for that OS.
|
| -os_browsers_map = {
|
| - 'win32': ['IE', 'FF2', 'FF3', 'NPAPI'],
|
| - 'wince': ['IE'],
|
| - 'linux': ['FF2', 'FF3'],
|
| - 'osx': ['SF', 'FF2', 'FF3'],
|
| - 'android': ['NPAPI'],
|
| - 'symbian': ['NPAPI'],
|
| -}
|
| -
|
| -vars = Variables(None, ARGUMENTS)
|
| -vars.AddVariables(
|
| - EnumVariable('OS',
|
| - 'Which OS is the target', os_guess, os_browsers_map.keys()),
|
| - EnumVariable('MODE',
|
| - 'Type of binary to generate', 'dbg', ['dbg', 'opt']),
|
| - BoolVariable('OFFICIAL_BUILD',
|
| - 'Create a binary suitable for public release', 0),
|
| - BoolVariable('GEARS_STATIC_LIB',
|
| - 'Create a static library for linking with Chrome', 0),
|
| -)
|
| -vars.Update(env)
|
| -
|
| -env['VALID_BROWSERS'] = os_browsers_map[env['OS']]
|
| -
|
| -# Add BROWSER last, since its valid inputs depend on $OS.
|
| -vars.Add(
|
| - EnumVariable('BROWSER',
|
| - 'Which browser we want to build the plugin for. "all" builds all '
|
| - 'browsers for this OS.',
|
| - 'all', env['VALID_BROWSERS'] + ['all']))
|
| -vars.Update(env)
|
| -
|
| -env.Replace(
|
| - USING_CCTESTS = (env['MODE'] == 'dbg' or not env['OFFICIAL_BUILD'])
|
| -)
|
| -
|
| -# Version
|
| -env.Replace(
|
| - MAJOR = '0',
|
| - MINOR = '5',
|
| - BUILD = '7',
|
| - PATCH = '0',
|
| - VERSION = '${MAJOR}.${MINOR}.${BUILD}.${PATCH}',
|
| -
|
| - FRIENDLY_NAME = 'Google Gears',
|
| - SHORT_NAME = 'gears',
|
| -)
|
| -
|
| -# Platform
|
| -# TODO: Symbian builds will override this value.
|
| -# For other platforms we set just one value.
|
| -if env['OS'] in ['wince', 'android']:
|
| - env.Replace(ARCH = 'arm')
|
| -elif env['OS'] == 'osx':
|
| - # On OSX we build a fat binary.
|
| - env.Replace(ARCH = 'i386+ppc')
|
| -else:
|
| - env.Replace(ARCH = 'i386')
|
| -
|
| -# Output dirs
|
| -env.Replace(
|
| - BASE_OUTDIR = '$GEARS_DIR/$OS-$ARCH-$MODE',
|
| - COMMON_OUTDIR = '$BASE_OUTDIR/common',
|
| - BROWSER_OUTDIR = '$BASE_OUTDIR/${BROWSER.lower()}',
|
| - IE_OUTDIR = '$BASE_OUTDIR/ie',
|
| - FF2_OUTDIR = '$BASE_OUTDIR/ff2',
|
| - FF3_OUTDIR = '$BASE_OUTDIR/ff3',
|
| - NPAPI_OUTDIR = '$BASE_OUTDIR/npapi',
|
| - SF_OUTDIR = '$BASE_OUTDIR/sf',
|
| -
|
| - GENFILES_DIR = "$BROWSER_OUTDIR/genfiles",
|
| - COMMON_GENFILES_DIR = "$COMMON_OUTDIR/genfiles",
|
| -
|
| - INSTALLER_OUTDIR = '$BASE_OUTDIR/installers',
|
| -)
|
| -
|
| -# Outputs
|
| -env.Replace(
|
| - INSTALLER_BASENAME = 'gears-${OS}-${MODE}-${VERSION}',
|
| -
|
| - FF_XPI = '$INSTALLER_OUTDIR/${INSTALLER_BASENAME}.xpi',
|
| - WIN32_INSTALLER_MSI = '$INSTALLER_OUTDIR/${INSTALLER_BASENAME}.msi',
|
| - WINCE_INSTALLER_CAB = '$INSTALLER_OUTDIR/${INSTALLER_BASENAME}.cab',
|
| - # Keyston SF Metapackage installer, bundled with Keystone as part of a
|
| - # DMG.
|
| - SF_KEYSTONE_INSTALLER_DMG = '$INSTALLER_OUTDIR/${INSTALLER_BASENAME}.dmg',
|
| - SF_KEYSTONE_INSTALLER_MPKG = '$INSTALLER_OUTDIR/Safari/${FRIENDLY_NAME}.mpkg',
|
| -
|
| - SF_INSTALLER_PLUGIN_BUNDLE = '$INSTALLER_OUTDIR/Safari/StatsPane.bundle',
|
| - SF_PLUGIN_BUNDLE = '$INSTALLER_OUTDIR/Safari/Gears.bundle',
|
| - SF_PLUGIN_PROXY_BUNDLE = '$INSTALLER_OUTDIR/Safari/Gears.plugin',
|
| - SF_INPUTMANAGER_BUNDLE = '$INSTALLER_OUTDIR/Safari/GearsEnabler',
|
| - SF_INSTALLER_PKG = '$INSTALLER_OUTDIR/Safari/Gears.pkg',
|
| -)
|
| -
|
| -# Library flags
|
| -env.Replace(
|
| - MOZJS_INCLUDE_PATHS = [
|
| - '$MOZJS_DIR',
|
| - '$THIRD_PARTY_DIR/spidermonkey/nspr/pr/include',
|
| - '$THIRD_PARTY_DIR/spidermonkey/nspr/pr/include/private',
|
| - '$THIRD_PARTY_DIR/spidermonkey/nspr/pr/include/obsolete',
|
| - '$OSX_SDK_ROOT/Developer/Headers/FlatCarbon/',
|
| - ],
|
| - MOZJS_DIR = '$THIRD_PARTY_DIR/spidermonkey',
|
| -)
|
| -
|
| -# Add our tools to the PATH.
|
| -if env['OS'] in ['win32', 'wince']:
|
| - if os.path.exists(env.Dir('#/$PRIVATE_THIRD_PARTY_DIR').abspath):
|
| - # Clear out our environment so we don't accidentally use the system's
|
| - # libs.
|
| - env['ENV']['PATH'] = ''
|
| - env['ENV']['LIB'] = ''
|
| - env['ENV']['INCLUDE'] = ''
|
| -
|
| - paths = []
|
| -
|
| - # Keep system32 for 'xcopy'.
|
| - paths += [env.subst('${ENV["SYSTEMROOT"]}/system32')]
|
| - if env['OS'] == 'win32':
|
| - env.Append(
|
| - VC80 = env.Dir('#/$PRIVATE_THIRD_PARTY_DIR/vc_80/files').abspath)
|
| - paths += [
|
| - env.subst('$VC80/common7/ide'),
|
| - env.subst('$VC80/vc/bin'),
|
| - env.subst('$VC80/common7/tools'),
|
| - env.subst('$VC80/common7/tools/bin'),
|
| - env.subst('$VC80/team_tools/performance_tools'),
|
| - ]
|
| - else: # wince
|
| - env.Append(
|
| - VC80 = env.Dir('#/$PRIVATE_THIRD_PARTY_DIR/vc_80ce/files').abspath)
|
| - paths += [
|
| - env.subst('$VC80/bin/x86_arm'),
|
| - env.subst('$VC80/common7/ide'),
|
| - env.subst('$VC80/common7/tools'),
|
| - env.subst('$VC80/common7/tools/bin'),
|
| - env.subst('$VC80/vc/bin'),
|
| - env.subst('$VC80/smartdevices/sdktools'),
|
| - ]
|
| -
|
| - paths += [
|
| - env.Dir('#/$PRIVATE_THIRD_PARTY_DIR/wix/v3_0_2925/files').abspath]
|
| -
|
| - paths += [env.Dir('#/$PRIVATE_THIRD_PARTY_DIR/gnu/files').abspath]
|
| - paths += [env.Dir('#/$PRIVATE_THIRD_PARTY_DIR/python_24').abspath]
|
| -
|
| - # Prepend them so our tools come first.
|
| - for each in reversed(paths):
|
| - env.PrependENVPath('PATH', each)
|
| - else:
|
| - # If we don't have a private third_party dir, we expect the system
|
| - # environment to be set up correctly to point to tool paths.
|
| - env['ENV']['PATH'] = os.environ['PATH']
|
| - env['ENV']['LIB'] = os.environ['LIB']
|
| - env['ENV']['INCLUDE'] = os.environ['INCLUDE']
|
| -
|
| - mtcom = 'echo Manifest creation disabled, since it breaks a lot.'
|
| - env['MANIFEST_COM'] = mtcom
|
| - env['SHMANIFEST_COM'] = mtcom
|
| -
|
| -# Building M4 files
|
| -env.Tool('m4')
|
| -
|
| -env.Append(
|
| - M4ARCH = (env['ARCH'] == 'i386' and 'x86' or '$ARCH'),
|
| - M4FLAGS = [
|
| - '--prefix-builtins',
|
| - '-DPRODUCT_VERSION=$VERSION',
|
| - '-DPRODUCT_VERSION_MAJOR=$MAJOR',
|
| - '-DPRODUCT_VERSION_MINOR=$MINOR',
|
| - '-DPRODUCT_VERSION_BUILD=$BUILD',
|
| - '-DPRODUCT_VERSION_PATCH=$PATCH',
|
| - '-DPRODUCT_OS=$OS',
|
| - '-DPRODUCT_ARCH="$M4ARCH"',
|
| - '-DPRODUCT_GCC_VERSION="gcc3"',
|
| - '-DPRODUCT_MAINTAINER="google"',
|
| - '-DPRODUCT_FRIENDLY_NAME_UQ="$FRIENDLY_NAME"',
|
| - '-DPRODUCT_SHORT_NAME_UQ="$SHORT_NAME"',
|
| - '-DI18N_LANGUAGES="(${",".join(I18N_LANGS)})"',
|
| - ],
|
| - M4PATH = [
|
| - '$OPEN_DIR',
|
| - '.',
|
| - ],
|
| -)
|
| -
|
| -# SCons magic to make M4PATH work.
|
| -env.Replace(
|
| - M4INCPREFIX = '-I',
|
| - M4INCSUFFIX = '',
|
| - _M4INCFLAGS = ('${_concat(M4INCPREFIX, M4PATH, M4INCSUFFIX, '
|
| - '__env__, RDirs, TARGET, SOURCE)}'),
|
| - M4COM = '$M4 $M4FLAGS ${_M4INCFLAGS} $SOURCE > $TARGET',
|
| -)
|
| -
|
| -# TODO: Dependency scanner for m4 files - doesn't work. It can't detect files
|
| -# that don't exist!
|
| -#m4_include_re = re.compile(r'm4_include\((.*)\)', re.M)
|
| -#def m4_scan(node, env, path):
|
| -# contents = node.get_contents()
|
| -# includes = m4_include_re.findall(contents)
|
| -# ret_includes = []
|
| -# for include in includes:
|
| -# for dir in path:
|
| -# file = os.path.join(dir, include)
|
| -# if os.path.exists(file):
|
| -# ret_includes.append(file)
|
| -# break
|
| -# return ret_includes
|
| -#
|
| -#m4_scanner = Scanner(function = m4_scan, skeys = ['.m4', '.html_m4'])
|
| -#env.Append(SCANNERS = m4_scanner)
|
| -
|
| -
|
| -# OS X Iceberg package builder
|
| -
|
| -env.Replace(ICEBERG = '/usr/local/bin/freeze')
|
| -if env.WhereIs('$ICEBERG'):
|
| - env.Replace(ICEBERGCOM = '"$ICEBERG" -v $SOURCE')
|
| -else:
|
| - env.Replace(ICEBERGCOM =
|
| - 'echo To create a Safari installer for Gears, you must install Iceberg'
|
| - ' from http://s.sudre.free.fr/Software/Iceberg.html. You can install'
|
| - ' the Safari version manually by running the'
|
| - ' $OPEN_DIR/tools/osx/install_gears.sh script.')
|
| -
|
| -iceberg_builder = Builder(action = '$ICEBERGCOM',
|
| - suffix = '.pkg', src_suffix = '.packproj')
|
| -env.Append(BUILDERS = {'Iceberg': iceberg_builder})
|
| -
|
| -
|
| -# C++ build flags.
|
| -
|
| -# Clear out the inherited defines from Chrome's build. I want to match Gears'
|
| -# current build as closely as possible until we switch everyone to SCons, then
|
| -# gradually integrate.
|
| -env.Replace(
|
| - CPPPATH = [
|
| - '$OPEN_DIR',
|
| - '$OPEN_DIR/..',
|
| - '$THIRD_PARTY_DIR',
|
| - '$THIRD_PARTY_DIR/googleurl',
|
| - '$THIRD_PARTY_DIR/npapi',
|
| - '$THIRD_PARTY_DIR/zlib',
|
| - '$THIRD_PARTY_DIR/v8/bindings_local',
|
| - '.',
|
| - '$COMMON_OUTDIR',
|
| - ],
|
| - CFLAGS = [],
|
| - CCFLAGS = [],
|
| - CXXFLAGS = [],
|
| - CCPDBFLAGS = [],
|
| - CPPDEFINES = [
|
| - # SpiderMonkey (the Firefox JS engine)'s JS_GET_CLASS macro in jsapi.h needs
|
| - # this defined to work with the gecko SDK that we've built.
|
| - # The definition of JS_THREADSAFE must be kept in sync with MOZJS_CPPFLAGS.
|
| - 'JS_THREADSAFE'
|
| - ],
|
| - FRAMEWORKPATH = [],
|
| - FRAMEWORKS = [],
|
| - LIBS = [],
|
| - LIBPATH = ['$COMPONENT_LIBRARY_DIR'],
|
| - COMMON_LINKFLAGS = [], # for both executables and shared libs
|
| - LINKFLAGS = ['$COMMON_LINKFLAGS'], # for executables
|
| - SHLINKFLAGS = ['$COMMON_LINKFLAGS'], # for shared libs
|
| - COMPONENT_LIBRARY_DIR = '$COMMON_OUTDIR/lib',
|
| -)
|
| -
|
| -if env['MODE'] == 'dbg':
|
| - env.Append(
|
| - CPPDEFINES = [
|
| - 'DEBUG=1',
|
| - '_DEBUG=1',
|
| - ],
|
| - M4FLAGS = '-DDEBUG=1',
|
| - )
|
| -else:
|
| - env.Append(
|
| - CPPDEFINES = 'NDEBUG=1',
|
| - M4FLAGS = '-DNDEBUG=1',
|
| - )
|
| -if env['USING_CCTESTS']:
|
| - env.Append(
|
| - CPPDEFINES = 'USING_CCTESTS=1',
|
| - M4FLAGS = '-DUSING_CCTESTS=1',
|
| - )
|
| -if env['OFFICIAL_BUILD']:
|
| - env.Append(
|
| - CPPDEFINES = 'OFFICIAL_BUILD=1',
|
| - M4FLAGS = '-DOFFICIAL_BUILD=1',
|
| - )
|
| -if env['GEARS_STATIC_LIB']:
|
| - env.Append(
|
| - CPPDEFINES = 'GEARS_STATIC_LIB=1',
|
| - )
|
| -
|
| -# TODO: if USING_LIBPNG
|
| -env.Append(
|
| - CPPDEFINES = [
|
| - 'PNG_USER_CONFIG',
|
| - 'CHROME_PNG_WRITE_SUPPORT',
|
| - ]
|
| -)
|
| -if not env['GEARS_STATIC_LIB']:
|
| - # If we're not linking with Chrome, don't prefix all the symbols with
|
| - # webkit_.
|
| - env.Append(CPPDEFINES = ['GEARS_PNG_BUILD'])
|
| -
|
| -
|
| -# TODO: if USING_ZLIB
|
| -env.Append(
|
| - CPPDEFINES = [
|
| - 'NO_GZIP',
|
| - 'NO_GZCOMPRESS',
|
| - ]
|
| -)
|
| -if env['OS'] == 'wince':
|
| - env.Append(CPPDEFINES = 'NO_ERRNO_H')
|
| -
|
| -# Languages
|
| -
|
| -env['I18N_LANGS'] = [
|
| - 'en-US',
|
| - 'ar',
|
| - 'bg',
|
| - 'ca',
|
| - 'cs',
|
| - 'da',
|
| - 'de',
|
| - 'el',
|
| - 'en-GB',
|
| - 'es',
|
| - 'et',
|
| - 'fa',
|
| - 'fi',
|
| - 'fil',
|
| - 'fr',
|
| - 'he',
|
| - 'hi',
|
| - 'hr',
|
| - 'hu',
|
| - 'id',
|
| - 'is',
|
| - 'it',
|
| - 'ja',
|
| - 'ko',
|
| - 'lt',
|
| - 'lv',
|
| - 'ms',
|
| - 'nl',
|
| - 'no',
|
| - 'pl',
|
| - 'pt-BR',
|
| - 'pt-PT',
|
| - 'ro',
|
| - 'ru',
|
| - 'sk',
|
| - 'sl',
|
| - 'sr',
|
| - 'sv',
|
| - 'th',
|
| - 'tr',
|
| - 'uk',
|
| - 'ur',
|
| - 'vi',
|
| - 'zh-CN',
|
| - 'zh-TW',
|
| - 'ml',
|
| - 'te',
|
| - 'gu',
|
| - 'kn',
|
| - 'or',
|
| - 'bn',
|
| - 'ta',
|
| - 'mr',
|
| -]
|
| -
|
| -# Platform-specific flags follow.
|
| -
|
| -if env['OS'] in ['win32', 'wince']:
|
| - env.Replace(ARFLAGS = [])
|
| - env.Append(
|
| - CPPDEFINES = [
|
| - 'STRICT',
|
| - '_UNICODE',
|
| - 'UNICODE',
|
| - '_USRDLL',
|
| - 'WIN32',
|
| - '_WINDLL',
|
| - '_CRT_SECURE_NO_DEPRECATE',
|
| - 'NOMINMAX',
|
| -
|
| -# In VC8, the way to disable exceptions is to remove all /EH* flags, and to
|
| -# define _HAS_EXCEPTIONS=0 (for C++ headers) and _ATL_NO_EXCEPTIONS (for ATL).
|
| - '_HAS_EXCEPTIONS=0',
|
| - '_ATL_NO_EXCEPTIONS',
|
| -# Do not export UTF functions.
|
| - 'U_STATIC_IMPLEMENTATION',
|
| - ],
|
| -# Static lib flags.
|
| - ARFLAGS = [
|
| - '/NOLOGO',
|
| - ],
|
| -# Shared lib and exe flags.
|
| - COMMON_LINKFLAGS = [
|
| - '/NOLOGO',
|
| - '/DEBUG',
|
| - '/RELEASE',
|
| - '/PDB:${TARGET.base}.pdb',
|
| - ],
|
| - SHLINKFLAGS = [
|
| - '/DLL',
|
| -# Set the preferred base address. This value was chosen because (a) it's near
|
| -# the top of the valid address range, and (b) it doesn't conflict with other
|
| -# DLLs loaded by Chrome in either the browser or plugin process.
|
| - '/BASE:0x65000000',
|
| - ],
|
| - CPPFLAGS = [
|
| - '/nologo',
|
| - '/c',
|
| - '/W3',
|
| - '/WX',
|
| - '/GR-',
|
| - '/Fd"${TARGET.base}.pdb"',
|
| - ],
|
| - CXXFLAGS = [
|
| - '/TP',
|
| - '/J',
|
| - ],
|
| - CPPPATH = [
|
| - '$VC80_CPPPATH',
|
| - '$THIRD_PARTY_DIR/breakpad/src',
|
| - ],
|
| - CCPDBFLAGS = [
|
| - '/Zi', # TODO: Chrome defines /Z7, no idea what these are.
|
| - ],
|
| - LIBPATH = [
|
| - '$VC80_LIBPATH',
|
| - ],
|
| - )
|
| - if env['OS'] == 'win32':
|
| - env.Append(
|
| - CPPDEFINES = [
|
| -# We require APPVER=5.0 for things like HWND_MESSAGE.
|
| -# When APPVER=5.0, win32.mak in the Platform SDK sets:
|
| -# C defines: WINVER=0x0500
|
| -# _WIN32_WINNT=0x0500
|
| -# _WIN32_IE=0x0500
|
| -# _RICHEDIT_VER=0x0010
|
| -# RC defines: WINVER=0x0500
|
| -# MIDL flags: /target NT50
|
| -# Note: _WIN32_WINDOWS was replaced by _WIN32_WINNT for post-Win95 builds.
|
| -# Note: XP_WIN is only used by Firefox headers
|
| - '_WINDOWS',
|
| - 'WINVER=0x0500',
|
| - '_WIN32_WINNT=0x0500',
|
| - '_WIN32_IE=0x0500',
|
| - '_RICHEDIT_VER=0x0010',
|
| - '_MERGE_PROXYSTUB',
|
| - 'BREAKPAD_AVOID_STREAMS',
|
| - 'XP_WIN',
|
| - ],
|
| - ARFLAGS = [
|
| - '/MACHINE:X86',
|
| - ],
|
| - COMMON_LINKFLAGS = [
|
| - '/MACHINE:X86',
|
| - '/NODEFAULTLIB:msvcrt',
|
| -# Flags for security hardening (only available for win32, not wince).
|
| - '/DYNAMICBASE',
|
| - '/SAFESEH',
|
| - ],
|
| - SHLINKFLAGS = [
|
| -# We only use /SUBSYSTEM on DLLs. For EXEs we omit the flag, and
|
| -# the presence of main() or WinMain() determines the subsystem.
|
| - '/SUBSYSTEM:WINDOWS',
|
| - ],
|
| - VC80_CPPPATH = [
|
| -# TODO: switch over to Chrome's SDK.
|
| -# Note: these must come after $THIRD_PARTY_DIR/npapi because we want our own
|
| -# npapi.h to take precedence.
|
| - '$PRIVATE_THIRD_PARTY_DIR/atlmfc_vc80/files/include',
|
| - '$PRIVATE_THIRD_PARTY_DIR/platformsdk_vc80/files/include',
|
| - '$PRIVATE_THIRD_PARTY_DIR/vc_80/files/vc/include',
|
| - ],
|
| - VC80_LIBPATH = [
|
| - '$PRIVATE_THIRD_PARTY_DIR/atlmfc_vc80/files/lib',
|
| - '$PRIVATE_THIRD_PARTY_DIR/platformsdk_vc80/files/lib',
|
| - '$PRIVATE_THIRD_PARTY_DIR/vc_80/files/vc/lib',
|
| - ],
|
| - )
|
| - else: # OS=wince
|
| - env.Append(
|
| - CPPDEFINES = [
|
| -# For Windows Mobile we need:
|
| -# C defines: _WIN32_WCE=0x0501
|
| -# _UNDER_CE=0x0501
|
| - '_WIN32_WCE=0x501',
|
| - 'WINVER=_WIN32_WCE',
|
| - 'UNDER_CE=0x501',
|
| - 'OS_WINCE',
|
| - 'WIN32_PLATFORM_PSPC',
|
| - 'ARM',
|
| - '_ARM_',
|
| - 'POCKETPC2003_UI_MODEL',
|
| - '_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA',
|
| - '_CE_CRT_ALLOW_WIN_MINMAX',
|
| - ],
|
| - ARFLAGS = [
|
| - '/MACHINE:THUMB',
|
| - ],
|
| - COMMON_LINKFLAGS = [
|
| - '/MACHINE:THUMB',
|
| - '/NODEFAULTLIB:secchk.lib',
|
| - '/NODEFAULTLIB:oldnames.lib',
|
| - ],
|
| - SHLINKFLAGS = [
|
| - '/SUBSYSTEM:WINDOWSCE,5.01',
|
| - ],
|
| - VC80_CPPPATH = [
|
| - '$PRIVATE_THIRD_PARTY_DIR/atlmfc_vc80ce/files/include',
|
| - '$PRIVATE_THIRD_PARTY_DIR/vc_80ce/files/include',
|
| -# Visual Studio must be setup before the PocketPC SDK.
|
| - '$PRIVATE_THIRD_PARTY_DIR/pocketpc_sdk_ce_50/files/include/armv4i',
|
| - ],
|
| - VC80_LIBPATH = [
|
| - '$PRIVATE_THIRD_PARTY_DIR/atlmfc_vc80ce/files/lib/armv4i',
|
| - '$PRIVATE_THIRD_PARTY_DIR/vc_80ce/files/lib/armv4i',
|
| - '$PRIVATE_THIRD_PARTY_DIR/pocketpc_sdk_ce_50/files/lib/armv4i',
|
| - ],
|
| - )
|
| -
|
| - if env['MODE'] == 'dbg':
|
| - env.Append(
|
| - CPPFLAGS = [
|
| - '/MTd',
|
| - ],
|
| - )
|
| - else: # MODE=opt
|
| - env.Append(
|
| - CPPFLAGS = [
|
| - '/MT',
|
| - '/O2',
|
| - ],
|
| - COMMON_LINKFLAGS = [
|
| - '/INCREMENTAL:NO',
|
| - '/OPT:REF',
|
| - '/OPT:ICF',
|
| - ],
|
| - )
|
| - if not env['GEARS_STATIC_LIB']:
|
| - # Build with 2-byte wchar_t's only if we're building a DLL. To link with
|
| - # Chrome, we need 4-byte wchar_t.
|
| - env.Append(
|
| - CPPFLAGS = [
|
| - '/Zc:wchar_t-',
|
| - ],
|
| - )
|
| -
|
| -#--------------------------- LINUX ---------------------------
|
| -elif env['OS'] == 'linux':
|
| - env.Append(
|
| - CPPDEFINES = [
|
| - 'LINUX',
|
| - ],
|
| - CPPPATH = [
|
| - '$THIRD_PARTY_DIR/gtk/include/gtk-2.0',
|
| - '$THIRD_PARTY_DIR/gtk/include/atk-1.0',
|
| - '$THIRD_PARTY_DIR/gtk/include/glib-2.0',
|
| - '$THIRD_PARTY_DIR/gtk/include/pango-1.0',
|
| - '$THIRD_PARTY_DIR/gtk/include/cairo',
|
| - '$THIRD_PARTY_DIR/gtk/lib/gtk-2.0/include',
|
| - '$THIRD_PARTY_DIR/gtk/lib/glib-2.0/include',
|
| - ],
|
| - CCFLAGS = [
|
| - '-fPIC',
|
| - '-fmessage-length=0',
|
| - '-Wall',
|
| - '-Werror',
|
| -# NS_LITERAL_STRING does not work properly without this compiler option
|
| - '-fshort-wchar',
|
| -# Additions to compile on hardy
|
| - '-Wno-unused-variable',
|
| - '-Wno-missing-braces',
|
| - '-Wno-address',
|
| - '-m32',
|
| - ],
|
| - CXXFLAGS = [
|
| - '-fno-exceptions',
|
| - '-fno-rtti',
|
| - '-Wno-non-virtual-dtor',
|
| - '-Wno-ctor-dtor-privacy',
|
| - '-funsigned-char',
|
| - '-Wno-char-subscripts',
|
| - ],
|
| - COMMON_LINKFLAGS = [
|
| - '-fPIC',
|
| - '-Bsymbolic',
|
| - '-pthread',
|
| - ],
|
| - SHLINKFLAGS = [
|
| - '-shared',
|
| - '-Wl,--version-script',
|
| - '-Wl,$OPEN_DIR/tools/xpcom-ld-script',
|
| -# Additions to compile on hardy
|
| - '-m32',
|
| - ],
|
| - )
|
| - if env['MODE'] == 'dbg':
|
| - env.Append(
|
| - CPPFLAGS = [
|
| - '-g',
|
| - '-O0',
|
| - ],
|
| - )
|
| - else: # MODE=opt
|
| - env.Append(
|
| - CPPFLAGS = [
|
| - '-O2',
|
| - ],
|
| - )
|
| -#--------------------------- OSX ---------------------------
|
| -elif env['OS'] == 'osx':
|
| -# Gears uses the 10.4 SDK, so we need to build with g++-4.0.
|
| -# Chrome uses g++-4.2 so we override this here.
|
| - env['CC'] = 'gcc-4.0'
|
| - env['CXX'] = 'g++-4.0'
|
| -# Compile assembly files with the same command line as C files.
|
| - env['ASCOM'] = '$CCCOM'
|
| -
|
| - env.Append(OSX_SDK_ROOT = '/Developer/SDKs/MacOSX10.4u.sdk')
|
| -
|
| - env.Append(
|
| - CPPDEFINES = [
|
| - 'OSX',
|
| - 'OS_MACOSX',
|
| -# for breakpad
|
| - 'USE_PROTECTED_ALLOCATIONS=1',
|
| - ],
|
| - CPPPATH = [
|
| -# Breakpad assumes it is in the include path
|
| - '$THIRD_PARTY_DIR/breakpad_osx/src',
|
| - ],
|
| - CCFLAGS = [
|
| - '-mmacosx-version-min=10.4',
|
| - ('-arch', 'ppc'),
|
| - ('-arch', 'i386'),
|
| - '-fPIC',
|
| - '-fmessage-length=0',
|
| -# TODO
|
| -# '-Wall',
|
| -# NS_LITERAL_STRING does not work properly without this compiler option
|
| - '-fshort-wchar',
|
| - '-fvisibility=hidden',
|
| -# Breakpad on OSX needs debug symbols to use the STABS format, rather than the
|
| -# default DWARF debug symbols format. Note that we enable gstabs for debug &
|
| -# opt; we strip them later in opt.
|
| - '-gstabs+',
|
| - ],
|
| - CXXFLAGS = [
|
| - '-fvisibility-inlines-hidden',
|
| - '-fno-exceptions',
|
| - '-fno-rtti',
|
| - ('-Wall',
|
| - '-Wno-non-virtual-dtor',
|
| - '-Wno-ctor-dtor-privacy',
|
| - '-Wno-char-subscripts',
|
| -# When a function is deprecated in gcc, it stupidly warns about all functions
|
| -# and member functions that have the same name, regardless of signature.
|
| -# Example: Standard osx headers deprecate 'SetPort', which causes a warning for
|
| -# url_canon::Replacements::SetPort().
|
| - '-Wno-deprecated-declarations',
|
| - ),
|
| - '-funsigned-char',
|
| - ('-include', env.File('#/$OPEN_DIR/base/safari/prefix_header.h').abspath),
|
| - ('-isysroot', '$OSX_SDK_ROOT')
|
| - ],
|
| - COMMON_LINKFLAGS = [
|
| - '-mmacosx-version-min=10.4',
|
| - '-fPIC',
|
| - '-Bsymbolic',
|
| - ('-arch', 'ppc'),
|
| - ('-arch', 'i386'),
|
| - ('-isysroot', '$OSX_SDK_ROOT'),
|
| - '-Wl,-dead_strip',
|
| - ],
|
| - SHLINKFLAGS = [
|
| - '-bundle', # DLLFLAGS
|
| - ],
|
| - FRAMEWORKS = [
|
| - 'Carbon',
|
| - 'CoreServices',
|
| - 'Cocoa',
|
| - 'WebKit',
|
| - ],
|
| - M4FLAGS = [
|
| - '-DGEARS_ENABLER_PATH="$SF_INPUTMANAGER_BUNDLE"',
|
| - '-DGEARS_PLUGIN_PATH="$SF_PLUGIN_PROXY_BUNDLE"',
|
| - '-DGEARS_INSTALLER_OUT_DIR="$INSTALLER_OUTDIR/Safari"',
|
| -
|
| - # Keystone
|
| - '-DKEYSTONE_BASE_DIR="$MAIN_DIR/$PRIVATE_THIRD_PARTY_DIR/googlemac/Releases/Keystone/"',
|
| - '-DGEARS_INSTALLER_PACKAGE="$SF_INSTALLER_PKG"',
|
| - '-DGEARS_GENFILES_DIR="$SF_OUTDIR/genfiles"',
|
| - '-DGEARS_TOOLS_DIR="$MAIN_DIR/$PRIVATE_DIR/tools"',
|
| - ],
|
| - )
|
| - if env['MODE'] == 'dbg':
|
| - env.Append(
|
| - CPPFLAGS = [
|
| - '-g',
|
| - '-O0',
|
| - ],
|
| - )
|
| - else: # MODE=opt
|
| - env.Append(
|
| - CPPFLAGS = [
|
| - '-O2',
|
| - ],
|
| - )
|
| -#--------------------------- ANDROID ---------------------------
|
| -elif env['OS'] == 'android':
|
| - if not os.environ['ANDROID_BUILD_TOP']:
|
| - print ("Please set ANDROID_BUILD_TOP to the top"
|
| - " level of your Android source.")
|
| - Return()
|
| -
|
| - if not os.environ['ANDROID_TOOLCHAIN']:
|
| - print ("Cannot determine location of the target toolchain."
|
| - " Please set ANDROID_TOOLCHAIN manually.")
|
| - Return()
|
| -
|
| - env['ANDROID_BUILD_TOP'] = os.environ['ANDROID_BUILD_TOP']
|
| -
|
| - # Figure out the cross-compile prefix by finding the *-gcc executable
|
| - # and taking the '*' as the prefix for the rest.
|
| - cross_prefix_command = os.popen(
|
| - r"ls %s/*-gcc | sed 's|\(.*/.*\-\)gcc|\1|g'" %
|
| - os.environ['ANDROID_TOOLCHAIN'])
|
| - cross_prefix = cross_prefix_command.read().strip()
|
| - if cross_prefix_command.close() != None:
|
| - Return()
|
| -
|
| - # Find the output directory. Assume the only target output directory.
|
| - product_out_command = os.popen("ls %s/out/target/product/*" %
|
| - os.environ['ANDROID_BUILD_TOP'])
|
| - product_out = product_out_command.read().strip()
|
| - if product_out_command.close() != None:
|
| - Return()
|
| -
|
| - env['CC'] = cross_prefix + 'gcc'
|
| - env['CXX'] = cross_prefix + 'g++'
|
| -
|
| - env.Append(
|
| - CPPPATH = [
|
| - '$OPEN_DIR/base/android',
|
| - '$THIRD_PARTY_DIR/stlport/stlport',
|
| - '$THIRD_PARTY_DIR/stlport/stlport/stl',
|
| - '$THIRD_PARTY_DIR/stlport/stlport/stl/config',
|
| - '$THIRD_PARTY_DIR/spidermonkey/nspr/pr/include',
|
| - '$ANDROID_BUILD_TOP/include',
|
| - '$ANDROID_BUILD_TOP/include/nativehelper',
|
| - '$ANDROID_BUILD_TOP/system',
|
| - '$ANDROID_BUILD_TOP/system/bionic/include',
|
| - '$ANDROID_BUILD_TOP/system/bionic/arch-arm/include',
|
| - '$ANDROID_BUILD_TOP/system/kernel_headers',
|
| - '$ANDROID_BUILD_TOP/system/bionic/kernel/arch-arm',
|
| - '$ANDROID_BUILD_TOP/system/bionic/kernel/common',
|
| - '$ANDROID_BUILD_TOP/system/libm/include ',
|
| - '$ANDROID_BUILD_TOP/bionic',
|
| - '$ANDROID_BUILD_TOP/bionic/libc/include',
|
| - '$ANDROID_BUILD_TOP/bionic/libc/arch-arm',
|
| - '$ANDROID_BUILD_TOP/bionic/libc/arch-arm/include',
|
| - '$ANDROID_BUILD_TOP/bionic/libc/kernel/arch-arm',
|
| - '$ANDROID_BUILD_TOP/bionic/libc/kernel/common',
|
| - '$ANDROID_BUILD_TOP/bionic/libm/include',
|
| - '$ANDROID_BUILD_TOP/dalvik/libnativehelper/include',
|
| - '$ANDROID_BUILD_TOP/extlibs',
|
| - '$ANDROID_BUILD_TOP/extlibs/icu4c-3.8/common',
|
| - '$ANDROID_BUILD_TOP/extlibs/icu4c-3.8/i18n',
|
| - '$ANDROID_BUILD_TOP/extlibs/jpeg-6b',
|
| - '$ANDROID_BUILD_TOP/extlibs/sqlite',
|
| - '$ANDROID_BUILD_TOP/extlibs/zlib-1.2.3',
|
| - '$ANDROID_BUILD_TOP/external',
|
| - '$ANDROID_BUILD_TOP/external/icu4c/common',
|
| - '$ANDROID_BUILD_TOP/external/icu4c/i18n',
|
| - '$ANDROID_BUILD_TOP/external/jpeg',
|
| - '$ANDROID_BUILD_TOP/external/sqlite/dist',
|
| - '$ANDROID_BUILD_TOP/external/zlib',
|
| - '$ANDROID_BUILD_TOP/frameworks/base/include',
|
| - '$ANDROID_BUILD_TOP/system/core/include',
|
| - ],
|
| - CPPFLAGS = [
|
| - '-g',
|
| - '-c',
|
| - '-fPIC',
|
| - '-fmessage-length=0',
|
| - '-Wall',
|
| - '-fvisibility=hidden',
|
| -# NS_LITERAL_STRING does not work properly without this compiler option
|
| - '-fshort-wchar',
|
| - '-funsigned-char',
|
| - '-march=armv5te',
|
| - '-mtune=xscale',
|
| - '-mthumb-interwork',
|
| - '-ffunction-sections',
|
| - '-fdata-sections',
|
| - '-fno-exceptions',
|
| - ],
|
| - CXXFLAGS = [
|
| - '-fno-rtti',
|
| - '-fvisibility-inlines-hidden',
|
| - '-Wno-non-virtual-dtor',
|
| - '-Wno-ctor-dtor-privacy',
|
| - ],
|
| - CPPDEFINES = [
|
| - 'OS_ANDROID',
|
| - 'ANDROID',
|
| - 'TARGET_OS=android',
|
| - 'BUILD_OSNAME=android',
|
| - 'OSNAME=android',
|
| - 'COMPILER_NAME=gcc',
|
| - '__SGI_STL_INTERNAL_PAIR_H',
|
| - '_CPP_UTILITY',
|
| - '_LITTLE_ENDIAN=1234',
|
| - '_BIG_ENDIAN=4321',
|
| - '_PDP_ENDIAN=3412',
|
| - '_BYTE_ORDER=_LITTLE_ENDIAN',
|
| - ],
|
| - COMMON_LINKFLAGS = [
|
| - '-g',
|
| - '-fPIC',
|
| - '-Bsymbolic',
|
| - '-nostdlib',
|
| - ],
|
| - SHLINKFLAGS = [
|
| - '-shared',
|
| - '-Wl,--gc-sections',
|
| - '-L$ANDROID_PRODUCT_OUT/system/lib',
|
| -# Workaround for the Android C library not implementing
|
| -# __aeabi_atexit, which is used to destruct static C++ objects. This
|
| -# causes all calls to be rewritten by the linker to
|
| -# __wrap___aeabi_atexit, which we then implement.
|
| - '-Wl,--wrap,__aeabi_atexit',
|
| - ],
|
| - )
|
| - if env['MODE'] == 'dbg':
|
| - env.Append(
|
| - CPPFLAGS = [
|
| - '-g',
|
| - '-O',
|
| - '-funwind-tables',
|
| - '-mapcs-frame',
|
| - ],
|
| - )
|
| - else: # MODE=opt
|
| - env.Append(
|
| - CPPFLAGS = [
|
| - '-O2',
|
| - '-mthumb',
|
| - '-fomit-frame-pointer',
|
| - ],
|
| - )
|
| -
|
| -# Custom builder to work around a scons and/or hammer bug. ComponentLibrary
|
| -# tries to install the library to COMPONENT_LIBRARY_DIR, but since we overrode
|
| -# that value, scons gets confused. I'm not sure who is at fault here.
|
| -# See http://code.google.com/p/chromium/issues/detail?id=4177.
|
| -def GearsStaticLibrary(env, *args, **kw):
|
| - lib = env.ChromeLibrary(*args, **kw)
|
| - env.Install('$COMPONENT_LIBRARY_DIR', lib[0])
|
| - return lib
|
| -env.AddMethod(GearsStaticLibrary)
|
| -
|
| -# Load all the components
|
| -
|
| -sconscripts = [
|
| - 'SConscript.googleurl',
|
| - 'SConscript.libjpeg',
|
| - 'SConscript.libpng',
|
| - 'SConscript.libmozjs',
|
| - 'SConscript.sqlite',
|
| - 'SConscript.zlib',
|
| - 'SConscript.libbreakpad_osx',
|
| - 'SConscript.libgd',
|
| -]
|
| -
|
| -for each in sconscripts:
|
| - env.SConscript(each,
|
| - exports=['env'],
|
| - variant_dir='$COMMON_OUTDIR',
|
| - duplicate=0)
|
| -
|
| -# Order of execution is important here. Each sub-script adds to the
|
| -# environment, for use by later scripts.
|
| -env = env.SConscript('SConscript.inputs', exports=['env'])
|
| -
|
| -outputs = env.SConscript('SConscript.common',
|
| - exports=['env'],
|
| - variant_dir='$COMMON_OUTDIR',
|
| - duplicate=0)
|
| -env.Append(**outputs)
|
| -
|
| -browsers = [env['BROWSER']]
|
| -if browsers[0] == 'all':
|
| - browsers = env['VALID_BROWSERS']
|
| -print 'Building:', browsers
|
| -
|
| -# We run the browser script once for each browser target we want to build.
|
| -# Each script adds variables to the environment in the form of
|
| -# '${BROWSER}_foo = bar' for use by the installers script.
|
| -for each in browsers:
|
| - env.Replace(BROWSER = each)
|
| - outputs = env.SConscript('SConscript.browser',
|
| - exports=['env'],
|
| - variant_dir='$BROWSER_OUTDIR',
|
| - duplicate=0)
|
| - browser_outputs = {}
|
| - for key, value in outputs.iteritems():
|
| - browser_outputs[each + '_' + key] = value
|
| - env.Append(**browser_outputs)
|
| -
|
| -# Note: even though the installers write to $INSTALLER_OUTDIR, they need to
|
| -# read files from other dirs, so we give them a variant_dir at the toplevel.
|
| -env.SConscript('SConscript.installers',
|
| - exports=['env'],
|
| - variant_dir='$BASE_OUTDIR',
|
| - duplicate=0)
|
| -
|
| -env.Alias('gears-installers', 'gears')
|
|
|