summaryrefslogtreecommitdiff
path: root/odb/buildfile
diff options
context:
space:
mode:
Diffstat (limited to 'odb/buildfile')
-rw-r--r--odb/buildfile162
1 files changed, 5 insertions, 157 deletions
diff --git a/odb/buildfile b/odb/buildfile
index 34a6329..78b5d08 100644
--- a/odb/buildfile
+++ b/odb/buildfile
@@ -1,161 +1,9 @@
-# file : odb/buildfile
+# file : buildfile
# license : GNU GPL v3; see accompanying LICENSE file
-define plugin: libs
+./: {*/ -build/ -m4/} doc{INSTALL NEWS README} legal{GPLv3 LICENSE} manifest
-plugin{*}:
-{
- bin.lib.prefix = # No lib prefix.
- backlink = true # Backlink in forwarded configs (next to exe).
-}
-
-# For now we use the .so extension everywhere except Windows (see
-# plugin_path() in odb.cxx for details).
-#
-if ($cxx.target.class != 'windows')
- plugin{*}: extension = so
-
-# By default install the plugin next to the driver.
-#
-# On Windows this is the only sane option where we want the plugin (odb.dll)
-# to go into bin/ since failed that we won't be able to find libraries we
-# depend on.
-#
-# On other platforms another option is to install into the GCC's plugin
-# directory. This way the same driver can be used with multiple GCC versions
-# and is something that distributions packagers sometimes want to do.
-#
-# So at some point we should also make it configurable, including support for
-# installing into GCC's plugin directory.
-#
-# NOTE: see ODB_GCC_PLUGIN_DIR when adding this support.
-#
-plugin{*}: install = bin/
-
-import libs = libcutl%lib{cutl}
-import libs += libstudxml%lib{studxml}
-
-./: exe{odb} plugin{odb}
-
-# We need to make driver depend on plugin but not link it so that when, for
-# example, driver is imported, plugin is updated as well.
-#
-# We, however, don't want to install via the driver since the same driver
-# build could be used with multiple plugin builds (e.g., for different GCC
-# versions, which is something distribution packagers sometimes want to do).
-# @@ For this we will have to wait for operation-specific values support.
-#
-exe{odb}: cxx{odb}
-exe{odb}: libus{odb}: bin.whole = false
-exe{odb}: plugin{odb}: include = adhoc
-
-# Target metadata, see also --build2-metadata in odb.cxx.
-#
-# While ODB itself doesn't use any environment variables, it uses GCC
-# underneath which does (see "Environment Variables Affecting GCC").
-#
-exe{odb}:
-{
- export.metadata = 1 odb
- odb.name = [string] odb
- odb.version = [string] $version
- odb.checksum = [string] $version
- odb.environment = [strings] CPATH CPLUS_INCLUDE_PATH GCC_EXEC_PREFIX COMPILER_PATH
-}
-
-plugin{odb}: libus{odb}
-
-switch $cxx.target.system
-{
- # On Windows we have to link the import stub.
- #
- case 'mingw32'
- plugin{odb}: cxx.libs += $plugin_dir/cc1plus.exe.a
-
- # On Mac OS we have to allow undefined symbols.
- #
- case 'darwin'
- plugin{odb}: cxx.loptions += -undefined dynamic_lookup
-}
-
-libus{odb}: {hxx ixx txx cxx}{** -odb -options -pregenerated/**} $libs
-
-# Build options.
-#
-# Note: escape backslashes in gxx_name.
-#
-cxx.poptions += "-I$plugin_dir/include"
-cxx.poptions += "-DODB_GXX_NAME=\"$regex.replace($gxx_name, '\\', '\\\\')\""
-cxx.poptions += -DODB_BUILD2 # @@ TMP while supporting other build systems.
-
-## Consumption build ($develop == false).
-#
-
-# Use pregenerated versions in the consumption build.
-#
-libus{odb}: pregenerated/{hxx ixx cxx}{**}: include = (!$develop)
-
-if! $develop
- cxx.poptions =+ "-I($src_base/pregenerated)" # Note: must come first.
-
-# Distribute pregenerated versions only in the consumption build.
-#
-pregenerated/{hxx ixx cxx}{*}: dist = (!$develop)
-
-#
-##
-
-## Development build ($develop == true).
-#
-
-libus{odb}: {hxx ixx cxx}{options}: include = $develop
-
-if $develop
- import! [metadata] cli = cli%exe{cli}
-
-# In the development build distribute regenerated {hxx ixx cxx}{options},
-# remapping their locations to the paths of the pregenerated versions (which
-# are only distributed in the consumption build; see above). This way we make
-# sure that the distributed files are always up-to-date.
-#
-<{hxx ixx cxx}{options}>: cli{options} $cli
-{
- dist = ($develop ? pregenerated/odb/ : false)
-
- # Symlink the generated code in src for convenience of development.
- #
- backlink = true
-}
-%
-if $develop
-{{
- options = --include-with-brackets --include-prefix odb --guard-prefix ODB \
- --generate-file-scanner --generate-specifier --generate-modifier \
- --generate-description --suppress-undocumented \
- --cxx-prologue '#include <odb/option-parsers.hxx>'
-
- $cli $options -o $out_base $path($<[0])
-
- # If the result differs from the pregenerated version, copy it over.
- #
- if diff $src_base/pregenerated/odb/options.hxx $path($>[0]) >- && \
- diff $src_base/pregenerated/odb/options.ixx $path($>[1]) >- && \
- diff $src_base/pregenerated/odb/options.cxx $path($>[2]) >-
- exit
- end
-
- cp $path($>[0]) $src_base/pregenerated/odb/options.hxx
- cp $path($>[1]) $src_base/pregenerated/odb/options.ixx
- cp $path($>[2]) $src_base/pregenerated/odb/options.cxx
-}}
-
-#
-##
-
-# Pass the copyright notice extracted from the LICENSE file.
-#
-obj{odb}: cxx.poptions += -DODB_COPYRIGHT=\"$copyright\"
-
-# Don't install any of the plugin's headers.
+# Don't install tests or the INSTALL file.
#
-{hxx ixx txx}{*}: install = false
+tests/: install = false
+doc{INSTALL}@./: install = false