pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

lang/gcc44: patches for NetBSD



Hello,

lang/gcc44 is broken on NetBSD. The attached patches fixes
gfortran and g++ on NetBSD. Java remains broken, therefore I
have deactivated it for NetBSD. To test this fix, please copy
Makefile and distinfo to the lang/gcc4 directory and the
three patch files to lang/gcc4/patches. Other platforms
should be unaffected by these patches. I have used current
pkgsrc from the 10th of Februar.
With similar patches I have successfully updated wip/gcc45
to the latest stable version 4.5.2 and also created a working
wip/gcc46 with the latest 4.6.0 snapshot. I will submit them
to pkgsrc-wip after I get feedback on lang/gcc44 from the
pkgsrc experts if these patches are the right way to do it.

Every feedback is welcome. Personally I am only interested in
gfortran and we need it for lapack in pkgsrc, so in my
opinion a lang/gcc44 with a missing java compiler is better
then being without gcc44 at all on NetBSD. 

Cheers,

Kai-Uwe Eckhardt


-- 
-- 


Schon gehÃrt? GMX hat einen genialen Phishing-Filter in die
Toolbar eingebaut! http://www.gmx.net/de/go/toolbar
1) distinfo

$NetBSD: distinfo,v 1.4 2010/05/06 10:21:17 adam Exp $

SHA1 (gcc-4.4.4.tar.bz2) = 45d1e7242a08cbb7a343ed2bf640a5afd0ebe098
RMD160 (gcc-4.4.4.tar.bz2) = b41f26be28cc1ef643135230dfa94876d8a02dd6
Size (gcc-4.4.4.tar.bz2) = 63018867 bytes
SHA1 (patch-aa) = b7180161a0c9eb63738ebf9586e52591ef43c636
SHA1 (patch-ab) = e254456a6da7090f7ba37d3b55a17be2dd157f88
SHA1 (patch-ac) = 0af9845a62f9a6f8ec27657d0ae0c16394e9fc12
SHA1 (patch-ad) = 86dc05e6ea977ad869e5d63beb493750ab01a807
SHA1 (patch-ae) = 831481496b5b5f246f51d9a4fe9314f07f81a842
SHA1 (patch-af) = e8707437f416713b6f1e68b992bce7a13466d0f9
SHA1 (patch-ag) = 077bed181ee4bad36eb23c817a1708950b69a1ad
SHA1 (patch-ah) = 2a3e72b1b808a0f5911c48a4cd5ace6439c0bad9
SHA1 (patch-ai) = a7329ed9f8bb533c4bf0c2f4cc97b6c49d737148
SHA1 (patch-aj) = 8f8aac6ceb1b4d1b0d426e3139ac053c05ed3178

2) patches/patch-ah

--- libgfortran/intrinsics/c99_functions.c.orig 2011-02-11 12:29:08.000000000 
+0100
+++ libgfortran/intrinsics/c99_functions.c
@@ -537,7 +537,7 @@
 {
   if (x > DBL_MAX || x < -DBL_MAX)
     {
-#ifdef HAVE_NEXTAFTERL
+#if 0
       static long double prechalf = nexafterl (0.5L, LDBL_MAX);
 #else
       static long double prechalf = 0.5L;

3) patches/patch-ai

--- gcc/fortran/f95-lang.c.orig 2010-04-21 23:26:11.000000000 +0200
+++ gcc/fortran/f95-lang.c
@@ -871,10 +871,17 @@
 
   gfc_define_builtin ("__builtin_cabsl", func_clongdouble_longdouble, 
                      BUILT_IN_CABSL, "cabsl", true);
+#if defined (__NetBSD__)
+  gfc_define_builtin ("__builtin_cabs", func_cdouble_double, 
+                     BUILT_IN_CABS, "__c99_cabs", true);
+  gfc_define_builtin ("__builtin_cabsf", func_cfloat_float, 
+                     BUILT_IN_CABSF, "__c99_cabsf", true);
+#else
   gfc_define_builtin ("__builtin_cabs", func_cdouble_double, 
                      BUILT_IN_CABS, "cabs", true);
   gfc_define_builtin ("__builtin_cabsf", func_cfloat_float, 
                      BUILT_IN_CABSF, "cabsf", true);
+#endif
  
   gfc_define_builtin ("__builtin_copysignl", mfunc_longdouble[1], 
                      BUILT_IN_COPYSIGNL, "copysignl", true);


4) patches/patch-aj

--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig 2011-02-11 
20:02:56.000000000 +0100
+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
@@ -42,17 +42,17 @@
     // 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 unsigned char              mask;
-    static const mask upper            = _U;
-    static const mask lower    = _L;
-    static const mask alpha    = _U | _L;
-    static const mask digit    = _N;
-    static const mask xdigit   = _N | _X;
-    static const mask space    = _S;
-    static const mask print    = _P | _U | _L | _N | _B;
-    static const mask graph    = _P | _U | _L | _N;
-    static const mask cntrl    = _C;
-    static const mask punct    = _P;
-    static const mask alnum    = _U | _L | _N;
+    static const mask upper            = _CTYPE_U;
+    static const mask lower    = _CTYPE_L;
+    static const mask alpha    = _CTYPE_U | _CTYPE_L;
+    static const mask digit    = _CTYPE_N;
+    static const mask xdigit   = _CTYPE_N | _CTYPE_X;
+    static const mask space    = _CTYPE_S;
+    static const mask print    = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | 
_CTYPE_B;
+    static const mask graph    = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N;
+    static const mask cntrl    = _CTYPE_C;
+    static const mask punct    = _CTYPE_P;
+    static const mask alnum    = _CTYPE_U | _CTYPE_L | _CTYPE_N;
   };
 
 _GLIBCXX_END_NAMESPACE


5) Makefile

# $NetBSD: Makefile,v 1.14 2010/07/15 21:35:10 asau Exp $

DISTNAME=               gcc-${GCC_VERSION}
PKGNAME=                gcc44-${GCC_VERSION}
PKGREVISION=            1
CATEGORIES=             lang
MASTER_SITES=           ${MASTER_SITE_GNU:=gcc/gcc-${GCC_VERSION}/}
EXTRACT_SUFX=           .tar.bz2

MAINTAINER=             blair.sadewitz%gmail.com@localhost
HOMEPAGE=               http://gcc.gnu.org/
COMMENT=                GNU Compiler Collection 4.4
LICENSE=                gnu-gpl-v2 AND gnu-gpl-v3 AND gnu-lgpl-v2 AND 
gnu-lgpl-v3

PKG_DESTDIR_SUPPORT=    user-destdir

USE_TOOLS+=             awk:run bash:run perl chmod \
                        gmake:run makeinfo msgfmt bison flex gm4 \
                        sed:run unzip

DEPENDS+=               zip-[0-9]*:../../archivers/zip

GCC_VERSION=            4.4.4

GCC_SUBPREFIX=          gcc44
GCC_PREFIX=             ${PREFIX}/${GCC_SUBPREFIX}
FILES_SUBST+=           PKGNAME=${PKGNAME}
MESSAGE_SUBST+=         GCC_PREFIX=${GCC_PREFIX}


# To avoid GNU surprises
CONFIG_SHELL=           ${TOOLS_PATH.bash}

NOT_FOR_PLATFORM=       Interix-*-*
UNLIMIT_RESOURCES+=     datasize

.include "../../mk/bsd.prefs.mk"
.include "options.mk"

# Determine whether to use binutils

# REPLACE_AWK+= gcc/testsuite/gcc.test-framework/test-framework.awk     \
#               gcc/mkmap-symver.awk                                    \
#               gcc/optc-gen.awk                                        \
#               gcc/mkmap-flat.awk                                      \
#               gcc/opt-gather.awk                                      \
#               gcc/opth-gen.awk                                        \
#               gcc/opt-functions.awk

REPLACE_BASH+= contrib/dg-cmp-results.sh
REPLACE_BASH+= contrib/reghunt/bin/gcc-svn-patchlist
REPLACE_BASH+= contrib/reghunt/bin/gcc-svn-update
REPLACE_BASH+= contrib/reghunt/bin/gcc-svn-update-fix
REPLACE_BASH+= contrib/reghunt/bin/reg-hunt
REPLACE_BASH+= contrib/reghunt/bin/reg-test
REPLACE_BASH+= contrib/reghunt/date_based/reg_periodic
REPLACE_BASH+= contrib/reghunt/date_based/reg_search
REPLACE_BASH+= gcc/dbgcnt.def
REPLACE_BASH+= gcc/testsuite/gcc.test-framework/gen_directive_tests
REPLACE_BASH+= libstdc++-v3/scripts/run_doxygen

# Optional languages - change as required
# Ada could be added although there is a bootstrapping issue.  See
# ../gcc34-ada for guidance
BUILD_DEFS+=            BUILD_CXX BUILD_FORTRAN BUILD_JAVA BUILD_OBJC
BUILD_CXX?=             YES
BUILD_FORTRAN?=         YES

.if ${OPSYS} == "NetBSD"
  BUILD_JAVA?= NO
.else
  BUILD_JAVA?=          YES
.endif

BUILD_OBJC?=            YES

LANGS= c

#.if !empty(BUILD_CXX:M[aA][dD][aA])
#LANGS+= ada
#.endif

.if !empty(BUILD_CXX:M[Yy][Ee][Ss])
LANGS+= c++
.endif

.if !empty(BUILD_FORTRAN:M[Yy][Ee][Ss])
LANGS+= fortran
.endif

.if !empty(BUILD_JAVA:M[Yy][Ee][Ss])
LANGS+= java
.endif

.if !empty(BUILD_OBJC:M[Yy][Ee][Ss])
LANGS+= objc
.endif

CONFIGURE_ARGS+=        --prefix=${GCC_PREFIX:Q}
CONFIGURE_ARGS+=        --enable-languages=${LANGS:Q}
CONFIGURE_ARGS+=        --with-system-zlib
CONFIGURE_ARGS+=        --enable-shared
CONFIGURE_ARGS+=        --enable-__cxa_atexit
CONFIGURE_ARGS+=        --enable-long-long
CONFIGURE_ARGS+=        --with-local-prefix=${GCC_PREFIX:Q}
CONFIGURE_ARGS+=        --disable-libssp
CONFIGURE_ARGS+=        --enable-threads=posix
CONFIGURE_ARGS+=        --with-gmp=${BUILDLINK_PREFIX.gmp}
CONFIGURE_ARGS+=        --with-mpfr=${BUILDLINK_PREFIX.mpfr}

CONFIGURE_ENV+=         CONFIG_SHELL=${CONFIG_SHELL}

# ${WRKSRC}/gcc-4.4.1/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

MAKE_ENV+=              ICONVPREFIX=${BUILDLINK_PREFIX.iconv}
MAKE_ENV+=              SHELL=${CONFIG_SHELL}
MAKE_ENV+=              ac_cv_path_ac_cv_prog_chmod=${TOOLS_CHMOD}

# ${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+=              lt_cv_path_SED=${TOOLS_SED}

CPPFLAGS+=              -I${BUILDLINK_DIR}/include
CFLAGS+=                -I${BUILDLINK_DIR}/include

# Somone should fix this so it will match the NetBSD system compiler
#.if ${OPSYS} == "NetBSD"
#GCC_PLATFORM=  ${LOWER_ARCH}--${LOWER_OPSYS}${APPEND_ELF}
#CONFIGURE_ARGS+=       --host=${GCC_PLATFORM:Q}
#MAKE_ENV+=             AR=/usr/bin/ar
#.endif # NetBSD

LIBS.SunOS+=            -lgmp

pre-configure:
.if ${OPSYS} == "DragonFly"
        ${CP} ${FILESDIR}/dragonfly.h ${WRKSRC}/gcc/config/dragonfly.h
        ${CP} ${FILESDIR}/dragonfly-spec.h ${WRKSRC}/gcc/config/dragonfly-spec.h
        ${CP} ${FILESDIR}/i386-dragonfly.h ${WRKSRC}/gcc/config/i386/dragonfly.h
        ${CP} ${FILESDIR}/i386-dragonfly64.h 
${WRKSRC}/gcc/config/i386/dragonfly64.h
.endif


do-configure:
        ${MKDIR} ${WRKDIR}/obj
        cd ${WRKDIR}/obj; ${SETENV} ${CONFIGURE_ENV} ${CONFIG_SHELL} 
${WRKSRC}/configure ${CONFIGURE_ARGS}

do-build:
        (${_ULIMIT_CMD} cd ${WRKDIR}/obj && ${SETENV} ${MAKE_ENV} ${GMAKE} 
-j${MAKE_JOBS:U1:Q} )

do-test:
.if (${MACHINE_GNU_ARCH} == "x86_64")
        (cd ${FILESDIR} && ${CP} netbsd64macro.dfs 
${WRKSRC}/gcc/testsuite/ada/acats/support/macro.dfs)
.endif
        (cd ${WRKDIR}/obj && ${GMAKE} -k check)

do-install:
        (cd ${WRKDIR}/obj && ${SETENV} ${MAKE_ENV} ${GMAKE} install 
DESTDIR=${DESTDIR} \
         && ${TEST} -f ${DESTDIR}${GCC_PREFIX}/bin/cc || ${LN} -f 
${DESTDIR}${GCC_PREFIX}/bin/gcc ${DESTDIR}${GCC_PREFIX}/bin/cc)

GENERATE_PLIST+=                                                        \
        cd ${DESTDIR}${PREFIX} && ${FIND} ${GCC_SUBPREFIX} \( -type f -o -type 
l \) -print \
        | ${SORT} ;

.include "../../devel/gmp/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../math/mpfr/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"



Home | Main Index | Thread Index | Old Index