build\*.scons structure (mirroring build\*.vsprops files):
* Use env.ApplySConscript() instead of env.SConscript with a
hand-crafted dictionary defining 'env'.
* Move various CPPPATH, CCFLAGS, CPPDEFINES, LIBS and LIBPATH
definitions from build/SConscript.main and target-specific
*.scons files into the build\*.scons files that mirror the
existing build\*.vsprops hierarchy.
* Use the new build\{debug,release}.scons files to update the
windows_dbg and windows_opt construction environments.
* Mirror current support for CHROME_BUILD_TYPE and CHROMIUM_BUILD
external environment variables.
* Remove hard-coded /TP options.
* Massage $CXXFLAGS to remove $CCFLAGS, avoiding duplication of options
on command lines. Handle the ripple effect in $PCHCOM by adding
$CCFLAGS back to that command line.
* Delete hammer's default settings of {CC,LINK}FLAGS_{DEBUG,OPTIMIZED}
so they don't pollute our construction environments.
* Update chrome config to link against v8 for opt, v8_g for dbg.
* Get rid of fragile by-hand order of using_net.scons before other
using_*.scons files. We're now using --start-group and --end-group
on Linux to deal with dependency cycles in libraries.
Review URL: http://codereview.chromium.org/11478
git-svn-id: http://src.chromium.org/svn/trunk/src/build@5741 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This allows the LayoutTest harness to run on Linux. Note that the tests still
don't run properly because Linux test_shell is missing the ability to read URLs
from stdin (causing the test_shell to just sit there waiting for input). I'll
add that in another CL.
BUG=4281
Review URL: http://codereview.chromium.org/10413
git-svn-id: http://src.chromium.org/svn/trunk/src/build@5566 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
webkit\SConscript, as a place for calling renamed *.scons files.
Add 'webkit' and 'chrome' COMPONENT_PROGRAM_GROUPS and
COMPONENT_TEST_PROGRAM_GROUPS so the generated .exe files get
copied correctly into the Hammer\ build subdirectory.
Review URL: http://codereview.chromium.org/10768
git-svn-id: http://src.chromium.org/svn/trunk/src/build@5518 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
* Rename SConscript to *.scons in the following directories:
third_party\{bspatch,bsdiff,lzma_dsk}
chrome\installer\{setup,mini_installer,util}
* Split mini_installer and installer_unittests into separate *.scons files.
* Add using_bspatch.scons and using_lzma_sdk.scons "properties" files,
modifying other *.scons files to use them as appropriate.
Review URL: http://codereview.chromium.org/10952
git-svn-id: http://src.chromium.org/svn/trunk/src/build@5515 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
* Fix the grit tool so it works with Repository() directories (and
tap gspencer to upstream the changes).
* Fix the evaluation of $PRE_EVALUATE_DIRS, which was interfering
with sucking up the source files for listing in the .vcproj files.
* Set AlwaysBuild() on the project files so they're always
evaluated for up-to-dateness when 'all_solutions' is the target.
Review URL: http://codereview.chromium.org/10725
git-svn-id: http://src.chromium.org/svn/trunk/src/build@5440 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Added a dummy media.cc file in order to produce media.lib so there are no
linker errors when building media_unittests.exe. Currently chrome_dll
does NOT depend on media so it will not be linked in, which is OK for now :)
Review URL: http://codereview.chromium.org/10683
git-svn-id: http://src.chromium.org/svn/trunk/src/build@5389 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Add march flag to builds. Our system compilers are assuming > i386 already, but
not all gcc installations will do this. Without an march flag, gcc assumes only
a 386 and then some atomic operations are compiled to undefined references
which break linking.
Review URL: http://codereview.chromium.org/10689
git-svn-id: http://src.chromium.org/svn/trunk/src/build@5363 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
a variable called SYSTEM_LIBS, consisting of a comma-separated
list of system libraries. So far, bzip2, libpng, libjpeg,
libxml, libxslt, lzma_sdk, zlib, hunspell, sqlite, libevent are recognized.
BUG=4321
Review URL: http://codereview.chromium.org/10626
Patch from Fabien Tassin <fta@sofaraway.org>.
git-svn-id: http://src.chromium.org/svn/trunk/src/build@5320 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
the number of CPUs. This at least allows the build to function
on unknown systems.
Remove a now-unnecessary addition of $V8_DIR to LIBPATH. The
v8 libraries now get installed in $LIBS_DIR like everyone else.
Review URL: http://codereview.chromium.org/10208
git-svn-id: http://src.chromium.org/svn/trunk/src/build@5007 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
in base, net and sandbox:
* Remove by-hand Install() and Alias() calls.
* Set $COMPONENT_PROGRAM_GROUPS and $COMPONENT_TEST_PROGRAM_GROUPS
(with in each foo\foo.scons file) so executables get added
automatically to the appropriate Alias.
* Set $TESTS_DIR and $STAGING_DIR so executables get linked
directly in their final resting place ($TARGET_ROOT).
Review URL: http://codereview.chromium.org/9188
git-svn-id: http://src.chromium.org/svn/trunk/src/build@4805 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
* Rename SConscript.unit_tests to test/unit/unit_tests.scons.
* Add a new chrome/chrome.scons "master" for building everything
chrome. Have it just load the existing SConscript file, and
the new test/unit/unit_tests.scons file. We'll move things from
SConscript (or elsewhere) into chrome.scons as they get convertd.
* Change build/SConscript.main to load chrome/chrome.scons.
* Add new using_libjpeg.scons, using_libxml.scons, and using_libxslt.scons
"properties" files.
* Convert test/unit/unit_tests.scons to use the available using_*.scons files.
* Combine settings that were scattered throught test/unit/unit_tests.scons
to make it a little more readable.
* Add $CHROME_DIR/ to the beginning of the file listed in
test/unit/unit_tests.scons, since they're now being interpreted
from a SConscript file down two directory levels.
Review URL: http://codereview.chromium.org/9005
git-svn-id: http://src.chromium.org/svn/trunk/src/build@4448 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Initially, it only supports the Ubuntu 8.04 flavor of Linux, but
we should expand that as time goes on.
git-svn-id: http://src.chromium.org/svn/trunk/src/build@4330 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
* Use SCons -C to invoke the v8 build from our own build directory,
using the -Y option to pull all source files from the v8 source
directory, to avoid building things under src/v8.
* Make sure the build directory exists before we invoke the subsidiary
SCons that will chdir there.
* Build libv8_snapshot.a in the obj/v8 directory, not src/build.
* Remove the svn:ignore property from src/build (specifically libv8snapshot.a).
* Correct the $LIBS_DIR location of libv8.a.
* Use the actual file names involved instead of local Python variables.
* Don't forcibly add our targets to other component's Aliases.
Review URL: http://codereview.chromium.org/8851
git-svn-id: http://src.chromium.org/svn/trunk/src/build@4099 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
using the -Y option to pull all source files from the v8 source
directory. This requires making sure the build directory exists
before we invoke the subsidiary SCons that will chdir there.
Other clean up:
* Use the actual file names involved instead of local Python variables.
* Don't forcibly add our targets to other component's Aliases.
Review URL: http://codereview.chromium.org/8639
git-svn-id: http://src.chromium.org/svn/trunk/src/build@4041 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
I did some profiling and found that we spend a lot of
time in SCons/Subst.py resolving paths with $ vars in
them. By pre-resolving some common $ vars, we can get
a 16% speed up of an empty build (running hammer Hammer
when everything is already built). On my work desktop,
this is a saving from ~180s to do an empty build to
~150s to do an empty build.
I found which symbols to pre-resolve by gathering stats
on what symbols were resolved during a single run.
Originally, these were the top 10 calls to
StringSubber.substitute:
91466 /src/gclient-git/src/chrome
89457 $MAIN_DIR/Hammer
89457 $DESTINATION_ROOT
89447 $TARGET_ROOT/obj
65514 $OBJ_ROOT/webkit
18169 $OBJ_ROOT/third_party
8991 -I/src/gclient-git/src/webkit/pending
5700 $THIRD_PARTY_DIR/WebKit
4488 -I/src/gclient-git/src/webkit/port/platform/network
4488 -I/src/gclient-git/src/webkit/port/platform
Afterwards, the top 10 calls were:
65514 /src/gclient-git/src/chrome/Hammer/obj/webkit
23933 /src/gclient-git/src/chrome/Hammer/obj
18169 $OBJ_ROOT/third_party
8991 -I/src/gclient-git/src/webkit/pending
5700 $THIRD_PARTY_DIR/WebKit
4488 -I/src/gclient-git/src/webkit/port/platform/network
4488 -I/src/gclient-git/src/webkit/port/platform
3813 $OBJ_ROOT/skia
3498 $THIRD_PARTY_DIR/icu38
3456 $THIRD_PARTY_WEBKIT_DIR/JavaScriptCore
Adding these rules cuts the total number of calls to
StringSubber.substitute from 1001817 to 665933.
Review URL: http://codereview.chromium.org/8608
git-svn-id: http://src.chromium.org/svn/trunk/src/build@4010 4ff67af0-8c30-449e-8e8b-ad334ec8d88c