12233c95bSzrjRELUP=	/..
22233c95bSzrj.include "../../Makefile.inc"
32233c95bSzrjSRCDIR=	${GCCDIR}/libstdc++-v3
42233c95bSzrj.include "Makefile.headers"
52233c95bSzrj
62233c95bSzrj.PATH:	${SRCDIR}
72233c95bSzrj
82233c95bSzrj# These sections are detailed in Makefile.headers
92233c95bSzrj# parallel section is empty, skip it
102233c95bSzrj# make buildincludes, make installincludes before make depend
112233c95bSzrjglibcxx_srcdir=	${SRCDIR}
122233c95bSzrjHSECT=	std bits bits_sup backward ext ext_compat tr1 tr2 decimal \
132233c95bSzrj	c_base c_compatibility debug profile profile_impl host supc \
142233c95bSzrj	parallel experimental ext_host
152233c95bSzrjPBSECT=	1 2 3 4 5 6 7
162233c95bSzrjHD=	${INCLUDEDIR}/c++/${GCCPOINTVER}
172233c95bSzrj
182233c95bSzrj.for i in ${HSECT}
192233c95bSzrjINCSGROUPS+=		${i}_headers
202233c95bSzrj${i}_headersDIR=	${HD}/${${i}_builddir}
212233c95bSzrj.endfor
222233c95bSzrj
232233c95bSzrjPATHGROUP=
242233c95bSzrj.for i in ${PBSECT}
252233c95bSzrj.  for k in ${pb_headers${i}}
262233c95bSzrj.    if ${PATHGROUP:M${k:H:T}} == ""
272233c95bSzrjPATHGROUP+=${k:H:T}
282233c95bSzrjPATH_${k:H:T}=${k:H:T}
292233c95bSzrj.    endif
302233c95bSzrjPBG_${k:H:T}+=${k}
312233c95bSzrj.  endfor
322233c95bSzrj.endfor
332233c95bSzrj
342233c95bSzrjINCSGROUPS+=		PBG_pb_ds
352233c95bSzrjPBG_pb_dsDIR=		${HD}/${pb_builddir}
362233c95bSzrj
372233c95bSzrjINCSGROUPS+=		PBG_detail
382233c95bSzrjPBG_detailDIR=		${HD}/${pb_builddir}/detail
392233c95bSzrj
402233c95bSzrj.for k in ${PATHGROUP:Npb_ds:Ndetail}
412233c95bSzrjINCSGROUPS+=		PBG_${k}
422233c95bSzrjPBG_${k}DIR=		${HD}/${pb_builddir}/detail/${PATH_${k}}
432233c95bSzrj.endfor
442233c95bSzrj
452233c95bSzrjINCSGROUPS+=		experimental_bits_headers
462233c95bSzrjexperimental_bits_headersDIR=	${HD}/experimental/bits
472233c95bSzrj
482233c95bSzrjINCSGROUPS+=		host_headers_extra
492233c95bSzrjhost_headers_extraDIR=	${HD}/bits
502233c95bSzrjhost_headers_extraNAME_basic_file_stdio.h=	basic_file.h
512233c95bSzrjhost_headers_extraNAME_c_locale.h=		c++locale.h
522233c95bSzrjhost_headers_extraNAME_c_io_stdio.h+=		c++io.h
532233c95bSzrjhost_headers_extraNAME_new_allocator_base.h=	c++allocator.h
542233c95bSzrj
552233c95bSzrjcxxabi_forced.h: ${SRCDIR}/libsupc++/cxxabi_forced.h
562233c95bSzrj	cp ${.ALLSRC} ${.TARGET}
572233c95bSzrj
582233c95bSzrjgthr.h: ${GCCDIR}/libgcc/gthr.h
592233c95bSzrj	sed -e '/^#pragma/b' \
602233c95bSzrj	    -e '/^#/s/\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_][ABCDEFGHIJKLMNOPQRSTUVWXYZ_]*\)/_GLIBCXX_\1/g' \
612233c95bSzrj	    -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
622233c95bSzrj	    -e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
632233c95bSzrj	    -e 's,^#include "\(.*\)",#include <bits/\1>,g' \
642233c95bSzrj	    < ${GCCDIR}/libgcc/gthr.h > ${.TARGET}
652233c95bSzrj
662233c95bSzrjgthr-single.h: ${GCCDIR}/libgcc/gthr.h
672233c95bSzrj	sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \
682233c95bSzrj	    -e 's/\(GCC[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]*_H\)/_GLIBCXX_\1/g' \
692233c95bSzrj	    < ${GCCDIR}/libgcc/gthr-single.h > ${.TARGET}
702233c95bSzrj
712233c95bSzrjgthr-posix.h: ${GCCDIR}/libgcc/gthr-posix.h
722233c95bSzrj	sed -e 's/\(UNUSED\)/_GLIBCXX_\1/g' \
732233c95bSzrj	    -e 's/\(GCC[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]*_H\)/_GLIBCXX_\1/g' \
742233c95bSzrj	    -e 's/SUPPORTS_WEAK/__GXX_WEAK__/g' \
752233c95bSzrj	    -e 's/\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_]*USE_WEAK\)/_GLIBCXX_\1/g' \
762233c95bSzrj	    < ${GCCDIR}/libgcc/gthr-posix.h > ${.TARGET}
772233c95bSzrj
782233c95bSzrjgthr-default.h: gthr-posix.h
792233c95bSzrj	cp ${.ALLSRC} ${.TARGET}
802233c95bSzrj
812233c95bSzrjrelease=${GCCMAJORVER}
822233c95bSzrjns_version=0
832233c95bSzrjvisibility=1
842233c95bSzrjexterntemplate=1
852233c95bSzrjdualabi=1
862233c95bSzrjcxx11abi=1
872233c95bSzrjallocatornew=1
88*de2610f5Szrjfloat128=define _GLIBCXX_USE_FLOAT128 1
89*de2610f5Szrj#float128=undef _GLIBCXX_USE_FLOAT128
902233c95bSzrjldbl_compat='s,g,g,'
912233c95bSzrjS1='s,define __GLIBCXX__,define __GLIBCXX__ ${GCCSHORTDATE},'
922233c95bSzrjS2='s,define _GLIBCXX_RELEASE,define _GLIBCXX_RELEASE ${release},'
932233c95bSzrjS3='s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION ${ns_version},'
942233c95bSzrjS4='s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY ${visibility},'
952233c95bSzrjS5='s,define _GLIBCXX_EXTERN_TEMPLATE$$, define _GLIBCXX_EXTERN_TEMPLATE ${externtemplate},'
962233c95bSzrjS6='s,define _GLIBCXX_USE_DUAL_ABI, define _GLIBCXX_USE_DUAL_ABI ${dualabi},'
972233c95bSzrjS7='s,define _GLIBCXX_USE_CXX11_ABI, define _GLIBCXX_USE_CXX11_ABI ${cxx11abi},'
982233c95bSzrjS8='s,define _GLIBCXX_USE_ALLOCATOR_NEW, define _GLIBCXX_USE_ALLOCATOR_NEW ${allocatornew},'
99*de2610f5SzrjS9='s,define _GLIBCXX_USE_FLOAT128, ${float128},'
100*de2610f5SzrjS10='${ldbl_compat}'
1012233c95bSzrj
1022233c95bSzrjc++config.h: config.h
103*de2610f5Szrj	sed -e ${S1} -e ${S2} -e ${S3} -e ${S4} -e ${S5} -e ${S6} -e ${S7} -e ${S8} -e ${S9} -e ${S10} \
1042233c95bSzrj	    < ${GCCDIR}/libstdc++-v3/include/bits/c++config > ${.TARGET}
1052233c95bSzrj	sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
1062233c95bSzrj	    -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
1072233c95bSzrj	    -e 's/VERSION/_GLIBCXX_VERSION/g' \
1082233c95bSzrj	    -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
1092233c95bSzrj	    -e 's/ICONV_CONST/_GLIBCXX_ICONV_CONST/g' \
1102233c95bSzrj	    -e '/[	 ]_GLIBCXX_LONG_DOUBLE_COMPAT[	 ]/d' \
1112233c95bSzrj	    < ${.ALLSRC} >> ${.TARGET}
1122233c95bSzrj	echo "" >> ${.TARGET}
1132233c95bSzrj	echo "#endif // _GLIBCXX_CXX_CONFIG_H" >> ${.TARGET}
1142233c95bSzrj
1152233c95bSzrjCLEANFILES=	gthr.h gthr-default.h gthr-single.h gthr-posix.h \
1162233c95bSzrj		c++config.h cxxabi_forced.h
1172233c95bSzrj
1182233c95bSzrj.include <bsd.lib.mk>
119