]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/libc++/Makefile
MFH
[FreeBSD/FreeBSD.git] / lib / libc++ / Makefile
1 # $FreeBSD$
2
3 .include <src.opts.mk>
4
5 PACKAGE=        clibs
6 _LIBCXXRTDIR=   ${.CURDIR}/../../contrib/libcxxrt
7 HDRDIR=         ${.CURDIR}/../../contrib/libc++/include
8 SRCDIR=         ${.CURDIR}/../../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                 bind.cpp\
22                 chrono.cpp\
23                 condition_variable.cpp\
24                 debug.cpp\
25                 exception.cpp\
26                 future.cpp\
27                 hash.cpp\
28                 ios.cpp\
29                 iostream.cpp\
30                 locale.cpp\
31                 memory.cpp\
32                 mutex.cpp\
33                 new.cpp\
34                 optional.cpp\
35                 random.cpp\
36                 regex.cpp\
37                 shared_mutex.cpp\
38                 stdexcept.cpp\
39                 string.cpp\
40                 strstream.cpp\
41                 system_error.cpp\
42                 thread.cpp\
43                 typeinfo.cpp\
44                 utility.cpp\
45                 valarray.cpp
46
47 CXXRT_SRCS+=    libelftc_dem_gnu3.c\
48                 terminate.cc\
49                 dynamic_cast.cc\
50                 memory.cc\
51                 auxhelper.cc\
52                 exception.cc\
53                 stdexcept.cc\
54                 typeinfo.cc\
55                 guard.cc
56
57 .for _S in ${CXXRT_SRCS}
58 CLEANFILES+=    cxxrt_${_S}
59 STATICOBJS+=    cxxrt_${_S:R}.o
60 cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA
61         ln -sf ${.ALLSRC} ${.TARGET}
62 .endfor
63
64 WARNS=          0
65 CFLAGS+=        -I${HDRDIR} -I${_LIBCXXRTDIR} -nostdlib -DLIBCXXRT
66 .if empty(CXXFLAGS:M-std=*)
67 CXXFLAGS+=      -std=c++11
68 .endif
69
70 LIBADD+=        cxxrt
71 INCSGROUPS=     STD EXP EXT
72
73 STD_HEADERS=    __bit_reference\
74                 __config\
75                 __debug\
76                 __functional_03\
77                 __functional_base\
78                 __functional_base_03\
79                 __hash_table\
80                 __locale\
81                 __mutex_base\
82                 __refstring\
83                 __split_buffer\
84                 __sso_allocator\
85                 __std_stream\
86                 __tree\
87                 __tuple\
88                 __undef___deallocate\
89                 __undef_min_max\
90                 algorithm\
91                 array\
92                 atomic\
93                 bitset\
94                 cassert\
95                 ccomplex\
96                 cctype\
97                 cerrno\
98                 cfenv\
99                 cfloat\
100                 chrono\
101                 cinttypes\
102                 ciso646\
103                 climits\
104                 clocale\
105                 cmath\
106                 codecvt\
107                 complex\
108                 complex.h\
109                 condition_variable\
110                 csetjmp\
111                 csignal\
112                 cstdarg\
113                 cstdbool\
114                 cstddef\
115                 cstdint\
116                 cstdio\
117                 cstdlib\
118                 cstring\
119                 ctgmath\
120                 ctime\
121                 cwchar\
122                 cwctype\
123                 deque\
124                 exception\
125                 forward_list\
126                 fstream\
127                 functional\
128                 future\
129                 initializer_list\
130                 iomanip\
131                 ios\
132                 iosfwd\
133                 iostream\
134                 istream\
135                 iterator\
136                 limits\
137                 list\
138                 locale\
139                 map\
140                 memory\
141                 mutex\
142                 new\
143                 numeric\
144                 ostream\
145                 queue\
146                 random\
147                 ratio\
148                 regex\
149                 scoped_allocator\
150                 set\
151                 shared_mutex\
152                 sstream\
153                 stack\
154                 stdexcept\
155                 streambuf\
156                 string\
157                 strstream\
158                 system_error\
159                 tgmath.h\
160                 thread\
161                 tuple\
162                 type_traits\
163                 typeindex\
164                 typeinfo\
165                 unordered_map\
166                 unordered_set\
167                 utility\
168                 valarray\
169                 vector
170 RT_HEADERS=     cxxabi.h\
171                 unwind.h\
172                 unwind-arm.h\
173                 unwind-itanium.h
174
175 .for hdr in ${STD_HEADERS}
176 STD+=           ${HDRDIR}/${hdr}
177 INCSLINKS+=     ${CXXINCLUDEDIR}/${hdr} ${CXXINCLUDEDIR}/tr1/${hdr}
178 .endfor
179 .for hdr in ${RT_HEADERS}
180 STD+=           ${_LIBCXXRTDIR}/${hdr}
181 .endfor
182 STDDIR=         ${CXXINCLUDEDIR}
183
184 EXP_HEADERS=    __config\
185                 algorithm\
186                 chrono\
187                 dynarray\
188                 optional\
189                 ratio\
190                 string_view\
191                 system_error\
192                 tuple\
193                 type_traits\
194                 utility
195
196 .for hdr in ${EXP_HEADERS}
197 EXP+=           ${HDRDIR}/experimental/${hdr}
198 .endfor
199 EXPDIR=         ${CXXINCLUDEDIR}/experimental
200
201 EXT_HEADERS=    __hash\
202                 hash_map\
203                 hash_set
204
205 .for hdr in ${EXT_HEADERS}
206 EXT+=           ${HDRDIR}/ext/${hdr}
207 .endfor
208 EXTDIR=         ${CXXINCLUDEDIR}/ext
209
210 .if ${MK_GNUCXX} == "no" && ${COMPILER_TYPE} == "gcc"
211 CLEANFILES+=    libstdc++.so libstdc++.a
212
213 afterinstall:
214         ${INSTALL_SYMLINK} ${DESTDIR}${LIBDIR}/lib${LIB}.so \
215                 ${.OBJDIR}/libstdc++.so
216         ${INSTALL_SYMLINK} ${DESTDIR}${LIBDIR}/lib${LIB}.a \
217                 ${.OBJDIR}/libstdc++.a
218 .endif
219
220 .include <bsd.lib.mk>