• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2018 Peter Dimov
2# Distributed under the Boost Software License, Version 1.0.
3# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
4
5import package ;
6import path ;
7import sequence ;
8import set ;
9import ../../../tools/boost_install/boost-install ;
10import ../../../tools/boost_install/boost-install-dirs ;
11
12# install-header-subdir
13
14local header-subdir = [ boost-install-dirs.header-subdir ] ;
15
16local install-header-subdir ;
17
18if $(header-subdir)
19{
20    install-header-subdir = $(header-subdir)/boost ;
21}
22else
23{
24    install-header-subdir = boost ;
25}
26
27# install-headers
28
29# first, the 'modular' headers
30
31local modular-headers = $(BOOST_MODULARLAYOUT) ;
32
33local skip-headers ;
34
35for local lib in $(modular-headers)
36{
37    local header-root = $(BOOST_ROOT)/libs/$(lib)/include/boost ;
38
39    local headers =
40        [ path.glob-tree $(header-root) : *.hpp *.ipp *.h *.inc ]
41        [ path.glob-tree $(header-root)/compatibility/cpp_c_headers : c* ] ;
42
43    skip-headers += [ sequence.transform path.relative-to [ path.make $(header-root) ] : $(headers) ] ;
44
45    package.install install-$(lib)-headers Boost
46        : <install-header-subdir>$(install-header-subdir)
47          <install-source-root>$(header-root)
48          <install-no-version-symlinks>on
49        : # No binaries
50        : # No libraries
51        : $(headers)
52    ;
53
54    explicit install-$(lib)-headers ;
55}
56
57# then, the non-modular headers in boost/, minus the modular ones
58
59local header-root = [ path.make $(BOOST_ROOT)/boost ] ;
60
61local headers =
62    [ path.glob-tree $(BOOST_ROOT)/boost : *.hpp *.ipp *.h *.inc ]
63    [ path.glob-tree $(BOOST_ROOT)/boost/compatibility/cpp_c_headers : c* ] ;
64
65headers = [ set.difference $(headers) : $(header-root)/$(skip-headers) ] ;
66
67package.install install-boost-headers Boost
68    : <install-header-subdir>$(install-header-subdir)
69      <install-source-root>$(header-root)
70      <install-no-version-symlinks>on
71    : # No binaries
72    : # No libraries
73    : $(headers)
74;
75
76explicit install-boost-headers ;
77
78#
79
80alias install-headers : install-$(modular-headers)-headers install-boost-headers ;
81explicit install-headers ;
82
83# install
84
85alias boost_headers ;
86
87boost-install.install-cmake-config boost_headers ;
88explicit install-cmake-config ;
89
90alias install : install-headers install-cmake-config ;
91explicit install ;
92
93# stage
94
95boost-install.stage-cmake-config boost_headers ;
96explicit stage-cmake-config ;
97
98alias stage : stage-cmake-config ;
99explicit stage ;
100