| # Copyright (c) 2006-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. |
| |
| import os |
| |
| Import(['env']) |
| |
| env_res = env.Clone() |
| env_test = env.Clone() |
| env = env.Clone() |
| |
| install_targets = [] |
| grit_files = [] |
| |
| |
| env.Prepend( |
| CPPPATH = [ |
| 'app', |
| '$CHROME_DIR/third_party/wtl/include', |
| ], |
| ) |
| |
| |
| # TODO(port) |
| if env_res.Bit('windows'): |
| env_res.Append( |
| CPPPATH = [ |
| '.', |
| '$CHROME_SRC_DIR', |
| # For app/chrome_dll.res to #include installer_util_strings.rc. |
| '$CHROME_DIR/installer/util', |
| ], |
| RCFLAGS = [ |
| ['/l', '0x409'], |
| ], |
| ) |
| |
| browser_res = env_res.RES('browser/browser_resources.rc') |
| chrome_exe_res = env_res.RES('app/chrome_exe.rc'), |
| chrome_dll_res = env_res.RES('app/chrome_dll.rc') |
| env_res.Depends(chrome_dll_res, 'installer/util/installer_util_strings.rc') |
| common_res = env_res.RES('common/common_resources.rc') |
| debugger_res = env_res.RES('browser/debugger/resources/debugger_resources.rc') |
| renderer_res = env_res.RES('renderer/renderer_resources.rc') |
| test_data_res = env_res.RES('test/data/resource.rc') |
| |
| net_res = '$TARGET_ROOT/grit_derived_sources/net_resources.res' |
| webkit_res = '$TARGET_ROOT/grit_derived_sources/webkit_resources.res' |
| |
| dll_resources = [ |
| browser_res, |
| chrome_dll_res, |
| common_res, |
| debugger_res, |
| net_res, |
| renderer_res, |
| webkit_res, |
| ] |
| |
| env_dll = env.Clone() |
| |
| env_dll.ApplySConscript([ |
| '$CHROME_SRC_DIR/build/using_v8.scons', |
| '$ICU38_DIR/using_icu38.scons', |
| ]) |
| |
| env_dll.Prepend( |
| CPPPATH = [ |
| "..", |
| ], |
| CPPDEFINES = [ |
| 'U_STATIC_IMPLEMENTATION', |
| 'PNG_USER_CONFIG', |
| 'CHROME_PNG_WRITE_SUPPORT', |
| 'LIBXSLT_STATIC', |
| 'LIBXML_STATIC', |
| '_WINDLL', |
| 'BROWSER_DLL', |
| 'RENDERER_DLL', |
| 'PLUGIN_DLL', |
| ], |
| CCFLAGS = [ |
| '/TP', |
| '/Wp64', |
| ], |
| ) |
| |
| env_dll.Append( |
| CPPPATH = [ |
| '$CHROME_DIR/app', |
| '$LIBPNG_DIR', |
| '$SKIA_DIR/include', |
| '$SKIA_DIR/include/corecg', |
| '$SKIA_DIR/platform', |
| '$LIBXSL_DIR', |
| '$LIBXML_DIR/DerivedSources/include', |
| '$LIBXML_DIR/include', |
| '$BREAKPAD_DIR/src', |
| ], |
| LIBS = [ |
| 'base', |
| 'base_gfx', |
| #'breakpad_handler', |
| 'googleurl', |
| 'net', |
| 'skia', |
| 'bzip2', |
| 'libjpeg', |
| 'libpng', |
| 'libxml', |
| 'libxslt', |
| 'modp_b64', |
| 'zlib', |
| |
| 'activex_shim', |
| 'WTF', |
| 'V8Bindings', |
| 'WebCore', |
| 'default_plugin', |
| 'glue', |
| 'JavaScriptCore_pcre', |
| 'port', |
| |
| 'browser', |
| 'browser_views', |
| 'debugger', |
| 'common', |
| 'util', |
| #'jscre', |
| 'plugin', |
| 'renderer', |
| 'hunspell', |
| # TODO(sgk): Windows doesn't use libevent, revisit when Linux gets here |
| #'libevent', |
| 'sqlite', |
| 'views', |
| 'v8_snapshot', |
| ], |
| ) |
| |
| if env_dll.Bit('windows'): |
| env_dll.Append( |
| LIBS = [ |
| # TODO(sgk): to be ported to Mac and Linux |
| 'sdch', |
| |
| #'comctl32.lib', |
| #'dwmapi.lib', |
| #'rpcrt4.lib', |
| #'shlwapi.lib', |
| #'winmm.lib', |
| #'wsock32.lib', |
| |
| 'Urlmon', |
| ], |
| LINKFLAGS = [ |
| '/INCREMENTAL', |
| '/DEBUG', |
| |
| '/DELAYLOAD:"comdlg32.dll"', |
| '/DELAYLOAD:"crypt32.dll"', |
| '/DELAYLOAD:"cryptui.dll"', |
| '/DELAYLOAD:"dwmapi.dll"', |
| '/DELAYLOAD:"imagehlp.dll"', |
| '/DELAYLOAD:"imm32.dll"', |
| '/DELAYLOAD:"oleacc.dll"', |
| '/DELAYLOAD:"oleaut32.dll"', |
| '/DELAYLOAD:"psapi.dll"', |
| '/DELAYLOAD:"urlmon.dll"', |
| '/DELAYLOAD:"uxtheme.dll"', |
| '/DELAYLOAD:"winhttp.dll"', |
| '/DELAYLOAD:"wininet.dll"', |
| '/DELAYLOAD:"winspool.drv"', |
| '/DELAYLOAD:"ws2_32.dll"', |
| '/DELAYLOAD:"wsock32.dll"', |
| |
| '/SUBSYSTEM:WINDOWS', |
| '/BASE:"0x01000000"', |
| '/MACHINE:X86', |
| '/FIXED:No', |
| |
| '/safeseh', |
| '/dynamicbase', |
| '/ignore:4199', |
| '/ignore:4221', |
| '/nxcompat', |
| |
| '/PDB:${TARGETS[1]}', |
| ], |
| ) |
| |
| input_files = [] |
| |
| if env_dll.Bit('windows'): |
| input_files.extend([ |
| 'app/chrome_dll_main.cc', |
| '$V8_DIR/snapshot-empty$OBJSUFFIX', |
| ]) |
| |
| |
| |
| # TODO(sgk): make a pseudo-Builder for these |
| import sys |
| sys.path.append(env.Dir('$CHROME_SRC_DIR/tools/grit').abspath) |
| |
| env_grd = env.Clone() |
| env_grd.Tool('scons', toolpath=[env_grd.Dir('$CHROME_SRC_DIR/tools/grit/grit')]) |
| |
| # NOTE: fake target gets replaced with real targets from reading .grd |
| generated = env_grd.GRIT( |
| '$TARGET_ROOT/grit_derived_sources/fake_generated_target', |
| '$CHROME_SRC_DIR/chrome/app/generated_resources.grd') |
| grit_files.extend(generated) |
| |
| # NOTE: fake target gets replaced with real targets from reading .grd |
| chromium = env_grd.GRIT( |
| '$TARGET_ROOT/grit_derived_sources/fake_chromium_target', |
| '$CHROME_SRC_DIR/chrome/app/chromium_strings.grd') |
| grit_files.extend(chromium) |
| |
| # NOTE: fake target gets replaced with real targets from reading .grd |
| google_chrome = env_grd.GRIT( |
| '$TARGET_ROOT/grit_derived_sources/fake_google_chrome_target', |
| '$CHROME_SRC_DIR/chrome/app/google_chrome_strings.grd') |
| grit_files.extend(google_chrome) |
| |
| |
| |
| # TODO(port) |
| if env_dll.Bit('windows'): |
| dll_targets = env_dll.ChromeSharedLibrary('chrome_dll/chrome', |
| dll_resources + input_files, |
| PDB='chrome_dll.pdb') |
| install_targets.extend(dll_targets) |
| |
| for g in [ g for g in grit_files if str(g).endswith('.rc') ]: |
| env_res.RES(g) |
| |
| chrome_exe_version_rc = env.ChromeVersionRC( |
| 'chrome_exe_version.rc', |
| 'app/chrome_exe_version.rc.version' |
| ) |
| |
| chrome_dll_version_rc = env.ChromeVersionRC( |
| 'chrome_dll_version.rc', |
| 'app/chrome_dll_version.rc.version', |
| ) |
| |
| # TODO(sgk): explicit dependencies => scanned implicit dependencies |
| Depends(chrome_exe_res, chrome_exe_version_rc) |
| Depends(chrome_dll_res, chrome_dll_version_rc) |
| |
| chrome_exe_version_res = env_res.RES(chrome_exe_version_rc) |
| chrome_dll_version_res = env_res.RES(chrome_dll_version_rc) |
| |
| install_targets.extend(chrome_exe_version_rc) |
| install_targets.extend(chrome_exe_version_res) |
| |
| install_targets.extend(chrome_dll_version_rc) |
| install_targets.extend(chrome_dll_version_res) |
| |
| env.ChromeMSVSProject('$CHROME_DIR/app/chrome_dll.vcproj', |
| dependencies = [ |
| '$BASE_DIR/build/base.vcproj', |
| '$WEBKIT_DIR/build/WebCore/WebCore.vcproj', |
| '$CHROME_DIR/plugin/plugin.vcproj', |
| '$LIBJPEG_DIR/libjpeg.vcproj', |
| '$BZIP2_DIR/bzip2.vcproj', |
| '$NET_DIR/build/net.vcproj', |
| ('$WEBKIT_DIR/build/JavaScriptCore/' + |
| 'JavaScriptCore_pcre.vcproj'), |
| '$WEBKIT_DIR/build/port/port.vcproj', |
| '$CHROME_DIR/browser/debugger/debugger.vcproj', |
| '$WEBKIT_DIR/default_plugin/default_plugin.vcproj', |
| '$CHROME_DIR/browser/browser.vcproj', |
| '$WEBKIT_DIR/build/V8Bindings/V8Bindings.vcproj', |
| '$SQLITE_DIR/sqlite.vcproj', |
| '$CHROME_DIR/views/views.vcproj', |
| '$MODP_B64_DIR/modp_b64.vcproj', |
| '$ZLIB_DIR/zlib.vcproj', |
| '$CHROME_DIR/common/common.vcproj', |
| '$ICU38_DIR/build/icu.vcproj', |
| '$CHROME_DIR/renderer/renderer.vcproj', |
| '$BASE_DIR/build/base_gfx.vcproj', |
| '$WEBKIT_DIR/build/JavaScriptCore/WTF.vcproj', |
| '$CHROME_DIR/browser/resources/browser_resources.vcproj', |
| '$V8_DIR/tools/visual_studio/v8_snapshot.vcproj', |
| '$LIBPNG_DIR/libpng.vcproj', |
| '$WEBKIT_DIR/build/glue/glue.vcproj', |
| '$SKIA_DIR/skia.vcproj', |
| '$CHROME_DIR/third_party/hunspell/hunspell.vcproj', |
| '$GEARS_DIR/gears.vcproj', |
| '$GOOGLEURL_DIR/build/googleurl.vcproj', |
| '$CHROME_DIR/installer/util/util.vcproj', |
| '$WEBKIT_DIR/activex_shim/activex_shim.vcproj', |
| '$SDCH_DIR/sdch.vcproj', |
| '$CHROME_DIR/browser/views/browser_views.vcproj', |
| '$LIBXSLT_DIR/build/libxslt.vcproj', |
| ], |
| guid='{C0A7EE2C-2A6D-45BE-BA78-6D006FDF52D9}') |
| |
| |
| |
| env_exe = env.Clone() |
| |
| env_exe.Prepend( |
| CPPPATH = [ |
| '..', |
| '$BREAKPAD_DIR/src', |
| ], |
| LIBS = [ |
| 'base', |
| 'breakpad_handler', |
| 'chrome', |
| 'common', |
| 'icu', |
| 'sandbox', |
| 'util', |
| ], |
| ) |
| |
| env_exe.Append( |
| LINKFLAGS = [ |
| '/INCREMENTAL', |
| |
| '/DELAYLOAD:"dwmapi.dll"', |
| '/DELAYLOAD:"uxtheme.dll"', |
| |
| '/SUBSYSTEM:WINDOWS', |
| '/MACHINE:X86', |
| '/FIXED:No', |
| |
| '/safeseh', |
| '/dynamicbase', |
| '/ignore:4199', |
| '/nxcompat', |
| |
| '/PDB:${TARGETS[1]}', |
| #'/IMPLIB:${TARGETS[2]}', |
| ], |
| ) |
| |
| # TODO(port) |
| if env.Bit('windows'): |
| chrome_exe = env_exe.ChromeProgram( |
| 'chrome_exe/chrome', |
| [ |
| chrome_exe_res, |
| 'app/breakpad.cc', |
| 'app/chrome_exe_main.cc', |
| 'app/client_util.cc', |
| 'app/google_update_client.cc', |
| ] |
| ) |
| |
| install_targets.append(chrome_exe[0]) |
| |
| env.Requires('$DESTINATION_ROOT/chrome.exe', |
| ['$DESTINATION_ROOT/chrome.dll', |
| '$DESTINATION_ROOT/icudt38.dll', |
| '$DESTINATION_ROOT/rlz.dll', |
| '$DESTINATION_ROOT/First Run', |
| '$DESTINATION_ROOT/themes', |
| Alias('chrome_locales'), |
| Alias('chrome_Dictionaries'), |
| ]) |
| |
| env.Install('$DESTINATION_ROOT', '$CHROME_DIR/app/FirstRun') |
| |
| # For release we want to run dependencies.py, may look something like: |
| #env.AddPostAction('$TARGET_ROOT/chrome.exe', |
| # ('$PYTHON tools/build/win/dependencies.py ' + |
| # '$(TargetPath) chrome.exe.deps')) |
| |
| env.ChromeMSVSProject('$CHROME_DIR/app/chrome_exe.vcproj', |
| dependencies = [ |
| '$BASE_DIR/build/base.vcproj', |
| '$SANDBOX_DIR/src/sandbox.vcproj', |
| '$CHROME_DIR/tools/crash_service/crash_service.vcproj', |
| '$BREAKPAD_DIR/breakpad_handler.vcproj', |
| '$CHROME_DIR/app/chrome_dll.vcproj', |
| '$CHROME_DIR/app/locales/en-US.vcproj', |
| '$CHROME_DIR/installer/util/util.vcproj', |
| '$CHROME_DIR/app/theme/theme_dll.vcproj', |
| ], |
| guid='{7B219FAA-E360-43C8-B341-804A94EEFFAC}') |
| |
| |
| env_flat = env.Clone( |
| BROWSER_RESOURCES = Dir('browser_resources'), |
| HTML_INLINE = env.File( |
| '$CHROME_SRC_DIR/chrome/tools/build/win/html_inline.py'), |
| FLATTEN_HTML_COM = '$PYTHON $HTML_INLINE $SOURCE $TARGET', |
| ) |
| |
| def FlatHtmlEmitter(target, source, env): |
| # When we get the target, it will have the "_flat.html" suffix, |
| # but will be next to the sourcefile. Replace it with a |
| # string that puts it in the $BROWSER_RESOURCES directory. |
| target = [env.File('$BROWSER_RESOURCES/' + target[0].name)] |
| return target, source |
| |
| env_flat['BUILDERS']['FlatHtml'] = Builder(action='$FLATTEN_HTML_COM', |
| suffix='_flat.html', |
| source_suffix='.html', |
| emitter=FlatHtmlEmitter) |
| |
| flats = [ |
| 'browser/resources/about_credits.html', |
| 'browser/resources/about_memory.html', |
| 'browser/resources/about_stats.html', |
| 'browser/resources/about_version.html', |
| 'browser/resources/history.html', |
| 'browser/resources/incognito_tab.html', |
| 'browser/resources/new_tab.html', |
| 'browser/resources/safe_browsing_malware_block.html', |
| 'browser/resources/safe_browsing_phishing_block.html', |
| 'browser/security/resources/ssl_error.html', |
| 'browser/security/resources/ssl_roadblock.html', |
| ] |
| |
| # TODO(port) |
| if env_flat.Bit('windows'): |
| flats_out = [] |
| for i in flats: |
| flats_out.extend(env_flat.FlatHtml(i)) |
| |
| # TODO(sgk): Remove when we upgrade to SCons 1.1.0, which |
| # determines implicit dependencies from .rc files. |
| env_flat.Depends(browser_res, flats_out) |
| |
| sconscript_files = [ |
| 'views/SConscript', |
| ] |
| |
| if not env.WantSystemLib('hunspell'): |
| sconscript_files.append('third_party/hunspell/SConscript') |
| if not env.WantSystemLib('sqlite'): |
| sconscript_files.append('$THIRD_PARTY_DIR/sqlite/SConscript') |
| |
| # TODO(port) |
| if env.Bit('windows'): |
| sconscript_files.extend([ |
| 'app/resources/SConscript', |
| 'app/theme/SConscript', |
| 'browser/views/SConscript', |
| ]) |
| |
| env.SConscript(sconscript_files, exports=['env', 'env_res', 'env_test']) |
| |
| # TODO(port) |
| if env.Bit('windows'): |
| env.InstallAs('$LIBS_DIR/${LIBPREFIX}jscre${LIBSUFFIX}', |
| '$WEBKIT_DIR/JavaScriptCore_pcre.lib') |
| |
| |
| env.Install('$DESTINATION_ROOT', install_targets) |
| |
| |
| gears_plugins = [ |
| '$GEARS_DIR/binaries/gears.dll', |
| '$GEARS_DIR/binaries/gears.pdb', |
| ] |
| |
| # TODO(port) |
| if env.Bit('windows'): |
| env.Install('$DESTINATION_ROOT/plugins/gears', gears_plugins) |
| |
| env.Command('$DESTINATION_ROOT/resources/inspector', |
| '$CHROME_SRC_DIR/third_party/WebKit/WebCore/inspector/front-end', |
| Copy('$TARGET', '$SOURCE'), |
| source_scanner=DirScanner) |