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

Unified Diff: main.scons

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 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 | « installers/tagged_installer.py ('k') | mi_exe_stub/README.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: main.scons
diff --git a/main.scons b/main.scons
deleted file mode 100644
index 1b2a612f2e1963b66bb5cc5b7bd3910f51223f88..0000000000000000000000000000000000000000
--- a/main.scons
+++ /dev/null
@@ -1,819 +0,0 @@
-#!/usr/bin/python2.4
-#
-# Copyright 2009-2010 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ========================================================================
-
-
-# This main.scons file is the root description of the build specified in this
-# directory and those under it. Individual components and the source files
-# used to build them are described in subsidiary files called 'build.scons'.
-#
-# To build this project change the current directory to googleclient/Omaha.
-# Then run hammer.bat
-#
-# A number of command line options can be specified. For a full list, use the
-# -h and -H command options.
-#
-# Some useful options include:
-# -h : Prints a list of which modules and build variants are available
-# in this project.
-# -H : Print SCons specific help. SCons is a build tool which this
-# project uses in tandem with the Software Construction Toolkit
-# to build.
-# -c : Clean the project. I.e. delete all build output.
-# -j3 : Run up to 3 build steps at once.
-#
-# Some useful build targets include:
-# all_programs : Build all programs generated by this project.
-# all_libraries : Build all libraries generated by this project.
-# all_tests : Build all tests generated by this project.
-# run_all_tests : Build and run all tests generated by this project.
-#
-# Some examples:
-# Build all programs and libraries in debug mode:
-# hammer
-# Build and run all tests in debug mode on windows:
-# hammer MODE=dbg-win run_all_tests
-# Build arbitrary library in the default mode:
-# hammer <library name>
-
-import copy
-import os
-import sys
-
-import omaha_version_utils
-
-# To switch the build, simply change the value of the msc_ver variable below.
-# VC2003/VC71 is 1310 but not supported by the current build.
-# VC2005/VC80 is 1400.
-# VC2008/VC90 is 1500.
-_msc_ver = 1400
-
-_sdk_path = os.environ['OMAHA_VISTASDK_DIR']
-
-_signtool_path = os.path.join(_sdk_path, 'bin/signtool.exe')
-
-# Build the "Google Update", the Google-specific version of Omaha.
-# TODO(omaha): Set based on an environment variable and/or Hammer arg.
-is_google_update_build = False
-
-#
-# Begin vendor-specific constants.
-#
-# These values must be changed when customizing open source Omaha.
-# You may also wish to replace the language-neutral constants in the individual
-# *generated_resources_*.rc files with localized strings.
-_FULL_COMPANY_NAME = 'OmahaCompanyName Inc.'
-_SHORT_COMPANY_NAME = 'OmahaCompanyName'
-_PRODUCT_NAME = 'Update'
-_COMPANY_DOMAIN_BASE = 'google'
-_COMPANY_DOMAIN = _COMPANY_DOMAIN_BASE + '.com'
-_MAIN_EXE_BASE_NAME = 'GoogleUpdate'
-# TODO(omaha): Use this throughout the build files where goopdate and
-# goopdateres are referenced.
-_MAIN_DLL_BASE_NAME = 'goopdate'
-# "Google Inc." must not be removed from the copyright string. This literal also
-# appears as LegalCopyright in the VERSIONINFO section of .rc files.
-# TODO(omaha): Use this variable in .wxs files, etc.
-_OMAHA_COPYRIGHT_STRING_ENGLISH = 'Copyright 2007-2010 Google Inc.'
-
-
-# TODO(omaha): Allow open source Omaha to be built without the Recovery MSI,
-# which requires an extra certificate file and is unlikely to be used, or
-# ClickOnce, which requires specifying a certificate hash. Disabling Recovery
-# by default also means the open source build will work by default without
-# having to check in SaveArguments.exe to SVN every 100 days.
-# TODO(omaha3): Allow open source Omaha to be built without support for
-# Omaha 2's COM APIs.
-
-# The hash comes from the Thumbprint item in the Details tab of the file
-# properties for the public key .cer file.
-# TODO(omaha): Can we automate reading this and/or pass it on the command line?
-_BUILD_SERVER_CERTIFICATE_HASH = 'cafd39335d6e76f0e26d81296e7cbbfbdf16a720'
-
-#
-# End vendor-specific constants.
-#
-
-
-# Windows is the only environment we bulid for, so create a specialized base
-# environment for Windows.
-win_env = Environment(
- # For internal builds only, it is a good idea to have set before the
- # 'component_setup' tool is used even though we add the SDK directories to
- # the appropriate environment variables manually below.
- PLATFORM_SDK_DIR = _sdk_path,
- tools=[
- 'component_setup',
- 'target_platform_windows',
- # Need to use 'masm' to override the 'as' tool currently used
- # by default in 'target_platform_windows'
- 'masm',
- 'atlmfc_vc80',
- 'code_signing',
- 'component_targets_msvs',
- 'omaha_builders',
- ],
- msc_ver = _msc_ver,
- build_server_certificate_hash = _BUILD_SERVER_CERTIFICATE_HASH,
- # Visual Studio 2008 does not ship the sign tool. Use the sign tool from
- # the Platform SDK. This must come after the 'code_signing' tool is used.
- # Remove this if http://code.google.com/p/swtoolkit/issues/detail?id=16 is
- # fixed.
- SIGNTOOL = '"' + _signtool_path + '"',
-)
-
-# Remove this value because it conflicts with a #define
-# in shlwapi.h in the Vista SDK
-win_env.FilterOut(CPPDEFINES = ['OS_WINDOWS=OS_WINDOWS'])
-
-# We pre-generate our own manifests, so make sure hammer does not generate
-# default ones for us
-del win_env['MANIFEST_FILE']
-
-# Hack to work around bug in Hammer (http://b/1585388).
-# TODO(Omaha): Remove when bug is fixed.
-if win_env['ENV'].has_key('SYSTEMROOT'):
- if win_env['ENV'].has_key('SystemRoot'):
- del win_env['ENV']['SYSTEMROOT']
- del os.environ['SYSTEMROOT']
-
-# Work around http://code.google.com/p/swtoolkit/issues/detail?id=10.
-win_env['COMPONENT_TEST_SUBSYSTEM_WINDOWS'] = 1
-
-# Declare command line options relating to code signing
-# authenticode_file and authenticode_password are used by the normal signing
-# tool and to sign manifests for ClickOnce.
-# patching_certificate is used to create patchable MSI installers and MSPs.
-# authenticode_file and authenticode_password are only used if !build_server.
-# patching_certificate is used in all cases.
-AddOption(
- '--authenticode_file',
- action='store',
- nargs=1,
- type='string',
- default='$MAIN_DIR/data/OmahaTestCert.pfx'
-)
-
-default_cert_password = 'test'
-AddOption(
- '--authenticode_password',
- action='store',
- nargs=1,
- type='string',
- default=default_cert_password
-)
-
-AddOption(
- '--patching_certificate',
- action='store',
- nargs=1,
- type='string',
- default='$MAIN_DIR/data/OmahaTestCert.cer'
-)
-
-# Declare option for specifying path to new official build files
-AddOption(
- '--official_build_path',
- action='store',
- nargs=1,
- type='string',
- default=None
-)
-
-# Declare option for specifying the set of official app installers to build.
-# The value describes the name of the directory containing the official
-# installer manifests and definitions.
-AddOption(
- '--official_installer_app',
- action='store',
- nargs=1,
- type='string',
- default=None
-)
-
-AddOption(
- '--official_installer_file',
- action='store',
- nargs=1,
- type='string',
- default=None
-)
-
-AddOption(
- '--build_number',
- action='store',
- nargs=1,
- type='string',
- default=''
-)
-
-# Declare various boolean states.
-DeclareBit('use_precompiled_headers', 'Use precompiled headers in build')
-DeclareBit('official_installers', 'Building using checked-in binaries')
-DeclareBit('build_server', 'Running on the build server')
-DeclareBit('build_two_versions', 'Build second version for self-update testing')
-DeclareBit('test_certificate', 'Files will be signed with the test certificate')
-DeclareBit('bin', 'Building from pre-built binaries')
-DeclareBit('min', 'Building minimal set of projects')
-DeclareBit('all', 'Building all Projects')
-DeclareBit('msvs', 'Building Visual Studio solution files')
-DeclareBit('no-tests', 'Do not build the unit tests')
-
-# Build official installers if --official_installers is on the command line.
-win_env.SetBitFromOption('official_installers', False)
-
-# Build as a build server if --build_server is on the command line.
-win_env.SetBitFromOption('build_server', False)
-
-# Build two versions if --build_two_versions is on the command line.
-win_env.SetBitFromOption('build_two_versions', False)
-
-# Store new versions of pre-built binaries if --bin is on the command line.
-win_env.SetBitFromOption('bin', False)
-
-# Build minimal set of libs if --min is on the command line.
-win_env.SetBitFromOption('min', False)
-
-# Build all libs if --all is on the command line.
-win_env.SetBitFromOption('all', False)
-
-# Build Visual Studio solution files if --msvs is on the command line.
-win_env.SetBitFromOption('msvs', False)
-
-# Do not build the unit tests if the bit is set.
-win_env.SetBitFromOption('no-tests', False)
-
-# Build all directories and two versions if this is the build server.
-if win_env.Bit('build_server'):
- win_env.SetBits('all')
- win_env.SetBits('build_two_versions')
-
-# Make sure 'all' overrides 'min'.
-if win_env.Bit('all'):
- win_env.ClearBits('min')
-
-# Allow use of command-line-specified certificates to sign with, but
-# only if we're not on the build server.
-if not win_env.Bit('build_server'):
- win_env.Replace(
- CERTIFICATE_PATH=GetOption('authenticode_file'),
- CERTIFICATE_PASSWORD=GetOption('authenticode_password'),
- )
-
- # Store whether we're using the default test cert separately, because
- # we won't always know what the default password was.
- if GetOption('authenticode_password') is default_cert_password:
- win_env.SetBits('test_certificate')
-
-
-# The precompiled headers are to be used as an optional build speed up
-# build facility. Individual compilation units in the project must build with
-# or without precompiled headers. Building without precompiled headers is sort
-# of meaningless, since all the time we should build with it. However,
-# eliminating the dependency is desirable from a few reasons:
-# 1. making sure the files in the project include all the definitions they need
-# 2. creating different precompile headers if needed.
-# 3. making sure the precompile headers do not add to the size bloat.
-# There are two current limitations with the current setup.
-# First, due to pushing the warning level to W4 and WAll, we rely on the
-# common precompile.h to properly turn off the warnings inside system and
-# library code.
-# Second, to override the ATLASSERT, a file must be included before any of
-# the atl headers. To do this on a case by case basis is impractical and
-# error prone.
-# Therefore, when building with precompile headers off, the code is
-# building on W3 and it is not taking over the ATL asserts.
-win_env.SetBitFromOption('use_precompiled_headers', True)
-
-if win_env.Bit('use_precompiled_headers'):
- print 'Using precompiled headers.'
-
-
-#
-# Set up version info.
-#
-omaha_version_info = omaha_version_utils.OmahaVersionInfo('VERSION')
-omaha_versions_info = [omaha_version_info]
-
-if win_env.Bit('build_two_versions'):
- omaha_test_version_info = copy.deepcopy(omaha_version_info)
- omaha_test_version_info.MakeTestVersion()
- omaha_versions_info.append(omaha_test_version_info)
-
-# Print the version(s) being built.
-print 'Building versions: %s' % ', '.join(
- [version_info.GetVersionString() for version_info in omaha_versions_info])
-
-build_number = GetOption('build_number')
-if build_number:
- print 'Build number: %s' % build_number
-
-win_env['omaha_versions_info'] = omaha_versions_info
-
-if is_google_update_build:
- win_env.Append(
- CPPDEFINES = ['GOOGLE_UPDATE_BUILD'],
- RCFLAGS = ['/DGOOGLE_UPDATE_BUILD=1'],
- )
-
-# Make sure python.exe can be located.
-win_env.AppendENVPath('PATH', os.environ['OMAHA_PYTHON_DIR'])
-
-win_env.Append(
- # Add windows specific compiler flags.
- CCFLAGS = [
- '/nologo',
- '/c',
- '/Zc:forScope',
- '/D_HAS_EXCEPTIONS=0',
- '/DCOMPILER_MSVC',
- '/J',
- '/DSTL_MSVC',
- '/GR-',
- '/D_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES=1',
- '/D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1',
- '/D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1',
- '/WX', # warnings as errors
-
- #
- # Disable the following level 4 warnings below.
- #
- '/wd4127', # conditional expression is constant
- '/wd4189', # local variable is initialized but not referenced
- '/wd4505', # unreferenced local function has been removed
-
- #
- # Disable the pedantic warnings below.
- #
- '/wd4191', # unsafe conversion from 'type of expression' to
- # 'type required'
- '/wd4217', # member template functions cannot be used for
- # copy-assignment...
- '/wd4365', # conversion from 'type_1' to 'type_2',
- # signed/unsigned mismatch
- '/wd4512', # assignment operator could not be generated
- '/wd4514', # unreferenced inline function has been removed
- '/wd4555', # expression has no effect
- '/wd4619', # #pragma warning : there is no warning number 'number'
- '/wd4623', # default constructor could not be generated...
- '/wd4625', # copy constructor could not be generated...
- '/wd4626', # assignment operator could not be generated...
- '/wd4668', # not defined as a preprocessor macro, replacing with '0'.
- '/wd4710', # function not inlined
- '/wd4711', # function 'function' selected for inline expansion
- '/wd4738', # storing 32-bit float result in memory...
- '/wd4820', # bytes padding added after construct 'member_name'
- ],
-
- # Where to look for include files.
- CPPPATH = [
- '$MAIN_DIR',
- '$MAIN_DIR/..',
- '$MAIN_DIR/third_party/chrome',
- '$MAIN_DIR/third_party/gtest/include',
- ],
-
- # Defines for windows environment.
- CPPDEFINES = [
- 'WIN32', '_WINDOWS',
- 'UNICODE', '_UNICODE',
- 'WIN32_LEAN_AND_MEAN',
- 'STRICT',
- 'SECURITY_WIN32',
- '_ATL_ALL_WARNINGS',
- '_ATL_CSTRING_EXPLICIT_CONSTRUCTORS',
- '_ATL_CSTRING_NO_CRT',
- '_ATL_NO_ACLAPI',
- '_ATL_NO_DEFAULT_LIBS',
- '_ATL_NO_EXCEPTIONS',
- '_ATL_NO_GLOBAL_SOCKET_STARTUP',
- '_ATL_NO_PERF_SUPPORT',
- '_ATL_NO_TRACK_HEAP',
- '_ATL_NO_UUIDOF',
- '_ATL_STATIC_REGISTRY',
- '_CRT_RAND_S', # rand_s support available in Windows XP only.
- '_WTL_NO_CSTRING', # WTL uses ATL CString instead.
-
- # '_ATL_NO_CONNECTION_POINTS',
- # '_ATL_NO_DOCHOSTUIHANDLER',
- # '_ATL_NO_HOSTING',
-
- # Set these C_DEFINES when APPVER=5.0
- # (see win32.mak in Platform SDK)
- # Target Windows XP and IE 6.0 and above.
- 'WINVER=0x0501',
- '_WIN32_WINNT=0x0501',
- '_WIN32_IE=0x0600',
- '_RICHEDIT_VER=0x0010',
-
- # don't define min and max in windef.h
- 'NOMINMAX',
-
- # Logging is enabled in all modes for diagnostics purposes.
- 'LOGGING',
-
- 'FULL_COMPANY_NAME_ANSI=\\"%s\\"' % _FULL_COMPANY_NAME,
- 'SHORT_COMPANY_NAME_ANSI=\\"%s\\"' % _SHORT_COMPANY_NAME,
- 'PRODUCT_NAME_ANSI=\\"%s\\"' % _PRODUCT_NAME,
- 'COMPANY_DOMAIN_BASE_ANSI=\\"%s\\"' % _COMPANY_DOMAIN_BASE,
- 'COMPANY_DOMAIN_ANSI=\\"%s\\"' % _COMPANY_DOMAIN,
- 'OMAHA_APP_NAME_ANSI=\\"%s %s\\"' % (
- _SHORT_COMPANY_NAME, _PRODUCT_NAME),
- 'MAIN_EXE_BASE_NAME_ANSI=\\"%s\\"' % _MAIN_EXE_BASE_NAME,
- 'MAIN_DLL_BASE_NAME_ANSI=\\"%s\\"' % _MAIN_DLL_BASE_NAME,
- 'OFFICIAL_BUILD=%d' % win_env.Bit('build_server'),
- 'TEST_CERTIFICATE=%d' % win_env.Bit('test_certificate'),
- 'ONECLICK_PLUGIN_NAME=_T(\\"%s\\")' % (
- omaha_version_utils.GetONECLICK_PLUGIN_NAME()),
- 'ONECLICK_PLUGIN_VERSION_ANSI=\\"%d\\"' % (
- omaha_version_info.oneclick_plugin_version),
- 'ONECLICK_PLUGIN_FILENAME=_T(\\"%s\\")' % (
- omaha_version_info.oneclick_plugin_filename),
- 'UPDATE_PLUGIN_NAME=_T(\\"%s\\")' % (
- omaha_version_utils.GetUPDATE_PLUGIN_NAME()),
- 'UPDATE_PLUGIN_VERSION_ANSI=\\"%d\\"' % (
- omaha_version_info.update_plugin_version),
- 'UPDATE_PLUGIN_FILENAME=_T(\\"%s\\")' % (
- omaha_version_info.update_plugin_filename),
- 'BHO_NAME=_T(\\"%s\\")' % omaha_version_utils.GetBHO_NAME(),
- 'BHO_FILENAME=_T(\\"%s\\")' % omaha_version_info.bho_filename,
- 'CRASH_HANDLER_NAME=_T(\\"%s\\")' % omaha_version_utils.GetCRASH_HANDLER_NAME(),
- ],
-
- # Link in some windows libraries.
- LIBS = [
- 'advapi32',
- 'comdlg32',
- 'gdi32',
- 'kernel32',
- 'odbc32',
- 'odbccp32',
- 'ole32',
- 'oleaut32',
- 'shell32',
- 'user32',
- 'uuid',
- 'winspool',
- ],
-
- # Common linker flags.
- LINKFLAGS = [
- '/nologo',
- '/SUBSYSTEM:WINDOWS',
- '/MACHINE:X86',
- '/RELEASE',
- '/MAP',
- '/NODEFAULTLIB',
- '/DYNAMICBASE', # Enable ASLR. See http://goo.gl/k2IE.
- '/NXCOMPAT', # Enable NX support. See http://goo.gl/k2IE.
- '/SAFESEH',
- ],
-
- # Shared library specific linker flags.
- SHLINKFLAGS = [
- '/nologo',
- '/SUBSYSTEM:WINDOWS',
- '/MACHINE:x86',
- ],
-
- # Resource compiler flags.
- # Defines in CCFLAGS are automatically included.
- RCFLAGS = [
- '/l 1033', # /l == default language ID
- '/DBUILD_NUMBER=\\"%s\\"' % build_number,
- '/DOMAHA_COPYRIGHT_STRING_ENGLISH=\\"%s\\"' % (
- _OMAHA_COPYRIGHT_STRING_ENGLISH),
- ],
-)
-
-# Allow verification of these settings in the build log.
-if win_env.Bit('build_server'):
- print 'OFFICIAL_BUILD=1'
- print 'TEST_CERTIFICATE=%d' % win_env.Bit('test_certificate')
-
-
-# Add the parent directory of the main omaha directory to the Python path so
-# that we can import using the format "omaha.subdir.module".
-sys.path.append(os.path.split(win_env.Dir('$MAIN_DIR').abspath)[0])
-
-# Make sure Vista SDK in all the important paths earlier in path than VC80.
-for mid_dir in ['', 'vc']:
- for env_var, sub_dir in [('PATH', 'bin'),
- ('INCLUDE', 'include'),
- ('LIB', 'lib')]:
- var_path = os.path.join(_sdk_path, mid_dir, sub_dir)
- if os.path.exists(var_path):
- win_env.PrependENVPath(env_var, var_path)
-
-if not win_env.Bit('official_installers'):
- win_env.Append(CPPPATH = os.environ['OMAHA_WTL_DIR'])
-
- # Make sure csc.exe can be located.
- win_env.AppendENVPath('PATH', os.environ['OMAHA_NET_DIR'])
-
- sys.path.append('tools') # for import proxy_clsid_utils.py
- import proxy_clsid_utils
-
- # Generate uniqe proxy CLSIDs for each build.
- win_env.Execute('python $MAIN_DIR\\tools\\proxy_clsid_utils.py')
- win_env.Append(
- CPPDEFINES = [
- 'PROXY_CLSID_IS_MACHINE=%s' % proxy_clsid_utils.GetMachineProxyClsid(),
- 'PROXY_CLSID_IS_USER=%s' % proxy_clsid_utils.GetUserProxyClsid(),
- ],
- )
-
-# WiX path has to be added before the WiX tool can be called.
-win_env.AppendENVPath('PATH', os.environ['OMAHA_WIX_DIR'])
-
-win_env.Tool('wix')
-
-
-_base_dirs = [
- '.',
- 'base',
- 'clickonce',
- 'client',
- 'common',
- 'core',
- 'google_update',
- 'goopdate',
- 'net',
- 'service',
- 'setup',
- 'statsreport',
- 'third_party',
- 'tools',
- 'ui',
- ]
-
-_normal_dirs = [
- 'installers',
- 'mi_exe_stub',
- 'plugins',
- 'recovery',
- ]
-
-_official_installers_dirs = [
- 'installers',
- ]
-
-_extra_dirs = [
- 'enterprise',
- 'standalone',
- ]
-
-#
-# Need to decide which subdirs need to be built.
-#
-_dirs_to_build_set = set()
-
-if win_env.Bit('official_installers'):
- # Only want to build very specific subdirs.
- win_env.SetBits('no-tests')
- _dirs_to_build_set.update(_official_installers_dirs)
-elif not win_env.Bit('bin'):
- # All other configs get the base dirs.
- _dirs_to_build_set.update(_base_dirs)
-
- if win_env.Bit('min'):
- print '*** Building Minimal Set of Projects ***'
- else:
- _dirs_to_build_set.update(_normal_dirs)
-
- if win_env.Bit('all'):
- _dirs_to_build_set.update(_extra_dirs)
-
-# Build Google application-specific metainstallers.
-if os.path.exists(win_env.Dir('$MAIN_DIR/internal').abspath):
- _dirs_to_build_set.update(['internal'])
-
-_dirs_to_build = list(_dirs_to_build_set)
-
-# This must be the last directory.
-if not win_env.Bit('no-tests'):
- _dirs_to_build.append('testing')
-
-# Instruct Hammer which dirs to build.
-win_env['BUILD_SCONSCRIPTS'] = _dirs_to_build
-
-# These are used by the Omaha Builder OmahaUnittest(). They must be added to the
-# environment because there must be one per-mode.
-win_env['all_in_one_unittest_sources'] = []
-win_env['all_in_one_unittest_libs'] = set()
-
-
-# Create the leaf debug Windows environment.
-windows_debug_env = win_env.Clone(
- # Give this build a name and a description.
- BUILD_TYPE = 'dbg-win',
- BUILD_TYPE_DESCRIPTION = 'Windows debug build',
-)
-
-# Use common debug settings.
-windows_debug_env.Tool('target_debug')
-
-windows_debug_env.Append(
- CCFLAGS = [
- '/RTC1',
- '/Od',
- '/MTd',
- ],
- CPPDEFINES = [
- '_DEBUG',
- 'DEBUG',
- ],
-)
-
-
-# Create the leaf optimized Windows environment.
-windows_optimized_env = win_env.Clone(
- # Give this build a name and a description.
- BUILD_TYPE = 'opt-win',
- BUILD_TYPE_DESCRIPTION = 'Windows optimized build',
-)
-
-# Use common optimized settings.
-windows_optimized_env.Tool('target_optimized')
-
-windows_optimized_env.Append(
- CCFLAGS = [
- '/O1', # Optimize for small size.
- '/GS',
- '/FD',
- '/GL', # Global optimization goes with link flag '/LTCG'
- '/MT',
- ],
- CPPDEFINES = [
- 'NDEBUG',
- 'SHIPPING' # code in 'common' needs this
- ],
- ARFLAGS = [
- '/LTCG', # Set LTCG for creation of .lib files too.
- ],
- LINKFLAGS = [
- '/incremental:no',
- '/opt:ref',
- '/opt:icf=32',
- '/opt:nowin98',
- '/LTCG', # Link-time code generation goes with cl flag '/GL'
- ],
-)
-
-
-# Create an environment for coverage test builds, based on the dbg build.
-windows_coverage_env = windows_debug_env.Clone(
- BUILD_TYPE = 'coverage-win',
- BUILD_TYPE_DESCRIPTION = 'Windows coverage build',
-)
-# The Coverage build require additional tools that not everyone has. Therefore,
-# it should build as part of the all group.
-windows_coverage_env.FilterOut(BUILD_GROUPS=['all'])
-
-windows_coverage_env.Tool('code_coverage')
-
-# Coverage will run omaha_unittest.exe, which requires some extra environment.
-for env_var in os.environ:
- if not env_var in windows_coverage_env['ENV']:
- windows_coverage_env['ENV'][env_var] = os.environ[env_var]
-
-# Create a target that covers everything in the staging dir, as many of those
-# files will be required for the unittests to run successfully.
-# TODO(omaha3): This may not be necessary when using ComponentTestProgram. If it
-# is, it needs to be changed to use test/ instead of $STAGING_DIR/.
-windows_coverage_env.Alias(
- 'run_omaha_unittest_for_coverage',
- '$STAGING_DIR',
- '$STAGING_DIR/omaha_unittest.exe'
-)
-windows_coverage_env.Append(
- # TODO(omaha): We cannot run our unit tests on the new build system. Ensure
- # coverage works with the new test execution system.
- # COVERAGE_TARGETS=['run_omaha_unittest_for_coverage'],
- COVERAGE_INSTRUMENTATION_PATHS=['$STAGING_DIR'],
- # This value should only be used in code if absolutely necessary.
- CPPDEFINES=['COVERAGE_ENABLED'],
-)
-
-# TODO(omaha): Prevent the analyzer, which will fail, from running until we can
-# run unit tests on the build system. See the TODO above.
-windows_coverage_env['COVERAGE_START_CMD'] = '@echo Not starting coverage'
-windows_coverage_env['COVERAGE_STOP_CMD'] = '@echo Not ending coverage'
-
-# Skip signing in coverage build until the last step.
-windows_coverage_env['SIGNTOOL_ORIG'] = windows_coverage_env['SIGNTOOL']
-windows_coverage_env['SIGNTOOL'] = '@echo Signing deferred: '
-
-def SigningCommand(env, filename):
- # Only do signing if there is a certificate file or certificate name.
- if env.subst('$CERTIFICATE_PATH') or env.subst('$CERTIFICATE_NAME'):
- # The command used to do signing (target added on below).
- signing_cmd = '$SIGNTOOL_ORIG sign '
- # Add in certificate file if any.
- if env.subst('$CERTIFICATE_PATH'):
- signing_cmd += ' /f "$CERTIFICATE_PATH"'
- # Add certificate password if any.
- if env.subst('$CERTIFICATE_PASSWORD'):
- signing_cmd += ' /p "$CERTIFICATE_PASSWORD"'
- # Add certificate store if any.
- if env.subst('$CERTIFICATE_NAME'):
- # The command used to do signing (target added on below).
- signing_cmd += ' /s "$CERTIFICATE_STORE" /n "$CERTIFICATE_NAME"'
- # Add timestamp server if any.
- if env.subst('$TIMESTAMP_SERVER'):
- signing_cmd += ' /t "$TIMESTAMP_SERVER"'
- # Add in target name
- signing_cmd += ' "%s"' % filename
- return signing_cmd
- else:
- return 'echo no signing needed'
-
-def _IsInstrumentableFileType(file):
- if (file.endswith('.exe') or
- file.endswith('.dll')):
- return True
- return False
-
-def _IsSignableFileType(file):
- if (file.endswith('.exe') or
- file.endswith('.dll') or
- file.endswith('.msi') or
- file.endswith('.msp')):
- return True
- return False
-
-# Sign files during the install stage, since instrumentation invalidates the
-# signature. Signing within the individual build files was disabled above.
-# Do not sign intermediate "_unsigned" or "_unittest" files.
-# Instrumented files must be signed after installing becuase install is what
-# does the instrumentation. This also seems to be required to avoid
-# unnecessarily rebuilding non-instrumentable files.
-def _PostCoverageSigningInstall(dest, source, env):
- if _IsInstrumentableFileType(dest) or not _IsSignableFileType(dest):
- # Install the file to staging. Includes instrumentation if appropriate.
- env['PRECOVERAGE_SIGN_INSTALL'](dest, source, env)
- else:
- # For signable but not instrumentable files, copy the files rather than
- # using PRECOVERAGE_SIGN_INSTALL as this works around unnecessary rebuilds
- # caused by http://code.google.com/p/swtoolkit/issues/detail?id=13.
- env.Execute('copy "%s" "%s"' % (source, dest))
-
- if (_IsSignableFileType(dest) and
- (-1 == dest.find('_unsigned')) and
- (-1 == dest.find('_unittest')) and
- os.path.split(os.path.split(dest)[0])[1] == 'staging'):
- env.Execute(SigningCommand(env, dest))
-
-windows_coverage_env['PRECOVERAGE_SIGN_INSTALL'] = (
- windows_coverage_env['INSTALL'])
-windows_coverage_env['INSTALL'] = _PostCoverageSigningInstall
-
-
-# Make debug the default build after any copies of it have been made.
-windows_debug_env.Append(BUILD_GROUPS = ['default'])
-
-# ----------------------------------------------------------
-
-# Build the variants listed above.
-# This step will call each of the SConscripts (build.scons) listed,
-# once for each variant currently being built.
-BuildEnvironments(
- [ windows_debug_env,
- windows_optimized_env,
- windows_coverage_env,
- ]
-)
-
-if 'HAMMER_RUNS_TESTS' in os.environ.keys():
- # Hammer sets the default target to 'scons-out'. This causes run_* aliases
- # to also be built, which means the tests run by default. To avoid this, clear
- # Default and set the default to just build the programs.
- Default(None)
- # TODO(omaha): Not all of our core binaries are included in these three
- # aliases. This is because SignedBinary() and Command() do not add the outputs
- # to a group. Fix this.
- Default(['all_programs', 'all_libraries', 'all_test_programs'])
-
-if win_env.Bit('msvs'):
- source_project = win_env.ComponentVSDirProject('all_source', ['$MAIN_DIR'])
-
- # 'all_*' values do not appear to be populated until after BuildEnvironments
- # is called. Thus, the solution will be specific to either debug or optimized.
- # ComponentVSSourceProject() might be more desirable, but it does not appear
- # to work.
- windows_debug_env.ComponentVSSolution('omaha_dbg',
- ['all_programs', 'all_libraries'],
- projects=[source_project])
« no previous file with comments | « installers/tagged_installer.py ('k') | mi_exe_stub/README.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698