1 1.43 mrg # $NetBSD: Makefile,v 1.43 2019/02/17 00:05:11 mrg Exp $ 2 1.1 mrg 3 1.1 mrg REQUIRETOOLS= yes 4 1.1 mrg NOLINT= # defined 5 1.27 joerg UNSUPPORTED_COMPILER.clang= # defined 6 1.1 mrg 7 1.15 mrg .include <bsd.init.mk> 8 1.1 mrg 9 1.6 matt .include "Makefile.inc" 10 1.6 matt 11 1.1 mrg LIB= stdc++ 12 1.1 mrg 13 1.2 mrg LIBDPLIBS+= m ${.CURDIR}/../../../../../lib/libm 14 1.1 mrg 15 1.13 christos #COPTS+= -pthread 16 1.13 christos #LDFLAGS+= -pthread 17 1.17 joerg .if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" 18 1.17 joerg COPTS.random.cc+= ${${ACTIVE_CC} == "clang":? -mrdrnd :} 19 1.17 joerg .endif 20 1.12 mrg 21 1.42 mrg SYMBOLS= libstdc++-symbols.ver 22 1.29 mrg .if ${MKPIC} != "no" 23 1.42 mrg ${SYMBOLS}: 24 1.29 mrg cat ${DIST}/libstdc++-v3/config/abi/pre/gnu.ver ${G_port_specific_symbol_files} | \ 25 1.33 mrg ${TOOL_GREP} -E -v '^[ ]*#(#| |$$)' | \ 26 1.29 mrg ${CXX} -I${DESTDIR}/usr/include/g++ -E -P -include ${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/c++config.h - > \ 27 1.29 mrg ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET} && rm -f ${.TARGET}.tmp 28 1.29 mrg 29 1.42 mrg CLEANFILES+= ${SYMBOLS} 30 1.42 mrg 31 1.32 mrg .if ${MKPICLIB} != "no" 32 1.42 mrg libstdc++_pic.a:: ${SYMBOLS} 33 1.32 mrg .else 34 1.42 mrg libstdc++.a:: ${SYMBOLS} 35 1.32 mrg .endif 36 1.29 mrg 37 1.29 mrg LDFLAGS+= -Wl,-O1 \ 38 1.29 mrg -Wl,--gc-sections \ 39 1.42 mrg -Wl,--version-script=${SYMBOLS} 40 1.29 mrg .endif 41 1.29 mrg 42 1.18 joerg CXXFLAGS.clang+= -stdlib=libstdc++ -std=c++11 -D_GLIBCXX_ABI_TAG_CXX11= 43 1.18 joerg CXXFLAGS+= ${CXXFLAGS.${ACTIVE_CC}} 44 1.1 mrg CWARNFLAGS.clang+= -Wno-logical-op-parentheses \ 45 1.1 mrg -Wno-deprecated-writable-strings -Wno-parentheses 46 1.1 mrg 47 1.9 mrg .include "${.CURDIR}/../libsupc++/Makefile.common" 48 1.9 mrg 49 1.9 mrg .if exists(${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk) && ${MKGCC} != "no" 50 1.9 mrg .include "${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk" 51 1.1 mrg 52 1.28 mrg SHLIB_MAJOR= 8 53 1.39 mrg SHLIB_MINOR= 2 54 1.1 mrg 55 1.1 mrg SUBDIR= include 56 1.1 mrg 57 1.3 mrg SRCS= ${LIBSUPCXXSRCS} ${LIBSTDCXXSRCS} 58 1.36 mrg 59 1.36 mrg CXXFLAGS+= -fno-implicit-templates 60 1.36 mrg CPPFLAGS+= -I${DIST}/libstdc++-v3/include 61 1.36 mrg CPPFLAGS+= -I${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH} 62 1.36 mrg CPPFLAGS+= -D_GLIBCXX_SHARED -DGTHREAD_USE_WEAK -DSUPPORTS_WEAK 63 1.36 mrg 64 1.1 mrg # affects profiling; can't switch it off just for profiling easily. 65 1.1 mrg #CXXFLAGS+= ${G_SECTION_FLAGS} 66 1.1 mrg #CXXFLAGS+= -ffunction-sections -fdata-sections 67 1.36 mrg COPTS.bitmap_allocator.cc+= -ffunction-sections -fdata-sections 68 1.37 mrg COPTS.pool_allocator.cc+= -ffunction-sections -fdata-sections 69 1.1 mrg 70 1.1 mrg CONF= ${DIST}/libstdc++-v3/config 71 1.1 mrg 72 1.1 mrg GLIBCPP_INCLUDE_DIR= ${DESTDIR}/usr/include/g++ 73 1.1 mrg 74 1.11 mrg # Template instantiation bug workaround for -O<2/s 75 1.24 christos COPTS.cp-demangle.c += -Wno-stack-protector 76 1.24 christos COPTS.cp-demangle.c += -Wno-stack-protector 77 1.24 christos COPTS.fstream-inst.cc += -Wno-stack-protector 78 1.24 christos COPTS.locale-inst.cc += -Wno-stack-protector 79 1.24 christos COPTS.misc-inst.cc += -Wno-stack-protector 80 1.24 christos COPTS.ostream-inst.cc += -Wno-stack-protector 81 1.24 christos COPTS.functexcept.cc += -Wno-stack-protector 82 1.24 christos COPTS.valarray-inst.cc += -Wno-stack-protector 83 1.24 christos COPTS.wlocale-inst.cc += -Wno-stack-protector 84 1.24 christos COPTS.snprintf_lite.cc += -Wno-stack-protector 85 1.25 christos # From system headers. 86 1.25 christos COPTS.cxx11-wlocale-inst.cc +=-Wno-stack-protector 87 1.25 christos COPTS.cxx11-locale-inst.cc +=-Wno-stack-protector 88 1.25 christos COPTS.cxx11-wlocale-inst.cc +=-Wno-stack-protector 89 1.25 christos COPTS.compatibility-thread-c++0x.cc += -Wno-deprecated-declarations 90 1.24 christos COPTS.concept-inst.cc += -fimplicit-templates 91 1.36 mrg COPTS.collate_members_cow.cc += -fimplicit-templates 92 1.36 mrg COPTS.messages_members_cow.cc += -fimplicit-templates 93 1.36 mrg COPTS.monetary_members_cow.cc += -fimplicit-templates 94 1.36 mrg COPTS.numeric_members_cow.cc += -fimplicit-templates 95 1.24 christos COPTS.hashtable_c++0x.cc += -fimplicit-templates 96 1.36 mrg COPTS.c++locale.cc += -fimplicit-templates 97 1.25 christos COPTS.functexcept.cc += -Wno-deprecated-declarations 98 1.25 christos COPTS.future.cc += -Wno-deprecated-declarations 99 1.25 christos COPTS.shared_ptr.cc += -Wno-deprecated-declarations 100 1.25 christos COPTS.thread.cc += -Wno-deprecated-declarations 101 1.24 christos CPPFLAGS.strstream.cc += -I$(GLIBCPP_INCLUDE_DIR)/backward -Wno-deprecated 102 1.1 mrg 103 1.3 mrg CPPFLAGS.cp-demangle.cc += -DIN_GLIBCPP_V3 104 1.3 mrg CPPFLAGS.concept-inst.cc += -D_GLIBCXX_CONCEPT_CHECKS 105 1.3 mrg CPPFLAGS.parallel_list.cc += -D_GLIBCXX_PARALLEL 106 1.3 mrg CPPFLAGS.parallel_settings.cc += -D_GLIBCXX_PARALLEL 107 1.3 mrg CPPFLAGS.compatibility-parallel_list.cc += -D_GLIBCXX_PARALLEL 108 1.29 mrg CPPFLAGS.compatibility.cc+= -I${DIST}/libstdc++-v3/config 109 1.3 mrg 110 1.9 mrg cp-demangle.d cp-demangle.o: cp-demangle.h 111 1.9 mrg 112 1.26 christos .if ${MACHINE_ARCH} == "i386" 113 1.26 christos COPTS.random.cc += -Wno-error=psabi 114 1.26 christos COPTS.cow-string-inst.cc += -Wno-error=psabi 115 1.26 christos .endif 116 1.26 christos 117 1.1 mrg # XXX 118 1.1 mrg MKDEPFLAGS+= -I$(GLIBCPP_INCLUDE_DIR)/backward 119 1.1 mrg 120 1.9 mrg GLIBCXX_SRCDIR= ${DIST}/libstdc++-v3 121 1.9 mrg 122 1.9 mrg BUILDSYMLINKS+= \ 123 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CCODECVT_CC} codecvt_members.cc \ 124 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CCOLLATE_CC} collate_members.cc \ 125 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CCTYPE_CC} ctype_members.cc \ 126 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CMESSAGES_CC} messages_members.cc \ 127 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CMONEY_CC} monetary_members.cc \ 128 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CNUMERIC_CC} numeric_members.cc \ 129 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CTIME_CC} time_members.cc \ 130 1.9 mrg ${GLIBCXX_SRCDIR}/${G_ATOMICITY_SRCDIR}/atomicity.h atomicity.cc \ 131 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CLOCALE_CC} c++locale.cc \ 132 1.9 mrg ${GLIBCXX_SRCDIR}/${G_BASIC_FILE_CC} basic_file.cc \ 133 1.9 mrg ${DIST}/libiberty/cp-demangle.c cp-demangle.c \ 134 1.21 mrg ${DIST}/libiberty/cp-demangle.h cp-demangle.h \ 135 1.21 mrg ${GLIBCXX_SRCDIR}/${G_CCOLLATE_CC} collate_members_cow.cc \ 136 1.21 mrg ${GLIBCXX_SRCDIR}/${G_CMESSAGES_CC} messages_members_cow.cc \ 137 1.21 mrg ${GLIBCXX_SRCDIR}/${G_CMONEY_CC} monetary_members_cow.cc \ 138 1.21 mrg ${GLIBCXX_SRCDIR}/${G_CNUMERIC_CC} numeric_members_cow.cc 139 1.9 mrg 140 1.29 mrg # both c++98 and c++11 have codecvt.cc files. 141 1.22 mrg BUILDSYMLINKS+= \ 142 1.22 mrg ${GLIBCXX_SRCDIR}/src/c++98/codecvt.cc c98-codecvt.cc 143 1.22 mrg BUILDSYMLINKS+= \ 144 1.22 mrg ${GLIBCXX_SRCDIR}/src/c++11/codecvt.cc c11-codecvt.cc 145 1.22 mrg SRCS+= c98-codecvt.cc c11-codecvt.cc 146 1.22 mrg 147 1.35 mrg .include "../Makefile.gthr" 148 1.9 mrg 149 1.29 mrg # XXX Make this either/or, not one, and maybe another 150 1.43 mrg # XXX pull out libstdc++/Makefile/cxx11_sources for many of these. 151 1.29 mrg CXX11_ALWAYS= localename.cc \ 152 1.29 mrg locale_init.cc \ 153 1.29 mrg compatibility-c++0x.cc \ 154 1.29 mrg compatibility-atomic-c++0x.cc \ 155 1.29 mrg compatibility-thread-c++0x.cc \ 156 1.29 mrg compatibility-chrono.cc \ 157 1.34 mrg compatibility-condvar.cc \ 158 1.34 mrg ios_failure.cc 159 1.37 mrg 160 1.39 mrg .for _s in ${CXX11_ALWAYS} 161 1.37 mrg COPTS.${_s}+= -std=gnu++11 162 1.37 mrg .endfor 163 1.37 mrg 164 1.43 mrg # XXX pull out libstdc++/Makefile/cxx98_sources for many of these. 165 1.43 mrg CXX98_ALWAYS= compatibility.cc \ 166 1.43 mrg compatibility-debug_list.cc \ 167 1.43 mrg compatibility-debug_list-2.cc 168 1.43 mrg 169 1.43 mrg .for _s in ${CXX98_ALWAYS} 170 1.43 mrg COPTS.${_s}+= -std=gnu++98 171 1.43 mrg .endfor 172 1.43 mrg 173 1.24 christos COPTS.cp-demangle.c += -Wno-unused-function 174 1.24 christos 175 1.29 mrg COPTS.ext-inst.cc+= -Wno-error 176 1.29 mrg 177 1.21 mrg .for f in collate_members_cow \ 178 1.21 mrg messages_members_cow \ 179 1.21 mrg monetary_members_cow \ 180 1.31 mrg numeric_members_cow \ 181 1.31 mrg c++locale 182 1.21 mrg COPTS.${f}.cc+= -fimplicit-templates ${G_GLIBCXX_ABI_FLAGS} 183 1.9 mrg .endfor 184 1.9 mrg 185 1.1 mrg .include <bsd.lib.mk> 186 1.1 mrg .include <bsd.subdir.mk> 187 1.1 mrg .include <bsd.info.mk> 188 1.1 mrg 189 1.1 mrg .PATH: ${DIST}/libstdc++-v3/src \ 190 1.9 mrg ${DIST}/libstdc++-v3/src/c++98 \ 191 1.9 mrg ${DIST}/libstdc++-v3/src/c++11 \ 192 1.37 mrg ${DIST}/libstdc++-v3/src/filesystem \ 193 1.1 mrg ${DIST}/libstdc++-v3/libsupc++ \ 194 1.9 mrg ${DIST}/libstdc++-v3/config/os/bsd/netbsd \ 195 1.1 mrg ${CONF}/locale/generic \ 196 1.9 mrg ${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH} 197 1.1 mrg 198 1.9 mrg ${OBJS}: ${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk 199 1.29 mrg 200 1.1 mrg .else 201 1.1 mrg .include <bsd.prog.mk> # do nothing 202 1.1 mrg .endif 203