aboutsummaryrefslogtreecommitdiff
path: root/buildfile
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-11-23 11:43:02 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-11-23 11:43:02 +0200
commit290ea7840c979e38a2108030a99e7e9c61f40a8c (patch)
tree041eb38e45d39e032d203fb1c48f8ff07609db3e /buildfile
parentd657b1d00d41bf448a94f6a7c49cacd41c5fac0e (diff)
Restructure and install std-detect.hxx
We have to install this header since it needs to be included'able during module sidebuilds.
Diffstat (limited to 'buildfile')
-rw-r--r--buildfile91
1 files changed, 1 insertions, 90 deletions
diff --git a/buildfile b/buildfile
index f301ef1..2a5ec7a 100644
--- a/buildfile
+++ b/buildfile
@@ -2,7 +2,7 @@
# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
-./: tests/ doc{INSTALL LICENSE NEWS README version} file{manifest}
+./: {*/ -build/} doc{INSTALL LICENSE NEWS README version} file{manifest}
# The version file is auto-generated (by the version module) from manifest.
# Include it in distribution and don't remove when cleaning in src (so that
@@ -16,92 +16,3 @@ doc{version}: clean = ($src_root != $out_root)
#
dir{tests/}: install = false
doc{INSTALL}@./: install = false
-
-if! $cxx.features.modules
-{
- # List sources as files so that we can prepare a distribution with any
- # compiler.
- #
- ./: {mxx cxx}{*}
-}
-else
-{
- # We only do the static library since this is what we would have gotten
- # should we have used headers (i.e., whatever object code generated from
- # those headers would have ended up in each executable/library).
- #
- ./: liba{std-modules}
-
- # Building of the modules gets rather compiler-specific.
- #
- if ($cxx.id.type == 'clang')
- {
- # Use the naming scheme expected by -fprebuilt-module-path=. Can also be
- # specified with -fmodule-file=.
- #
- core = std.core.pcm
- io = std.io.pcm
- regex = std.regex.pcm
- threading = std.threading.pcm
-
- liba{std-modules}: bmia{$core $io $regex $threading}
-
- export_target = $out_root/liba{std-modules}
- }
- elif ($cxx.id.type == 'msvc')
- {
- # Use the naming scheme expected by /module:stdIfcDir. Note that IFCPATH
- # would require an extra directory (x64 or x86; e.g., x64/Release/).
- #
- # @@ Currently VC looks in Release regardless of /MD or /MDd.
- #
- dir = release/
- core = $dir/std.core.ifc
- io = $dir/std.io.ifc
- regex = $dir/std.regex.ifc
- threading = $dir/std.threading.ifc
-
- bmia{$core $io $regex $threading}: fsdir{$dir}
-
- # VC expects to find std.lib next to the .ifc's. Make it the real one
- # while std-modules -- a dummy.
- #
- ./: $dir/liba{std}
- $dir/liba{std}: bmia{$core $io $regex $threading}
- liba{std-modules}: cxx{dummy.cxx}
-
- # @@ Doesn't work if installed so we don't bother installing it. But we
- # still install dummy std-modules; the idea is to link a dummy and
- # (try) to use Microsoft-shipped .ifc's.
- #
- $dir/liba{std}: install = false
-
- # Include std-modules to trigger install.
- #
- export_target = $out_root/$dir/liba{std} $out_root/liba{std-modules}
- }
-
- # @@ TMP: use utility library instead?
- #
- if ($cxx.target.class == 'linux' || $cxx.target.class == 'bsd')
- cxx.coptions += -fPIC
-
- # Clang with libc++ (sometimes) needs it -- go figure.
- #
- if ($cxx.target.class != "windows")
- cxx.libs += -lpthread
-
- bmia{$core}: mxx{std-core}
- bmia{$io}: mxx{std-io} bmia{$core}
- bmia{$regex}: mxx{std-regex} bmia{$core} bmia{$io}
- bmia{$threading}: mxx{std-threading} bmia{$core}
-
- mxx{std-core}@./: cc.module_name = std.core
- mxx{std-io}@./: cc.module_name = std.io
- mxx{std-regex}@./: cc.module_name = std.regex
- mxx{std-threading}@./: cc.module_name = std.threading
-
- # Install into the libstd-modules/ subdirectory of, say, /usr/include/.
- #
- mxx{*}: install = include/$project/
-}