diff options
40 files changed, 2589 insertions, 1 deletions
diff --git a/lang/Makefile b/lang/Makefile index 5575d193f20..d61b4793a72 100644 --- a/lang/Makefile +++ b/lang/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.341 2013/03/24 18:35:04 dholland Exp $ +# $NetBSD: Makefile,v 1.342 2013/04/01 21:06:15 wiz Exp $ # COMMENT= Programming languages @@ -62,6 +62,8 @@ SUBDIR+= gcc45 SUBDIR+= gcc46 SUBDIR+= gcc47 SUBDIR+= gcc47-libs +SUBDIR+= gcc48 +SUBDIR+= gcc48-libs SUBDIR+= gforth SUBDIR+= ghc SUBDIR+= gnat-aux diff --git a/lang/gcc48-libs/DESCR b/lang/gcc48-libs/DESCR new file mode 100644 index 00000000000..67396068e82 --- /dev/null +++ b/lang/gcc48-libs/DESCR @@ -0,0 +1,3 @@ +The GNU Compiler Collection (GCC) includes front ends for C, C++, Objective-C, +Fortran, and Go, as well as libraries for these languages (libstdc++, +libgfortran, ...). diff --git a/lang/gcc48-libs/Makefile b/lang/gcc48-libs/Makefile new file mode 100644 index 00000000000..1a6164526fd --- /dev/null +++ b/lang/gcc48-libs/Makefile @@ -0,0 +1,66 @@ +# $NetBSD: Makefile,v 1.1 2013/04/01 21:06:18 wiz Exp $ + +GCC_PKGNAME= gcc48 +.include "../../lang/${GCC_PKGNAME}/version.mk" + +DISTNAME= gcc-${GCC_DIST_VERSION} +PKGNAME= ${GCC_PKGNAME}-libs-${GCC_DIST_VERSION} +## The PKGREVISION of this package needs to be at least 1 more than the +## PKGREVISION of the lang/gcc48 package so that with the dependence pattern +## '{gcc48,gcc48-libs}>=4.8.*' pkg_all will choose gcc48-libs over gcc48. +PKGREVISION= 1 +CATEGORIES= lang +MASTER_SITES= # empty +DISTFILES= # empty + +MAINTAINER= sbd@NetBSD.org +HOMEPAGE= http://gcc.gnu.org/ +COMMENT= The GNU Compiler Collection (GCC) support shared libraries. +LICENSE= gnu-gpl-v2 AND gnu-gpl-v3 AND gnu-lgpl-v2 AND gnu-lgpl-v3 + +USE_TOOLS+= pax + +NO_BUILD= yes + +## Depend on exactly ${GCC_DIST_VERSION}. +BUILD_DEPENDS+= ${GCC_PKGNAME}-${GCC_DIST_VERSION}{,nb[0-9]*}:../../lang/gcc48 + +.include "../../mk/bsd.prefs.mk" + +FIND_PREFIX:= GCC_PKG_PREFIX=${GCC_PKGNAME}-${GCC_DIST_VERSION}* +.include "../../mk/find-prefix.mk" + +GCC_SUBPREFIX= ${GCC_PKGNAME} +GCC_PREFIX= ${GCC_PKG_PREFIX}/${GCC_SUBPREFIX} +GCC_TARGET_MACHINE?= ${MACHINE_GNU_PLATFORM} +BUILD_DEFS+= GCC_TARGET_MACHINE + +.include "../../mk/bsd.prefs.mk" +.if ${_OPSYS_SHLIB_TYPE} == "dylib" +SHLIB_EXT= dylib +.else +SHLIB_EXT= so +.endif + +LIBRARY_FILES= ${WRKDIR}/lib_files + +GENERATE_PLIST+= ${SED} -e 's,^,${GCC_SUBPREFIX}/${GCC_TARGET_MACHINE}/,' \ + ${LIBRARY_FILES}; +GENERATE_PLIST+= ${GREP} -q 'lib/' ${LIBRARY_FILES} || \ + ${ECHO} '@pkgdir ${GCC_SUBPREFIX}/${GCC_TARGET_MACHINE}/lib' ; + +${LIBRARY_FILES}: + ${PKG_INFO} -qL '${GCC_PKGNAME}-${GCC_DIST_VERSION}*' | \ + ${SED} -n -e's,^${GCC_PREFIX}/,,' -e'/libexec\//d' \ + -e'/libgij/d;/libgcj/d;/libjvm/d' \ + -e'/lib.*\.${SHLIB_EXT}/p' >${LIBRARY_FILES} + +do-install: ${LIBRARY_FILES} + ${TEST} -d ${DESTDIR}${GCC_PREFIX}/${GCC_TARGET_MACHINE}/lib || \ + ${MKDIR} ${DESTDIR}${GCC_PREFIX}/${GCC_TARGET_MACHINE}/lib + cd ${GCC_PREFIX} && \ + ${PAX} -rw ${DESTDIR}${GCC_PREFIX}/${GCC_TARGET_MACHINE} <${LIBRARY_FILES} + +.include "../../mk/dlopen.buildlink3.mk" +.include "../../mk/pthread.buildlink3.mk" +.include "../../mk/bsd.pkg.mk" diff --git a/lang/gcc48-libs/buildlink3.mk b/lang/gcc48-libs/buildlink3.mk new file mode 100644 index 00000000000..73c79a74f9d --- /dev/null +++ b/lang/gcc48-libs/buildlink3.mk @@ -0,0 +1,43 @@ +# $NetBSD: buildlink3.mk,v 1.1 2013/04/01 21:06:18 wiz Exp $ + +BUILDLINK_TREE+= gcc48-libs + +.if !defined(GCC48_LIBS_BUILDLINK3_MK) +GCC48_LIBS_BUILDLINK3_MK:= + +.if !empty(USE_PKGSRC_GCC_RUNTIME:M[Yy][Ee][Ss]) +BUILDLINK_API_DEPENDS.gcc48-libs+= gcc48-libs>=4.8.0 +.else +BUILDLINK_API_DEPENDS.gcc48-libs+= {gcc48,gcc48-libs}>=4.8.0 +.endif +BUILDLINK_PKGSRCDIR.gcc48-libs= ../../lang/gcc48-libs +BUILDLINK_DEPMETHOD.gcc48-libs?= full + +BUILDLINK_PASSTHRU_DIRS+= ${BUILDLINK_PREFIX.gcc48-libs}/gcc48 + +BUILDLINK_FILES.gcc48-libs= #empty +BUILDLINK_AUTO_VARS.gcc48-libs= no + +.if !empty(USE_PKGSRC_GCC_RUNTIME:M[Yy][Ee][Ss]) +# Use custom specs file to ensure we link against pkgsrc libraries. +SPECS_LIBGCC= ${WRAPPER_DIR}/specs.libgcc +WRAPPER_TARGETS+= ${SPECS_LIBGCC} + +GCC_SUBPREFIX= gcc48 +GCC_PREFIX= ${BUILDLINK_PREFIX.gcc48-libs}/${GCC_SUBPREFIX} +GCC_TARGET_MACHINE?= ${MACHINE_GNU_PLATFORM} + +# XXX: Using %M requires patched version of gcc (e.g. lang/gcc48) +${SPECS_LIBGCC}: + @${ECHO} "*link_libgcc:" >${SPECS_LIBGCC} + @${ECHO} "%D $(LINKER_RPATH_FLAG)${GCC_PREFIX}/${GCC_TARGET_MACHINE}/lib/%M $(LINKER_RPATH_FLAG)${GCC_PREFIX}/lib/%M" >>${SPECS_LIBGCC} + +_WRAP_EXTRA_ARGS.CC+= -specs ${SPECS_LIBGCC} +_WRAP_EXTRA_ARGS.CXX+= -specs ${SPECS_LIBGCC} +_WRAP_EXTRA_ARGS.FC+= -specs ${SPECS_LIBGCC} +.endif + +.include "../../mk/dlopen.buildlink3.mk" +.include "../../mk/pthread.buildlink3.mk" +.endif # GCC48_LIBS_BUILDLINK3_MK +BUILDLINK_TREE+= -gcc48-libs diff --git a/lang/gcc48/DESCR b/lang/gcc48/DESCR new file mode 100644 index 00000000000..fd9f9958b81 --- /dev/null +++ b/lang/gcc48/DESCR @@ -0,0 +1,4 @@ +The GNU Compiler Collection (GCC) includes front ends for C, C++, Objective-C, +Fortran, Java, and Go, as well as libraries for these languages (libstdc++, +libgcj,...). This package provides the snapshot relases of version 4.8. +See http://gcc.gnu.org/gcc-4.8/changes.html for changes relative to 4.7.x. diff --git a/lang/gcc48/Makefile b/lang/gcc48/Makefile new file mode 100644 index 00000000000..8250d5c876e --- /dev/null +++ b/lang/gcc48/Makefile @@ -0,0 +1,144 @@ +# $NetBSD: Makefile,v 1.1 2013/04/01 21:06:15 wiz Exp $ + +GCC_PKGNAME= gcc48 +.include "version.mk" + +DISTNAME= gcc-${GCC_DIST_VERSION} +PKGNAME= ${GCC_PKGNAME}-${GCC_DIST_VERSION} +## When bumping the PKGREVISION of this package the PKGREVISION of +## lang/gcc48-libs needs to be bump to be at least 1 more than the +## PKGREVISION of this package! +PKGREVISION= 0 +CATEGORIES= lang +MASTER_SITES= ${MASTER_SITE_GNU:=gcc/gcc-${GCC_DIST_VERSION}/} +EXTRACT_SUFX= .tar.bz2 + +MAINTAINER= pkgsrc-users@NetBSD.org +HOMEPAGE= http://gcc.gnu.org/ +COMMENT= The GNU Compiler Collection (GCC) - 4.8 Release Series +LICENSE= gnu-gpl-v2 AND gnu-gpl-v3 AND gnu-lgpl-v2 AND gnu-lgpl-v3 + +DISTFILES= ${DEFAULT_DISTFILES} +EXTRACT_ONLY= ${DEFAULT_DISTFILES} + +NOT_FOR_PLATFORM= Interix-*-* + +USE_LANGUAGES= c c++ +USE_TOOLS+= gmake makeinfo sed:run + +GNU_CONFIGURE= yes +## Build outside ${WRKSRC} +OBJDIR= ../build +CONFIGURE_DIRS= ${OBJDIR} +CONFIGURE_SCRIPT= ../${DISTNAME}/configure +GCC_SUBPREFIX= ${GCC_PKGNAME} +GCC_PREFIX= ${PREFIX}/${GCC_SUBPREFIX} +GNU_CONFIGURE_PREFIX= ${GCC_PREFIX} +INFO_FILES= yes + +UNLIMIT_RESOURCES+= datasize +UNLIMIT_RESOURCES+= stacksize + +.include "../../mk/bsd.prefs.mk" + +LANGS= c + +## The Library rpath to use in end programs. +LDFLAGS_FOR_TARGET= ${LDFLAGS:M${COMPILER_RPATH_FLAG}*:N*/usr/lib*} + +# The "-static-libstdc++ -static-libgcc" flags are normally added to the +# boot-ldflags by configure but because we are supply the boot-ldflags +# we mash supply them. +BOOT_LDFLAGS= -static-libstdc++ -static-libgcc ${LDFLAGS_FOR_TARGET} +# Needed on Darwin when LDFLAGS point to a SDK +BOOT_LDFLAGS+= ${LDFLAGS:M-Wl,-syslibroot*} + +## For target librarys and libjava programs. +CONFIGURE_ENV+= LDFLAGS_FOR_TARGET=${LDFLAGS_FOR_TARGET:Q} + +CONFIGURE_ARGS+= --enable-languages=${LANGS:Q} +CONFIGURE_ARGS+= --enable-shared +CONFIGURE_ARGS+= --enable-long-long +CONFIGURE_ARGS+= --with-local-prefix=${GCC_PREFIX:Q} +CONFIGURE_ARGS+= --enable-libssp +CONFIGURE_ARGS+= --enable-threads=posix +CONFIGURE_ARGS+= --with-boot-ldflags=${BOOT_LDFLAGS:Q} +.if ${OPSYS} == "NetBSD" +CONFIGURE_ARGS+= --with-gnu-ld --with-ld=/usr/bin/ld +CONFIGURE_ARGS+= --with-gnu-as --with-as=/usr/bin/as +MAKE_ENV+= ac_cv_func_clock_gettime=yes +.endif +.if ${OPSYS} == "DragonFly" +CONFIGURE_ARGS+= --disable-bootstrap +.endif + + +.if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) || !empty(MACHINE_PLATFORM:MLinux-*-i386) +CONFIGURE_ARGS+= --with-arch=i486 --with-tune=i486 +.endif + +.include "options.mk" + +# ${WRKSRC}/fixincludes/ looks for sed and compiles the path to sed into +# a binary so we need to make sure we give it the installed sed and not +# the tool wrapped one. +MAKE_ENV+= ac_cv_path_SED=${TOOLS_SED} +MAKE_ENV+= lt_cv_path_SED=${TOOLS_SED} + +# Determine whether to use binutils +.if ${OPSYS} == "SunOS" +. if exists(/usr/sfw/bin/gobjdump) +CONFIGURE_ENV+= OBJDUMP=/usr/sfw/bin/gobjdump +. endif +. if exists(/usr/bin/ld) +CONFIGURE_ARGS+= --without-gnu-ld --with-ld=/usr/bin/ld +. else +CONFIGURE_ARGS+= --without-gnu-ld --with-ld=/usr/ccs/bin/ld +. endif +. if exists(/usr/sfw/bin/gas) +CONFIGURE_ARGS+= --with-gnu-as --with-as=/usr/sfw/bin/gas +. elif exists(/usr/ccs/bin/as) +CONFIGURE_ARGS+= --without-gnu-as --with-as=/usr/ccs/bin/as +. else +BUILDLINK_DEPMETHOD.binutils= full +. include "../../devel/binutils/buildlink3.mk" +CONFIGURE_ARGS+= --with-gnu-as --with-as=${PREFIX}/bin/gas +. endif +.endif + +pre-configure: + ${RUN} cd ${WRKSRC} && ${MKDIR} ${OBJDIR} + +TEST_TARGET= -k check || ${TRUE} +pre-test: + ${RUN} \ + if runtest --version >/dev/null 2>/dev/null ; then \ + : ; \ + else \ + ${ECHO} "ERROR: Please install devel/dejagnu in order to run the test suite." ; \ + exit 1 ; \ + fi +post-test: + ${RUN} cd ${WRKSRC} && cd ${OBJDIR} && \ + ${SHELL} ${WRKSRC}/contrib/test_summary >${WRKDIR}/test_summary.log + @${INFO_MSG} "Test summary are available in ${WRKDIR}/test_summary.log" + +post-install: + ${TEST} -f ${DESTDIR}${GCC_PREFIX}/bin/cc || \ + ( cd ${DESTDIR}${GCC_PREFIX}/bin ; ${LN} -f gcc cc ) +.if !empty(PKG_OPTIONS:Mgcc-java) + ${RM} -f ${DESTDIR}${JAVA_HOME}/bin/javadoc + ${RM} -f ${DESTDIR}${JAVA_HOME}/jre/lib/${JAVA_ARCH}/libjawt.so +.endif +.if !empty(MACHINE_PLATFORM:MSunOS-*-*86*) && ${OS_VERSION} != "5.11" + ${SH} files/values.c ${DESTDIR}${GCC_PREFIX}/bin/gcc -m32 || ${TRUE} + ${SH} files/values.c ${DESTDIR}${GCC_PREFIX}/bin/gcc -m64 || ${TRUE} +.endif + +GENERATE_PLIST+= \ + cd ${DESTDIR}${PREFIX} && \ + ${FIND} ${GCC_SUBPREFIX} \( -type f -o -type l \) -print | ${SORT} ; + +.include "../../mk/dlopen.buildlink3.mk" +.include "../../mk/pthread.buildlink3.mk" +.include "../../mk/bsd.pkg.mk" diff --git a/lang/gcc48/PLIST.java b/lang/gcc48/PLIST.java new file mode 100644 index 00000000000..d348e399c6b --- /dev/null +++ b/lang/gcc48/PLIST.java @@ -0,0 +1,42 @@ +@comment $NetBSD: PLIST.java,v 1.1 2013/04/01 21:06:15 wiz Exp $ +bin/${JAVA_NAME}-appletviewer +bin/${JAVA_NAME}-jar +bin/${JAVA_NAME}-jarsigner +bin/${JAVA_NAME}-java +bin/${JAVA_NAME}-javah +bin/${JAVA_NAME}-keytool +bin/${JAVA_NAME}-native2ascii +bin/${JAVA_NAME}-orbd +bin/${JAVA_NAME}-rmic +bin/${JAVA_NAME}-rmid +bin/${JAVA_NAME}-rmiregistry +bin/${JAVA_NAME}-serialver +bin/${JAVA_NAME}-tnameserv +java/${JAVA_NAME}/bin/appletviewer +java/${JAVA_NAME}/bin/jar +java/${JAVA_NAME}/bin/jarsigner +java/${JAVA_NAME}/bin/java +java/${JAVA_NAME}/bin/javah +java/${JAVA_NAME}/bin/keytool +java/${JAVA_NAME}/bin/native2ascii +java/${JAVA_NAME}/bin/orbd +java/${JAVA_NAME}/bin/rmic +java/${JAVA_NAME}/bin/rmid +java/${JAVA_NAME}/bin/rmiregistry +java/${JAVA_NAME}/bin/serialver +java/${JAVA_NAME}/bin/tnameserv +java/${JAVA_NAME}/include/jawt.h +java/${JAVA_NAME}/include/jni.h +java/${JAVA_NAME}/include/linux/jawt_md.h +java/${JAVA_NAME}/include/linux/jni_md.h +java/${JAVA_NAME}/jre/bin/java +java/${JAVA_NAME}/jre/bin/keytool +java/${JAVA_NAME}/jre/bin/orbd +java/${JAVA_NAME}/jre/bin/rmid +java/${JAVA_NAME}/jre/bin/rmiregistry +java/${JAVA_NAME}/jre/bin/tnameserv +java/${JAVA_NAME}/jre/lib/${JAVA_ARCH}/client/libjvm.so +java/${JAVA_NAME}/jre/lib/${JAVA_ARCH}/server/libjvm.so +java/${JAVA_NAME}/jre/lib/rt.jar +java/${JAVA_NAME}/jre/lib/security/java.security +java/${JAVA_NAME}/lib/tools.jar diff --git a/lang/gcc48/buildlink3.mk b/lang/gcc48/buildlink3.mk new file mode 100644 index 00000000000..adc7a00d85c --- /dev/null +++ b/lang/gcc48/buildlink3.mk @@ -0,0 +1,35 @@ +# $NetBSD: buildlink3.mk,v 1.1 2013/04/01 21:06:15 wiz Exp $ + +BUILDLINK_TREE+= gcc48 + +.if !defined(GCC48_BUILDLINK3_MK) +GCC48_BUILDLINK3_MK:= + +BUILDLINK_API_DEPENDS.gcc48+= gcc48>=${_GCC_REQD} +BUILDLINK_ABI_DEPENDS.gcc48+= gcc48>=4.8.0 +BUILDLINK_PKGSRCDIR.gcc48= ../../lang/gcc48 +BUILDLINK_DEPMETHOD.gcc48?= build + +FIND_PREFIX:= BUILDLINK_PREFIX.gcc48=gcc48 +.include "../../mk/find-prefix.mk" +BUILDLINK_PASSTHRU_DIRS+= ${BUILDLINK_PREFIX.gcc48}/gcc48 + +BUILDLINK_FILES.gcc48= #empty +BUILDLINK_AUTO_VARS.gcc48= no + +# Packages that link against shared libraries need a full dependency. +.if defined(_USE_GCC_SHLIB) +DEPENDS+= {gcc, gcc48-libs}>=${_GCC_REQD}:../../lang/gcc48-libs +ABI_DEPENDS+= {gcc,gcc48-libs}>=4.8.0:../../lang/gcc48-libs +.endif + +pkgbase := gcc48 +.include "../../mk/pkg-build-options.mk" +.if !empty(PKG_BUILD_OPTIONS.gcc48:Mgcc-java) +.include "../../devel/zlib/buildlink3.mk" +.endif + +.include "../../mk/dlopen.buildlink3.mk" +.include "../../mk/pthread.buildlink3.mk" +.endif # GCC48_BUILDLINK3_MK +BUILDLINK_TREE+= -gcc48 diff --git a/lang/gcc48/distinfo b/lang/gcc48/distinfo new file mode 100644 index 00000000000..6b51aeba8de --- /dev/null +++ b/lang/gcc48/distinfo @@ -0,0 +1,36 @@ +$NetBSD: distinfo,v 1.1 2013/04/01 21:06:15 wiz Exp $ + +SHA1 (ecj-4.5.jar) = 58c1d79c64c8cd718550f32a932ccfde8d1e6449 +RMD160 (ecj-4.5.jar) = d3f4da657f086b6423f74e93f001132f4855368a +Size (ecj-4.5.jar) = 1470676 bytes +SHA1 (gcc-4.8.0.tar.bz2) = b4ee6e9bdebc65223f95067d0cc1a634b59dad72 +RMD160 (gcc-4.8.0.tar.bz2) = 0000f2af2aa4daa32108ba4725938833684f6937 +Size (gcc-4.8.0.tar.bz2) = 86663646 bytes +SHA1 (patch-gcc_Makefile.in) = ce366a091960d335ecb022918e2f7bfc4e3fcccf +SHA1 (patch-gcc_config.gcc) = ac175c5eecf3dd53508479b30bf5c59cc0a5fca9 +SHA1 (patch-gcc_config_dragonfly-stdint.h) = 740dc819b446d5f1476506322c4b280ffdb5a6c0 +SHA1 (patch-gcc_config_dragonfly.h) = 82f549cdc7543b4bf413a44d481ef42b10f59c82 +SHA1 (patch-gcc_config_dragonfly.opt) = 92f615c73c2e94664bae5b5935ab8b09bca15f73 +SHA1 (patch-gcc_config_i386_dragonfly.h) = 0d3f785434c02beb9c4561fe59842a970e8f7896 +SHA1 (patch-gcc_config_netbsd-stdint.h) = 025fc883101a187e84ed4c0772406720d645d550 +SHA1 (patch-gcc_configure) = a4b670d0c54c410d38715b7a2a572a7048e3ec5e +SHA1 (patch-gcc_fortran_f95-lang.c) = 06470dbee79f8c762675d3060a870b7dd9ba38f8 +SHA1 (patch-gcc_ginclude_stddef.h) = 50be7c9469ac58c79e10abda5e7cfef5f91dd249 +SHA1 (patch-include_libiberty.h) = ad2c64e9a14405c89b02ff68811b1c889405d0a1 +SHA1 (patch-libgcc_config.host) = 1807e784c9808243d1a99b19534d94752d81ce6d +SHA1 (patch-libgcc_config_i386_dragonfly-unwind.h) = 9d77252dd982495e90f95b82706bab29e581df9f +SHA1 (patch-libgcc_crtstuff.c) = 88500ea895cd683608f8f2b7177149f11947e3b4 +SHA1 (patch-libgcc_unwind-dw2-fde-dip.c) = 770f04f3cbeb0d794fa297b328f06f6e687419c0 +SHA1 (patch-libgo_Makefile.in) = 612987541f745c7be6835ce7fb7119884db294c3 +SHA1 (patch-libjava_boehm.cc) = b18bc9d410a62543583c77e011f50b86f41ca18a +SHA1 (patch-libjava_configure) = 48ea2baffe87e09dda8133d286bd9b1bfe4c3f8a +SHA1 (patch-libjava_contrib_rebuild-gcj-db.in) = bb01d738fc7db05046ae37e8ade32574de1d8297 +SHA1 (patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc) = 5c0ccc6b90e3508b03ed399e8e9e300a6aa9cbb7 +SHA1 (patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc) = 876a754c7fcb1c4a362ca7b2655da6cdbb784ccc +SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h) = 12b8e3b998ae1c4b6641d8f9e26e7430c58bb7bc +SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc) = d5649f42b61ff3c27d60e813cc844b820525aee4 +SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h) = 3e8cbedb167fc623f184a59b1f4b330544b08939 +SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h) = 9a45ecb4309c50ca90008b2fc7d3b44d002698b4 +SHA1 (patch-libstdc++-v3_configure) = 3821275fa698221d7665ea3c98b0a24f33954a5a +SHA1 (patch-libstdc++-v3_configure.host) = 7426ea4a9735e5f886f4a3ffb4a9ba62734178c4 +SHA1 (patch-libstdc++-v3_libsupc++_unwind-cxx.h) = 9784bfa4323f8498b36565d0fea28fce69ffdbb1 diff --git a/lang/gcc48/files/values.c b/lang/gcc48/files/values.c new file mode 100644 index 00000000000..e043d948b6c --- /dev/null +++ b/lang/gcc48/files/values.c @@ -0,0 +1,64 @@ +#if 0 /* $NetBSD: values.c,v 1.1 2013/04/01 21:06:16 wiz Exp $ */ +# +# This is Solaris x86 specific GCC run-time environment patch, which +# makes it possible to reliably deploy .init snippets. Trouble is that +# Solaris linker erroneously pads .init segment with zeros [instead of +# nops], which is bound to SEGV early upon program start-up. This bug +# was recognized by GCC team [it is mentioned in source code], but +# workaround apparently and obviously erroneously slipped away in some +# newer GCC release. This patch compensates for this mishap by dropping +# modified values-X*.o into GCC installation tree. Object modules in +# question are normally provided by Sun and linked prior crtbegin.o. +# Modified versions are additionally crafted with custom .init segment, +# which does some magic:-) +# <appro@fy.chalmers.se> +set -e +gcc=gcc +if [[ "x$1" = x*gcc ]]; then + gcc=$1; shift +fi +gcc_dir=`${gcc} "$@" -print-libgcc-file-name` +gcc_dir=${gcc_dir%/*} #*/ +set -x +${gcc} "$@" -c -o $gcc_dir/values-Xa.o -DXa $0 +${gcc} "$@" -c -o $gcc_dir/values-Xc.o -DXc $0 +${gcc} "$@" -c -o $gcc_dir/values-Xt.o -DXt $0 +exit +#endif + +#include <math.h> + +#if defined(Xa) +const enum version _lib_version = ansi_1; +#elif defined(Xc) +const enum version _lib_version = strict_ansi; +#elif defined(Xt) +const enum version _lib_version = c_issue_4; +#else +#error "compile by issuing 'ksh -f values.c [gcc] [-m64]'" +#endif + +#if defined(__x86_64__) +asm("\n" +".section .init\n" +".align 1\n" +" leaq 1f(%rip),%rax\n" +"1: cmpl $0,2f-1b(%rax)\n" +" jne 2f\n" +" jmp 2f+5\n" +" .skip 9\n" /* pad up to 0x1b bytes */ +"2:\n" +); +#else +asm("\n" +".section .init\n" +".align 1\n" +" call 1f\n" +"1: popl %eax\n" +" cmpl $0,2f-1b(%eax)\n" +" jne 2f\n" +" jmp 2f+5\n" +" .skip 10\n" /* pad up to 0x1b bytes */ +"2:\n" +); +#endif diff --git a/lang/gcc48/options.mk b/lang/gcc48/options.mk new file mode 100644 index 00000000000..edcd0aa80ba --- /dev/null +++ b/lang/gcc48/options.mk @@ -0,0 +1,182 @@ +# $NetBSD: options.mk,v 1.1 2013/04/01 21:06:15 wiz Exp $ + +PKG_OPTIONS_VAR= PKG_OPTIONS.${GCC_PKGNAME} +PKG_SUPPORTED_OPTIONS= nls gcc-inplace-math gcc-c++ gcc-fortran gcc-java \ + gcc-go gcc-objc gcc-objc++ gcc-graphite +PKG_SUGGESTED_OPTIONS= gcc-c++ gcc-fortran gcc-objc gcc-objc++ gcc-graphite + +.if ${OPSYS} == "NetBSD" +PKG_SUGGESTED_OPTIONS+= nls +.elif ${OPSYS} == "Linux" +PKG_SUGGESTED_OPTIONS+= nls gcc-java +.elif ${OPSYS} == "DragonFly" +PKG_SUGGESTED_OPTIONS+= nls +.elif ${OPSYS} == "SunOS" +PKG_SUGGESTED_OPTIONS+= gcc-inplace-math +.else +PKG_SUGGESTED_OPTIONS+= gcc-java +.endif + +### +### Determine if multilib is avalible. +### +MULTILIB_SUPPORTED?= unknown +.if !empty(MACHINE_PLATFORM:MLinux-*-x86_64) +. if exists(/usr/include/gnu/stubs-64.h) && \ + !exists(/usr/include/gnu/stubs-32.h) +MULTILIB_SUPPORTED=No +. else +MULTILIB_SUPPORTED=Yes +. endif +.endif +.if !empty(MULTILIB_SUPPORTED:M[Yy][Ee][Ss]) +PKG_SUPPORTED_OPTIONS+= gcc-multilib +PKG_SUGGESTED_OPTIONS+= gcc-multilib +.endif + +.include "../../mk/bsd.options.mk" + +### +### Native Language Support +### +.if !empty(PKG_OPTIONS:Mnls) +USE_TOOLS+= msgfmt +CONFIGURE_ARGS+= --enable-nls +CONFIGURE_ARGS+= --with-libiconv-prefix=${BUILDLINK_PREFIX.iconv} +MAKE_ENV+= ICONVPREFIX=${BUILDLINK_PREFIX.iconv} +.include "../../converters/libiconv/buildlink3.mk" +.include "../../devel/gettext-lib/buildlink3.mk" +.else +CONFIGURE_ARGS+= --disable-nls +.endif + +### +### Multilib Support +### +.if (!empty(MULTILIB_SUPPORTED:M[Yy][Ee][Ss]) && \ + empty(PKG_OPTIONS:Mgcc-multilib) ) || \ + !empty(MULTILIB_SUPPORTED:M[Nn][Oo]) +CONFIGURE_ARGS+= --disable-multilib +.endif + +### +### Build math libraries in place +### +.if !empty(PKG_OPTIONS:Mgcc-inplace-math) +. include "../../devel/gmp/inplace.mk" +. include "../../math/mpcomplex/inplace.mk" +. include "../../math/mpfr/inplace.mk" +.else +CONFIGURE_ARGS+= --with-gmp=${BUILDLINK_PREFIX.gmp} +CONFIGURE_ARGS+= --with-mpc=${BUILDLINK_PREFIX.mpcomplex} +CONFIGURE_ARGS+= --with-mpfr=${BUILDLINK_PREFIX.mpfr} +LIBS.SunOS+= -lgmp +. include "../../devel/gmp/buildlink3.mk" +. include "../../math/mpcomplex/buildlink3.mk" +. include "../../math/mpfr/buildlink3.mk" +.endif + + +### +### Graphite Support +### +.if !empty(PKG_OPTIONS:Mgcc-graphite) +CONFIGURE_ARGS+= --with-cloog=${BUILDLINK_PREFIX.cloog} +CONFIGURE_ARGS+= --enable-cloog-backend=isl +.include "../../math/cloog/buildlink3.mk" +.include "../../math/isl/buildlink3.mk" +.endif + +### +### Optional languages +### Ada could be added although there is a bootstrapping issue. See +### ../gcc34-ada for guidance +### + +.if !empty(PKG_OPTIONS:Mgcc-objc++) +. if empty(PKG_OPTIONS:Mgcc-c++) +PKG_OPTIONS+= gcc-c++ +. endif +. if empty(PKG_OPTIONS:Mgcc-objc) +PKG_OPTIONS+= gcc-objc +. endif +LANGS+= obj-c++ +.endif + +.if !empty(PKG_OPTIONS:Mgcc-objc) +LANGS+= objc +.endif + +.if !empty(PKG_OPTIONS:Mgcc-java) +. if empty(PKG_OPTIONS:Mgcc-c++) +PKG_OPTIONS+= gcc-c++ +. endif + +LANGS+= java + +# Add the Eclipse Java compiler for to parse `.java' source files. +ECJ_JAR= ecj-4.5.jar +SITES.${ECJ_JAR}= ftp://sourceware.org/pub/java/ +DISTFILES+= ${ECJ_JAR} +CONFIGURE_ARGS+= --with-ecj-jar=${DISTDIR:Q}/${ECJ_JAR:Q} + +JAVA_NAME= ${GCC_PKGNAME} +JAVA_HOME= ${PREFIX}/java/${JAVA_NAME} +JAVA_WRAPPERS= appletviewer jar jarsigner java javah keytool \ + native2ascii orbd rmic rmid rmiregistry serialver \ + tnameserv + +JAVA_ARCH= ${MACHINE_ARCH:S/x86_64/amd64/} + +PLIST_SRC+= PLIST.java +PLIST_SUBST+= JAVA_NAME=${JAVA_NAME:Q} +PLIST_SUBST+= JAVA_ARCH=${JAVA_ARCH:Q} + +# Create a JPackage compatible SDK environment. +CONFIGURE_ARGS+= --enable-java-home +CONFIGURE_ARGS+= --with-os-directory=${LOWER_OPSYS:Q} +CONFIGURE_ARGS+= --with-arch-directory=${JAVA_ARCH:Q} +CONFIGURE_ARGS+= --with-jvm-root-dir=${JAVA_HOME:Q} +CONFIGURE_ARGS+= --with-java-home=${JAVA_HOME:Q} + +REPLACE_PYTHON= libjava/contrib/aot-compile.in + +USE_TOOLS+= unzip zip:run gmake:run +CONFIGURE_ARGS+= --with-system-zlib + +# libjava/contrib/aotcompile.py.in stores the path to a 'make' program so +# we need to make sure we give it the installed 'make' and not the tool +# wrapped one. +CONFIGURE_ENV+= PKGSRC_MAKE=${TOOLS_PATH.gmake} +MAKE_ENV+= PKGSRC_MAKE=${TOOLS_PATH.gmake} + +# fastjar-0.93 from pkgsrc/archivers/fastjar seems to trigger a build +# failure (seen on NetBSD-5.0/i386) when building java. So in case +# the fastjar package is installed, make sure the configure script +# doesn't pick it up. +CONFIGURE_ENV+= JAR=no +MAKE_ENV+= JAR=no +MAKE_ENV+= ac_cv_prog_JAR=no + +.include "../../devel/zlib/buildlink3.mk" +.include "../../lang/python/application.mk" +.include "../../mk/java-env.mk" +.endif + +.if !empty(PKG_OPTIONS:Mgcc-go) +LANGS+= go +.endif + +.if !empty(PKG_OPTIONS:Mgcc-fortran) +LANGS+= fortran +.endif + +.if !empty(PKG_OPTIONS:Mgcc-c++) +LANGS+= c++ +USE_TOOLS+= perl +CONFIGURE_ARGS+= --enable-__cxa_atexit +CONFIGURE_ARGS+= --with-gxx-include-dir=${GCC_PREFIX}/include/c++/ +.else +CONFIGURE_ARGS+= --disable-build-with-cxx +CONFIGURE_ARGS+= --disable-build-poststage1-with-cxx +.endif diff --git a/lang/gcc48/patches/patch-gcc_Makefile.in b/lang/gcc48/patches/patch-gcc_Makefile.in new file mode 100644 index 00000000000..ce22782840d --- /dev/null +++ b/lang/gcc48/patches/patch-gcc_Makefile.in @@ -0,0 +1,15 @@ +$NetBSD: patch-gcc_Makefile.in,v 1.1 2013/04/01 21:06:16 wiz Exp $ + +Add gcc libdir to a programs rpath so that _this gcc's_ support libraries +are found. + +--- gcc/Makefile.in.orig 2013-03-05 09:46:34.000000000 +0000 ++++ gcc/Makefile.in +@@ -2027,6 +2027,7 @@ prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_ + # Language-independent files. + + DRIVER_DEFINES = \ ++ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG) $(prefix)/@GCC_TARGET_MACHINE@/lib/%M $(LINKER_RPATH_FLAG) $(libdir)/%M \"" \ + -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \ + -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ + -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \ diff --git a/lang/gcc48/patches/patch-gcc_config.gcc b/lang/gcc48/patches/patch-gcc_config.gcc new file mode 100644 index 00000000000..3f7fb7bbdab --- /dev/null +++ b/lang/gcc48/patches/patch-gcc_config.gcc @@ -0,0 +1,80 @@ +$NetBSD: patch-gcc_config.gcc,v 1.1 2013/04/01 21:06:16 wiz Exp $ + +--- gcc/config.gcc.orig 2013-02-08 16:02:47.000000000 +0000 ++++ gcc/config.gcc +@@ -621,6 +621,26 @@ case ${target} in + # need_64bit_hwint=yes # system compiler has this for all arch! + use_gcc_stdint=wrap + ;; ++*-*-dragonfly*) ++ gas=yes ++ gnu_ld=yes ++ tmake_file="t-slibgcc" ++ case ${enable_threads} in ++ "" | yes | posix) ++ thread_file='posix' ++ ;; ++ no | gnat | single) ++ # Let these non-posix thread selections fall through if requested ++ ;; ++ *) ++ echo 'Unknown thread configuration for DragonFly BSD' ++ exit 1 ++ ;; ++ esac ++ extra_options="$extra_options rpath.opt dragonfly.opt" ++ default_use_cxa_atexit=yes ++ use_gcc_stdint=wrap ++ ;; + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu) + extra_options="$extra_options gnu-user.opt" + gas=yes +@@ -680,6 +700,7 @@ case ${target} in + target_has_targetcm=yes + ;; + *-*-netbsd*) ++ use_gcc_stdint=wrap + tmake_file="t-slibgcc" + gas=yes + gnu_ld=yes +@@ -1214,6 +1235,14 @@ x86_64-*-rdos*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rdos.h i386/rdos64.h" + tmake_file="i386/t-i386elf t-svr4" + ;; ++i[34567]86-*-dragonfly*) ++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h" ++ tmake_file="${tmake_file} i386/t-crtstuff" ++ ;; ++x86_64-*-dragonfly*) ++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h" ++ tmake_file="${tmake_file} i386/t-crtstuff" ++ ;; + i[34567]86-*-freebsd*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h" + ;; +@@ -1221,12 +1250,14 @@ x86_64-*-freebsd*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h" + ;; + i[34567]86-*-netbsdelf*) +- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h" ++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h netbsd-stdint.h" + extra_options="${extra_options} netbsd.opt netbsd-elf.opt" ++ tmake_file="${tmake_file} i386/t-crtstuff" + ;; + x86_64-*-netbsd*) +- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h" ++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h netbsd-stdint.h" + extra_options="${extra_options} netbsd.opt netbsd-elf.opt" ++ tmake_file="${tmake_file} i386/t-crtstuff" + ;; + i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123]) + tm_file="i386/i386.h i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h openbsd-oldgas.h openbsd.h i386/openbsd.h" +@@ -3697,6 +3728,8 @@ case ${target} in + ;; + i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*) + ;; ++ i[34567]86-*-dragonfly* | x86_64-*-dragonfly*) ++ ;; + i[34567]86-*-freebsd* | x86_64-*-freebsd*) + ;; + ia64*-*-linux*) diff --git a/lang/gcc48/patches/patch-gcc_config_dragonfly-stdint.h b/lang/gcc48/patches/patch-gcc_config_dragonfly-stdint.h new file mode 100644 index 00000000000..e45b7e1dc09 --- /dev/null +++ b/lang/gcc48/patches/patch-gcc_config_dragonfly-stdint.h @@ -0,0 +1,61 @@ +$NetBSD: patch-gcc_config_dragonfly-stdint.h,v 1.1 2013/04/01 21:06:16 wiz Exp $ + +--- gcc/config/dragonfly-stdint.h.orig 2012-06-22 10:35:29.000000000 +0000 ++++ gcc/config/dragonfly-stdint.h +@@ -0,0 +1,56 @@ ++/* Definitions for <stdint.h> types for DragonFly systems. ++ Copyright (C) 2009 Free Software Foundation, Inc. ++ Contributed by Gerald Pfeifer <gerald@pfeifer.com>. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++You should have received a copy of the GNU General Public License and ++a copy of the GCC Runtime Library Exception along with this program; ++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++<http://www.gnu.org/licenses/>. */ ++ ++#define SIG_ATOMIC_TYPE "int" ++ ++#define INT8_TYPE "signed char" ++#define INT16_TYPE "short int" ++#define INT32_TYPE "int" ++#define INT64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int") ++#define UINT8_TYPE "unsigned char" ++#define UINT16_TYPE "short unsigned int" ++#define UINT32_TYPE "unsigned int" ++#define UINT64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int") ++ ++#define INT_LEAST8_TYPE INT8_TYPE ++#define INT_LEAST16_TYPE INT16_TYPE ++#define INT_LEAST32_TYPE INT32_TYPE ++#define INT_LEAST64_TYPE INT64_TYPE ++#define UINT_LEAST8_TYPE UINT8_TYPE ++#define UINT_LEAST16_TYPE UINT16_TYPE ++#define UINT_LEAST32_TYPE UINT32_TYPE ++#define UINT_LEAST64_TYPE UINT64_TYPE ++ ++#define INT_FAST8_TYPE INT32_TYPE ++#define INT_FAST16_TYPE INT32_TYPE ++#define INT_FAST32_TYPE INT32_TYPE ++#define INT_FAST64_TYPE INT64_TYPE ++#define UINT_FAST8_TYPE UINT32_TYPE ++#define UINT_FAST16_TYPE UINT32_TYPE ++#define UINT_FAST32_TYPE UINT32_TYPE ++#define UINT_FAST64_TYPE UINT64_TYPE ++ ++#define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? INT64_TYPE : INT32_TYPE) ++#define UINTPTR_TYPE (LONG_TYPE_SIZE == 64 ? UINT64_TYPE : UINT32_TYPE) diff --git a/lang/gcc48/patches/patch-gcc_config_dragonfly.h b/lang/gcc48/patches/patch-gcc_config_dragonfly.h new file mode 100644 index 00000000000..87ef41c518d --- /dev/null +++ b/lang/gcc48/patches/patch-gcc_config_dragonfly.h @@ -0,0 +1,140 @@ +$NetBSD: patch-gcc_config_dragonfly.h,v 1.1 2013/04/01 21:06:16 wiz Exp $ + +--- gcc/config/dragonfly.h.orig 2012-06-22 10:35:29.000000000 +0000 ++++ gcc/config/dragonfly.h +@@ -0,0 +1,135 @@ ++/* Base configuration file for all DragonFly targets. ++ Copyright (C) 1999, 2000, 2001, 2007, 2008 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++<http://www.gnu.org/licenses/>. */ ++ ++/* Common DragonFly configuration. ++ All DragonFly architectures should include this file, which will specify ++ their commonalities. ++ Adapted from gcc/config/i386/freebsd-elf.h by ++ David O'Brien <obrien@FreeBSD.org>. ++ Further work by David O'Brien <obrien@FreeBSD.org> and ++ Loren J. Rittle <ljrittle@acm.org>. */ ++ ++#undef TARGET_OS_CPP_BUILTINS ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define_std ("unix"); \ ++ builtin_define ("__DragonFly__"); \ ++ builtin_assert ("system=unix"); \ ++ builtin_assert ("system=bsd"); \ ++ builtin_assert ("system=DragonFly"); \ ++ } \ ++ while (0) ++ ++#undef CPP_SPEC ++#define CPP_SPEC \ ++ "%(cpp_cpu) %(cpp_arch) %{posix:-D_POSIX_SOURCE}" ++ ++#undef STARTFILE_SPEC ++#define STARTFILE_SPEC \ ++ "%{!shared: \ ++ %{pg:gcrt1.o%s} \ ++ %{!pg: \ ++ %{p:gcrt1.o%s} \ ++ %{!p: \ ++ %{profile: gcrt1.o%s} \ ++ %{!profile: \ ++ %{pie: Scrt1.o%s;:crt1.o%s}}}}} \ ++ crti.o%s \ ++ %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}" ++ ++#undef ENDFILE_SPEC ++#define ENDFILE_SPEC \ ++ "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s" ++ ++#undef LIB_SPEC ++#define LIB_SPEC \ ++ "%{pthread:-lpthread} -lc" ++ ++#if defined(HAVE_LD_EH_FRAME_HDR) ++#define LINK_EH_SPEC "--eh-frame-hdr" ++#endif ++ ++/* Provide a LINK_SPEC appropriate for DragonFly. Here we provide support ++ for the special GCC options -static and -shared, which allow us to ++ link things in one of these three modes by applying the appropriate ++ combinations of options at link-time. ++ ++ When the -shared link option is used a final link is not being ++ done. */ ++ ++#define DFBSD_LINK_SPEC \ ++ "%{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \ ++ %{v:-V} \ ++ %{assert*} %{R*} %{rpath*} %{defsym*} \ ++ %{shared:-Bshareable %{h*} %{soname*}} \ ++ %{!shared: \ ++ %{!static: \ ++ %{rdynamic:-export-dynamic} \ ++ -dynamic-linker %(dfbsd_dynamic_linker) \ ++ } \ ++ %{static:-Bstatic}} \ ++ %{!static:--hash-style=both} \ ++ %{symbolic:-Bsymbolic}" ++ ++#undef LINK_SPEC ++#define LINK_SPEC DFBSD_LINK_SPEC ++ ++#define DFBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.2" ++ ++ ++/* Use --as-needed -lgcc_s for eh support. */ ++#ifdef HAVE_LD_AS_NEEDED ++#define USE_LD_AS_NEEDED 1 ++#endif ++ ++/************************[ Target stuff ]***********************************/ ++ ++/* All DragonFly Architectures support the ELF object file format. */ ++#undef OBJECT_FORMAT_ELF ++#define OBJECT_FORMAT_ELF ++ ++/* Don't assume anything about the header files. */ ++#undef NO_IMPLICIT_EXTERN_C ++#define NO_IMPLICIT_EXTERN_C 1 ++ ++/* Follow DragonFly's standard headers (<machine/stdint.h>, etc...). */ ++ ++#undef WCHAR_TYPE ++#define WCHAR_TYPE "int" ++ ++#undef WINT_TYPE ++#define WINT_TYPE "int" ++ ++/* ++ * Profile libraries are found at /usr/lib/profile with standard names ++ * #define MATH_LIBRARY_PROFILE "m_p" ++ */ ++ ++/* Code generation parameters. */ ++ ++/* Use periods rather than dollar signs in special g++ assembler names. ++ This ensures the configuration knows our system correctly so we can link ++ with libraries compiled with the native cc. */ ++#undef NO_DOLLAR_IN_LABEL ++ ++/* Used by libgcc2.c. We support file locking with fcntl / F_SETLKW. ++ This enables the test coverage code to use file locking when exiting a ++ program, which avoids race conditions if the program has forked. */ ++#define TARGET_POSIX_IO diff --git a/lang/gcc48/patches/patch-gcc_config_dragonfly.opt b/lang/gcc48/patches/patch-gcc_config_dragonfly.opt new file mode 100644 index 00000000000..c409eba982c --- /dev/null +++ b/lang/gcc48/patches/patch-gcc_config_dragonfly.opt @@ -0,0 +1,70 @@ +$NetBSD: patch-gcc_config_dragonfly.opt,v 1.1 2013/04/01 21:06:16 wiz Exp $ + +--- gcc/config/dragonfly.opt.orig 2012-06-22 10:35:29.000000000 +0000 ++++ gcc/config/dragonfly.opt +@@ -0,0 +1,65 @@ ++; DragonFlyBSD options. ++ ++; Copyright (C) 2010, 2011 ++; Free Software Foundation, Inc. ++; ++; This file is part of GCC. ++; ++; GCC is free software; you can redistribute it and/or modify it under ++; the terms of the GNU General Public License as published by the Free ++; Software Foundation; either version 3, or (at your option) any later ++; version. ++; ++; GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++; WARRANTY; without even the implied warranty of MERCHANTABILITY or ++; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++; for more details. ++; ++; You should have received a copy of the GNU General Public License ++; along with GCC; see the file COPYING3. If not see ++; <http://www.gnu.org/licenses/>. ++ ++; See the GCC internals manual (options.texi) for a description of this file's format. ++ ++; Please try to keep this file in ASCII collating order. ++ ++assert ++Driver Separate ++ ++assert= ++Driver JoinedOrMissing ++ ++defsym ++Driver Separate ++ ++defsym= ++Driver JoinedOrMissing ++ ++posix ++Driver ++ ++profile ++Driver ++ ++pthread ++Driver ++ ++rdynamic ++Driver ++ ++rpath-link ++Driver Separate ++ ++rpath-link= ++Driver JoinedOrMissing ++ ++rpath= ++Driver JoinedOrMissing ++ ++soname ++Driver Separate ++ ++soname= ++Driver JoinedOrMissing ++ ++; This comment is to ensure we retain the blank line above. diff --git a/lang/gcc48/patches/patch-gcc_config_i386_dragonfly.h b/lang/gcc48/patches/patch-gcc_config_i386_dragonfly.h new file mode 100644 index 00000000000..7e6b5bde772 --- /dev/null +++ b/lang/gcc48/patches/patch-gcc_config_i386_dragonfly.h @@ -0,0 +1,106 @@ +$NetBSD: patch-gcc_config_i386_dragonfly.h,v 1.1 2013/04/01 21:06:16 wiz Exp $ + +--- gcc/config/i386/dragonfly.h.orig 2012-07-12 12:01:10.000000000 +0000 ++++ gcc/config/i386/dragonfly.h +@@ -0,0 +1,101 @@ ++/* Definitions for Intel 386 running DragonFly with ELF format ++ Copyright (C) 1996, 2000, 2002, 2004, 2007 Free Software Foundation, Inc. ++ Contributed by Eric Youngdale. ++ Modified for stabs-in-ELF by H.J. Lu. ++ Adapted from GNU/Linux version by John Polstra. ++ Continued development by David O'Brien <obrien@freebsd.org> ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++<http://www.gnu.org/licenses/>. */ ++ ++ ++/* Override the default comment-starter of "/". */ ++#undef ASM_COMMENT_START ++#define ASM_COMMENT_START "#" ++ ++#undef ASM_APP_ON ++#define ASM_APP_ON "#APP\n" ++ ++#undef ASM_APP_OFF ++#define ASM_APP_OFF "#NO_APP\n" ++ ++#undef DBX_REGISTER_NUMBER ++#define DBX_REGISTER_NUMBER(n) \ ++ (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n]) ++ ++#undef NO_PROFILE_COUNTERS ++#define NO_PROFILE_COUNTERS 1 ++ ++/* Tell final.c that we don't need a label passed to mcount. */ ++ ++#undef MCOUNT_NAME ++#define MCOUNT_NAME ".mcount" ++ ++/* Make gcc agree with <machine/ansi.h>. */ ++ ++#undef SIZE_TYPE ++#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int") ++ ++#undef PTRDIFF_TYPE ++#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int") ++ ++#undef WCHAR_TYPE_SIZE ++#define WCHAR_TYPE_SIZE (TARGET_64BIT ? 32 : BITS_PER_WORD) ++ ++#undef SUBTARGET_EXTRA_SPECS /* i386.h bogusly defines it. */ ++#define SUBTARGET_EXTRA_SPECS \ ++ { "dfbsd_dynamic_linker", DFBSD_DYNAMIC_LINKER } ++ ++ ++/* A C statement to output to the stdio stream FILE an assembler ++ command to advance the location counter to a multiple of 1<<LOG ++ bytes if it is within MAX_SKIP bytes. ++ ++ This is used to align code labels according to Intel recommendations. */ ++ ++#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN ++#undef ASM_OUTPUT_MAX_SKIP_ALIGN ++#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE, LOG, MAX_SKIP) \ ++ if ((LOG) != 0) { \ ++ if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \ ++ else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \ ++ } ++#endif ++ ++/* Don't default to pcc-struct-return, we want to retain compatibility with ++ older gcc versions AND pcc-struct-return is nonreentrant. ++ (even though the SVR4 ABI for the i386 says that records and unions are ++ returned in memory). */ ++ ++#undef DEFAULT_PCC_STRUCT_RETURN ++#define DEFAULT_PCC_STRUCT_RETURN 0 ++ ++/* DragonFly sets the rounding precision of the FPU to 53 bits. Let the ++ compiler get the contents of <float.h> and std::numeric_limits correct. */ ++#undef TARGET_96_ROUND_53_LONG_DOUBLE ++#define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT) ++ ++/* Put all *tf routines in libgcc. */ ++#undef LIBGCC2_HAS_TF_MODE ++#define LIBGCC2_HAS_TF_MODE 1 ++#define LIBGCC2_TF_CEXT q ++#define TF_SIZE 113 ++ ++/* Static stack checking is supported by means of probes. */ ++#define STACK_CHECK_STATIC_BUILTIN 1 ++ ++/* Support for i386 has been removed from DragonFly for several releases */ ++#define SUBTARGET32_DEFAULT_CPU "i486" diff --git a/lang/gcc48/patches/patch-gcc_config_netbsd-stdint.h b/lang/gcc48/patches/patch-gcc_config_netbsd-stdint.h new file mode 100644 index 00000000000..8fb34185608 --- /dev/null +++ b/lang/gcc48/patches/patch-gcc_config_netbsd-stdint.h @@ -0,0 +1,63 @@ +$NetBSD: patch-gcc_config_netbsd-stdint.h,v 1.1 2013/04/01 21:06:16 wiz Exp $ + +Copy gcc/config/freebsd-stdint.h to gcc/config/netbsd-stdint.h. + +--- gcc/config/netbsd-stdint.h.orig 2012-04-02 09:19:19.577200540 +0000 ++++ gcc/config/netbsd-stdint.h +@@ -0,0 +1,56 @@ ++/* Definitions for <stdint.h> types for NetBSD systems. ++ Copyright (C) 2009 Free Software Foundation, Inc. ++ Contributed by Gerald Pfeifer <gerald@pfeifer.com>. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++You should have received a copy of the GNU General Public License and ++a copy of the GCC Runtime Library Exception along with this program; ++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++<http://www.gnu.org/licenses/>. */ ++ ++#define SIG_ATOMIC_TYPE "int" ++ ++#define INT8_TYPE "signed char" ++#define INT16_TYPE "short int" ++#define INT32_TYPE "int" ++#define INT64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int") ++#define UINT8_TYPE "unsigned char" ++#define UINT16_TYPE "short unsigned int" ++#define UINT32_TYPE "unsigned int" ++#define UINT64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int") ++ ++#define INT_LEAST8_TYPE "signed char" ++#define INT_LEAST16_TYPE "short int" ++#define INT_LEAST32_TYPE "int" ++#define INT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int") ++#define UINT_LEAST8_TYPE "unsigned char" ++#define UINT_LEAST16_TYPE "short unsigned int" ++#define UINT_LEAST32_TYPE "unsigned int" ++#define UINT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int") ++ ++#define INT_FAST8_TYPE "int" ++#define INT_FAST16_TYPE "int" ++#define INT_FAST32_TYPE "int" ++#define INT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int") ++#define UINT_FAST8_TYPE "unsigned int" ++#define UINT_FAST16_TYPE "unsigned int" ++#define UINT_FAST32_TYPE "unsigned int" ++#define UINT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int") ++ ++#define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int") ++#define UINTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int") diff --git a/lang/gcc48/patches/patch-gcc_configure b/lang/gcc48/patches/patch-gcc_configure new file mode 100644 index 00000000000..698340bdfa1 --- /dev/null +++ b/lang/gcc48/patches/patch-gcc_configure @@ -0,0 +1,29 @@ +$NetBSD: patch-gcc_configure,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +Add dl_iterate_phdr detection for FreeBSD and DragonFly. +Detection for NetBSD and OpenBSD is added but commented out in case this +error handling mechanism is activated for these platforms later. + +--- gcc/configure.orig 2012-03-08 13:54:54.000000000 +0000 ++++ gcc/configure +@@ -26802,6 +26802,20 @@ case "$target" in + gcc_cv_target_dl_iterate_phdr=no + fi + ;; ++ *-*-dragonfly* | *-*-freebsd*) ++ if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then ++ gcc_cv_target_dl_iterate_phdr=yes ++ else ++ gcc_cv_target_dl_iterate_phdr=no ++ fi ++ ;; ++# *-*-netbsd* | *-*-openbsd*) ++# if grep dl_iterate_phdr $target_header_dir/link_elf.h > /dev/null 2>&1; then ++# gcc_cv_target_dl_iterate_phdr=yes ++# else ++# gcc_cv_target_dl_iterate_phdr=no ++# fi ++# ;; + esac + + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then diff --git a/lang/gcc48/patches/patch-gcc_fortran_f95-lang.c b/lang/gcc48/patches/patch-gcc_fortran_f95-lang.c new file mode 100644 index 00000000000..db3881c3ba4 --- /dev/null +++ b/lang/gcc48/patches/patch-gcc_fortran_f95-lang.c @@ -0,0 +1,25 @@ +$NetBSD: patch-gcc_fortran_f95-lang.c,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +No NetBSD the 'cabs' and 'cabsf' functions are are __RENAME so that +thay have '__c99_' prefixes. + +--- gcc/fortran/f95-lang.c.orig 2012-01-17 14:34:37.000000000 +0000 ++++ gcc/fortran/f95-lang.c +@@ -819,10 +819,17 @@ gfc_init_builtin_functions (void) + + gfc_define_builtin ("__builtin_cabsl", func_clongdouble_longdouble, + BUILT_IN_CABSL, "cabsl", ATTR_CONST_NOTHROW_LEAF_LIST); ++#if defined(__NetBSD__) ++ gfc_define_builtin ("__builtin_cabs", func_cdouble_double, ++ BUILT_IN_CABS, "__c99_cabs", ATTR_CONST_NOTHROW_LEAF_LIST); ++ gfc_define_builtin ("__builtin_cabsf", func_cfloat_float, ++ BUILT_IN_CABSF, "__c99_cabsf", ATTR_CONST_NOTHROW_LEAF_LIST); ++#else + gfc_define_builtin ("__builtin_cabs", func_cdouble_double, + BUILT_IN_CABS, "cabs", ATTR_CONST_NOTHROW_LEAF_LIST); + gfc_define_builtin ("__builtin_cabsf", func_cfloat_float, + BUILT_IN_CABSF, "cabsf", ATTR_CONST_NOTHROW_LEAF_LIST); ++#endif + + gfc_define_builtin ("__builtin_copysignl", mfunc_longdouble[1], + BUILT_IN_COPYSIGNL, "copysignl", diff --git a/lang/gcc48/patches/patch-gcc_ginclude_stddef.h b/lang/gcc48/patches/patch-gcc_ginclude_stddef.h new file mode 100644 index 00000000000..f9c631d7442 --- /dev/null +++ b/lang/gcc48/patches/patch-gcc_ginclude_stddef.h @@ -0,0 +1,64 @@ +$NetBSD: patch-gcc_ginclude_stddef.h,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +--- gcc/ginclude/stddef.h.orig 2013-01-10 20:38:27.000000000 +0000 ++++ gcc/ginclude/stddef.h +@@ -50,12 +50,21 @@ see the files COPYING3 and COPYING.RUNTI + one less case to deal with in the following. */ + #if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__) + #include <machine/ansi.h> ++#if !defined(_MACHINE_ANSI_H_) ++#if defined(_I386_ANSI_H_) || defined(_X86_64_ANSI_H_) ++#define _MACHINE_ANSI_H_ ++#endif ++#endif + #endif + /* On FreeBSD 5, machine/ansi.h does not exist anymore... */ + #if defined (__FreeBSD__) && (__FreeBSD__ >= 5) + #include <sys/_types.h> + #endif + ++#if defined(__DragonFly__) ++#include <sys/types.h> ++#endif ++ + /* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are + defined if the corresponding type is *not* defined. + FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_. +@@ -133,6 +142,7 @@ _TYPE_wchar_t; + #ifndef _BSD_PTRDIFF_T_ + #ifndef ___int_ptrdiff_t_h + #ifndef _GCC_PTRDIFF_T ++#ifndef _PTRDIFF_T_DECLARED /* DragonFly */ + #define _PTRDIFF_T + #define _T_PTRDIFF_ + #define _T_PTRDIFF +@@ -141,10 +151,12 @@ _TYPE_wchar_t; + #define _BSD_PTRDIFF_T_ + #define ___int_ptrdiff_t_h + #define _GCC_PTRDIFF_T ++#define _PTRDIFF_T_DECLARED + #ifndef __PTRDIFF_TYPE__ + #define __PTRDIFF_TYPE__ long int + #endif + typedef __PTRDIFF_TYPE__ ptrdiff_t; ++#endif /* _PTRDIFF_T_DECLARED */ + #endif /* _GCC_PTRDIFF_T */ + #endif /* ___int_ptrdiff_t_h */ + #endif /* _BSD_PTRDIFF_T_ */ +@@ -198,6 +210,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t; + #define _GCC_SIZE_T + #define _SIZET_ + #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \ ++ || defined(__DragonFly__) + || defined(__FreeBSD_kernel__) + /* __size_t is a typedef on FreeBSD 5, must not trash it. */ + #elif defined (__VMS__) +@@ -306,7 +319,7 @@ typedef _BSD_RUNE_T_ rune_t; + /* FreeBSD 5 can't be handled well using "traditional" logic above + since it no longer defines _BSD_RUNE_T_ yet still desires to export + rune_t in some cases... */ +-#if defined (__FreeBSD__) && (__FreeBSD__ >= 5) ++#if defined (__DragonFly__) || (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) + #if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE) + #if __BSD_VISIBLE + #ifndef _RUNE_T_DECLARED diff --git a/lang/gcc48/patches/patch-include_libiberty.h b/lang/gcc48/patches/patch-include_libiberty.h new file mode 100644 index 00000000000..766e30a1918 --- /dev/null +++ b/lang/gcc48/patches/patch-include_libiberty.h @@ -0,0 +1,22 @@ +$NetBSD: patch-include_libiberty.h,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +--- include/libiberty.h.orig 2011-09-28 19:04:30.000000000 +0000 ++++ include/libiberty.h +@@ -106,7 +106,16 @@ extern int countargv (char**); + to find the declaration so provide a fully prototyped one. If it + is 1, we found it so don't provide any declaration at all. */ + #if !HAVE_DECL_BASENAME +-#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__FreeBSD__) || defined (__OpenBSD__) || defined(__NetBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__) || defined (__MINGW32__) || defined (HAVE_DECL_BASENAME) ++#if defined (__GNU_LIBRARY__ ) \ ++ || defined (__linux__) \ ++ || defined (__DragonFly__) \ ++ || defined (__FreeBSD__) \ ++ || defined (__OpenBSD__) \ ++ || defined (__NetBSD__) \ ++ || defined (__CYGWIN__) \ ++ || defined (__CYGWIN32__) \ ++ || defined (__MINGW32__) \ ++ || defined (HAVE_DECL_BASENAME) + extern char *basename (const char *); + #else + /* Do not allow basename to be used if there is no prototype seen. We diff --git a/lang/gcc48/patches/patch-libgcc_config.host b/lang/gcc48/patches/patch-libgcc_config.host new file mode 100644 index 00000000000..222d2577356 --- /dev/null +++ b/lang/gcc48/patches/patch-libgcc_config.host @@ -0,0 +1,49 @@ +$NetBSD: patch-libgcc_config.host,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +--- libgcc/config.host.orig 2013-02-04 19:06:20.000000000 +0000 ++++ libgcc/config.host +@@ -176,6 +176,11 @@ case ${host} in + tmake_file="$tmake_file t-darwin ${cpu_type}/t-darwin t-libgcc-pic t-slibgcc-darwin" + extra_parts="crt3.o crttms.o crttme.o" + ;; ++*-*-dragonfly*) ++ tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip" ++ tmake_file="$tmake_file t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver" ++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" ++ ;; + *-*-freebsd*) + # This is the generic ELF configuration of FreeBSD. Later + # machine-specific sections may refine and add to this +@@ -268,7 +273,8 @@ case ${host} in + esac + + case ${host} in +-*-*-darwin* | *-*-freebsd* | *-*-netbsd* | *-*-openbsd* | *-*-solaris2*) ++*-*-darwin* | *-*-freebsd* | *-*-netbsd* | *-*-openbsd* | *-*-solaris2* | \ ++ *-*-dragonfly* ) + enable_execute_stack=enable-execute-stack-mprotect.c + ;; + i[34567]86-*-mingw* | x86_64-*-mingw*) +@@ -501,6 +507,14 @@ i[34567]86-*-elf*) + x86_64-*-elf*) + tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic" + ;; ++i[34567]86-*-dragonfly*) ++ tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff" ++ md_unwind_header=i386/dragonfly-unwind.h ++ ;; ++x86_64-*-dragonfly*) ++ tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff" ++ md_unwind_header=i386/dragonfly-unwind.h ++ ;; + i[34567]86-*-freebsd*) + tmake_file="${tmake_file} i386/t-freebsd i386/t-crtstuff" + ;; +@@ -1144,6 +1158,7 @@ i[34567]86-*-darwin* | x86_64-*-darwin* + i[34567]86-*-gnu* | \ + i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]* | \ + i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw* | \ ++ i[34567]86-*-dragonfly* | x86_64-*-dragonfly* | \ + i[34567]86-*-freebsd* | x86_64-*-freebsd* | \ + i[34567]86-*-openbsd* | x86_64-*-openbsd*) + tmake_file="${tmake_file} t-softfp-tf" diff --git a/lang/gcc48/patches/patch-libgcc_config_i386_dragonfly-unwind.h b/lang/gcc48/patches/patch-libgcc_config_i386_dragonfly-unwind.h new file mode 100644 index 00000000000..56fa9475d8f --- /dev/null +++ b/lang/gcc48/patches/patch-libgcc_config_i386_dragonfly-unwind.h @@ -0,0 +1,163 @@ +$NetBSD: patch-libgcc_config_i386_dragonfly-unwind.h,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +--- libgcc/config/i386/dragonfly-unwind.h.orig 2012-06-22 10:35:29.000000000 +0000 ++++ libgcc/config/i386/dragonfly-unwind.h +@@ -0,0 +1,158 @@ ++/* DWARF2 EH unwinding support for DragonFly BSD: AMD x86-64 and x86. ++ Copyright (C) 2010 John Marino <draco@marino.st> */ ++ ++/* Do code reading to identify a signal frame, and set the frame ++ state data appropriately. See unwind-dw2.c for the structs. */ ++ ++#include <sys/types.h> ++#include <sys/sysctl.h> ++#include <signal.h> ++#include <sys/ucontext.h> ++#include <machine/sigframe.h> ++ ++ ++#define REG_NAME(reg) sf_uc.uc_mcontext.mc_## reg ++ ++#ifdef __x86_64__ ++#define MD_FALLBACK_FRAME_STATE_FOR x86_64_dragonfly_fallback_frame_state ++ ++ ++static void ++x86_64_sigtramp_range (unsigned char **start, unsigned char **end) ++{ ++ unsigned long ps_strings; ++ int mib[2]; ++ size_t len; ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PS_STRINGS; ++ len = sizeof (ps_strings); ++ sysctl (mib, 2, &ps_strings, &len, NULL, 0); ++ ++ *start = (unsigned char *)ps_strings - 32; ++ *end = (unsigned char *)ps_strings; ++} ++ ++ ++static _Unwind_Reason_Code ++x86_64_dragonfly_fallback_frame_state ++(struct _Unwind_Context *context, _Unwind_FrameState *fs) ++{ ++ unsigned char *pc = context->ra; ++ unsigned char *sigtramp_start, *sigtramp_end; ++ struct sigframe *sf; ++ long new_cfa; ++ ++ x86_64_sigtramp_range(&sigtramp_start, &sigtramp_end); ++ if (pc >= sigtramp_end || pc < sigtramp_start) ++ return _URC_END_OF_STACK; ++ ++ sf = (struct sigframe *) context->cfa; ++ new_cfa = sf->REG_NAME(rsp); ++ fs->regs.cfa_how = CFA_REG_OFFSET; ++ /* Register 7 is rsp */ ++ fs->regs.cfa_reg = 7; ++ fs->regs.cfa_offset = new_cfa - (long) context->cfa; ++ ++ /* The SVR4 register numbering macros aren't usable in libgcc. */ ++ fs->regs.reg[0].how = REG_SAVED_OFFSET; ++ fs->regs.reg[0].loc.offset = (long)&sf->REG_NAME(rax) - new_cfa; ++ fs->regs.reg[1].how = REG_SAVED_OFFSET; ++ fs->regs.reg[1].loc.offset = (long)&sf->REG_NAME(rdx) - new_cfa; ++ fs->regs.reg[2].how = REG_SAVED_OFFSET; ++ fs->regs.reg[2].loc.offset = (long)&sf->REG_NAME(rcx) - new_cfa; ++ fs->regs.reg[3].how = REG_SAVED_OFFSET; ++ fs->regs.reg[3].loc.offset = (long)&sf->REG_NAME(rbx) - new_cfa; ++ fs->regs.reg[4].how = REG_SAVED_OFFSET; ++ fs->regs.reg[4].loc.offset = (long)&sf->REG_NAME(rsi) - new_cfa; ++ fs->regs.reg[5].how = REG_SAVED_OFFSET; ++ fs->regs.reg[5].loc.offset = (long)&sf->REG_NAME(rdi) - new_cfa; ++ fs->regs.reg[6].how = REG_SAVED_OFFSET; ++ fs->regs.reg[6].loc.offset = (long)&sf->REG_NAME(rbp) - new_cfa; ++ fs->regs.reg[8].how = REG_SAVED_OFFSET; ++ fs->regs.reg[8].loc.offset = (long)&sf->REG_NAME(r8) - new_cfa; ++ fs->regs.reg[9].how = REG_SAVED_OFFSET; ++ fs->regs.reg[9].loc.offset = (long)&sf->REG_NAME(r9) - new_cfa; ++ fs->regs.reg[10].how = REG_SAVED_OFFSET; ++ fs->regs.reg[10].loc.offset = (long)&sf->REG_NAME(r10) - new_cfa; ++ fs->regs.reg[11].how = REG_SAVED_OFFSET; ++ fs->regs.reg[11].loc.offset = (long)&sf->REG_NAME(r11) - new_cfa; ++ fs->regs.reg[12].how = REG_SAVED_OFFSET; ++ fs->regs.reg[12].loc.offset = (long)&sf->REG_NAME(r12) - new_cfa; ++ fs->regs.reg[13].how = REG_SAVED_OFFSET; ++ fs->regs.reg[13].loc.offset = (long)&sf->REG_NAME(r13) - new_cfa; ++ fs->regs.reg[14].how = REG_SAVED_OFFSET; ++ fs->regs.reg[14].loc.offset = (long)&sf->REG_NAME(r14) - new_cfa; ++ fs->regs.reg[15].how = REG_SAVED_OFFSET; ++ fs->regs.reg[15].loc.offset = (long)&sf->REG_NAME(r15) - new_cfa; ++ fs->regs.reg[16].how = REG_SAVED_OFFSET; ++ fs->regs.reg[16].loc.offset = (long)&sf->REG_NAME(rip) - new_cfa; ++ fs->retaddr_column = 16; ++ fs->signal_frame = 1; ++ return _URC_NO_REASON; ++} ++ ++#else /* Next section is for i386 */ ++ ++#define MD_FALLBACK_FRAME_STATE_FOR x86_dragonfly_fallback_frame_state ++ ++ ++static void ++x86_sigtramp_range (unsigned char **start, unsigned char **end) ++{ ++ unsigned long ps_strings; ++ int mib[2]; ++ size_t len; ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PS_STRINGS; ++ len = sizeof (ps_strings); ++ sysctl (mib, 2, &ps_strings, &len, NULL, 0); ++ ++ *start = (unsigned char *)ps_strings - 128; ++ *end = (unsigned char *)ps_strings; ++} ++ ++ ++static _Unwind_Reason_Code ++x86_dragonfly_fallback_frame_state ++(struct _Unwind_Context *context, _Unwind_FrameState *fs) ++{ ++ unsigned char *pc = context->ra; ++ unsigned char *sigtramp_start, *sigtramp_end; ++ struct sigframe *sf; ++ long new_cfa; ++ ++ x86_sigtramp_range(&sigtramp_start, &sigtramp_end); ++ ++ if (pc >= sigtramp_end || pc < sigtramp_start) ++ return _URC_END_OF_STACK; ++ ++ sf = (struct sigframe *) context->cfa; ++ new_cfa = sf->REG_NAME(esp); ++ fs->regs.cfa_how = CFA_REG_OFFSET; ++ fs->regs.cfa_reg = 4; ++ fs->regs.cfa_offset = new_cfa - (long) context->cfa; ++ ++ /* The SVR4 register numbering macros aren't usable in libgcc. */ ++ fs->regs.reg[0].how = REG_SAVED_OFFSET; ++ fs->regs.reg[0].loc.offset = (long)&sf->REG_NAME(eax) - new_cfa; ++ fs->regs.reg[3].how = REG_SAVED_OFFSET; ++ fs->regs.reg[3].loc.offset = (long)&sf->REG_NAME(ebx) - new_cfa; ++ fs->regs.reg[1].how = REG_SAVED_OFFSET; ++ fs->regs.reg[1].loc.offset = (long)&sf->REG_NAME(ecx) - new_cfa; ++ fs->regs.reg[2].how = REG_SAVED_OFFSET; ++ fs->regs.reg[2].loc.offset = (long)&sf->REG_NAME(edx) - new_cfa; ++ fs->regs.reg[6].how = REG_SAVED_OFFSET; ++ fs->regs.reg[6].loc.offset = (long)&sf->REG_NAME(esi) - new_cfa; ++ fs->regs.reg[7].how = REG_SAVED_OFFSET; ++ fs->regs.reg[7].loc.offset = (long)&sf->REG_NAME(edi) - new_cfa; ++ fs->regs.reg[5].how = REG_SAVED_OFFSET; ++ fs->regs.reg[5].loc.offset = (long)&sf->REG_NAME(ebp) - new_cfa; ++ fs->regs.reg[8].how = REG_SAVED_OFFSET; ++ fs->regs.reg[8].loc.offset = (long)&sf->REG_NAME(eip) - new_cfa; ++ fs->retaddr_column = 8; ++ fs->signal_frame = 1; ++ return _URC_NO_REASON; ++} ++#endif /* ifdef __x86_64__ */ diff --git a/lang/gcc48/patches/patch-libgcc_crtstuff.c b/lang/gcc48/patches/patch-libgcc_crtstuff.c new file mode 100644 index 00000000000..7db92d1a9e8 --- /dev/null +++ b/lang/gcc48/patches/patch-libgcc_crtstuff.c @@ -0,0 +1,29 @@ +$NetBSD: patch-libgcc_crtstuff.c,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +Currently dl_iterate_phdr error handling is hardcoded for FreeBSD 7+ +Expand code to handle all BSDs even though detection is only active for +FreeBSD and DragonFly currently. + +--- libgcc/crtstuff.c.orig 2011-12-06 21:35:41.000000000 +0000 ++++ libgcc/crtstuff.c +@@ -81,11 +81,19 @@ call_ ## FUNC (void) \ + } + #endif + ++#if defined(TARGET_DL_ITERATE_PHDR) && \ ++ ( defined(__FreeBSD__) \ ++ || defined(__OpenBSD__) \ ++ || defined(__NetBSD__) \ ++ || defined(__DragonFly__)) ++#define BSD_DL_ITERATE_PHDR_AVAILABLE ++#endif ++ + #if defined(OBJECT_FORMAT_ELF) \ + && !defined(OBJECT_FORMAT_FLAT) \ + && defined(HAVE_LD_EH_FRAME_HDR) \ + && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \ +- && defined(__FreeBSD__) && __FreeBSD__ >= 7 ++ && defined(BSD_DL_ITERATE_PHDR_AVAILABLE) + #include <link.h> + # define USE_PT_GNU_EH_FRAME + #endif diff --git a/lang/gcc48/patches/patch-libgcc_unwind-dw2-fde-dip.c b/lang/gcc48/patches/patch-libgcc_unwind-dw2-fde-dip.c new file mode 100644 index 00000000000..8a3c03377ab --- /dev/null +++ b/lang/gcc48/patches/patch-libgcc_unwind-dw2-fde-dip.c @@ -0,0 +1,21 @@ +$NetBSD: patch-libgcc_unwind-dw2-fde-dip.c,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +--- libgcc/unwind-dw2-fde-dip.c.orig 2013-02-04 19:06:20.000000000 +0000 ++++ libgcc/unwind-dw2-fde-dip.c +@@ -58,13 +58,14 @@ + #endif + + #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && defined(__FreeBSD__) && __FreeBSD__ >= 7 ++ && defined(TARGET_DL_ITERATE_PHDR) \ ++ && (defined(__FreeBSD__) || defined(__DragonFly__)) + # define ElfW __ElfN + # define USE_PT_GNU_EH_FRAME + #endif + + #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && defined(__OpenBSD__) ++ && (defined(__OpenBSD__) || defined(__NetBSD__)) + # define ElfW(type) Elf_##type + # define USE_PT_GNU_EH_FRAME + #endif diff --git a/lang/gcc48/patches/patch-libgo_Makefile.in b/lang/gcc48/patches/patch-libgo_Makefile.in new file mode 100644 index 00000000000..e31c569c7ed --- /dev/null +++ b/lang/gcc48/patches/patch-libgo_Makefile.in @@ -0,0 +1,17 @@ +$NetBSD: patch-libgo_Makefile.in,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +proc.c will not compile with inline-functions (implied by -O3) +so add -fno-inline-functions to it's cflags. + + +--- libgo/Makefile.in.orig 2012-08-06 14:34:27.000000000 +0000 ++++ libgo/Makefile.in +@@ -3051,7 +3051,7 @@ print.lo: runtime/print.c + @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o print.lo `test -f 'runtime/print.c' || echo '$(srcdir)/'`runtime/print.c + + proc.lo: runtime/proc.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT proc.lo -MD -MP -MF $(DEPDIR)/proc.Tpo -c -o proc.lo `test -f 'runtime/proc.c' || echo '$(srcdir)/'`runtime/proc.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) -fno-inline-functions $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT proc.lo -MD -MP -MF $(DEPDIR)/proc.Tpo -c -o proc.lo `test -f 'runtime/proc.c' || echo '$(srcdir)/'`runtime/proc.c + @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proc.Tpo $(DEPDIR)/proc.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='runtime/proc.c' object='proc.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ diff --git a/lang/gcc48/patches/patch-libjava_boehm.cc b/lang/gcc48/patches/patch-libjava_boehm.cc new file mode 100644 index 00000000000..5257b227bbd --- /dev/null +++ b/lang/gcc48/patches/patch-libjava_boehm.cc @@ -0,0 +1,27 @@ +$NetBSD: patch-libjava_boehm.cc,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +Disable GC_register_my_thread and GC_unregister_my_thread on NetBSD as +the version of boehm-gc bundled with gcc does not support NetBSD threads. + +--- libjava/boehm.cc.orig 2007-10-22 21:24:35.000000000 +0000 ++++ libjava/boehm.cc +@@ -747,7 +747,8 @@ _Jv_GCAttachThread () + // The registration interface is only defined on posixy systems and + // only actually works if pthread_getattr_np is defined. + // FIXME: until gc7 it is simpler to disable this on solaris. +-#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS) ++#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS) \ ++ && !defined(__NetBSD__) + GC_register_my_thread (); + #endif + } +@@ -755,7 +756,8 @@ _Jv_GCAttachThread () + void + _Jv_GCDetachThread () + { +-#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS) ++#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS) \ ++ && !defined(__NetBSD__) + GC_unregister_my_thread (); + #endif + } diff --git a/lang/gcc48/patches/patch-libjava_configure b/lang/gcc48/patches/patch-libjava_configure new file mode 100644 index 00000000000..65896e337a4 --- /dev/null +++ b/lang/gcc48/patches/patch-libjava_configure @@ -0,0 +1,17 @@ +$NetBSD: patch-libjava_configure,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +Avoid a reference to the wrapped make in the pkgsrc work directory from +showing up in an installed file. +See: libjava/contrib/aotcompile.py.in + +--- libjava/configure.orig 2012-03-22 07:37:39.000000000 +0000 ++++ libjava/configure +@@ -24692,7 +24692,7 @@ $as_echo "Python modules dir: ${python_m + + + # needed for aot-compile-rpm +-MAKE=`which make` ++MAKE=${PKGSRC_MAKE} + + + # Check whether --enable-aot-compile-rpm was given. diff --git a/lang/gcc48/patches/patch-libjava_contrib_rebuild-gcj-db.in b/lang/gcc48/patches/patch-libjava_contrib_rebuild-gcj-db.in new file mode 100644 index 00000000000..155d41f86eb --- /dev/null +++ b/lang/gcc48/patches/patch-libjava_contrib_rebuild-gcj-db.in @@ -0,0 +1,29 @@ +$NetBSD: patch-libjava_contrib_rebuild-gcj-db.in,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +No need to use bash for this small script. + +Also -print0 is not portable to solaris and perhaps others. + +--- libjava/contrib/rebuild-gcj-db.in.orig 2008-07-02 13:17:54.000000000 +0000 ++++ libjava/contrib/rebuild-gcj-db.in +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + # rebuild-gcj-db + + ## Copyright (C) 2000, 2002, 2003, 2008 Free Software Foundation +@@ -16,12 +16,12 @@ for i in `@prefix@/bin/gcc --print-multi + base=@prefix@/lib/$dirname + dbLocation=`@prefix@/bin/gcj-dbtool -p $base` + libdir=$base/gcj +- if ! test -d $libdir; then ++ if test ! -d $libdir; then + # No shared libraries here. + continue + fi + dirname $dbLocation | xargs mkdir -p + @prefix@/bin/gcj-dbtool -n $dbLocation 64 +- find $libdir -follow -name '*.db' -print0 | \ ++ find $libdir -follow -name '*.db' -print | @AWK@ '{printf("%s%c", $1, 0);}'|\ + @prefix@/bin/gcj-dbtool -0 -m $dbLocation $dbLocation + done diff --git a/lang/gcc48/patches/patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc b/lang/gcc48/patches/patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc new file mode 100644 index 00000000000..2a211313add --- /dev/null +++ b/lang/gcc48/patches/patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc @@ -0,0 +1,305 @@ +$NetBSD: patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +--- libstdc++-v3/config/locale/dragonfly/c_locale.cc.orig 2012-06-22 10:35:30.000000000 +0000 ++++ libstdc++-v3/config/locale/dragonfly/c_locale.cc +@@ -0,0 +1,300 @@ ++// Wrapper for underlying C-language localization -*- C++ -*- ++ ++// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ++// Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// Under Section 7 of GPL version 3, you are granted additional ++// permissions described in the GCC Runtime Library Exception, version ++// 3.1, as published by the Free Software Foundation. ++ ++// You should have received a copy of the GNU General Public License and ++// a copy of the GCC Runtime Library Exception along with this program; ++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++// <http://www.gnu.org/licenses/>. ++ ++// ++// ISO C++ 14882: 22.8 Standard locale categories. ++// ++ ++// Written by Benjamin Kosnik <bkoz@redhat.com> ++ ++#include <cerrno> // For errno ++#include <cmath> // For isinf, finite, finitef, fabs ++#include <cstdlib> // For strof, strtold ++#include <cstring> ++#include <cstdio> ++#include <locale> ++#include <limits> ++ ++#ifdef _GLIBCXX_HAVE_IEEEFP_H ++#include <ieeefp.h> ++#endif ++ ++namespace std _GLIBCXX_VISIBILITY(default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++ template<> ++ void ++ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, ++ const __c_locale&) throw() ++ { ++ // Assumes __s formatted for "C" locale. ++ char* __old = setlocale(LC_ALL, 0); ++ const size_t __len = strlen(__old) + 1; ++ char* __sav = new char[__len]; ++ memcpy(__sav, __old, __len); ++ setlocale(LC_ALL, "C"); ++ char* __sanity; ++ bool __overflow = false; ++ ++#if !__FLT_HAS_INFINITY__ ++ errno = 0; ++#endif ++ ++#ifdef _GLIBCXX_HAVE_STRTOF ++ __v = strtof(__s, &__sanity); ++#else ++ double __d = strtod(__s, &__sanity); ++ __v = static_cast<float>(__d); ++#ifdef _GLIBCXX_HAVE_FINITEF ++ if (!finitef (__v)) ++ __overflow = true; ++#elif defined (_GLIBCXX_HAVE_FINITE) ++ if (!finite (static_cast<double> (__v))) ++ __overflow = true; ++#elif defined (_GLIBCXX_HAVE_ISINF) ++ if (isinf (static_cast<double> (__v))) ++ __overflow = true; ++#else ++ if (fabs(__d) > numeric_limits<float>::max()) ++ __overflow = true; ++#endif ++#endif // _GLIBCXX_HAVE_STRTOF ++ ++ // _GLIBCXX_RESOLVE_LIB_DEFECTS ++ // 23. Num_get overflow result. ++ if (__sanity == __s || *__sanity != '\0') ++ { ++ __v = 0.0f; ++ __err = ios_base::failbit; ++ } ++ else if (__overflow ++#if __FLT_HAS_INFINITY__ ++ || __v == numeric_limits<float>::infinity() ++ || __v == -numeric_limits<float>::infinity() ++#else ++ || ((__v > 1.0f || __v < -1.0f) && errno == ERANGE) ++#endif ++ ) ++ { ++ if (__v > 0.0f) ++ __v = numeric_limits<float>::max(); ++ else ++ __v = -numeric_limits<float>::max(); ++ __err = ios_base::failbit; ++ } ++ ++ setlocale(LC_ALL, __sav); ++ delete [] __sav; ++ } ++ ++ template<> ++ void ++ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, ++ const __c_locale&) throw() ++ { ++ // Assumes __s formatted for "C" locale. ++ char* __old = setlocale(LC_ALL, 0); ++ const size_t __len = strlen(__old) + 1; ++ char* __sav = new char[__len]; ++ memcpy(__sav, __old, __len); ++ setlocale(LC_ALL, "C"); ++ char* __sanity; ++ ++#if !__DBL_HAS_INFINITY__ ++ errno = 0; ++#endif ++ ++ __v = strtod(__s, &__sanity); ++ ++ // _GLIBCXX_RESOLVE_LIB_DEFECTS ++ // 23. Num_get overflow result. ++ if (__sanity == __s || *__sanity != '\0') ++ { ++ __v = 0.0; ++ __err = ios_base::failbit; ++ } ++ else if ( ++#if __DBL_HAS_INFINITY__ ++ __v == numeric_limits<double>::infinity() ++ || __v == -numeric_limits<double>::infinity()) ++#else ++ (__v > 1.0 || __v < -1.0) && errno == ERANGE) ++#endif ++ { ++ if (__v > 0.0) ++ __v = numeric_limits<double>::max(); ++ else ++ __v = -numeric_limits<double>::max(); ++ __err = ios_base::failbit; ++ } ++ ++ setlocale(LC_ALL, __sav); ++ delete [] __sav; ++ } ++ ++ template<> ++ void ++ __convert_to_v(const char* __s, long double& __v, ++ ios_base::iostate& __err, const __c_locale&) throw() ++ { ++ // Assumes __s formatted for "C" locale. ++ char* __old = setlocale(LC_ALL, 0); ++ const size_t __len = strlen(__old) + 1; ++ char* __sav = new char[__len]; ++ memcpy(__sav, __old, __len); ++ setlocale(LC_ALL, "C"); ++ ++#if !__LDBL_HAS_INFINITY__ ++ errno = 0; ++#endif ++ ++#if defined(_GLIBCXX_HAVE_STRTOLD) && !defined(_GLIBCXX_HAVE_BROKEN_STRTOLD) ++ char* __sanity; ++ __v = strtold(__s, &__sanity); ++ ++ // _GLIBCXX_RESOLVE_LIB_DEFECTS ++ // 23. Num_get overflow result. ++ if (__sanity == __s || *__sanity != '\0') ++#else ++ typedef char_traits<char>::int_type int_type; ++ int __p = sscanf(__s, "%Lf", &__v); ++ ++ if (!__p || static_cast<int_type>(__p) == char_traits<char>::eof()) ++#endif ++ { ++ __v = 0.0l; ++ __err = ios_base::failbit; ++ } ++ else if ( ++#if __LDBL_HAS_INFINITY__ ++ __v == numeric_limits<long double>::infinity() ++ || __v == -numeric_limits<long double>::infinity()) ++#else ++ (__v > 1.0l || __v < -1.0l) && errno == ERANGE) ++#endif ++ { ++ if (__v > 0.0l) ++ __v = numeric_limits<long double>::max(); ++ else ++ __v = -numeric_limits<long double>::max(); ++ __err = ios_base::failbit; ++ } ++ ++ setlocale(LC_ALL, __sav); ++ delete [] __sav; ++ } ++ ++ ++ /* DragonFly's implementation of setlocale won't accept something like ++ "de_DE". According to nls manpage, the expected format is: ++ language[_territory][.codeset][@modifier], but it seems that both ++ the _territory and .codeset components are required. ++ ++ As an attempt to correct for this, we'll tack on ".UTF-8" if ++ a period is not detected in the locale string. ++ ++ There are no locales with modifiers on DragonFly so if found, they ++ will just be stripped off silently. e.g "de_DE@euro" will be reduced ++ to "de_DE". The UTF-8 default would be added after that. ++ */ ++ ++ void ++ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, ++ __c_locale) ++ { ++ const size_t size__s = (__s == NULL) ? 1 : strlen (__s); ++ const char UTF8[] = ".UTF-8"; ++ char localspec[size__s + 6 + 1]; ++ ++ if (__s == NULL) { ++ localspec[0] = NULL; ++ } else { ++ strcpy (localspec, __s); ++ char * pch = strchr (localspec, '@'); ++ if (pch != NULL) ++ *pch = 0; ++ ++ if ( (strchr (__s, '.') == NULL) ++ && (strcmp (__s, "C") != 0) ++ && (strcmp (__s, "POSIX") != 0)) ++ strncat (localspec, UTF8, 6); ++ } ++ ++ const char * result = std::setlocale(LC_ALL, localspec); ++ ++ if ((strcmp(result, "C") != 0) && (strcmp (result, localspec) != 0)) ++ __throw_runtime_error(__N("locale::facet::_S_create_c_locale " ++ "name not valid")); ++ __cloc = 0; ++ } ++ ++ void ++ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) ++ { __cloc = 0; } ++ ++ __c_locale ++ locale::facet::_S_clone_c_locale(__c_locale&) throw() ++ { return __c_locale(); } ++ ++ __c_locale ++ locale::facet::_S_lc_ctype_c_locale(__c_locale, const char*) ++ { return __c_locale(); } ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++} // namespace ++ ++namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = ++ { ++ "LC_CTYPE", ++ "LC_NUMERIC", ++ "LC_TIME", ++ "LC_COLLATE", ++ "LC_MONETARY", ++ "LC_MESSAGES" ++ }; ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++} // namespace ++ ++namespace std _GLIBCXX_VISIBILITY(default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++ const char* const* const locale::_S_categories = __gnu_cxx::category_names; ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++} // namespace ++ ++// XXX GLIBCXX_ABI Deprecated ++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT ++#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ ++ extern "C" void ldbl (void) __attribute__ ((alias (#dbl))) ++_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi); ++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT diff --git a/lang/gcc48/patches/patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc b/lang/gcc48/patches/patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc new file mode 100644 index 00000000000..82f9fe50794 --- /dev/null +++ b/lang/gcc48/patches/patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc @@ -0,0 +1,179 @@ +$NetBSD: patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +--- libstdc++-v3/config/locale/dragonfly/ctype_members.cc.orig 2012-06-22 11:15:15.000000000 +0000 ++++ libstdc++-v3/config/locale/dragonfly/ctype_members.cc +@@ -0,0 +1,174 @@ ++// std::ctype implementation details, GNU version -*- C++ -*- ++ ++// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ++// Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// Under Section 7 of GPL version 3, you are granted additional ++// permissions described in the GCC Runtime Library Exception, version ++// 3.1, as published by the Free Software Foundation. ++ ++// You should have received a copy of the GNU General Public License and ++// a copy of the GCC Runtime Library Exception along with this program; ++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++// <http://www.gnu.org/licenses/>. ++ ++// ++// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. ++// ++ ++// Written by Benjamin Kosnik <bkoz@redhat.com> ++ ++#include <locale> ++#include <bits/c++locale_internal.h> ++#include <cstdlib> ++#include <cstring> ++#include <cstdio> ++ ++namespace std _GLIBCXX_VISIBILITY(default) ++{ ++ // NB: The other ctype<char> specializations are in src/locale.cc and ++ // various /config/os/* files. ++ ++ ctype_byname<char>::ctype_byname(const char* __s, size_t __refs) ++ : ctype<char>(0, false, __refs) ++ { ++ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) ++ { ++ this->_S_destroy_c_locale(this->_M_c_locale_ctype); ++ this->_S_create_c_locale(this->_M_c_locale_ctype, __s); ++ } ++ } ++ ++ ctype_byname<char>::~ctype_byname() ++ { } ++ ++#ifdef _GLIBCXX_USE_WCHAR_T ++ ctype<wchar_t>::__wmask_type ++ ctype<wchar_t>::_M_convert_to_wmask( ++ const mask __attribute__((__unused__)) __m) const throw() ++ { ++ // DragonFly uses the same codes for 'char' as 'wchar_t', so this routine ++ // never gets called. ++ return __wmask_type(); ++ }; ++ ++ wchar_t ++ ctype<wchar_t>::do_toupper(wchar_t __c) const ++ { return towupper(__c); } ++ ++ const wchar_t* ++ ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const ++ { ++ while (__lo < __hi) ++ { ++ *__lo = towupper(*__lo); ++ ++__lo; ++ } ++ return __hi; ++ } ++ ++ wchar_t ++ ctype<wchar_t>::do_tolower(wchar_t __c) const ++ { return towlower(__c); } ++ ++ const wchar_t* ++ ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const ++ { ++ while (__lo < __hi) ++ { ++ *__lo = towlower(*__lo); ++ ++__lo; ++ } ++ return __hi; ++ } ++ ++ wchar_t ++ ctype<wchar_t>:: ++ do_widen(char __c) const ++ { return _M_widen[static_cast<unsigned char>(__c)]; } ++ ++ const char* ++ ctype<wchar_t>:: ++ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const ++ { ++ while (__lo < __hi) ++ { ++ *__dest = _M_widen[static_cast<unsigned char>(*__lo)]; ++ ++__lo; ++ ++__dest; ++ } ++ return __hi; ++ } ++ ++ char ++ ctype<wchar_t>:: ++ do_narrow(wchar_t __wc, char __dfault) const ++ { ++ if (__wc >= 0 && __wc < 128 && _M_narrow_ok) ++ return _M_narrow[__wc]; ++ const int __c = wctob(__wc); ++ return (__c == EOF ? __dfault : static_cast<char>(__c)); ++ } ++ ++ const wchar_t* ++ ctype<wchar_t>:: ++ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, ++ char* __dest) const ++ { ++ if (_M_narrow_ok) ++ while (__lo < __hi) ++ { ++ if (*__lo >= 0 && *__lo < 128) ++ *__dest = _M_narrow[*__lo]; ++ else ++ { ++ const int __c = wctob(*__lo); ++ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c)); ++ } ++ ++__lo; ++ ++__dest; ++ } ++ else ++ while (__lo < __hi) ++ { ++ const int __c = wctob(*__lo); ++ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c)); ++ ++__lo; ++ ++__dest; ++ } ++ return __hi; ++ } ++ ++ void ++ ctype<wchar_t>::_M_initialize_ctype() throw() ++ { ++ wint_t __i; ++ for (__i = 0; __i < 128; ++__i) ++ { ++ const int __c = wctob(__i); ++ if (__c == EOF) ++ break; ++ else ++ _M_narrow[__i] = static_cast<char>(__c); ++ } ++ if (__i == 128) ++ _M_narrow_ok = true; ++ else ++ _M_narrow_ok = false; ++ for (size_t __i = 0; ++ __i < sizeof(_M_widen) / sizeof(wint_t); ++__i) ++ _M_widen[__i] = btowc(__i); ++ } ++#endif // _GLIBCXX_USE_WCHAR_T ++} diff --git a/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h b/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h new file mode 100644 index 00000000000..7d85ce355d8 --- /dev/null +++ b/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h @@ -0,0 +1,65 @@ +$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +--- libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h.orig 2012-06-22 10:35:30.000000000 +0000 ++++ libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h +@@ -0,0 +1,60 @@ ++// Locale support -*- C++ -*- ++ ++// Copyright (C) 2000, 2003, 2009, 2010 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// Under Section 7 of GPL version 3, you are granted additional ++// permissions described in the GCC Runtime Library Exception, version ++// 3.1, as published by the Free Software Foundation. ++ ++// You should have received a copy of the GNU General Public License and ++// a copy of the GCC Runtime Library Exception along with this program; ++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++// <http://www.gnu.org/licenses/>. ++ ++// ++// ISO C++ 14882: 22.1 Locales ++// ++ ++// Information as gleaned from /usr/include/ctype.h on DragonFly. ++// Full details can be found from git repo at: ++// http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/include/ctype.h ++ ++namespace std _GLIBCXX_VISIBILITY(default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++ /// @brief Base class for ctype. ++ struct ctype_base ++ { ++ // Non-standard typedefs. ++ typedef const int* __to_type; ++ ++ // NB: Offsets into ctype<char>::_M_table force a particular size ++ // on the mask type. Because of this, we don't use an enum. ++ typedef uint16_t mask; ++ static const mask upper = _CTYPEMASK_U; ++ static const mask lower = _CTYPEMASK_L; ++ static const mask alpha = _CTYPEMASK_A; ++ static const mask digit = _CTYPEMASK_D; ++ static const mask xdigit = _CTYPEMASK_X; ++ static const mask space = _CTYPEMASK_S; ++ static const mask print = _CTYPEMASK_R; ++ static const mask graph = _CTYPEMASK_G; ++ static const mask cntrl = _CTYPEMASK_C; ++ static const mask punct = _CTYPEMASK_P; ++ static const mask alnum = _CTYPEMASK_A | _CTYPEMASK_D; ++ }; ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++} // namespace diff --git a/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc b/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc new file mode 100644 index 00000000000..6dc3bcabbf4 --- /dev/null +++ b/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc @@ -0,0 +1,104 @@ +$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +--- libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc.orig 2012-06-22 10:35:30.000000000 +0000 ++++ libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc +@@ -0,0 +1,99 @@ ++// Locale support -*- C++ -*- ++ ++// Copyright (C) 2011 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// Under Section 7 of GPL version 3, you are granted additional ++// permissions described in the GCC Runtime Library Exception, version ++// 3.1, as published by the Free Software Foundation. ++ ++// You should have received a copy of the GNU General Public License and ++// a copy of the GCC Runtime Library Exception along with this program; ++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++// <http://www.gnu.org/licenses/>. ++ ++/** @file ctype_configure_char.cc */ ++ ++// ++// ISO C++ 14882: 22.1 Locales ++// ++ ++#include <locale> ++#include <cstdlib> ++#include <cstring> ++ ++namespace std _GLIBCXX_VISIBILITY(default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++// Information as gleaned from /usr/include/ctype.h ++ ++ const ctype_base::mask* ++ ctype<char>::classic_table() throw() ++ { return 0; } ++ ++ ctype<char>::ctype(__c_locale, const mask* __table, bool __del, ++ size_t __refs) ++ : facet(__refs), _M_del(__table != 0 && __del), ++ _M_toupper(NULL), _M_tolower(NULL), ++ _M_table(__table ? __table : classic_table()) ++ { ++ memset(_M_widen, 0, sizeof(_M_widen)); ++ _M_widen_ok = 0; ++ memset(_M_narrow, 0, sizeof(_M_narrow)); ++ _M_narrow_ok = 0; ++ } ++ ++ ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) ++ : facet(__refs), _M_del(__table != 0 && __del), ++ _M_toupper(NULL), _M_tolower(NULL), ++ _M_table(__table ? __table : classic_table()) ++ { ++ memset(_M_widen, 0, sizeof(_M_widen)); ++ _M_widen_ok = 0; ++ memset(_M_narrow, 0, sizeof(_M_narrow)); ++ _M_narrow_ok = 0; ++ } ++ ++ char ++ ctype<char>::do_toupper(char __c) const ++ { return ::toupper((int) __c); } ++ ++ const char* ++ ctype<char>::do_toupper(char* __low, const char* __high) const ++ { ++ while (__low < __high) ++ { ++ *__low = ::toupper((int) *__low); ++ ++__low; ++ } ++ return __high; ++ } ++ ++ char ++ ctype<char>::do_tolower(char __c) const ++ { return ::tolower((int) __c); } ++ ++ const char* ++ ctype<char>::do_tolower(char* __low, const char* __high) const ++ { ++ while (__low < __high) ++ { ++ *__low = ::tolower((int) *__low); ++ ++__low; ++ } ++ return __high; ++ } ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++} // namespace diff --git a/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h b/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h new file mode 100644 index 00000000000..fb8c20f15f5 --- /dev/null +++ b/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h @@ -0,0 +1,166 @@ +$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h,v 1.1 2013/04/01 21:06:17 wiz Exp $ + +--- libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h.orig 2012-06-22 10:35:30.000000000 +0000 ++++ libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h +@@ -0,0 +1,161 @@ ++// Locale support -*- C++ -*- ++ ++// Copyright (C) 2000, 2003, 2004, 2005, 2009, 2010 ++// Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// Under Section 7 of GPL version 3, you are granted additional ++// permissions described in the GCC Runtime Library Exception, version ++// 3.1, as published by the Free Software Foundation. ++ ++// You should have received a copy of the GNU General Public License and ++// a copy of the GCC Runtime Library Exception along with this program; ++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++// <http://www.gnu.org/licenses/>. ++ ++/** @file bits/ctype_inline.h ++ * This is an internal header file, included by other library headers. ++ * Do not attempt to use it directly. @headername{locale} ++ */ ++ ++// ++// ISO C++ 14882: 22.1 Locales ++// ++ ++// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) ++// functions go in ctype.cc ++ ++namespace std _GLIBCXX_VISIBILITY(default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++ bool ++ ctype<char>:: ++ is(mask __m, char __c) const ++ { ++ if (_M_table) ++ return _M_table[static_cast<unsigned char>(__c)] & __m; ++ else ++ return __libc_ctype_ [__c + 1] & __m; ++ } ++ ++ const char* ++ ctype<char>:: ++ is(const char* __low, const char* __high, mask* __vec) const ++ { ++ if (_M_table) ++ while (__low < __high) ++ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; ++ else ++ for (;__low < __high; ++__vec, ++__low) ++ { ++ mask __m = 0; ++ if (this->is(upper, *__low)) __m |= upper; ++ if (this->is(lower, *__low)) __m |= lower; ++ if (this->is(alpha, *__low)) __m |= alpha; ++ if (this->is(digit, *__low)) __m |= digit; ++ if (this->is(xdigit, *__low)) __m |= xdigit; ++ if (this->is(space, *__low)) __m |= space; ++ if (this->is(print, *__low)) __m |= print; ++ if (this->is(graph, *__low)) __m |= graph; ++ if (this->is(cntrl, *__low)) __m |= cntrl; ++ if (this->is(punct, *__low)) __m |= punct; ++ // Do not include explicit line for alnum mask since it is a ++ // pure composite of masks on DragonFly. ++ *__vec = __m; ++ } ++ return __high; ++ } ++ ++ const char* ++ ctype<char>:: ++ scan_is(mask __m, const char* __low, const char* __high) const ++ { ++ if (_M_table) ++ while (__low < __high ++ && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) ++ ++__low; ++ else ++ while (__low < __high && !this->is(__m, *__low)) ++ ++__low; ++ return __low; ++ } ++ ++ const char* ++ ctype<char>:: ++ scan_not(mask __m, const char* __low, const char* __high) const ++ { ++ if (_M_table) ++ while (__low < __high ++ && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0) ++ ++__low; ++ else ++ while (__low < __high && this->is(__m, *__low) != 0) ++ ++__low; ++ return __low; ++ } ++ ++#ifdef _GLIBCXX_USE_WCHAR_T ++ inline bool ++ ctype<wchar_t>:: ++ do_is(mask __m, wchar_t __c) const ++ { ++ return __libc_ctype_ [__c + 1] & __m; ++ } ++ ++ inline const wchar_t* ++ ctype<wchar_t>:: ++ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const ++ { ++ for (; __lo < __hi; ++__vec, ++__lo) ++ { ++ mask __m = 0; ++ if (isupper (*__lo)) __m |= _CTYPEMASK_U; ++ if (islower (*__lo)) __m |= _CTYPEMASK_L; ++ if (isdigit (*__lo)) __m |= _CTYPEMASK_D; ++ if (isspace (*__lo)) __m |= _CTYPEMASK_S; ++ if (ispunct (*__lo)) __m |= _CTYPEMASK_P; ++ if (isblank (*__lo)) __m |= _CTYPEMASK_B; ++ if (iscntrl (*__lo)) __m |= _CTYPEMASK_C; ++ if (isalpha (*__lo)) __m |= _CTYPEMASK_A; ++ if (isgraph (*__lo)) __m |= _CTYPEMASK_G; ++ if (isprint (*__lo)) __m |= _CTYPEMASK_R; ++ if (isxdigit(*__lo)) __m |= _CTYPEMASK_X; ++ /* alnum already covered = alpha | digit */ ++ ++ *__vec = __m; ++ } ++ return __hi; ++ } ++ ++ inline const wchar_t* ++ ctype<wchar_t>:: ++ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const ++ { ++ while (__lo < __hi && !(__libc_ctype_ [*__lo + 1] & __m)) ++ ++__lo; ++ return __lo; ++ } ++ ++ inline const wchar_t* ++ ctype<wchar_t>:: ++ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const ++ { ++ while (__lo < __hi && (__libc_ctype_ [*__lo + 1] & __m)) ++ ++__lo; ++ return __lo; ++ } ++#endif ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++} // namespace diff --git a/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h b/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h new file mode 100644 index 00000000000..855e792362c --- /dev/null +++ b/lang/gcc48/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h @@ -0,0 +1,46 @@ +$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h,v 1.1 2013/04/01 21:06:18 wiz Exp $ + +--- libstdc++-v3/config/os/bsd/dragonfly/os_defines.h.orig 2012-06-22 10:35:30.000000000 +0000 ++++ libstdc++-v3/config/os/bsd/dragonfly/os_defines.h +@@ -0,0 +1,41 @@ ++// Specific definitions for BSD -*- C++ -*- ++ ++// Copyright (C) 2000, 2009, 2010 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// Under Section 7 of GPL version 3, you are granted additional ++// permissions described in the GCC Runtime Library Exception, version ++// 3.1, as published by the Free Software Foundation. ++ ++// You should have received a copy of the GNU General Public License and ++// a copy of the GCC Runtime Library Exception along with this program; ++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++// <http://www.gnu.org/licenses/>. ++ ++ ++#ifndef _GLIBCXX_OS_DEFINES ++#define _GLIBCXX_OS_DEFINES 1 ++ ++// System-specific #define, typedefs, corrections, etc, go here. This ++// file will come before all others. ++ ++/* FreeBSD approach, likely a mistake for DragonFly. ++#define _GLIBCXX_USE_C99_CHECK 1 ++#define _GLIBCXX_USE_C99_DYNAMIC (!(__ISO_C_VISIBLE >= 1999)) ++#define _GLIBCXX_USE_C99_LONG_LONG_CHECK 1 ++#define _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC (_GLIBCXX_USE_C99_DYNAMIC || !defined __LONG_LONG_SUPPORTED) ++#define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_CHECK 1 ++#define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC defined _XOPEN_SOURCE ++*/ ++ ++#endif diff --git a/lang/gcc48/patches/patch-libstdc++-v3_configure b/lang/gcc48/patches/patch-libstdc++-v3_configure new file mode 100644 index 00000000000..08db40bf30a --- /dev/null +++ b/lang/gcc48/patches/patch-libstdc++-v3_configure @@ -0,0 +1,47 @@ +$NetBSD: patch-libstdc++-v3_configure,v 1.1 2013/04/01 21:06:18 wiz Exp $ + +--- libstdc++-v3/configure.orig 2013-01-08 09:47:55.000000000 +0000 ++++ libstdc++-v3/configure +@@ -15790,7 +15790,7 @@ $as_echo "stdio" >&6; } + if test "${enable_clocale+set}" = set; then : + enableval=$enable_clocale; + case "$enableval" in +- generic|gnu|ieee_1003.1-2001|newlib|yes|no|auto) ;; ++ generic|gnu|ieee_1003.1-2001|newlib|darwin|dragonfly|yes|no|auto) ;; + *) as_fn_error "Unknown argument to enable/disable clocale" "$LINENO" 5 ;; + esac + +@@ -15831,6 +15831,9 @@ fi + openbsd*) + enable_clocale_flag=newlib + ;; ++ dragonfly*) ++ enable_clocale_flag=dragonfly ++ ;; + *) + if test x"$with_newlib" = x"yes"; then + enable_clocale_flag=newlib +@@ -15972,6 +15975,23 @@ $as_echo "darwin or freebsd" >&6; } + CTIME_CC=config/locale/generic/time_members.cc + CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h + ;; ++ dragonfly) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: dragonfly" >&5 ++$as_echo "dragonfly" >&6; } ++ ++ CLOCALE_H=config/locale/generic/c_locale.h ++ CLOCALE_CC=config/locale/dragonfly/c_locale.cc ++ CCODECVT_CC=config/locale/generic/codecvt_members.cc ++ CCOLLATE_CC=config/locale/generic/collate_members.cc ++ CCTYPE_CC=config/locale/dragonfly/ctype_members.cc ++ CMESSAGES_H=config/locale/generic/messages_members.h ++ CMESSAGES_CC=config/locale/generic/messages_members.cc ++ CMONEY_CC=config/locale/generic/monetary_members.cc ++ CNUMERIC_CC=config/locale/generic/numeric_members.cc ++ CTIME_H=config/locale/generic/time_members.h ++ CTIME_CC=config/locale/generic/time_members.cc ++ CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h ++ ;; + + gnu) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: gnu" >&5 diff --git a/lang/gcc48/patches/patch-libstdc++-v3_configure.host b/lang/gcc48/patches/patch-libstdc++-v3_configure.host new file mode 100644 index 00000000000..44949a795ba --- /dev/null +++ b/lang/gcc48/patches/patch-libstdc++-v3_configure.host @@ -0,0 +1,14 @@ +$NetBSD: patch-libstdc++-v3_configure.host,v 1.1 2013/04/01 21:06:18 wiz Exp $ + +--- libstdc++-v3/configure.host.orig 2012-02-10 18:10:12.000000000 +0000 ++++ libstdc++-v3/configure.host +@@ -239,6 +239,9 @@ case "${host_os}" in + os_include_dir="os/djgpp" + error_constants_dir="os/djgpp" + ;; ++ dragonfly*) ++ os_include_dir="os/bsd/dragonfly" ++ ;; + freebsd*) + os_include_dir="os/bsd/freebsd" + ;; diff --git a/lang/gcc48/patches/patch-libstdc++-v3_libsupc++_unwind-cxx.h b/lang/gcc48/patches/patch-libstdc++-v3_libsupc++_unwind-cxx.h new file mode 100644 index 00000000000..7464520e3e8 --- /dev/null +++ b/lang/gcc48/patches/patch-libstdc++-v3_libsupc++_unwind-cxx.h @@ -0,0 +1,12 @@ +$NetBSD: patch-libstdc++-v3_libsupc++_unwind-cxx.h,v 1.1 2013/04/01 21:06:18 wiz Exp $ + +--- libstdc++-v3/libsupc++/unwind-cxx.h.orig 2013-03-19 17:04:44.000000000 +0000 ++++ libstdc++-v3/libsupc++/unwind-cxx.h +@@ -38,6 +38,7 @@ + #include <cxxabi.h> + + #ifdef _GLIBCXX_HAVE_SYS_SDT_H ++#include <cstdlib> + #include <sys/sdt.h> + /* We only want to use stap probes starting with v3. Earlier versions + added too much startup cost. */ diff --git a/lang/gcc48/version.mk b/lang/gcc48/version.mk new file mode 100644 index 00000000000..3c2515a2bb8 --- /dev/null +++ b/lang/gcc48/version.mk @@ -0,0 +1,2 @@ +# $NetBSD: version.mk,v 1.1 2013/04/01 21:06:16 wiz Exp $ +GCC_DIST_VERSION:=4.8.0 |