# 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('env') # Grab the -j flag from the outer environment, if available. try: cpus = env.GetOption('num_jobs') cpu_flag = ' -j%d' % cpus except AttributeError: cpu_flag = '' env = env.Clone( V8_MODE = 'release', V8_SRC_DIR = '#/../v8', V8_MODE_DIR = '$V8_SRC_DIR/obj/$V8_MODE', V8_SCONS_COM = 'cd ../v8 && $PYTHON $SCONS $SCONSFLAGS mode=$V8_MODE', SCONS='../third_party/scons/scons.py', SCONSFLAGS = ('-Q ' '--warn=no-deprecated ' '--warn=no-no-parallel-support' + cpu_flag), ) # Rather than build v8 with our own commands, we just shell out to v8's # own SCons-based build, since their build system is complicated. # This SConscript just declares dependencies on the outputs of that build. mksnapshot_exe = env.File('$V8_MODE_DIR/mksnapshot${PROGSUFFIX}') libraries_obj = env.File('$V8_MODE_DIR/libraries${OBJSUFFIX}') libraries_empty_obj = env.File('$V8_MODE_DIR/libraries-empty${OBJSUFFIX}') snapshot_obj = env.File('$V8_MODE_DIR/snapshot${OBJSUFFIX}') snapshot_empty_obj = env.File('$V8_MODE_DIR/snapshot-empty${OBJSUFFIX}') v8_bin = env.File('$V8_SRC_DIR/shell${PROGSUFFIX}') v8_lib = env.File('$V8_SRC_DIR/${LIBPREFIX}v8${LIBSUFFIX}'), v8_scons_targets_off = [ mksnapshot_exe, libraries_obj, snapshot_empty_obj, v8_bin, v8_lib, ] v8_scons_targets_on = [ libraries_empty_obj, snapshot_obj, ] if env['PLATFORM'] == 'win32': v8_scons_targets_off.extend([ env.File('#/../v8/vc80.pdb') ]) v8 = env.Command(v8_scons_targets_off + v8_scons_targets_on, [], ['$V8_SCONS_COM snapshot=off sample=shell', '$V8_SCONS_COM snapshot=on ${TARGETS[-%d:]}' % len(v8_scons_targets_on)]) env.AlwaysBuild(v8) # Tell our SCons invocation to *not* delete v8.lib and the other targets # before building them, so the subsidiary v8 SCons call doesn't always # rebuild them (thereby causing us to always rebuild their dependents). env.Precious(v8) env.Install('$V8_DIR', v8) i = env.Install('$LIBS_DIR', v8_lib) env.Alias('webkit', i) i = env.Install('$TARGET_ROOT', v8_bin) env.Alias('chrome', i) # To satisfy tests expecting the following .exe name. if env['PLATFORM'] == 'win32': # TODO(evanm): this may be necessary on other platforms(?) i = env.InstallAs('$TARGET_ROOT/v8_shell_sample${PROGSUFFIX}', v8_bin) env.Alias('chrome', i) env.ChromeStaticLibrary('v8_snapshot', [libraries_empty_obj, snapshot_obj])