| Index: build/SConscript.main
|
| ===================================================================
|
| --- build/SConscript.main (revision 5286)
|
| +++ build/SConscript.main (working copy)
|
| @@ -29,6 +29,12 @@
|
| root_env = Environment(
|
| tools = ['component_setup'],
|
|
|
| + # Requested list of system (shared) libraries, from the comma separated
|
| + # SYSTEM_LIBS command-line argument
|
| + req_system_libs = [],
|
| + # All supported system libraries, for the help message
|
| + all_system_libs = [],
|
| +
|
| CHROME_SRC_DIR = '$MAIN_DIR/..',
|
| DESTINATION_ROOT = '$MAIN_DIR/Hammer',
|
| TARGET_ROOT = '$DESTINATION_ROOT',
|
| @@ -95,7 +101,17 @@
|
| '__env__, RDirs, TARGET, SOURCE)}'),
|
| )
|
|
|
| +root_env['req_system_libs'] = ARGUMENTS.get('SYSTEM_LIBS').split(',')
|
|
|
| +def WantSystemLib(env, lib):
|
| + """
|
| + Return true if lib has been requested as a system library in SYSTEM_LIBS.
|
| + """
|
| + if lib not in env['all_system_libs']:
|
| + env['all_system_libs'].append(lib)
|
| + return (lib in env['req_system_libs'])
|
| +root_env.AddMethod(WantSystemLib, "WantSystemLib")
|
| +
|
| def ChromeProgram(env, *args, **kw):
|
| return env.ComponentProgram(*args, **kw)
|
| root_env.AddMethod(ChromeProgram)
|
| @@ -208,17 +224,33 @@
|
| sconscripts.append('$TESTING_DIR/SConscript.gtest')
|
|
|
| if LoadComponent('third_party'):
|
| + if not root_env.WantSystemLib('bzip2'):
|
| + sconscripts.append('$BZIP2_DIR/bzip2.scons')
|
| + root_env.Append(BZIP2_LIB = ['bzip2'])
|
| + else:
|
| + root_env.Append(BZIP2_LIB = ['bz2'])
|
| + if not root_env.WantSystemLib('libpng'):
|
| + sconscripts.append('$LIBPNG_DIR/libpng.scons')
|
| + if not root_env.WantSystemLib('libjpeg'):
|
| + sconscripts.append('$LIBJPEG_DIR/SConscript')
|
| + if not root_env.WantSystemLib('libxml'):
|
| + sconscripts.append('$LIBXML_DIR/SConscript')
|
| + root_env.Append(XML_LIB = ['libxml'])
|
| + else:
|
| + root_env.Append(XML_LIB = ['xml2'])
|
| + if not root_env.WantSystemLib('libxslt'):
|
| + sconscripts.append('$LIBXSLT_DIR/SConscript')
|
| + if not root_env.WantSystemLib('lzma_sdk'):
|
| + sconscripts.append('$LZMA_SDK_DIR/SConscript')
|
| + if not root_env.WantSystemLib('zlib'):
|
| + sconscripts.append('$ZLIB_DIR/zlib.scons')
|
| + root_env.Append(ZLIB_LIB = ['zlib'])
|
| + else:
|
| + root_env.Append(ZLIB_LIB = ['z'])
|
| sconscripts.extend([
|
| '$BSDIFF_DIR/SConscript',
|
| - '$BZIP2_DIR/bzip2.scons',
|
| '$ICU38_DIR/icu38.scons',
|
| - '$LIBPNG_DIR/libpng.scons',
|
| - '$LZMA_SDK_DIR/SConscript',
|
| '$MODP_B64_DIR/modp_b64.scons',
|
| - '$ZLIB_DIR/zlib.scons',
|
| - '$LIBJPEG_DIR/SConscript',
|
| - '$LIBXML_DIR/SConscript',
|
| - '$LIBXSLT_DIR/SConscript',
|
| '$BSPATCH_DIR/SConscript',
|
| ])
|
|
|
| @@ -517,8 +549,21 @@
|
| '#Software_Requirements')
|
|
|
| sys.exit(1)
|
| + if root_env.WantSystemLib('libxml'):
|
| + try:
|
| + linux_env.ParseConfig('pkg-config --cflags --libs libxml-2.0')
|
| + except OSError, e:
|
| + print ('\n'
|
| + 'libxml requested in SYSTEM_LIBS but not found\n')
|
| + sys.exit(1)
|
| + if root_env.WantSystemLib('libxslt'):
|
| + try:
|
| + linux_env.ParseConfig('pkg-config --cflags --libs libxslt')
|
| + except OSError, e:
|
| + print ('\n'
|
| + 'libxslt requested in SYSTEM_LIBS but not found\n')
|
| + sys.exit(1)
|
|
|
| -
|
| # --------------------------------------------------------------------------
|
| # Mac specific
|
|
|
| @@ -558,10 +603,13 @@
|
| ],
|
| )
|
|
|
| -mac_env.Append(
|
| +if not root_env.WantSystemLib('libevent'):
|
| + mac_env.Append(
|
| BUILD_SCONSCRIPTS = [
|
| '$LIBEVENT_DIR/libevent.scons',
|
| ],
|
| + )
|
| +mac_env.Append(
|
| CFLAGS = [
|
| '-std=c99',
|
| ],
|
| @@ -638,6 +686,10 @@
|
| LOAD=[module,...] Comma-separated list of components to load in the
|
| dependency graph ('-' prefix excludes):
|
| %s
|
| + SYSTEM_LIBS=[lib,...] Comma-separated list of system libraries to link
|
| + dynamically (by default they are built in from
|
| + included sources):
|
| +%s
|
| PROGRESS=type Display a progress indicator:
|
| name: print each evaluated target name
|
| spinner: print a spinner every 5 targets
|
| @@ -652,8 +704,9 @@
|
| subsequent_indent = ' '*32,
|
| )
|
| components = tw.fill(', '.join(components))
|
| + all_system_libs = tw.fill(', '.join(env['all_system_libs']))
|
|
|
| - Help(help_fmt % components)
|
| + Help(help_fmt % (components, all_system_libs))
|
|
|
|
|
| Import('build_component')
|
|
|