diff options
author | sgk@google.com <sgk@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-21 06:04:04 +0000 |
---|---|---|
committer | sgk@google.com <sgk@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-21 06:04:04 +0000 |
commit | 11e020fcd65c415dc46d10ae9dbe6ba63600ee4c (patch) | |
tree | cddd284203c70dc51f60da67b71b73ce7ec4aff8 /third_party/libxml/libxml.scons | |
parent | 140d59c7cfa01e2d6a644091c29dcad9010c0e66 (diff) | |
download | chromium_src-11e020fcd65c415dc46d10ae9dbe6ba63600ee4c.zip chromium_src-11e020fcd65c415dc46d10ae9dbe6ba63600ee4c.tar.gz chromium_src-11e020fcd65c415dc46d10ae9dbe6ba63600ee4c.tar.bz2 |
Fix use of LOAD= with WantSystemLib() (we could blow up if a variable
hadn't been added to the config) and extend use of LOAD= into submodules:
* Add a ChromeLoadSConscriptModules() method that encapsulates the
conditional logic, and makes things more readable by specifying
component names as keyword arguments, not hard-coding the logic
as a series of if-tests.
* Put the ChromeLoadSConscriptModules() logic in a Tool module in
site_scons/site_tools, so it doesn't clutter up
build/SConscript.main directly.
* Move env.WantSystemLib() calls into the individual *.scons files,
so we call them each time (or not, based one LOAD=) and the config
itself just returns if the system library is requested and we
don't need to build anything locally.
* Move the settings where a library name changes based on whether or
not the system lib is being used into the using_*.scons files,
so they're available to clients independently of whether or not the
component's *.scons configuration is loaded.
* While here: rename the affected third_party SConscript files:
third_party/libjpeg/SConscript => third_party/libjpeg/libjpeg.scons
third_party/libxml/SConscript => third_party/libxml/libxml.scons
third_party/libxslt/SConscript => third_party/libxslt/libxslt.scons
* While here: move the Chrome{Program,SharedLibrary}() etc. builder
definitions from build/SConscript.main to a new too
Ad the ChromeLoadSConscriptModules() logic in a Tool module,
to remove more clutter from build/SConscript.main.
Review URL: http://codereview.chromium.org/11430
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5820 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party/libxml/libxml.scons')
-rw-r--r-- | third_party/libxml/libxml.scons | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/third_party/libxml/libxml.scons b/third_party/libxml/libxml.scons new file mode 100644 index 0000000..d403cd4 --- /dev/null +++ b/third_party/libxml/libxml.scons @@ -0,0 +1,157 @@ +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Import('env') + +if env.WantSystemLib('libxml'): + Return() + +env = env.Clone() + +env.Prepend( + CPPPATH = [ + '$ICU38_DIR/public/common', + '$ICU38_DIR/public/18n', + '$ZLIB_DIR', + 'DerivedSources', + 'DerivedSources/include', + 'include', + ], + CPPDEFINES = [ + 'U_STATIC_IMPLEMENTATION', + 'LIBXML_STATIC', + ], +) + +if env['PLATFORM'] == 'win32': + env.Append( + CCFLAGS = [ + '/TC', + '/wd4800', + ], + ) +elif env['PLATFORM'] == 'posix': + env.Append( + CPPDEFINES = [ + '_REENTRANT', + ], + ) + if '-Wall' in env['CCFLAGS']: + # We're not responsible for bad warning hygiene in this third party code. + env['CCFLAGS'].remove('-Werror') + + +input_files = [ + 'c14n.c', + 'catalog.c', + 'chvalid.c', + 'debugXML.c', + 'dict.c', + 'DOCBparser.c', + 'encoding.c', + 'entities.c', + 'error.c', + 'globals.c', + 'hash.c', + 'HTMLparser.c', + 'HTMLtree.c', + 'legacy.c', + 'list.c', + 'nanoftp.c', + 'nanohttp.c', + 'parser.c', + 'parserInternals.c', + 'pattern.c', + 'relaxng.c', + 'SAX.c', + 'SAX2.c', + 'schematron.c', + 'threads.c', + 'tree.c', + 'uri.c', + 'valid.c', + 'xinclude.c', + 'xlink.c', + 'xmlIO.c', + 'xmlmemory.c', + 'xmlmodule.c', + 'xmlreader.c', + 'xmlregexp.c', + 'xmlsave.c', + 'xmlschemas.c', + 'xmlschemastypes.c', + 'xmlstring.c', + 'xmlunicode.c', + 'xmlwriter.c', + 'xpath.c', + 'xpointer.c', +] + +env.ChromeStaticLibrary('libxml', input_files) + + +if env['PLATFORM'] == 'win32': + config_files = [ + # The configure.js script must be first in this list; the + # env.Command() call below executes the first list element. + + 'win32/configure.js', + 'win32/Makefile.msvc', + + 'config.h.in', + 'configure.in', + 'libxml-2.0-uninstalled.pc.in', + 'libxml-2.0.pc.in', + 'libxml.spec.in', + 'xml2-config.in', + 'xml2Conf.sh.in', + + 'include/libxml/xmlversion.h.in', + 'include/win32config.h', + ] + + copied_files = [] + for cf in config_files: + result = env.Command('DerivedSources/' + cf, cf, Copy('$TARGET', '$SOURCE')) + copied_files.extend(result) + + env.Command(['DerivedSources/config.h', + 'DerivedSources/include/libxml/xmlversion.h'], + copied_files, + 'cd ${SOURCE.dir} && $CSCRIPT ${SOURCE.file} $CONFIG_OPTIONS', + CONFIG_OPTIONS='compiler=msvc iconv=no icu=yes') +elif env['PLATFORM'] == 'posix': + config_files = [ + 'config.h', + 'include/libxml/xmlversion.h', + 'xml2-config', + ] + for cf in config_files: + result = env.Command('DerivedSources/' + cf, 'linux/' + cf, + Copy('$TARGET', '$SOURCE')) |