summaryrefslogtreecommitdiffstats
path: root/third_party/libxml/libxml.scons
diff options
context:
space:
mode:
authorsgk@google.com <sgk@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-21 06:04:04 +0000
committersgk@google.com <sgk@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-21 06:04:04 +0000
commit11e020fcd65c415dc46d10ae9dbe6ba63600ee4c (patch)
treecddd284203c70dc51f60da67b71b73ce7ec4aff8 /third_party/libxml/libxml.scons
parent140d59c7cfa01e2d6a644091c29dcad9010c0e66 (diff)
downloadchromium_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.scons157
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'))