| 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')
 | 
| 
 |