1RELUP= /.. 2.include "../../Makefile.inc" 3SRCDIR= ${GCCDIR}/libstdc++-v3 4PREDIR= ${SRCDIR}/config/abi/pre 5.include "Makefile.src" 6 7LIB= stdc++ 8SHLIB_MAJOR= 9 9 10.PATH: ${SRCDIR}/src/c++98 11.PATH: ${SRCDIR}/src/c++11 12 13# for now do not let the use of -flto (-Wodr...) 14.if ${CFLAGS:M-flto} 15CFLAGS+= -fno-lto 16LDFLAGS+= -flto 17.endif 18 19CFLAGS+= -I${.OBJDIR} 20CXXFLAGS+= -fno-implicit-templates 21CXXFLAGS+= -fdiagnostics-show-location=once 22CXXFLAGS+= -ffunction-sections -fdata-sections 23LDFLAGS+= -Wl,-z -Wl,relro -Wl,--gc-sections 24VERSION_MAP= ${.OBJDIR}/libstdcxx.map 25 26FLAGS_GROUPS= gnu11 27gnu11_FLAGS= -std=gnu++11 28gnu11_FLAGS_FILES= ${cxx11_sources:S|++|xx|} 29 30CONVARCS= ../components/libconv_supc/libsupcxxconvenience.a 31CONVARCS+= ../components/libconv_1998/libcxx98convenience.a 32CONVARCS+= ../components/libconv_2011/libcxx11convenience.a 33LDADD= -Wl,--whole-archive ${CONVARCS:.a=_pic.a} -lm 34LDADD+= -Wl,--no-whole-archive 35ARADD= ${CONVARCS} ${LIBM} 36 37# The AR script is a nice trick, but it *cannot* handle "++" on any line 38# To work around this incredible limitation, copy files with "++" in 39# their names to a new file name (transform ++ => xx) 40 41SRCS= ${libstdc___la_SOURCES:S|++|xx|} 42PROBLEMS= ${libstdc___la_SOURCES:M*++*} 43PROBLEMSXX= ${PROBLEMS:S|++|xx|} 44 45# Override bsd.lib.mk scripts 46libstdc++.a: ${SRCS:.cc=.o} script.ar 47 @${ECHO} building static ${LIB} library via script 48 rm -f ${.TARGET} 49 ${AR} -M < script.ar 50 mv libstdcxx.a ${.TARGET} 51 ${RANLIB} ${.TARGET} 52 53libstdc++_p.a: ${SRCS:.cc=.po} script_p.ar 54 @${ECHO} building profiled ${LIB} library via script 55 rm -f ${.TARGET} 56 ${AR} -M < script_p.ar 57 mv libstdcxx_p.a ${.TARGET} 58 ${RANLIB} ${.TARGET} 59 60${PROBLEMSXX}: ${PROBLEMS} 61 cp ${SRCDIR}/src/c++11/${.TARGET:S|xx|++|} ${.TARGET} 62 63gstdint.h: 64 @echo "#include <stdint.h>" > ${.TARGET} 65 66script.ar: 67 @echo "CREATE libstdcxx.a" > ${.TARGET} 68.for arc in ${CONVARCS} 69 @echo "ADDLIB ${arc}" >> ${.TARGET} 70.endfor 71.for obj in ${SRCS:.cc=.o} 72 @echo "ADDMOD ${obj}" >> ${.TARGET} 73.endfor 74 @echo "SAVE" >> ${.TARGET} 75 @echo "END" >> ${.TARGET} 76 77script_p.ar: 78 @echo "CREATE libstdcxx_p.a" > ${.TARGET} 79.for arc in ${CONVARCS:.a=_p.a} 80 @echo "ADDLIB ${arc}" >> ${.TARGET} 81.endfor 82.for obj in ${SRCS:.cc=.po} 83 @echo "ADDMOD ${obj}" >> ${.TARGET} 84.endfor 85 @echo "SAVE" >> ${.TARGET} 86 @echo "END" >> ${.TARGET} 87 88libstdcxx.map: ${PREDIR}/gnu.ver ${PREDIR}/float128.ver 89 cat ${.ALLSRC} | grep -E -v '^[ ]*#(#| |$$)' | \ 90 ${CC} -E -P -include ${.CURDIR}/../headers/config.h - > ${.TARGET} 91 92GENFILES= gstdint.h script.ar script_p.ar ${PROBLEMSXX} libstdcxx.map 93CLEANFILES= ${GENFILES} 94beforedepend: ${GENFILES} 95 96.include <bsd.lib.mk> 97