[102827] trunk/dports/lang/g95
takeshi at macports.org
takeshi at macports.org
Fri Feb 8 22:00:02 PST 2013
Revision: 102827
https://trac.macports.org/changeset/102827
Author: takeshi at macports.org
Date: 2013-02-08 22:00:02 -0800 (Fri, 08 Feb 2013)
Log Message:
-----------
g95: added gcc40 variant for Leopard; g95 builds fine against gcc42 on Leopard, but g95 does not work properly
Modified Paths:
--------------
trunk/dports/lang/g95/Portfile
Added Paths:
-----------
trunk/dports/lang/g95/files/patch-darwin-fallback.c.diff
trunk/dports/lang/g95/files/patch-host-darwin.c.diff
Modified: trunk/dports/lang/g95/Portfile
===================================================================
--- trunk/dports/lang/g95/Portfile 2013-02-09 04:32:47 UTC (rev 102826)
+++ trunk/dports/lang/g95/Portfile 2013-02-09 06:00:02 UTC (rev 102827)
@@ -5,7 +5,7 @@
name g95
version 0.93
-revision 1
+revision 2
platforms darwin
categories lang
license GPL-2
@@ -17,29 +17,42 @@
Innovations and optimizations continue to be worked on. \
Parts of the F2003 standard have been implemented in g95.
homepage http://g95.org/
-master_sites ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.2.4/:gcc \
- http://ftp.g95.org/v${version}/:g95
dist_subdir ${name}/${version}
+if {${os.major} < 10 || ${build_arch}=="ppc" || ${build_arch}=="i386"} {
+ default_variants +gcc40
+}
+
set triple ""
-set version_gcc 4.2.4
-array set barch {ppc powerpc ppc64 powerpc64 i386 i386 x86_64 x86_64}
-if {[info exists barch(${build_arch})]} {
- set triple $barch(${build_arch})-apple-darwin${os.major}
+if {[variant_isset gcc40]} {
+ set version_gcc 4.0.4
+ set triple ${os.arch}-apple-darwin${os.major}
+ set dcore gcc-core-${version_gcc}.tar.bz2
+ checksums ${dcore} md5 193e0a7a471cca70e374974bc5a60137 \
+ ${dcore} sha1 55c664b33a4dc6b2130c47da28a1d6daab732ce9 \
+ ${dcore} rmd160 af67dc8385942450f6b27ad83a6b9e3d22f779a1
+} else {
+ set version_gcc 4.2.4
+ array set barch {ppc powerpc ppc64 powerpc64 i386 i386 x86_64 x86_64}
+ if {[info exists barch(${build_arch})]} {
+ set triple $barch(${build_arch})-apple-darwin${os.major}
+ }
+ set dcore gcc-core-${version_gcc}.tar.bz2
+ checksums ${dcore} md5 b7a4c167f6a05301591b139b356e36d0 \
+ ${dcore} sha1 540fa6949415ded321a7cbe80bbf8befe85e3566 \
+ ${dcore} rmd160 d54581d0a2ecc22718e6be101c6dc524a4a88463
}
+master_sites ftp://gcc.gnu.org/pub/gcc/releases/gcc-${version_gcc}/:gcc \
+ http://ftp.g95.org/v${version}/:g95
set buildhost "--build=${triple} --host=${triple}"
-set dcore gcc-core-${version_gcc}.tar.bz2
set dg95 ${name}_source.tgz
set gcclib lib/${name}/${triple}/${version_gcc}
distfiles ${dcore}:gcc ${dg95}:g95
-checksums ${dcore} md5 b7a4c167f6a05301591b139b356e36d0 \
- ${dcore} sha1 540fa6949415ded321a7cbe80bbf8befe85e3566 \
- ${dcore} rmd160 d54581d0a2ecc22718e6be101c6dc524a4a88463 \
- ${dg95} md5 f9552aef0975c1dcf70950b6e6b18ff1 \
- ${dg95} sha1 b5e503fd6459b65cbda73190685f9490230d9cff \
- ${dg95} rmd160 98d03e9a1835f4b3553a72a798bdf1d90a757176
+checksums-append ${dg95} md5 f9552aef0975c1dcf70950b6e6b18ff1 \
+ ${dg95} sha1 b5e503fd6459b65cbda73190685f9490230d9cff \
+ ${dg95} rmd160 98d03e9a1835f4b3553a72a798bdf1d90a757176
depends_build port:ld64 port:cctools
depends_lib port:libtool port:libiconv
@@ -67,7 +80,9 @@
reinplace "s|gcc-lib|$name|" ${worksrcpath}/libf95.a-${version}/configure
reinplace "s|CFLAGS_FOR_TARGET = -O2 \$(CFLAGS)|CFLAGS_FOR_TARGET = ${configure.cflags}|" ${workpath}/gcc-${version_gcc}/Makefile.in
reinplace "s|^stage1_cflags=\"|stage1_cflags=\"${configure.cflags} ${configure.cc_archflags} |" ${workpath}/gcc-${version_gcc}/configure
- reinplace "s|named_section|get_named_section|" ${worksrcpath}/trans-decl.c
+ if {![variant_isset gcc40]} {
+ reinplace "s|named_section|get_named_section|" ${worksrcpath}/trans-decl.c
+ }
}
compiler.blacklist clang
@@ -98,20 +113,24 @@
--with-nm=${prefix}/bin/nm \
${buildhost}; \
make"
- system "cd ${workpath}/gcc-${version_gcc}/${name}/gcc; \
- ar d libbackend.a options.o; \
- cd ${workpath}/gcc-${version_gcc}/gcc/; \
- patch -p0 < ${portpath}/files/patch-gcc.c.diff"
+ if {![variant_isset gcc40]} {
+ system "cd ${workpath}/gcc-${version_gcc}/${name}/gcc; \
+ ar d libbackend.a options.o; \
+ cd ${workpath}/gcc-${version_gcc}/gcc/; \
+ patch -p0 < ${portpath}/files/patch-gcc.c.diff"
+ }
}
configure.args --with-gcc-dir=${workpath}/gcc-${version_gcc} ${buildhost}
post-configure {
- reinplace "s|\(f951_LDADD\)|(f951_LDADD) ${workpath}/gcc-${version_gcc}/g95/libdecnumber/*.o|" ${worksrcpath}/Makefile
+ if {![variant_isset gcc40]} {
+ reinplace "s|\(f951_LDADD\)|(f951_LDADD) ${workpath}/gcc-${version_gcc}/g95/libdecnumber/*.o|" ${worksrcpath}/Makefile
+ }
}
pre-build {
- if {${os.arch}=="i386"} {
+ if {![variant_isset gcc40] && ${os.arch}=="i386"} {
reinplace "s|\(g95_LDADD\)|(g95_LDADD) ${workpath}/gcc-${version_gcc}/g95/gcc/driver-i386.o|" ${worksrcpath}/Makefile
}
}
@@ -135,3 +154,8 @@
system "ln -sf ${prefix}/${gcclib}/libf95.a ${destroot}${prefix}/lib/libf95.a"
system -W ${destroot}${prefix} "find . -type f -name '*.dylib' -exec dsymutil {} +"
}
+
+variant gcc40 description {build against gcc-4.0.x} {
+ patchfiles-delete patch-lang.opt.diff patch-darwin.h.diff
+ patchfiles-append patch-host-darwin.c.diff patch-darwin-fallback.c.diff
+}
Added: trunk/dports/lang/g95/files/patch-darwin-fallback.c.diff
===================================================================
--- trunk/dports/lang/g95/files/patch-darwin-fallback.c.diff (rev 0)
+++ trunk/dports/lang/g95/files/patch-darwin-fallback.c.diff 2013-02-09 06:00:02 UTC (rev 102827)
@@ -0,0 +1,82 @@
+--- gcc-4.0.4/gcc/config/rs6000/darwin-fallback.c.orig 2007-11-11 10:46:12.000000000 +0900
++++ gcc-4.0.4/gcc/config/rs6000/darwin-fallback.c 2007-11-11 11:25:18.000000000 +0900
+@@ -261,9 +261,9 @@
+ };
+
+ #define UC_FLAVOR_SIZE \
+- (sizeof (struct mcontext) - sizeof (ppc_vector_state_t))
++ (sizeof (struct __darwin_mcontext) - sizeof (ppc_vector_state_t))
+
+-#define UC_FLAVOR_VEC_SIZE (sizeof (struct mcontext))
++#define UC_FLAVOR_VEC_SIZE (sizeof (struct __darwin_mcontext))
+
+ #define UC_FLAVOR64_SIZE \
+ (sizeof (struct gcc_mcontext64) - sizeof (ppc_vector_state_t))
+@@ -354,33 +354,33 @@
+ }
+ else
+ {
+- struct mcontext *m = uctx->uc_mcontext;
++ struct __darwin_mcontext *m = (struct __darwin_mcontext *)uctx->uc_mcontext;
+ int i;
+
+- float_state = &m->fs;
+- vector_state = &m->vs;
++ float_state = &m->__fs;
++ vector_state = &m->__vs;
+
+- new_cfa = m->ss.r1;
++ new_cfa = m->__ss.__r1;
+
+- set_offset (CR2_REGNO, &m->ss.cr);
++ set_offset (CR2_REGNO, &m->__ss.__cr);
+ for (i = 0; i < 32; i++)
+- set_offset (i, &m->ss.r0 + i);
+- set_offset (XER_REGNO, &m->ss.xer);
+- set_offset (LINK_REGISTER_REGNUM, &m->ss.lr);
+- set_offset (COUNT_REGISTER_REGNUM, &m->ss.ctr);
++ set_offset (i, &m->__ss.__r0 + i);
++ set_offset (XER_REGNO, &m->__ss.__xer);
++ set_offset (LINK_REGISTER_REGNUM, &m->__ss.__lr);
++ set_offset (COUNT_REGISTER_REGNUM, &m->__ss.__ctr);
+
+ if (is_vector)
+- set_offset (VRSAVE_REGNO, &m->ss.vrsave);
++ set_offset (VRSAVE_REGNO, &m->__ss.__vrsave);
+
+ /* Sometimes, srr0 points to the instruction that caused the exception,
+ and sometimes to the next instruction to be executed; we want
+ the latter. */
+- if (m->es.exception == 3 || m->es.exception == 4
+- || m->es.exception == 6
+- || (m->es.exception == 7 && !(m->ss.srr1 & 0x10000)))
+- return_addr = m->ss.srr0 + 4;
++ if (m->__es.__exception == 3 || m->__es.__exception == 4
++ || m->__es.__exception == 6
++ || (m->__es.__exception == 7 && !(m->__ss.__srr1 & 0x10000)))
++ return_addr = m->__ss.__srr0 + 4;
+ else
+- return_addr = m->ss.srr0;
++ return_addr = m->__ss.__srr0;
+ }
+
+ fs->cfa_how = CFA_REG_OFFSET;
+@@ -399,14 +399,14 @@
+ set_offset (ARG_POINTER_REGNUM, &return_addr);
+
+ for (i = 0; i < 32; i++)
+- set_offset (32 + i, float_state->fpregs + i);
+- set_offset (SPEFSCR_REGNO, &float_state->fpscr);
++ set_offset (32 + i, float_state->__fpregs + i);
++ set_offset (SPEFSCR_REGNO, &float_state->__fpscr);
+
+ if (is_vector)
+ {
+ for (i = 0; i < 32; i++)
+- set_offset (FIRST_ALTIVEC_REGNO + i, vector_state->save_vr + i);
+- set_offset (VSCR_REGNO, vector_state->save_vscr);
++ set_offset (FIRST_ALTIVEC_REGNO + i, vector_state->__save_vr + i);
++ set_offset (VSCR_REGNO, vector_state->__save_vscr);
+ }
+
+ return true;
Added: trunk/dports/lang/g95/files/patch-host-darwin.c.diff
===================================================================
--- trunk/dports/lang/g95/files/patch-host-darwin.c.diff (rev 0)
+++ trunk/dports/lang/g95/files/patch-host-darwin.c.diff 2013-02-09 06:00:02 UTC (rev 102827)
@@ -0,0 +1,31 @@
+--- gcc-4.0.4/gcc/config/rs6000/host-darwin.c.orig 2007-11-10 13:24:23.000000000 +0900
++++ gcc-4.0.4/gcc/config/rs6000/host-darwin.c 2007-11-10 13:19:23.000000000 +0900
+@@ -33,10 +33,6 @@
+ static void segv_handler (int, siginfo_t *, void *);
+ static void darwin_rs6000_extra_signals (void);
+
+-/* This doesn't have a prototype in signal.h in 10.2.x and earlier,
+- fixed in later releases. */
+-extern int sigaltstack(const struct sigaltstack *, struct sigaltstack *);
+-
+ #undef HOST_HOOKS_EXTRA_SIGNALS
+ #define HOST_HOOKS_EXTRA_SIGNALS darwin_rs6000_extra_signals
+
+@@ -60,7 +60,7 @@
+ which case the next line will segfault _again_. Handle this case. */
+ signal (SIGSEGV, segv_crash_handler);
+
+- faulting_insn = *(unsigned *)uc->uc_mcontext->ss.srr0;
++ faulting_insn = *(unsigned *)uc->uc_mcontext->__ss.__srr0;
+
+ /* Note that this only has to work for GCC, so we don't have to deal
+ with all the possible cases (GCC has no AltiVec code, for
+@@ -109,7 +109,7 @@
+ }
+
+ fprintf (stderr, "[address=%08lx pc=%08x]\n",
+- uc->uc_mcontext->es.dar, uc->uc_mcontext->ss.srr0);
++ uc->uc_mcontext->__es.__dar, uc->uc_mcontext->__ss.__srr0);
+ internal_error ("Segmentation Fault");
+ exit (FATAL_EXIT_CODE);
+ }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20130208/dc91ef3d/attachment-0001.html>
More information about the macports-changes
mailing list