6 _LIBCXXRTDIR= ${SRCTOP}/contrib/libcxxrt
7 HDRDIR= ${SRCTOP}/contrib/llvm-project/libcxx/include
8 SRCDIR= ${SRCTOP}/contrib/llvm-project/libcxx/src
9 CXXINCLUDEDIR= ${INCLUDEDIR}/c++/v${SHLIB_MAJOR}
10 .if ${MACHINE_CPUARCH} == "arm"
11 STATIC_CXXFLAGS+= -mlong-calls
18 SHLIB_LDSCRIPT= libc++.ldscript
25 SRCS+= condition_variable.cpp
26 SRCS+= condition_variable_destructor.cpp
29 SRCS+= filesystem/directory_iterator.cpp
30 SRCS+= filesystem/int128_builtins.cpp
31 SRCS+= filesystem/operations.cpp
40 SRCS+= mutex_destructor.cpp
45 SRCS+= shared_mutex.cpp
49 SRCS+= system_error.cpp
57 CXXRT_SRCS+= auxhelper.cc
58 CXXRT_SRCS+= dynamic_cast.cc
59 CXXRT_SRCS+= exception.cc
61 CXXRT_SRCS+= libelftc_dem_gnu3.c
62 CXXRT_SRCS+= memory.cc
63 CXXRT_SRCS+= stdexcept.cc
64 CXXRT_SRCS+= terminate.cc
65 CXXRT_SRCS+= typeinfo.cc
67 .for _S in ${CXXRT_SRCS}
68 CLEANFILES+= cxxrt_${_S}
69 STATICOBJS+= cxxrt_${_S:R}.o
70 cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA
71 ln -sf ${.ALLSRC} ${.TARGET}
75 CFLAGS+= -isystem ${HDRDIR}
76 CFLAGS+= -isystem ${_LIBCXXRTDIR}
79 CFLAGS+= -D_LIBCPP_BUILDING_LIBRARY
81 CFLAGS+= -ffunction-sections
82 CFLAGS+= -fdata-sections
86 INCSGROUPS= STD EXP EXT
88 STD_HEADERS+= __bit_reference
89 STD_HEADERS+= __bsd_locale_defaults.h
90 STD_HEADERS+= __bsd_locale_fallbacks.h
91 STD_HEADERS+= __config
94 STD_HEADERS+= __functional_03
95 STD_HEADERS+= __functional_base
96 STD_HEADERS+= __functional_base_03
97 STD_HEADERS+= __hash_table
98 STD_HEADERS+= __libcpp_version
99 STD_HEADERS+= __locale
100 STD_HEADERS+= __mutex_base
101 STD_HEADERS+= __node_handle
102 STD_HEADERS+= __nullptr
103 STD_HEADERS+= __split_buffer
104 STD_HEADERS+= __sso_allocator
105 STD_HEADERS+= __std_stream
106 STD_HEADERS+= __string
107 STD_HEADERS+= __threading_support
109 STD_HEADERS+= __tuple
110 STD_HEADERS+= __undef_macros
111 STD_HEADERS+= algorithm
117 STD_HEADERS+= cassert
118 STD_HEADERS+= ccomplex
123 STD_HEADERS+= charconv
125 STD_HEADERS+= cinttypes
126 STD_HEADERS+= ciso646
127 STD_HEADERS+= climits
128 STD_HEADERS+= clocale
130 STD_HEADERS+= codecvt
131 STD_HEADERS+= compare
132 STD_HEADERS+= complex
133 STD_HEADERS+= complex.h
134 STD_HEADERS+= condition_variable
135 STD_HEADERS+= csetjmp
136 STD_HEADERS+= csignal
137 STD_HEADERS+= cstdarg
138 STD_HEADERS+= cstdbool
139 STD_HEADERS+= cstddef
140 STD_HEADERS+= cstdint
142 STD_HEADERS+= cstdlib
143 STD_HEADERS+= cstring
144 STD_HEADERS+= ctgmath
146 STD_HEADERS+= ctype.h
148 STD_HEADERS+= cwctype
150 STD_HEADERS+= errno.h
151 STD_HEADERS+= exception
153 STD_HEADERS+= filesystem
154 STD_HEADERS+= float.h
155 STD_HEADERS+= forward_list
156 STD_HEADERS+= fstream
157 STD_HEADERS+= functional
159 STD_HEADERS+= initializer_list
160 STD_HEADERS+= inttypes.h
161 STD_HEADERS+= iomanip
164 STD_HEADERS+= iostream
165 STD_HEADERS+= istream
166 STD_HEADERS+= iterator
168 STD_HEADERS+= limits.h
171 STD_HEADERS+= locale.h
177 STD_HEADERS+= numeric
178 STD_HEADERS+= optional
179 STD_HEADERS+= ostream
184 STD_HEADERS+= scoped_allocator
186 STD_HEADERS+= setjmp.h
187 STD_HEADERS+= shared_mutex
189 STD_HEADERS+= sstream
191 STD_HEADERS+= stdbool.h
192 STD_HEADERS+= stddef.h
193 STD_HEADERS+= stdexcept
194 STD_HEADERS+= stdint.h
195 STD_HEADERS+= stdio.h
196 STD_HEADERS+= stdlib.h
197 STD_HEADERS+= streambuf
199 STD_HEADERS+= string.h
200 STD_HEADERS+= string_view
201 STD_HEADERS+= strstream
202 STD_HEADERS+= system_error
203 STD_HEADERS+= tgmath.h
206 STD_HEADERS+= type_traits
207 STD_HEADERS+= typeindex
208 STD_HEADERS+= typeinfo
209 STD_HEADERS+= unordered_map
210 STD_HEADERS+= unordered_set
211 STD_HEADERS+= utility
212 STD_HEADERS+= valarray
213 STD_HEADERS+= variant
215 STD_HEADERS+= version
216 STD_HEADERS+= wchar.h
217 STD_HEADERS+= wctype.h
219 RT_HEADERS+= cxxabi.h
220 RT_HEADERS+= unwind-arm.h
221 RT_HEADERS+= unwind-itanium.h
222 RT_HEADERS+= unwind.h
224 .for hdr in ${STD_HEADERS}
225 STD+= ${HDRDIR}/${hdr}
226 INCSLINKS+= ../${hdr} ${CXXINCLUDEDIR}/tr1/${hdr}
228 .for hdr in ${RT_HEADERS}
229 STD+= ${_LIBCXXRTDIR}/${hdr}
231 STDDIR= ${CXXINCLUDEDIR}
233 EXP_HEADERS+= __config
234 EXP_HEADERS+= __memory
235 EXP_HEADERS+= algorithm
236 EXP_HEADERS+= coroutine
238 EXP_HEADERS+= filesystem
239 EXP_HEADERS+= forward_list
240 EXP_HEADERS+= functional
241 EXP_HEADERS+= iterator
244 EXP_HEADERS+= memory_resource
245 EXP_HEADERS+= propagate_const
250 EXP_HEADERS+= type_traits
251 EXP_HEADERS+= unordered_map
252 EXP_HEADERS+= unordered_set
253 EXP_HEADERS+= utility
256 .for hdr in ${EXP_HEADERS}
257 EXP+= ${HDRDIR}/experimental/${hdr}
259 EXPDIR= ${CXXINCLUDEDIR}/experimental
262 EXT_HEADERS+= hash_map
263 EXT_HEADERS+= hash_set
265 .for hdr in ${EXT_HEADERS}
266 EXT+= ${HDRDIR}/ext/${hdr}
268 EXTDIR= ${CXXINCLUDEDIR}/ext
270 .include <bsd.lib.mk>