[32219] trunk/dports/lang/g95

ryandesign at macports.org ryandesign at macports.org
Thu Dec 20 07:10:37 PST 2007


Revision: 32219
          http://trac.macosforge.org/projects/macports/changeset/32219
Author:   ryandesign at macports.org
Date:     2007-12-20 07:10:34 -0800 (Thu, 20 Dec 2007)

Log Message:
-----------
g95: maintainer update to fix build on Leopard; closes #13190

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	2007-12-20 14:49:38 UTC (rev 32218)
+++ trunk/dports/lang/g95/Portfile	2007-12-20 15:10:34 UTC (rev 32219)
@@ -3,7 +3,7 @@
 PortSystem 1.0
 name            g95
 version         0.90
-revision        1
+revision        2
 platforms       darwin
 categories      lang
 maintainers     takeshi at mac.com
@@ -34,15 +34,22 @@
 
 pre-configure {
     file mkdir ${workpath}/gcc-${version_gcc}/${name}
-    reinplace "s|/usr/bin/libtool|${prefix}/bin/odlibtool|" ${workpath}/gcc-${version_gcc}/gcc/config/darwin.h
-    system "unset CPPFLAGS; unset LDFLAGS; \ 
-           cd ${workpath}/gcc-${version_gcc}/${name}; \
-           ../configure --prefix=${prefix}/${gcclib} --enable-languages=c --with-as=${prefix}/bin/odas --with-ld=${prefix}/bin/odld --with-nm=${prefix}/bin/odnm --with-included-gettext; \ 
-           make"
+    if {[variant_isset darwin_9]} {
+        reinplace "s|i686|i386|" ${workpath}/gcc-${version_gcc}/gcc/config/i386/darwin.h
+        reinplace "s|tjmp %%edx|tjmp *%%edx|" ${workpath}/gcc-${version_gcc}/gcc/config/i386/i386.c
+        set gcc_configargs "--with-as=/usr/bin/as --with-ld=/usr/bin/ld --with-nm=/usr/bin/nm"
+    } else {
+        reinplace "s|/usr/bin/libtool|${prefix}/bin/odlibtool|" ${workpath}/gcc-${version_gcc}/gcc/config/darwin.h
+        set gcc_configargs "--with-as=${prefix}/bin/odas --with-ld=${prefix}/bin/odld --with-nm=${prefix}/bin/odnm"
+    }
+    system "unset CPPFLAGS; unset LDFLAGS; \
+            cd ${workpath}/gcc-${version_gcc}/${name}; \
+            ../configure --prefix=${prefix}/${gcclib} \
+            --enable-languages=c ${gcc_configargs} --with-included-gettext \
+            --with-gmp=${prefix} --with-mpfr=${prefix}; \
+            make"
 }
 
-configure.cppflags	""
-configure.ldflags	""
 configure.args  --with-gcc-dir=${workpath}/gcc-${version_gcc}
 
 post-build {
@@ -72,3 +79,8 @@
     system "ln -sf ${prefix}/${gcclib}/libgcc_s.1.0.dylib ${destroot}${prefix}/${gcclib}/lib/libgcc_s.1.0.dylib"
     system "ln -sf ${prefix}/${gcclib}/libgcc_s.1.0.dylib ${destroot}${prefix}/${gcclib}/lib/libgcc_s.dylib"
 }
+
+platform darwin 9 {
+    patchfiles-append patch-host-darwin.c.diff patch-darwin-fallback.c.diff
+    depends_lib-delete port:odcctools
+}

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	2007-12-20 15:10:34 UTC (rev 32219)
@@ -0,0 +1,82 @@
+--- ../gcc-4.0.3/gcc/config/rs6000/darwin-fallback.c.orig	2007-11-11 10:46:12.000000000 +0900
++++ ../gcc-4.0.3/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	2007-12-20 15:10:34 UTC (rev 32219)
@@ -0,0 +1,31 @@
+--- ../gcc-4.0.3/gcc/config/rs6000/host-darwin.c.orig	2007-11-10 13:24:23.000000000 +0900
++++ ../gcc-4.0.3/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/20071220/6b858feb/attachment-0001.html


More information about the macports-changes mailing list