1# $FreeBSD$
2
3.include <bsd.own.mk>
4
5GCCVER=	4.2
6GCCDIR=	${.CURDIR}/../../../contrib/gcc
7GCCLIB=	${.CURDIR}/../../../contrib/gcclibs
8SRCDIR=	${.CURDIR}/../../../contrib/libstdc++/libsupc++
9
10.PATH: ${SRCDIR} ${GCCLIB}/libiberty
11
12LIB=	supc++
13SHLIB_MAJOR=1
14SRCS+=	del_op.cc del_opnt.cc del_opv.cc del_opvnt.cc eh_alloc.cc eh_arm.cc \
15	eh_aux_runtime.cc eh_call.cc eh_catch.cc eh_exception.cc eh_globals.cc \
16	eh_personality.cc eh_term_handler.cc eh_terminate.cc eh_throw.cc \
17	eh_type.cc eh_unex_handler.cc guard.cc new_handler.cc new_op.cc \
18	new_opnt.cc new_opv.cc new_opvnt.cc pure.cc tinfo.cc tinfo2.cc \
19	vec.cc vterminate.cc
20
21# from libiberty:
22SRCS+=	cp-demangle.c
23
24CFLAGS+=	-DIN_GLIBCPP_V3 -DHAVE_CONFIG_H
25.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} == "no"
26CFLAGS+=	-D_GLIBCXX_SJLJ_EXCEPTIONS=1
27.endif
28CFLAGS+=	-I${GCCLIB}/include -I${SRCDIR} -I${GCCDIR}
29CFLAGS+=	-I${.CURDIR}/../libstdc++ -I.
30CFLAGS+=	-frandom-seed=RepeatabilityConsideredGood
31CXXFLAGS+=	-fno-implicit-templates -ffunction-sections -fdata-sections
32PO_CXXFLAGS=    ${CXXFLAGS:N-ffunction-sections}
33
34HDRS=	exception new typeinfo cxxabi.h exception_defines.h
35INCS=	${HDRS:S;^;${SRCDIR}/;}
36INCSDIR=${INCLUDEDIR}/c++/${GCCVER}
37
38.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
39unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
40.else
41unwind.h: ${GCCDIR}/unwind-generic.h
42.endif
43
44unwind.h:
45	ln -sf ${.ALLSRC} ${.TARGET}
46
47SRCS+=		unwind.h
48CLEANFILES+=	unwind.h
49
50# Symbol versioning
51
52VERSION_MAP=	${.CURDIR}/Version.map
53
54
55.include <bsd.lib.mk>
56
57# Filter out libc++-specific flags, and -std= flags above c++98 or gnu++98.
58CXXFLAGS:=	${CXXFLAGS:N-stdlib=libc++:N-std=c++[01][13x]:N-std=gnu++[01][13x]}
59
60CXXFLAGS.clang+= -stdlib=libstdc++
61