summaryrefslogtreecommitdiff
path: root/libexpat/libexpat/buildfile
diff options
context:
space:
mode:
Diffstat (limited to 'libexpat/libexpat/buildfile')
-rw-r--r--libexpat/libexpat/buildfile79
1 files changed, 79 insertions, 0 deletions
diff --git a/libexpat/libexpat/buildfile b/libexpat/libexpat/buildfile
new file mode 100644
index 0000000..ef06a2e
--- /dev/null
+++ b/libexpat/libexpat/buildfile
@@ -0,0 +1,79 @@
+# file : libexpat/buildfile
+# license : MIT; see accompanying COPYING file
+
+# xmltok_{impl,nc}.c files are included into xmltok.c, so exclude them from
+# the compilation.
+#
+lib{expat}: h{*} c{* -xmltok_impl -xmltok_ns}
+lib{expat}: c{xmltok_impl xmltok_ns}: include = false
+
+tclass = $c.target.class
+
+msvc_runtime = ($c.target.system == 'win32-msvc')
+
+# Symbol exporting for MSVC and Clang targeting MSVC is done via the .def
+# file.
+#
+# Note that for MinGW it's done the same way as for POSIX via the visibility
+# function attribute.
+#
+libs{expat}: def{libexpat}: include = $msvc_runtime
+
+# Build options.
+#
+c.poptions += -DHAVE_EXPAT_CONFIG_H
+
+if! $msvc_runtime
+ c.poptions += -DXML_ENABLE_VISIBILITY=1
+
+c.poptions =+ "-I$src_base"
+
+if ($c.class == 'gcc')
+{
+ c.coptions += -fexceptions -fno-strict-aliasing
+
+ if! $msvc_runtime
+ c.coptions += -fvisibility=hidden
+
+ # Disable warnings that pop up with -Wall -Wextra.
+ #
+ # Note that -Wno-implicit-fallthrough is only supported starting from GCC 7
+ # and Clang 3.9. However, we don't check for the compiler version since the
+ # earlier compiler versions do not complain about unknown -Wno-* options,
+ # unless some other diagnostics is issued.
+ #
+ # Also note that these warnings can be build2-specific due to the
+ # intermediate translation unit pre-processing phase, which wipes the `fall
+ # through` comments from the macro definitions.
+ #
+ c.coptions += -Wno-implicit-fallthrough
+}
+
+switch $tclass
+{
+ case 'linux' | 'bsd'
+ {
+ # Make sure all symbols are resolvable.
+ #
+ c.loptions += -Wl,--no-undefined
+ }
+}
+
+# Export options.
+#
+lib{expat}: cc.export.poptions = "-I$src_base"
+liba{expat}: cc.export.poptions += -DXML_STATIC
+
+# See bootstrap.build for details.
+#
+if $version.pre_release
+ lib{expat}: bin.lib.version = @"-$version.project_id"
+else
+ lib{expat}: bin.lib.version = @"-$abi_version_major" linux@"$abi_version"
+
+# Install the bare minimum of headers (note: not recreating subdirectories).
+#
+h{*}: install = false
+
+for h: expat expat_external expat_config
+ h{$h}@./: install = include/