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