Home | History | Annotate | Line # | Download | only in libstdc++-v3
      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