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
* Add 'midl' Tool module.
* Filter out the default OS_WINDOWS= definition from the Hammer
modules, which messes up our build.
* Fix the $PLATFORMSDK_VISTA definition.
* Remove the current directory from the 'base' Alias (avoid cycles).
* Remove by-hand addition of .lib, .pdb and .ilk files to the target
list when build shared libraries (multiple places).
* Comment out a post-action Touch() of the themes/default resource.
(Thanks to bradnelson for many of the above individual fixes.)
Review URL: http://codereview.chromium.org/8207
git-svn-id: http://src.chromium.org/svn/trunk/src/build@3980 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
* Rename SConscript files to {module}.scons or {moduel}_lib.scons,
depending on the primary target involved.
* Separate targets into individual *.scons files, with one
construction environment (named "env") per *.scons file.
* Add using_{module}.scons files (like .vsprops) that will be used
by other modules to add CPPDEFINES, CPPPATH, LIBS and LIBPATH values.
* Update other modules' *.scons files to use the new using_{module}.scons
files (using a temporary one-liner idiom until we have the
ApplySConscript() method from the Hammer modules).
* Use the idiom of removing to-be-ported files from the master list,
so they can be simply deleted from the to-be-ported list as they
get ported in the future, instead of having to shuffle entries
between lists.
* Use $OBJ_ROOT instead of hard-coded '#/$BUILD_TYPE/' for the $*_DIR
variables.
* Add a addRepository() call mapping build/ to $TARGET_ROOT/googleurl,
so its $OBJ_ROOT value can look like the others'.
* Formatting changes, primarily modifying indentation to conform to
style guidelines.
* Fix copyright headers in some third_party/* modules
previously overlooked.
* Add rudimentary __doc__ strings, setting up for a future
ability to generate meaningful documentation.
Review URL: http://codereview.chromium.org/7807
git-svn-id: http://src.chromium.org/svn/trunk/src/build@3675 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Construct the $THIRD_PARTY_DIR and $WEBKIT_DIR variables consistently
with other $*_DIR variables.
Don't execute test scripts from the VariantDir by default; everything
isn't installed in the proper place yet.
Use the 'build_component' variable from the submodule SConstruct
files to restrict how much we build by default (e.g. don't try to
build all of webkit if you're only working in base or net).
Review URL: http://codereview.chromium.org/7524
git-svn-id: http://src.chromium.org/svn/trunk/src/build@3626 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
(V8Bindings, libport and WebCore being the most significant example.) Since the
GNU linker does only a single pass over the archives we need some extra
trickery to deal with these unavoidable cycles. That trickey is --start-group
and --end-group (aka -( and -) ). That causes ld to loop over the group until
no more undefined symbols are found. In an ideal world we would only make
groups from those libraries which we knew to be in cycles. However, that's
tough with SCons, so we bodge it by making all the archives a group by
redefining the linking command here.
Review URL: http://codereview.chromium.org/7523
git-svn-id: http://src.chromium.org/svn/trunk/src/build@3623 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
generated. They're currently ending up in src/build/googleurl
but they should be in $TARGET_ROOT/googleurl.
git-svn-id: http://src.chromium.org/svn/trunk/src/build@3121 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
* Use the configuration options of the webkit SCons build itself
to build a v8.lib with snapshot=off.
* Move the build of v8_snapshot.lib (renamed from snapshotv8.lib)
from chrome\SConscript to build\SConscript.v8.
* Use the libraries{,-empty}.obj and snapshot{,-empty}.obj
files from the v8 build itself instead of rolling our own.
* Re-order thing in build/SConscript.v8 for readability (I hope).
Review URL: http://codereview.chromium.org/5615
git-svn-id: http://src.chromium.org/svn/trunk/src/build@2734 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
captured values for generating a config.h file.
Builds base/sdch_{filter,manager}.cc on all platforms and links
the 'sdch' library.
Add sdch to the SCons configuration loaded on Mac and Linux.
Removes platform #ifs in net/base/filter.cc initialization code
(reverting r2740).
B=2662
Review URL: http://codereview.chromium.org/5204
git-svn-id: http://src.chromium.org/svn/trunk/src/build@2710 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
* Add an ICU_UTIL_DATA_IMPL #defines to control whether we're expecting
the ICU data as ICU_UTIL_DATA_{SHARED,STATIC,FILE}.
* Set defaults on the platforms to match our current practice:
Windows => shared, Linux => file, Mac => static.
* On Mac, link the separate icui18n, icuuc and icudata libs (matching
how we're building there), instead of the common icu lib.
* Roll the icu38 revision in DEPS to get the updated SCons build.
Review URL: http://codereview.chromium.org/5022
git-svn-id: http://src.chromium.org/svn/trunk/src/build@2669 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
not libicuuc. Add a new $ICU_LIBS construction variable to allow
different platforms to link with different sets of ICU libraries.
Use it in the LIBS lists of the various construction environments
used to build the things that link with it.
Review URL: http://codereview.chromium.org/4312
git-svn-id: http://src.chromium.org/svn/trunk/src/build@2651 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Otherwise it deletes the build directory and db file which are needed by the rest of the build, causing the build to fail.
Fixes error:
scons: *** [Errno 2] No such file or directory: 'src/chrome/src/chrome/Hammer/.sconsign.dblite'
Review URL: http://codereview.chromium.org/5010
git-svn-id: http://src.chromium.org/svn/trunk/src/build@2638 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
* Call the $LIBEVENT_DIR/SConscript file on both Linux and Mac.
* Add generation of the config.h file.
* Modify the libevent_prebuild.sh script so SCons can pass in the input
file name (because SCons executes things from top of tree) but the
script still defaults to what XCode wants.
* Only build epoll.c and epoll_sub.c on Linux.
* Only build kqueue.c on Mac.
* Add -framework AppKit to the link lines.
* Add -fobjc-gc to Objective C compilation.
* Add message_pump_mac.mm to the base input file list on Mac.
* Build message_pump_libevent.cc on for base on both Linux and Mac.
* Link against -levent on both Linux and Mac.
Review URL: http://codereview.chromium.org/4254
git-svn-id: http://src.chromium.org/svn/trunk/src/build@2555 4ff67af0-8c30-449e-8e8b-ad334ec8d88c