]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/libc++/Makefile
Merge clang 7.0.1 and several follow-up changes
[FreeBSD/FreeBSD.git] / lib / libc++ / Makefile
1 # $FreeBSD$
2
3 .include <src.opts.mk>
4
5 PACKAGE=        clibs
6 _LIBCXXRTDIR=   ${SRCTOP}/contrib/libcxxrt
7 HDRDIR=         ${SRCTOP}/contrib/libc++/include
8 SRCDIR=         ${SRCTOP}/contrib/libc++/src
9 CXXINCLUDEDIR=  ${INCLUDEDIR}/c++/v${SHLIB_MAJOR}
10 .if ${MACHINE_CPUARCH} == "arm"
11 STATIC_CXXFLAGS+= -mlong-calls
12 .endif
13
14 .PATH: ${SRCDIR}
15
16 LIB=            c++
17 SHLIB_MAJOR=    1
18 SHLIB_LDSCRIPT= libc++.ldscript
19
20 SRCS+=          algorithm.cpp
21 SRCS+=          any.cpp
22 SRCS+=          bind.cpp
23 SRCS+=          charconv.cpp
24 SRCS+=          chrono.cpp
25 SRCS+=          condition_variable.cpp
26 SRCS+=          debug.cpp
27 SRCS+=          exception.cpp
28 SRCS+=          functional.cpp
29 SRCS+=          future.cpp
30 SRCS+=          hash.cpp
31 SRCS+=          ios.cpp
32 SRCS+=          iostream.cpp
33 SRCS+=          locale.cpp
34 SRCS+=          memory.cpp
35 SRCS+=          mutex.cpp
36 SRCS+=          new.cpp
37 SRCS+=          optional.cpp
38 SRCS+=          random.cpp
39 SRCS+=          regex.cpp
40 SRCS+=          shared_mutex.cpp
41 SRCS+=          stdexcept.cpp
42 SRCS+=          string.cpp
43 SRCS+=          strstream.cpp
44 SRCS+=          system_error.cpp
45 SRCS+=          thread.cpp
46 SRCS+=          typeinfo.cpp
47 SRCS+=          utility.cpp
48 SRCS+=          valarray.cpp
49 SRCS+=          variant.cpp
50 SRCS+=          vector.cpp
51
52 CXXRT_SRCS+=    auxhelper.cc
53 CXXRT_SRCS+=    dynamic_cast.cc
54 CXXRT_SRCS+=    exception.cc
55 CXXRT_SRCS+=    guard.cc
56 CXXRT_SRCS+=    libelftc_dem_gnu3.c
57 CXXRT_SRCS+=    memory.cc
58 CXXRT_SRCS+=    stdexcept.cc
59 CXXRT_SRCS+=    terminate.cc
60 CXXRT_SRCS+=    typeinfo.cc
61
62 .for _S in ${CXXRT_SRCS}
63 CLEANFILES+=    cxxrt_${_S}
64 STATICOBJS+=    cxxrt_${_S:R}.o
65 cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA
66         ln -sf ${.ALLSRC} ${.TARGET}
67 .endfor
68
69 WARNS=          0
70 CFLAGS+=        -isystem ${HDRDIR}
71 CFLAGS+=        -isystem ${_LIBCXXRTDIR}
72 CFLAGS+=        -nostdinc++
73 CFLAGS+=        -nostdlib
74 CFLAGS+=        -D_LIBCPP_BUILDING_LIBRARY
75 CFLAGS+=        -DLIBCXXRT
76 .if empty(CXXFLAGS:M-std=*)
77 CXXFLAGS+=      -std=c++11
78 .endif
79
80 LIBADD+=        cxxrt
81 INCSGROUPS=     STD EXP EXT
82
83 STD_HEADERS+=   __bit_reference
84 STD_HEADERS+=   __bsd_locale_defaults.h
85 STD_HEADERS+=   __bsd_locale_fallbacks.h
86 STD_HEADERS+=   __config
87 STD_HEADERS+=   __debug
88 STD_HEADERS+=   __errc
89 STD_HEADERS+=   __functional_03
90 STD_HEADERS+=   __functional_base
91 STD_HEADERS+=   __functional_base_03
92 STD_HEADERS+=   __hash_table
93 STD_HEADERS+=   __libcpp_version
94 STD_HEADERS+=   __locale
95 STD_HEADERS+=   __mutex_base
96 STD_HEADERS+=   __node_handle
97 STD_HEADERS+=   __nullptr
98 STD_HEADERS+=   __split_buffer
99 STD_HEADERS+=   __sso_allocator
100 STD_HEADERS+=   __std_stream
101 STD_HEADERS+=   __string
102 STD_HEADERS+=   __threading_support
103 STD_HEADERS+=   __tree
104 STD_HEADERS+=   __tuple
105 STD_HEADERS+=   __undef_macros
106 STD_HEADERS+=   algorithm
107 STD_HEADERS+=   any
108 STD_HEADERS+=   array
109 STD_HEADERS+=   atomic
110 STD_HEADERS+=   bitset
111 STD_HEADERS+=   cassert
112 STD_HEADERS+=   ccomplex
113 STD_HEADERS+=   cctype
114 STD_HEADERS+=   cerrno
115 STD_HEADERS+=   cfenv
116 STD_HEADERS+=   cfloat
117 STD_HEADERS+=   charconv
118 STD_HEADERS+=   chrono
119 STD_HEADERS+=   cinttypes
120 STD_HEADERS+=   ciso646
121 STD_HEADERS+=   climits
122 STD_HEADERS+=   clocale
123 STD_HEADERS+=   cmath
124 STD_HEADERS+=   codecvt
125 STD_HEADERS+=   compare
126 STD_HEADERS+=   complex
127 STD_HEADERS+=   complex.h
128 STD_HEADERS+=   condition_variable
129 STD_HEADERS+=   csetjmp
130 STD_HEADERS+=   csignal
131 STD_HEADERS+=   cstdarg
132 STD_HEADERS+=   cstdbool
133 STD_HEADERS+=   cstddef
134 STD_HEADERS+=   cstdint
135 STD_HEADERS+=   cstdio
136 STD_HEADERS+=   cstdlib
137 STD_HEADERS+=   cstring
138 STD_HEADERS+=   ctgmath
139 STD_HEADERS+=   ctime
140 STD_HEADERS+=   ctype.h
141 STD_HEADERS+=   cwchar
142 STD_HEADERS+=   cwctype
143 STD_HEADERS+=   deque
144 STD_HEADERS+=   errno.h
145 STD_HEADERS+=   exception
146 STD_HEADERS+=   filesystem
147 STD_HEADERS+=   float.h
148 STD_HEADERS+=   forward_list
149 STD_HEADERS+=   fstream
150 STD_HEADERS+=   functional
151 STD_HEADERS+=   future
152 STD_HEADERS+=   initializer_list
153 STD_HEADERS+=   inttypes.h
154 STD_HEADERS+=   iomanip
155 STD_HEADERS+=   ios
156 STD_HEADERS+=   iosfwd
157 STD_HEADERS+=   iostream
158 STD_HEADERS+=   istream
159 STD_HEADERS+=   iterator
160 STD_HEADERS+=   limits
161 STD_HEADERS+=   limits.h
162 STD_HEADERS+=   list
163 STD_HEADERS+=   locale
164 STD_HEADERS+=   locale.h
165 STD_HEADERS+=   map
166 STD_HEADERS+=   math.h
167 STD_HEADERS+=   memory
168 STD_HEADERS+=   mutex
169 STD_HEADERS+=   new
170 STD_HEADERS+=   numeric
171 STD_HEADERS+=   optional
172 STD_HEADERS+=   ostream
173 STD_HEADERS+=   queue
174 STD_HEADERS+=   random
175 STD_HEADERS+=   ratio
176 STD_HEADERS+=   regex
177 STD_HEADERS+=   scoped_allocator
178 STD_HEADERS+=   set
179 STD_HEADERS+=   setjmp.h
180 STD_HEADERS+=   shared_mutex
181 STD_HEADERS+=   span
182 STD_HEADERS+=   sstream
183 STD_HEADERS+=   stack
184 STD_HEADERS+=   stdbool.h
185 STD_HEADERS+=   stddef.h
186 STD_HEADERS+=   stdexcept
187 STD_HEADERS+=   stdint.h
188 STD_HEADERS+=   stdio.h
189 STD_HEADERS+=   stdlib.h
190 STD_HEADERS+=   streambuf
191 STD_HEADERS+=   string
192 STD_HEADERS+=   string.h
193 STD_HEADERS+=   string_view
194 STD_HEADERS+=   strstream
195 STD_HEADERS+=   system_error
196 STD_HEADERS+=   tgmath.h
197 STD_HEADERS+=   thread
198 STD_HEADERS+=   tuple
199 STD_HEADERS+=   type_traits
200 STD_HEADERS+=   typeindex
201 STD_HEADERS+=   typeinfo
202 STD_HEADERS+=   unordered_map
203 STD_HEADERS+=   unordered_set
204 STD_HEADERS+=   utility
205 STD_HEADERS+=   valarray
206 STD_HEADERS+=   variant
207 STD_HEADERS+=   vector
208 STD_HEADERS+=   version
209 STD_HEADERS+=   wchar.h
210 STD_HEADERS+=   wctype.h
211
212 RT_HEADERS+=    cxxabi.h
213 RT_HEADERS+=    unwind-arm.h
214 RT_HEADERS+=    unwind-itanium.h
215 RT_HEADERS+=    unwind.h
216
217 .for hdr in ${STD_HEADERS}
218 STD+=           ${HDRDIR}/${hdr}
219 INCSLINKS+=     ../${hdr} ${CXXINCLUDEDIR}/tr1/${hdr}
220 .endfor
221 .for hdr in ${RT_HEADERS}
222 STD+=           ${_LIBCXXRTDIR}/${hdr}
223 .endfor
224 STDDIR=         ${CXXINCLUDEDIR}
225
226 EXP_HEADERS+=   __config
227 EXP_HEADERS+=   __memory
228 EXP_HEADERS+=   algorithm
229 EXP_HEADERS+=   any
230 EXP_HEADERS+=   chrono
231 EXP_HEADERS+=   coroutine
232 EXP_HEADERS+=   deque
233 EXP_HEADERS+=   dynarray
234 EXP_HEADERS+=   filesystem
235 EXP_HEADERS+=   forward_list
236 EXP_HEADERS+=   functional
237 EXP_HEADERS+=   iterator
238 EXP_HEADERS+=   list
239 EXP_HEADERS+=   map
240 EXP_HEADERS+=   memory_resource
241 EXP_HEADERS+=   numeric
242 EXP_HEADERS+=   optional
243 EXP_HEADERS+=   propagate_const
244 EXP_HEADERS+=   ratio
245 EXP_HEADERS+=   regex
246 EXP_HEADERS+=   set
247 EXP_HEADERS+=   simd
248 EXP_HEADERS+=   string
249 EXP_HEADERS+=   string_view
250 EXP_HEADERS+=   system_error
251 EXP_HEADERS+=   tuple
252 EXP_HEADERS+=   type_traits
253 EXP_HEADERS+=   unordered_map
254 EXP_HEADERS+=   unordered_set
255 EXP_HEADERS+=   utility
256 EXP_HEADERS+=   vector
257
258 .for hdr in ${EXP_HEADERS}
259 EXP+=           ${HDRDIR}/experimental/${hdr}
260 .endfor
261 EXPDIR=         ${CXXINCLUDEDIR}/experimental
262
263 EXT_HEADERS+=   __hash
264 EXT_HEADERS+=   hash_map
265 EXT_HEADERS+=   hash_set
266
267 .for hdr in ${EXT_HEADERS}
268 EXT+=           ${HDRDIR}/ext/${hdr}
269 .endfor
270 EXTDIR=         ${CXXINCLUDEDIR}/ext
271
272 .if ${MK_GNUCXX} == "no" && ${COMPILER_TYPE} == "gcc"
273 CLEANFILES+=    libstdc++.so libstdc++.a
274
275 afterinstall:
276         ${INSTALL_SYMLINK} ${DESTDIR}${LIBDIR}/lib${LIB}.so \
277                 ${.OBJDIR}/libstdc++.so
278         ${INSTALL_SYMLINK} ${DESTDIR}${LIBDIR}/lib${LIB}.a \
279                 ${.OBJDIR}/libstdc++.a
280 .endif
281
282 .include <bsd.lib.mk>