1 1.67 christos # $NetBSD: Makefile,v 1.67 2026/02/12 15:17:30 christos 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.45 mrg DIST= ${GCCDIST} 22 1.65 mrg GLIBCXX_SRCDIR= ${DIST}/libstdc++-v3 23 1.65 mrg GNUVER= ${GLIBCXX_SRCDIR}/config/abi/pre/gnu.ver 24 1.42 mrg SYMBOLS= libstdc++-symbols.ver 25 1.29 mrg .if ${MKPIC} != "no" 26 1.45 mrg ${SYMBOLS}: Makefile ${GNUVER} 27 1.45 mrg cat ${GNUVER} ${G_port_specific_symbol_files} | \ 28 1.33 mrg ${TOOL_GREP} -E -v '^[ ]*#(#| |$$)' | \ 29 1.45 mrg ${CXX} -I${DESTDIR}/usr/include/g++ -E -P -include ${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/symver-config.h - > \ 30 1.29 mrg ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET} && rm -f ${.TARGET}.tmp 31 1.29 mrg 32 1.45 mrg CLEANFILES+= ${SYMBOLS} ${SYMBOLS}.tmp 33 1.45 mrg 34 1.45 mrg DPADD+= ${SYMBOLS} 35 1.42 mrg 36 1.32 mrg .if ${MKPICLIB} != "no" 37 1.42 mrg libstdc++_pic.a:: ${SYMBOLS} 38 1.32 mrg .else 39 1.42 mrg libstdc++.a:: ${SYMBOLS} 40 1.32 mrg .endif 41 1.29 mrg 42 1.29 mrg LDFLAGS+= -Wl,-O1 \ 43 1.29 mrg -Wl,--gc-sections \ 44 1.42 mrg -Wl,--version-script=${SYMBOLS} 45 1.29 mrg .endif 46 1.29 mrg 47 1.18 joerg CXXFLAGS.clang+= -stdlib=libstdc++ -std=c++11 -D_GLIBCXX_ABI_TAG_CXX11= 48 1.18 joerg CXXFLAGS+= ${CXXFLAGS.${ACTIVE_CC}} 49 1.1 mrg CWARNFLAGS.clang+= -Wno-logical-op-parentheses \ 50 1.1 mrg -Wno-deprecated-writable-strings -Wno-parentheses 51 1.1 mrg 52 1.9 mrg .include "${.CURDIR}/../libsupc++/Makefile.common" 53 1.9 mrg 54 1.9 mrg .if exists(${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk) && ${MKGCC} != "no" 55 1.9 mrg .include "${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk" 56 1.1 mrg 57 1.46 mrg SHLIB_MAJOR= 9 58 1.58 mrg SHLIB_MINOR= 2 59 1.1 mrg 60 1.1 mrg SUBDIR= include 61 1.1 mrg 62 1.3 mrg SRCS= ${LIBSUPCXXSRCS} ${LIBSTDCXXSRCS} 63 1.36 mrg 64 1.50 mrg GCC_MACHINE_SUBDIR=${MACHINE_CPU:C/powerpc.*/rs6000/:C/x86_64/i386/} 65 1.50 mrg 66 1.62 mrg # Only the shared library is build with -D_GLIBCXX_SHARED, and the 67 1.62 mrg # static library shouldn't need to provide old symbols. 68 1.62 mrg CSHLIBFLAGS+= -D_GLIBCXX_SHARED 69 1.59 mrg 70 1.36 mrg CXXFLAGS+= -fno-implicit-templates 71 1.65 mrg CPPFLAGS+= -I${GLIBCXX_SRCDIR}/include 72 1.50 mrg CPPFLAGS+= -I${DIST}/gcc/config/${GCC_MACHINE_SUBDIR} 73 1.36 mrg CPPFLAGS+= -I${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH} 74 1.59 mrg CPPFLAGS+= -DGTHREAD_USE_WEAK -DSUPPORTS_WEAK 75 1.48 christos .if ${G_CLOCALE_CC:M*dragonfly*} != "" 76 1.48 christos CPPFLAGS+= -I${CONF}/locale/dragonfly 77 1.48 christos LOCALETYPE= dragonfly 78 1.48 christos .else 79 1.48 christos LOCALETYPE= generic 80 1.48 christos .endif 81 1.36 mrg 82 1.1 mrg # affects profiling; can't switch it off just for profiling easily. 83 1.1 mrg #CXXFLAGS+= ${G_SECTION_FLAGS} 84 1.1 mrg #CXXFLAGS+= -ffunction-sections -fdata-sections 85 1.36 mrg COPTS.bitmap_allocator.cc+= -ffunction-sections -fdata-sections 86 1.37 mrg COPTS.pool_allocator.cc+= -ffunction-sections -fdata-sections 87 1.1 mrg 88 1.65 mrg CONF= ${GLIBCXX_SRCDIR}/config 89 1.1 mrg 90 1.1 mrg GLIBCPP_INCLUDE_DIR= ${DESTDIR}/usr/include/g++ 91 1.1 mrg 92 1.11 mrg # Template instantiation bug workaround for -O<2/s 93 1.54 mrg COPTS.cp-demangle.cc += -Wno-stack-protector 94 1.24 christos COPTS.fstream-inst.cc += -Wno-stack-protector 95 1.24 christos COPTS.locale-inst.cc += -Wno-stack-protector 96 1.24 christos COPTS.misc-inst.cc += -Wno-stack-protector 97 1.24 christos COPTS.ostream-inst.cc += -Wno-stack-protector 98 1.24 christos COPTS.functexcept.cc += -Wno-stack-protector 99 1.24 christos COPTS.valarray-inst.cc += -Wno-stack-protector 100 1.24 christos COPTS.wlocale-inst.cc += -Wno-stack-protector 101 1.24 christos COPTS.snprintf_lite.cc += -Wno-stack-protector 102 1.66 christos COPTS.std_stacktrace-cp-demangle.c += -Wno-stack-protector 103 1.25 christos # From system headers. 104 1.25 christos COPTS.cxx11-wlocale-inst.cc +=-Wno-stack-protector 105 1.25 christos COPTS.cxx11-locale-inst.cc +=-Wno-stack-protector 106 1.25 christos COPTS.cxx11-wlocale-inst.cc +=-Wno-stack-protector 107 1.48 christos COPTS.codecvt_members.cc +=-Wno-stack-protector 108 1.25 christos COPTS.compatibility-thread-c++0x.cc += -Wno-deprecated-declarations 109 1.24 christos COPTS.concept-inst.cc += -fimplicit-templates 110 1.36 mrg COPTS.collate_members_cow.cc += -fimplicit-templates 111 1.36 mrg COPTS.messages_members_cow.cc += -fimplicit-templates 112 1.36 mrg COPTS.monetary_members_cow.cc += -fimplicit-templates 113 1.36 mrg COPTS.numeric_members_cow.cc += -fimplicit-templates 114 1.24 christos COPTS.hashtable_c++0x.cc += -fimplicit-templates 115 1.36 mrg COPTS.c++locale.cc += -fimplicit-templates 116 1.25 christos COPTS.functexcept.cc += -Wno-deprecated-declarations 117 1.25 christos COPTS.future.cc += -Wno-deprecated-declarations 118 1.25 christos COPTS.shared_ptr.cc += -Wno-deprecated-declarations 119 1.25 christos COPTS.thread.cc += -Wno-deprecated-declarations 120 1.24 christos CPPFLAGS.strstream.cc += -I$(GLIBCPP_INCLUDE_DIR)/backward -Wno-deprecated 121 1.1 mrg 122 1.3 mrg CPPFLAGS.cp-demangle.cc += -DIN_GLIBCPP_V3 123 1.3 mrg CPPFLAGS.concept-inst.cc += -D_GLIBCXX_CONCEPT_CHECKS 124 1.3 mrg CPPFLAGS.parallel_list.cc += -D_GLIBCXX_PARALLEL 125 1.3 mrg CPPFLAGS.parallel_settings.cc += -D_GLIBCXX_PARALLEL 126 1.3 mrg CPPFLAGS.compatibility-parallel_list.cc += -D_GLIBCXX_PARALLEL 127 1.65 mrg CPPFLAGS.compatibility.cc+= -I${GLIBCXX_SRCDIR}/config 128 1.65 mrg CPPFLAGS.c11-cow-string-inst.cc+= -I${GLIBCXX_SRCDIR}/src/c++11 129 1.65 mrg CPPFLAGS.c17-cow-string-inst.cc+= -I${GLIBCXX_SRCDIR}/src/c++17 130 1.3 mrg 131 1.9 mrg cp-demangle.d cp-demangle.o: cp-demangle.h 132 1.9 mrg 133 1.26 christos .if ${MACHINE_ARCH} == "i386" 134 1.26 christos COPTS.random.cc += -Wno-error=psabi 135 1.26 christos COPTS.cow-string-inst.cc += -Wno-error=psabi 136 1.26 christos .endif 137 1.26 christos 138 1.67 christos .if ${MACHINE} == "sun2" 139 1.67 christos COPTS.std_stacktrace-cp-demangle.c += -Wno-stack-protector 140 1.67 christos .endif 141 1.67 christos 142 1.1 mrg # XXX 143 1.1 mrg MKDEPFLAGS+= -I$(GLIBCPP_INCLUDE_DIR)/backward 144 1.1 mrg 145 1.9 mrg BUILDSYMLINKS+= \ 146 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CCODECVT_CC} codecvt_members.cc \ 147 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CCOLLATE_CC} collate_members.cc \ 148 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CCTYPE_CC} ctype_members.cc \ 149 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CMESSAGES_CC} messages_members.cc \ 150 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CMONEY_CC} monetary_members.cc \ 151 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CNUMERIC_CC} numeric_members.cc \ 152 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CTIME_CC} time_members.cc \ 153 1.53 mrg ${GLIBCXX_SRCDIR}/${G_ATOMICITY_SRCDIR}/atomicity.h atomicity.cc \ 154 1.9 mrg ${GLIBCXX_SRCDIR}/${G_CLOCALE_CC} c++locale.cc \ 155 1.9 mrg ${GLIBCXX_SRCDIR}/${G_BASIC_FILE_CC} basic_file.cc \ 156 1.9 mrg ${DIST}/libiberty/cp-demangle.c cp-demangle.c \ 157 1.21 mrg ${DIST}/libiberty/cp-demangle.h cp-demangle.h \ 158 1.21 mrg ${GLIBCXX_SRCDIR}/${G_CCOLLATE_CC} collate_members_cow.cc \ 159 1.21 mrg ${GLIBCXX_SRCDIR}/${G_CMESSAGES_CC} messages_members_cow.cc \ 160 1.21 mrg ${GLIBCXX_SRCDIR}/${G_CMONEY_CC} monetary_members_cow.cc \ 161 1.21 mrg ${GLIBCXX_SRCDIR}/${G_CNUMERIC_CC} numeric_members_cow.cc 162 1.9 mrg 163 1.29 mrg # both c++98 and c++11 have codecvt.cc files. 164 1.51 mrg # both c++11 and c++17 have cow-string-inst.cc, ostream-inst.cc, 165 1.51 mrg # and string-inst.cc. 166 1.51 mrg .for _N _V1 _V2 in \ 167 1.51 mrg codecvt 98 11 \ 168 1.51 mrg cow-string-inst 11 17 \ 169 1.51 mrg ostream-inst 11 17 \ 170 1.55 mrg string-inst 11 17 \ 171 1.55 mrg sstream-inst 11 20 172 1.51 mrg 173 1.22 mrg BUILDSYMLINKS+= \ 174 1.51 mrg ${GLIBCXX_SRCDIR}/src/c++${_V1}/${_N}.cc c${_V1}-${_N}.cc 175 1.22 mrg BUILDSYMLINKS+= \ 176 1.51 mrg ${GLIBCXX_SRCDIR}/src/c++${_V2}/${_N}.cc c${_V2}-${_N}.cc 177 1.51 mrg 178 1.51 mrg .endfor 179 1.51 mrg 180 1.35 mrg .include "../Makefile.gthr" 181 1.9 mrg 182 1.44 mrg # XXX Special rules in c++98/Makefile; may move into c++11 in future GCC. 183 1.29 mrg CXX11_ALWAYS= localename.cc \ 184 1.44 mrg locale_init.cc 185 1.37 mrg 186 1.49 mrg FCHAR8_SRCS+= localename.cc \ 187 1.49 mrg locale_init.cc \ 188 1.49 mrg c11-codecvt.cc \ 189 1.49 mrg limits.cc 190 1.49 mrg 191 1.44 mrg .for _s in ${G_cxx11_sources} ${CXX11_ALWAYS} 192 1.37 mrg COPTS.${_s}+= -std=gnu++11 193 1.37 mrg .endfor 194 1.37 mrg 195 1.44 mrg .for _s in ${G_cxx98_sources} 196 1.43 mrg COPTS.${_s}+= -std=gnu++98 197 1.43 mrg .endfor 198 1.43 mrg 199 1.49 mrg .for _s in ${FCHAR8_SRCS} 200 1.49 mrg COPTS.${_s}+= -fchar8_t 201 1.49 mrg .endfor 202 1.49 mrg 203 1.24 christos COPTS.cp-demangle.c += -Wno-unused-function 204 1.24 christos 205 1.29 mrg COPTS.ext-inst.cc+= -Wno-error 206 1.29 mrg 207 1.21 mrg .for f in collate_members_cow \ 208 1.21 mrg messages_members_cow \ 209 1.21 mrg monetary_members_cow \ 210 1.31 mrg numeric_members_cow \ 211 1.31 mrg c++locale 212 1.21 mrg COPTS.${f}.cc+= -fimplicit-templates ${G_GLIBCXX_ABI_FLAGS} 213 1.9 mrg .endfor 214 1.9 mrg 215 1.54 mrg # XXXGCC12 216 1.54 mrg # hits on sparc, sparc64, armv7 at least 217 1.54 mrg COPTS.floating_to_chars.cc+= -Wno-error=unused-function 218 1.56 christos COPTS.cp-demangle.c+= -Wno-error=stack-protector 219 1.56 christos COPTS.floating_to_chars.cc+= -Wno-error=stack-protector 220 1.54 mrg 221 1.57 mrg # GCC 14 special cases 222 1.65 mrg tzdata.zi.h: ${GLIBCXX_SRCDIR}/src/c++20/tzdata.zi 223 1.57 mrg echo 'static const char tzdata_chars[] = R"__libstdcxx__(' > ${.TARGET}.tmp && \ 224 1.57 mrg cat $^ >> ${.TARGET}.tmp && \ 225 1.57 mrg echo ')__libstdcxx__";' >> ${.TARGET}.tmp && mv ${.TARGET}.tmp $@ 226 1.57 mrg 227 1.63 mrg # libbacktrace 228 1.63 mrg # XXX This is not new, but GCC 14 is the first to start demanding it properly. 229 1.63 mrg .for f in ${G_LIBBACKTRACE_SOURCES} ${G_LIBBACKTRACE_DEPS} 230 1.63 mrg . if ${f} == "cp-demangle.c" 231 1.63 mrg BUILDSYMLINKS+= \ 232 1.63 mrg ${DIST}/libiberty/${f} std_stacktrace-${f} 233 1.63 mrg CPPFLAGS.std_stacktrace-${f}+= \ 234 1.63 mrg -I${.CURDIR}/../libiberty/arch/${LIBSTDCXX_MACHINE_ARCH} 235 1.63 mrg . else 236 1.63 mrg BUILDSYMLINKS+= \ 237 1.63 mrg ${DIST}/libbacktrace/${f} std_stacktrace-${f} 238 1.63 mrg CPPFLAGS.std_stacktrace-${f}+= \ 239 1.63 mrg -I${.CURDIR}/../libbacktrace/arch/${LIBSTDCXX_MACHINE_ARCH} \ 240 1.63 mrg -I${DIST}/libbacktrace 241 1.63 mrg . endif 242 1.63 mrg SRCS+= std_stacktrace-${f} 243 1.64 mrg CPPFLAGS.std_stacktrace-${f}+= \ 244 1.64 mrg -include ${GLIBCXX_SRCDIR}/src/libbacktrace/backtrace-rename.h 245 1.63 mrg .endfor 246 1.63 mrg 247 1.57 mrg tzdb.cc: tzdata.zi.h 248 1.57 mrg 249 1.1 mrg .include <bsd.lib.mk> 250 1.1 mrg .include <bsd.subdir.mk> 251 1.1 mrg .include <bsd.info.mk> 252 1.1 mrg 253 1.65 mrg .PATH: ${GLIBCXX_SRCDIR}/src \ 254 1.65 mrg ${GLIBCXX_SRCDIR}/src/c++98 \ 255 1.65 mrg ${GLIBCXX_SRCDIR}/src/c++11 \ 256 1.65 mrg ${GLIBCXX_SRCDIR}/src/c++17 \ 257 1.65 mrg ${GLIBCXX_SRCDIR}/src/c++20 \ 258 1.65 mrg ${GLIBCXX_SRCDIR}/src/c++23 \ 259 1.65 mrg ${GLIBCXX_SRCDIR}/src/c++26 \ 260 1.65 mrg ${GLIBCXX_SRCDIR}/src/filesystem \ 261 1.65 mrg ${GLIBCXX_SRCDIR}/libsupc++ \ 262 1.65 mrg ${GLIBCXX_SRCDIR}/config/os/bsd/netbsd \ 263 1.48 christos ${CONF}/locale/${LOCALETYPE} \ 264 1.9 mrg ${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH} 265 1.1 mrg 266 1.9 mrg ${OBJS}: ${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk 267 1.29 mrg 268 1.1 mrg .else 269 1.1 mrg .include <bsd.prog.mk> # do nothing 270 1.1 mrg .endif 271