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
18 SHLIB_LDSCRIPT= libc++.ldscript
24 SRCS+= condition_variable.cpp
39 SRCS+= shared_mutex.cpp
43 SRCS+= system_error.cpp
51 CXXRT_SRCS+= auxhelper.cc
52 CXXRT_SRCS+= dynamic_cast.cc
53 CXXRT_SRCS+= exception.cc
55 CXXRT_SRCS+= libelftc_dem_gnu3.c
56 CXXRT_SRCS+= memory.cc
57 CXXRT_SRCS+= stdexcept.cc
58 CXXRT_SRCS+= terminate.cc
59 CXXRT_SRCS+= typeinfo.cc
61 .for _S in ${CXXRT_SRCS}
62 CLEANFILES+= cxxrt_${_S}
63 STATICOBJS+= cxxrt_${_S:R}.o
64 cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA
65 ln -sf ${.ALLSRC} ${.TARGET}
69 CFLAGS+= -isystem ${HDRDIR}
70 CFLAGS+= -isystem ${_LIBCXXRTDIR}
73 CFLAGS+= -D_LIBCPP_BUILDING_LIBRARY
75 .if empty(CXXFLAGS:M-std=*)
80 INCSGROUPS= STD EXP EXT
82 STD_HEADERS+= __bit_reference
83 STD_HEADERS+= __bsd_locale_defaults.h
84 STD_HEADERS+= __bsd_locale_fallbacks.h
85 STD_HEADERS+= __config
87 STD_HEADERS+= __functional_03
88 STD_HEADERS+= __functional_base
89 STD_HEADERS+= __functional_base_03
90 STD_HEADERS+= __hash_table
91 STD_HEADERS+= __libcpp_version
92 STD_HEADERS+= __locale
93 STD_HEADERS+= __mutex_base
94 STD_HEADERS+= __nullptr
95 STD_HEADERS+= __split_buffer
96 STD_HEADERS+= __sso_allocator
97 STD_HEADERS+= __std_stream
98 STD_HEADERS+= __string
99 STD_HEADERS+= __threading_support
101 STD_HEADERS+= __tuple
102 STD_HEADERS+= __undef_macros
103 STD_HEADERS+= algorithm
108 STD_HEADERS+= cassert
109 STD_HEADERS+= ccomplex
115 STD_HEADERS+= cinttypes
116 STD_HEADERS+= ciso646
117 STD_HEADERS+= climits
118 STD_HEADERS+= clocale
120 STD_HEADERS+= codecvt
121 STD_HEADERS+= complex
122 STD_HEADERS+= complex.h
123 STD_HEADERS+= condition_variable
124 STD_HEADERS+= csetjmp
125 STD_HEADERS+= csignal
126 STD_HEADERS+= cstdarg
127 STD_HEADERS+= cstdbool
128 STD_HEADERS+= cstddef
129 STD_HEADERS+= cstdint
131 STD_HEADERS+= cstdlib
132 STD_HEADERS+= cstring
133 STD_HEADERS+= ctgmath
135 STD_HEADERS+= ctype.h
137 STD_HEADERS+= cwctype
139 STD_HEADERS+= errno.h
140 STD_HEADERS+= exception
141 STD_HEADERS+= float.h
142 STD_HEADERS+= forward_list
143 STD_HEADERS+= fstream
144 STD_HEADERS+= functional
146 STD_HEADERS+= initializer_list
147 STD_HEADERS+= inttypes.h
148 STD_HEADERS+= iomanip
151 STD_HEADERS+= iostream
152 STD_HEADERS+= istream
153 STD_HEADERS+= iterator
155 STD_HEADERS+= limits.h
158 STD_HEADERS+= locale.h
164 STD_HEADERS+= numeric
165 STD_HEADERS+= optional
166 STD_HEADERS+= ostream
171 STD_HEADERS+= scoped_allocator
173 STD_HEADERS+= setjmp.h
174 STD_HEADERS+= shared_mutex
175 STD_HEADERS+= sstream
177 STD_HEADERS+= stdbool.h
178 STD_HEADERS+= stddef.h
179 STD_HEADERS+= stdexcept
180 STD_HEADERS+= stdint.h
181 STD_HEADERS+= stdio.h
182 STD_HEADERS+= stdlib.h
183 STD_HEADERS+= streambuf
185 STD_HEADERS+= string.h
186 STD_HEADERS+= string_view
187 STD_HEADERS+= strstream
188 STD_HEADERS+= system_error
189 STD_HEADERS+= tgmath.h
192 STD_HEADERS+= type_traits
193 STD_HEADERS+= typeindex
194 STD_HEADERS+= typeinfo
195 STD_HEADERS+= unordered_map
196 STD_HEADERS+= unordered_set
197 STD_HEADERS+= utility
198 STD_HEADERS+= valarray
199 STD_HEADERS+= variant
201 STD_HEADERS+= wchar.h
202 STD_HEADERS+= wctype.h
204 RT_HEADERS+= cxxabi.h
205 RT_HEADERS+= unwind-arm.h
206 RT_HEADERS+= unwind-itanium.h
207 RT_HEADERS+= unwind.h
209 .for hdr in ${STD_HEADERS}
210 STD+= ${HDRDIR}/${hdr}
211 INCSLINKS+= ../${hdr} ${CXXINCLUDEDIR}/tr1/${hdr}
213 .for hdr in ${RT_HEADERS}
214 STD+= ${_LIBCXXRTDIR}/${hdr}
216 STDDIR= ${CXXINCLUDEDIR}
218 EXP_HEADERS+= __config
219 EXP_HEADERS+= __memory
220 EXP_HEADERS+= algorithm
223 EXP_HEADERS+= coroutine
225 EXP_HEADERS+= dynarray
226 EXP_HEADERS+= filesystem
227 EXP_HEADERS+= forward_list
228 EXP_HEADERS+= functional
229 EXP_HEADERS+= iterator
232 EXP_HEADERS+= memory_resource
233 EXP_HEADERS+= numeric
234 EXP_HEADERS+= optional
235 EXP_HEADERS+= propagate_const
240 EXP_HEADERS+= string_view
241 EXP_HEADERS+= system_error
243 EXP_HEADERS+= type_traits
244 EXP_HEADERS+= unordered_map
245 EXP_HEADERS+= unordered_set
246 EXP_HEADERS+= utility
249 .for hdr in ${EXP_HEADERS}
250 EXP+= ${HDRDIR}/experimental/${hdr}
252 EXPDIR= ${CXXINCLUDEDIR}/experimental
255 EXT_HEADERS+= hash_map
256 EXT_HEADERS+= hash_set
258 .for hdr in ${EXT_HEADERS}
259 EXT+= ${HDRDIR}/ext/${hdr}
261 EXTDIR= ${CXXINCLUDEDIR}/ext
263 .include <bsd.lib.mk>