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