Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Unified Diff: gears/SConscript

Issue 6576020: Remove Gears from Chrome (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: windows fixes Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gears/README.chromium ('k') | gears/SConscript.browser » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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')
« no previous file with comments | « gears/README.chromium ('k') | gears/SConscript.browser » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698