xref: /freebsd-12.1/gnu/lib/libstdc++/Makefile (revision 353ef7f9)
1#
2# $Id$
3#
4
5GPPDIR=	${.CURDIR}/../../../contrib/libg++
6
7.PATH:	${GPPDIR}/libstdc++ ${GPPDIR}/libio ${GPPDIR}/libiberty
8
9LIB=		stdc++
10SHLIB_MAJOR=	2
11SHLIB_MINOR=	0
12CPLUSPLUSLIB=	1	# include c++rt0.o for static constructors
13
14CFLAGS+=	-I${GPPDIR}/include -I/usr/include/g++ -I.
15CXXFLAGS+=	-I${GPPDIR}/include -I${GPPDIR}/libio -I${GPPDIR}/libstdc++
16CXXFLAGS+=	-fno-implicit-templates
17
18DIR=		${GPPDIR}/libstdc++
19
20HDRS=	cassert cctype cerrno cfloat ciso646 climits clocale cmath complex \
21	csetjmp csignal cstdarg cstddef cstdio cstdlib cstring ctime \
22	cwchar cwctype new stddef string exception stdexcept typeinfo \
23	algorithm deque list map queue set stack vector utility functional \
24	iterator memory numeric \
25	complex.h new.h stl.h
26
27SHDRS=	bastring.cc bastring.h cassert.h cctype.h cerrno.h cfloat.h cinst.h \
28	ciso646.h climits.h clocale.h cmath.h complex.h complext.cc \
29	complext.h csetjmp.h csignal.h cstdarg.h cstddef.h cstdio.h \
30	cstdlib.h cstring.h ctime.h cwchar.h cwctype.h dcomplex.h exception.h \
31	fcomplex.h ldcomplex.h new.h sinst.h stddef.h stdexcept.h straits.h \
32	string.h typeinfo.h
33
34STLHDRS=algo.h algobase.h bool.h bvector.h defalloc.h deque.h faralloc.h \
35	fdeque.h flist.h fmap.h fmultmap.h fmultset.h fset.h function.h \
36	hdeque.h heap.h hlist.h hmap.h hmultmap.h hmultset.h hset.h \
37	hugalloc.h hvector.h iterator.h lbvector.h ldeque.h list.h llist.h \
38	lmap.h lmultmap.h lmultset.h lngalloc.h lset.h map.h multimap.h \
39	multiset.h neralloc.h nmap.h nmultmap.h nmultset.h nset.h pair.h \
40	projectn.h set.h stack.h tempbuf.h tree.h vector.h
41
42SRCS+=	newi.cc cstringi.cc stddefi.cc typeinfoi.cc exceptioni.cc \
43	stdexcepti.cc cstdlibi.cc cmathi.cc
44
45# "standard" C parts of libiberty (strerror is a superset of the libc version)
46SRCS+=	insque.c strerror.c
47
48# Headers for iostream
49IHDRS=	PlotFile.h SFile.h builtinbuf.h editbuf.h floatio.h fstream.h \
50	indstream.h iolibio.h iomanip.h iostdio.h iostream.h iostreamP.h \
51	istream.h libio.h libioP.h ostream.h parsestream.h pfstream.h \
52	procbuf.h stdiostream.h stream.h streambuf.h strfile.h strstream.h
53
54# C++ parts of iostream
55SRCS+=	PlotFile.cc SFile.cc builtinbuf.cc editbuf.cc filebuf.cc fstream.cc \
56	indstream.cc ioassign.cc ioextend.cc iomanip.cc iostream.cc \
57	isgetline.cc isgetsb.cc isscan.cc osform.cc parsestream.cc \
58	pfstream.cc procbuf.cc sbform.cc sbgetline.cc sbscan.cc \
59	stdiostream.cc stdstrbufs.cc stdstreams.cc stream.cc streambuf.cc \
60	streambuf.cc strstream.cc
61
62# C parts of iostream
63SRCS+=	cleanup.c filedoalloc.c fileops.c floatconv.c genops.c iofclose.c \
64	iofgetpos.c iofread.c iofscanf.c iofsetpos.c iogetdelim.c iogetline.c \
65	ioignore.c iopadn.c iopopen.c ioprims.c ioprintf.c ioseekoff.c \
66	ioseekpos.c iostrerror.c ioungetc.c iovfprintf.c iovfscanf.c \
67	outfloat.c strops.c
68
69beforedepend:	config.h
70strerror.o:	config.h
71CLEANFILES+=	config.h
72
73config.h:
74	touch config.h
75
76beforeinstall:
77	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
78		${.CURDIR}/_G_config.h \
79		${HDRS:S;^;${GPPDIR}/libstdc++/;} \
80		${IHDRS:S;^;${GPPDIR}/libio/;} \
81		${STLHDRS:S;^;${GPPDIR}/libstdc++/stl/;} \
82		${DESTDIR}/usr/include/g++
83	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
84		${SHDRS:S;^;${GPPDIR}/libstdc++/std/;} \
85		${DESTDIR}/usr/include/g++/std
86
87# Lots of special cases
88
89# ======== typeinfoi.o, stdexcepti.o ========
90.for file in typeinfoi stdexcepti
91${file}.o: ${file}.cc
92	${CXX} ${CXXFLAGS} -frtti -c ${DIR}/${file}.cc -o ${.TARGET}
93	@${LD} -O ${.TARGET} -x -r ${.TARGET}
94
95${file}.so: ${file}.cc
96	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -frtti -c ${DIR}/${file}.cc -o ${.TARGET}
97	@${LD} -O ${.TARGET} -x -r ${.TARGET}
98
99${file}.po: ${file}.cc
100	${CXX} -p ${CXXFLAGS} -frtti -c ${DIR}/${file}.cc -o ${.TARGET}
101	@${LD} -O ${.TARGET} -X -r ${.TARGET}
102.endfor
103
104# ======== exceptioni.o ========
105.for file in exceptioni
106${file}.o: ${file}.cc
107	${CXX} ${CXXFLAGS} -O0 -frtti -fhandle-exceptions -c ${DIR}/${file}.cc -o ${.TARGET}
108	@${LD} -O ${.TARGET} -x -r ${.TARGET}
109
110${file}.so: ${file}.cc
111	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -O0 -frtti -fhandle-exceptions -c ${DIR}/${file}.cc -o ${.TARGET}
112	@${LD} -O ${.TARGET} -x -r ${.TARGET}
113
114${file}.po: ${file}.cc
115	${CXX} -p ${CXXFLAGS} -O0 -frtti -fhandle-exceptions -c ${DIR}/${file}.cc -o ${.TARGET}
116	@${LD} -O ${.TARGET} -X -r ${.TARGET}
117.endfor
118
119# ======== cstrmain.o ========
120CSTRMAIN=	-DC
121.for i in REP MAIN TRAITS ADDSS ADDPS ADDCS ADDSP ADDSC  EQSS EQPS EQSP NESS \
122	NEPS NESP LTSS LTPS LTSP GTSS GTPS GTSP  LESS LEPS LESP GESS GEPS GESP
123CSTRMAIN+=	-D${i}
124.endfor
125
126OBJS+=	cstrmain.o
127
128cstrmain.o:	sinst.cc
129	${CXX} ${CXXFLAGS} ${CSTRMAIN} -c ${.ALLSRC} -o ${.TARGET}
130	@${LD} -O ${.TARGET} -x -r ${.TARGET}
131
132cstrmain.so:	sinst.cc
133	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} ${CSTRMAIN} -c ${.ALLSRC} -o ${.TARGET}
134	@${LD} -O ${.TARGET} -x -r ${.TARGET}
135
136cstrmain.po:	sinst.cc
137	${CXX} -p ${CXXFLAGS} ${CSTRMAIN} -c ${.ALLSRC} -o ${.TARGET}
138	@${LD} -O ${.TARGET} -X -r ${.TARGET}
139
140# ======== cstrio.o ========
141CSTRIO=	-DC
142.for i in EXTRACT INSERT GETLINE
143CSTRIO+=	-D${i}
144.endfor
145
146OBJS+=	cstrio.o
147
148cstrio.o:	sinst.cc
149	${CXX} ${CXXFLAGS} ${CSTRIO} -c ${.ALLSRC} -o ${.TARGET}
150	@${LD} -O ${.TARGET} -x -r ${.TARGET}
151
152cstrio.so:	sinst.cc
153	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} ${CSTRIO} -c ${.ALLSRC} -o ${.TARGET}
154	@${LD} -O ${.TARGET} -x -r ${.TARGET}
155
156cstrio.po:	sinst.cc
157	${CXX} -p ${CXXFLAGS} ${CSTRIO} -c ${.ALLSRC} -o ${.TARGET}
158	@${LD} -O ${.TARGET} -X -r ${.TARGET}
159
160# ======== fcomplex.o =======
161FCOMPLEX=	-DF
162.for i in MAIN ADD CC ADDCF ADDFC SUBCC SUBCF SUBFC MULCC MULCF MULFC DIVCC \
163	DIVCF DIVFC PLUS MINUS EQCC EQCF EQFC NECC NECF NEFC ABS ARG POLAR \
164	CONJ NORM COS COSH EXP LOG POWCC POWCF POWCI POWFC SIN SINH SQRT
165FCOMPLEX+=	-D${i}
166.endfor
167
168OBJS+=	fcomplex.o
169
170fcomplex.o:	cinst.cc
171	${CXX} ${CXXFLAGS} ${FCOMPLEX} -c ${.ALLSRC} -o ${.TARGET}
172	@${LD} -O ${.TARGET} -x -r ${.TARGET}
173
174fcomplex.so:	cinst.cc
175	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} ${FCOMPLEX} -c ${.ALLSRC} -o ${.TARGET}
176	@${LD} -O ${.TARGET} -x -r ${.TARGET}
177
178fcomplex.po:	cinst.cc
179	${CXX} -p ${CXXFLAGS} ${FCOMPLEX} -c ${.ALLSRC} -o ${.TARGET}
180	@${LD} -O ${.TARGET} -X -r ${.TARGET}
181
182# ======== fcomio.o =======
183FCOMIO=	-DF
184.for i in EXTRACT INSERT
185FCOMIO+=-D${i}
186.endfor
187
188OBJS+=	fcomio.o
189
190fcomio.o:	cinst.cc
191	${CXX} ${CXXFLAGS} ${FCOMIO} -c ${.ALLSRC} -o ${.TARGET}
192	@${LD} -O ${.TARGET} -x -r ${.TARGET}
193
194fcomio.so:	cinst.cc
195	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} ${FCOMIO} -c ${.ALLSRC} -o ${.TARGET}
196	@${LD} -O ${.TARGET} -x -r ${.TARGET}
197
198fcomio.po:	cinst.cc
199	${CXX} -p ${CXXFLAGS} ${FCOMIO} -c ${.ALLSRC} -o ${.TARGET}
200	@${LD} -O ${.TARGET} -X -r ${.TARGET}
201
202# ======== dcomplex.o =======
203DCOMPLEX=	-DD
204.for i in MAIN ADD CC ADDCF ADDFC SUBCC SUBCF SUBFC MULCC MULCF MULFC DIVCC \
205	DIVCF DIVFC PLUS MINUS EQCC EQCF EQFC NECC NECF NEFC ABS ARG POLAR \
206	CONJ NORM COS COSH EXP LOG POWCC POWCF POWCI POWFC SIN SINH SQRT
207DCOMPLEX+=	-D${i}
208.endfor
209
210OBJS+=	dcomplex.o
211
212dcomplex.o:	cinst.cc
213	${CXX} ${CXXFLAGS} ${DCOMPLEX} -c ${.ALLSRC} -o ${.TARGET}
214	@${LD} -O ${.TARGET} -x -r ${.TARGET}
215
216dcomplex.so:	cinst.cc
217	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} ${DCOMPLEX} -c ${.ALLSRC} -o ${.TARGET}
218	@${LD} -O ${.TARGET} -x -r ${.TARGET}
219
220dcomplex.po:	cinst.cc
221	${CXX} -p ${CXXFLAGS} ${DCOMPLEX} -c ${.ALLSRC} -o ${.TARGET}
222	@${LD} -O ${.TARGET} -X -r ${.TARGET}
223
224# ======== dcomio.o =======
225DCOMIO=	-DD
226.for i in EXTRACT INSERT
227DCOMIO+=-D${i}
228.endfor
229
230OBJS+=	dcomio.o
231
232dcomio.o:	cinst.cc
233	${CXX} ${CXXFLAGS} ${DCOMIO} -c ${.ALLSRC} -o ${.TARGET}
234	@${LD} -O ${.TARGET} -x -r ${.TARGET}
235
236dcomio.so:	cinst.cc
237	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} ${DCOMIO} -c ${.ALLSRC} -o ${.TARGET}
238	@${LD} -O ${.TARGET} -x -r ${.TARGET}
239
240dcomio.po:	cinst.cc
241	${CXX} -p ${CXXFLAGS} ${DCOMIO} -c ${.ALLSRC} -o ${.TARGET}
242	@${LD} -O ${.TARGET} -X -r ${.TARGET}
243
244# ======== ldcomplex.o =======
245LDCOMPLEX=	-DLD
246.for i in MAIN ADD CC ADDCF ADDFC SUBCC SUBCF SUBFC MULCC MULCF MULFC DIVCC \
247	DIVCF DIVFC PLUS MINUS EQCC EQCF EQFC NECC NECF NEFC ABS ARG POLAR \
248	CONJ NORM COS COSH EXP LOG POWCC POWCF POWCI POWFC SIN SINH SQRT
249LDCOMPLEX+=	-D${i}
250.endfor
251
252OBJS+=	ldcomplex.o
253
254ldcomplex.o:	cinst.cc
255	${CXX} ${CXXFLAGS} ${LDCOMPLEX} -c ${.ALLSRC} -o ${.TARGET}
256	@${LD} -O ${.TARGET} -x -r ${.TARGET}
257
258ldcomplex.so:	cinst.cc
259	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} ${LDCOMPLEX} -c ${.ALLSRC} -o ${.TARGET}
260	@${LD} -O ${.TARGET} -x -r ${.TARGET}
261
262ldcomplex.po:	cinst.cc
263	${CXX} -p ${CXXFLAGS} ${LDCOMPLEX} -c ${.ALLSRC} -o ${.TARGET}
264	@${LD} -O ${.TARGET} -X -r ${.TARGET}
265
266# ======== ldcomio.o =======
267LDCOMIO=	-DLD
268.for i in EXTRACT INSERT
269LDCOMIO+=-D${i}
270.endfor
271
272OBJS+=	ldcomio.o
273
274ldcomio.o:	cinst.cc
275	${CXX} ${CXXFLAGS} ${LDCOMIO} -c ${.ALLSRC} -o ${.TARGET}
276	@${LD} -O ${.TARGET} -x -r ${.TARGET}
277
278ldcomio.so:	cinst.cc
279	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} ${LDCOMIO} -c ${.ALLSRC} -o ${.TARGET}
280	@${LD} -O ${.TARGET} -x -r ${.TARGET}
281
282ldcomio.po:	cinst.cc
283	${CXX} -p ${CXXFLAGS} ${LDCOMIO} -c ${.ALLSRC} -o ${.TARGET}
284	@${LD} -O ${.TARGET} -X -r ${.TARGET}
285
286.include <bsd.lib.mk>
287