[41413] trunk/dports/cross/arm-rtems-gcc

pguyot at kallisys.net pguyot at kallisys.net
Sun Nov 2 01:15:31 PST 2008


Revision: 41413
          http://trac.macports.org/changeset/41413
Author:   pguyot at kallisys.net
Date:     2008-11-02 01:15:30 -0800 (Sun, 02 Nov 2008)
Log Message:
-----------
cross/arm-rtems-gcc: update to 4.2.3 (fixes #14088)

Modified Paths:
--------------
    trunk/dports/cross/arm-rtems-gcc/Portfile

Added Paths:
-----------
    trunk/dports/cross/arm-rtems-gcc/files/patch-newlib-libc-configure.diff

Removed Paths:
-------------
    trunk/dports/cross/arm-rtems-gcc/files/patch-gcc-Makefile.in
    trunk/dports/cross/arm-rtems-gcc/files/patch-gcc-f-Make-lang.in

Modified: trunk/dports/cross/arm-rtems-gcc/Portfile
===================================================================
--- trunk/dports/cross/arm-rtems-gcc/Portfile	2008-11-02 07:51:34 UTC (rev 41412)
+++ trunk/dports/cross/arm-rtems-gcc/Portfile	2008-11-02 09:15:30 UTC (rev 41413)
@@ -2,12 +2,13 @@
 
 PortSystem			1.0
 name            	arm-rtems-gcc
-version         	3.2.3
-revision			1
+version         	4.2.3
 
 # Parameters for this port.
-set newlibversion	1.11.0
+set newlibversion	1.16.0
 set crossgcc-target arm-rtems
+set rtemsversion	4.9
+set default-languages --enable-languages="c,c++,objc"
 
 description     	gcc cross-compilers for arm-rtems, with newlib runtime library.
 long_description	gnu compilers collection (c, c++, fortran and objc) for \
@@ -15,22 +16,35 @@
 homepage			http://gcc.gnu.org/
 platforms       	darwin
 categories      	cross devel
-maintainers     	pguyot at kallisys.net
+maintainers     	pguyot at kallisys.net openmaintainer
 master_sites		gnu:gcc/gcc-${version}/:gcc \
 					ftp://sources.redhat.com/pub/newlib/:newlib \
 					ftp://ftp.mirror.ac.uk/sites/sources.redhat.com/pub/newlib/:newlib \
-					ftp://ftp.rtems.com/pub/rtems/snapshots/c_tools/source/:rtems \
-					http://rtems.thehousleys.net/:rtems
-distfiles			gcc-${version}.tar.gz:gcc \
+					ftp://ftp.rtems.com/pub/rtems/SOURCES/${rtemsversion}/:rtems \
+					freebsd::rtems
+distfiles			gcc-${version}.tar.bz2:gcc \
 					newlib-${newlibversion}.tar.gz:newlib \
-					gcc-${version}-rtems-20030507a.diff:rtems \
-					newlib-${newlibversion}-rtems-20030605.diff:rtems
+					gcc-core-${version}-rtems4.9-20080205.diff:rtems \
+					newlib-${newlibversion}-rtems4.9-20080302.diff:rtems
 extract.only		gcc-${version}.tar.gz newlib-${newlibversion}.tar.gz
 worksrcdir			gcc-${version}
-checksums			gcc-${version}.tar.gz md5 e951123b2dfd2288c3e9337024dc9e4c \
-					newlib-${newlibversion}.tar.gz md5 74de7de0c9624cd757df63f2ed17a9b4 \
-					gcc-${version}-rtems-20030507a.diff md5 d4adda8ccba7ad57ee36b7720eadf19c \
-					newlib-${newlibversion}-rtems-20030605.diff md5 b1dfdabd92e241d835964c6ef86aa3c9
+checksums			gcc-${version}.tar.bz2 \
+                    md5     ef2a4d9991b3644115456ea05b2b8163 \
+                    sha1    80b0df13fc9e311868022a3e86e673177397a917 \
+                    rmd160  70b589b79b97967857f2ec70ff8b2017c84c464d \
+					newlib-${newlibversion}.tar.gz \
+                    md5     bf8f1f9e3ca83d732c00a79a6ef29bc4 \
+                    sha1    841edec33d19a9e549984982fb92445ee967e265 \
+                    rmd160  fa40ff43e858da3093c9f3b5b203724b9b327696 \
+					gcc-core-${version}-rtems4.9-20080205.diff \
+                    md5     d5a6a8c5973024476f0df6356b5e0424 \
+                    sha1    20d0ada57ad44d9f060e60e26acee57e46137ad6 \
+                    rmd160  c87a5703959dc319fad8e8b4804b8d4803cddc99 \
+					newlib-${newlibversion}-rtems4.9-20080302.diff \
+                    md5     a227456d0850e24a839634096b879c30 \
+                    sha1    4f8cd12ada4865b271eb4d4c7d80b520fb8d2bc6 \
+                    rmd160  81c76c584a6c76c9ea706bf9f0f2ba149303b289
+patchfiles			patch-newlib-libc-configure.diff
 
 # All cross ports violate the mtree layout.
 destroot.violate_mtree	yes
@@ -38,66 +52,66 @@
 # Download everything to gcc/
 dist_subdir			gcc
 
-# Patches for info's dir.
-patchfiles			patch-gcc-Makefile.in \
-					patch-gcc-f-Make-lang.in
-
 depends_lib			bin:${crossgcc-target}-ar:${crossgcc-target}-binutils \
 					bin:${crossgcc-target}-as:${crossgcc-target}-binutils \
 					bin:${crossgcc-target}-ld:${crossgcc-target}-binutils \
 					bin:${crossgcc-target}-nm:${crossgcc-target}-binutils \
-					bin:${crossgcc-target}-ranlib:${crossgcc-target}-binutils \
-					lib:libintl:gettext
+					bin:${crossgcc-target}-ranlib:${crossgcc-target}-binutils
+depends_build		bin:msgfmt:gettext
 
-# Link newlib to gcc, so gcc will find its include files and this will also build newlib.
+# gcc is .bz2, newlib is .gz.
+# let's extract only gcc with DP infrastructure, we'll do newlib manually.
+use_bzip2			yes
+extract.only		gcc-${version}.tar.bz2
+
+# Extract newlib and create a symlink of newlib/newlib in gcc directory.
 post-extract	{
-	system "ln -s ${workpath}/newlib-${newlibversion}/newlib ${workpath}/gcc-${version}"
+	system "cd ${workpath} && gzip -dc ${distpath}/newlib-${newlibversion}.tar.gz | tar -xf -"
+	system "ln -s ${workpath}/newlib-${newlibversion}/newlib ${workpath}/gcc-${version}/"
 }
 
+# Since we don't build gcc and binutils at the same time, gcc's Makefile will try to transform
+# program names as gcc's name (add -${version} with ${version} being the version of gcc).
+# But it won't work because binutils binaries don't have the ${version} suffix, and even if they
+# had, they would actually have the binutils' version suffix (and not gcc's version).
+# So let's tell gcc's Makefile not to do that mistake.
+
+set environment [list AR_FOR_TARGET=${crossgcc-target}-ar \
+				AS_FOR_TARGET=${crossgcc-target}-as \
+				LD_FOR_TARGET=${crossgcc-target}-ld \
+				NM_FOR_TARGET=${crossgcc-target}-nm \
+				RANLIB_FOR_TARGET=${crossgcc-target}-ranlib]
+
 # Build in a different directory, as advised in the README file.
-pre-configure   { system "cd ${workpath} && mkdir -p build"}
+pre-configure   {
+	file mkdir "${workpath}/build"
+}
 configure.dir   ${workpath}/build
 configure.cmd   ${workpath}/gcc-${version}/configure
 configure.cc    "cc -no-cpp-precomp"
+configure.env	${environment}
 configure.args  --infodir='${prefix}/share/info' \
 				--mandir='${prefix}/share/man' \
 				--target=${crossgcc-target} \
 				--program-prefix=${crossgcc-target}- \
 				--program-suffix=-${version} \
+				--with-included-gettext \
 				--enable-obsolete \
-				--enable-languages="c,c++,f77,objc" \
-				--without-included-gettext \
-				--with-gnu-as --with-gnu-ld \
 				--with-newlib \
-				--with-gxx-include-dir=${prefix}/${crossgcc-target}/include/c++/${version}/
+				--with-gxx-include-dir=${prefix}/${crossgcc-target}/include/c++/${version}/ \
+				${default-languages}
+
 build.dir       ${workpath}/build
-destroot.args	\
-	--with-gxx-include-dir=${destroot}/${prefix}/${crossgcc-target}/include/c++/${version}/
 
-# Since we don't build gcc and binutils at the same time, gcc's Makefile will try to transform
-# program names as gcc's name (add -${version} with ${version} being the version of gcc).
-# But it won't work because binutils binaries don't have the ${version} suffix, and even if they
-# had, they would actually have the binutils' version suffix (and not gcc's version).
-# So let's tell gcc's Makefile not to do that mistake.
+build.args		${environment}
+destroot.args	${environment}
 
-build.args		AR_FOR_TARGET=${crossgcc-target}-ar \
-				AS_FOR_TARGET=${crossgcc-target}-as \
-				LD_FOR_TARGET=${crossgcc-target}-ld \
-				NM_FOR_TARGET=${crossgcc-target}-nm \
-				RANLIB_FOR_TARGET=${crossgcc-target}-ranlib
-
-destroot.args	AR_FOR_TARGET=${crossgcc-target}-ar \
-				AS_FOR_TARGET=${crossgcc-target}-as \
-				LD_FOR_TARGET=${crossgcc-target}-ld \
-				NM_FOR_TARGET=${crossgcc-target}-nm \
-				RANLIB_FOR_TARGET=${crossgcc-target}-ranlib
-
 pre-patch {
 	# Additional patches for rtems.
 	system "cd ${workpath}/gcc-${version} && \
-		patch -p1 < ${distpath}/gcc-${version}-rtems-20030507a.diff"
+		patch -p1 < ${distpath}/gcc-core-${version}-rtems4.9-20080205.diff"
 	system "cd ${workpath}/newlib-${newlibversion} && \
-		patch -p1 < ${distpath}/newlib-${newlibversion}-rtems-20030605.diff"
+		patch -p1 < ${distpath}/newlib-${newlibversion}-rtems4.9-20080302.diff"
 }
 
 post-patch {
@@ -121,10 +135,24 @@
 			${worksrcpath}/${path}/${name}.${suffix}
 		
 		# Fix the Makefile
-		reinplace "s|${name}.info|${crossgcc-target}-${name}.info|g" \
+		reinplace "s| ${name}.info| ${crossgcc-target}-${name}.info|g" \
 			${worksrcpath}/${makefile}
-		reinplace "s|${name}.${suffix}|${crossgcc-target}-${name}.${suffix}|g" \
+		reinplace "s|/${name}.info|/${crossgcc-target}-${name}.info|g" \
 			${worksrcpath}/${makefile}
+		reinplace "s|^${name}.info|${crossgcc-target}-${name}.info|g" \
+			${worksrcpath}/${makefile}
+		reinplace "s| ${name}.pod| ${crossgcc-target}-${name}.pod|g" \
+			${worksrcpath}/${makefile}
+		reinplace "s|/${name}.pod|/${crossgcc-target}-${name}.pod|g" \
+			${worksrcpath}/${makefile}
+		reinplace "s|^${name}.pod|${crossgcc-target}-${name}.pod|g" \
+			${worksrcpath}/${makefile}
+		reinplace "s| ${name}.${suffix}| ${crossgcc-target}-${name}.${suffix}|g" \
+			${worksrcpath}/${makefile}
+		reinplace "s|/${name}.${suffix}|/${crossgcc-target}-${name}.${suffix}|g" \
+			${worksrcpath}/${makefile}
+		reinplace "s|^${name}.${suffix}|${crossgcc-target}-${name}.${suffix}|g" \
+			${worksrcpath}/${makefile}
 		
 		# Rename the source
 		file rename ${worksrcpath}/${path}/${name}.${suffix} \
@@ -132,7 +160,7 @@
 		
 		# Fix install-info's dir.
 		# (note: this may be effectless if there was no info dir to be fixed)
-		reinplace "s|__TARGET|${crossgcc-target}|g" \
+		reinplace "s|--info-dir=\$(DESTDIR)\$(infodir)|--dir-file=\$(DESTDIR)\$(infodir)/${crossgcc-target}-gcc-dir|g" \
 			"${worksrcpath}/${makefile}"
 	}
 
@@ -169,13 +197,43 @@
 	crossgcc::fixinfo gcc/doc/ gcc/Makefile.in gccint texi
 
 	# gcc/f/g77.texi
-	crossgcc::fixinfo gcc/f/ gcc/f/Make-lang.in g77 texi
+	crossgcc::fixinfo gcc/fortran/ gcc/fortran/Make-lang.in gfortran texi
 
+	# gcc/java/gcj.texi
+	crossgcc::fixinfo gcc/java/ gcc/java/Make-lang.in gcj texi
+
+	# gcc/doc/gccinstall.info
+	crossgcc::fixinfo gcc/doc/ gcc/Makefile.in gccinstall info
+
 	# gettext stuff.
 	crossgcc::fixgettext gcc
+	crossgcc::fixgettext libcpp
 }
 
+pre-destroot {
+	# gcc needs the cross directory structure to be present
+	# in order to fill it during installation.
+	file mkdir "${destroot}/${prefix}/${crossgcc-target}/bin"
+	file mkdir "${destroot}/${prefix}/${crossgcc-target}/lib"
+}
+
 post-destroot {
+	namespace eval crossgcc {}
+
+	# Rename a man page if it exists.
+	#
+	# section: section of the man page (e.g. 1)
+	# manpage: name of the man page (e.g. cpp)
+	proc crossgcc::rename_man_page { section manpage } {
+		global crossgcc-target destroot prefix
+
+		set manpage_path "${destroot}/${prefix}/share/man/man${section}/${manpage}.${section}"
+		if { [ file exists ${manpage_path} ] } {
+			file rename ${manpage_path} \
+				"${destroot}/${prefix}/share/man/man${section}/${crossgcc-target}-${manpage}.${section}"
+		}
+	}
+
 	# Stuff I don't want (either because they're in the system
 	# or because they would conflict with other FSF ports)
 	# (it's easier for maintainability purposes to fix things here)
@@ -192,12 +250,26 @@
 	# aliases for charsets (should already be there)
 	file delete "${destroot}/${prefix}/lib/charset.alias"
 	
+	# Remove man pages for tools that are not built as part of cross-gcc
+	file delete "${destroot}/${prefix}/share/man/man1/rmic.1"
+	file delete "${destroot}/${prefix}/share/man/man1/rmiregistry.1"
+	file delete "${destroot}/${prefix}/share/man/man1/jv-convert.1"
+	file delete "${destroot}/${prefix}/share/man/man1/gij.1"
+	
 	# For some reason, some man pages are not prefixed while they should have been
 	# (to avoid conflicting).
-	file rename "${destroot}/${prefix}/share/man/man1/cpp.1" \
-		"${destroot}/${prefix}/share/man/man1/${crossgcc-target}-cpp.1"
-	file rename "${destroot}/${prefix}/share/man/man1/gcov.1" \
-		"${destroot}/${prefix}/share/man/man1/${crossgcc-target}-gcov.1"
+	crossgcc::rename_man_page 1 cpp
+	crossgcc::rename_man_page 1 gcjh
+	crossgcc::rename_man_page 1 gcov
+	crossgcc::rename_man_page 1 jcf-dump
+	crossgcc::rename_man_page 1 jv-scan
+	
+	# There is a bug in gcc/Makefile::install-driver
+	# For cross compilers, $(GCC_INSTALL_NAME) is equal to
+	# $(target_noncanonical)-gcc-$(version)
+	# and hence the driver isn't installed.
+	xinstall -c "${workpath}/build/gcc/xgcc" \
+		"${destroot}/${prefix}/bin/${crossgcc-target}-gcc-${version}"
 }
 
 livecheck.check	regex

Deleted: trunk/dports/cross/arm-rtems-gcc/files/patch-gcc-Makefile.in
===================================================================
--- trunk/dports/cross/arm-rtems-gcc/files/patch-gcc-Makefile.in	2008-11-02 07:51:34 UTC (rev 41412)
+++ trunk/dports/cross/arm-rtems-gcc/files/patch-gcc-Makefile.in	2008-11-02 09:15:30 UTC (rev 41413)
@@ -1,11 +0,0 @@
---- gcc/Makefile.in.old	Sun Jan 11 09:33:27 2004
-+++ gcc/Makefile.in	Sun Jan 11 09:38:14 2004
-@@ -2666,7 +2666,7 @@
- 	  if [ -f $(DESTDIR)$(infodir)/dir ] ; then \
- 	    for f in cpp.info gcc.info gccint.info cppinternals.info; do \
- 		if [ -f $(DESTDIR)$(infodir)/$$f ]; then \
--		  install-info --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/$$f; \
-+		  install-info --dir-file=$(DESTDIR)$(infodir)/__TARGET-gcc-dir $(DESTDIR)$(infodir)/$$f; \
- 		else true; fi; \
- 	    done; \
- 	  else true; fi; \

Deleted: trunk/dports/cross/arm-rtems-gcc/files/patch-gcc-f-Make-lang.in
===================================================================
--- trunk/dports/cross/arm-rtems-gcc/files/patch-gcc-f-Make-lang.in	2008-11-02 07:51:34 UTC (rev 41412)
+++ trunk/dports/cross/arm-rtems-gcc/files/patch-gcc-f-Make-lang.in	2008-11-02 09:15:30 UTC (rev 41413)
@@ -1,13 +0,0 @@
---- gcc/f/Make-lang.in.old	Sun Jan 11 10:19:52 2004
-+++ gcc/f/Make-lang.in	Sun Jan 11 10:20:09 2004
-@@ -278,8 +278,8 @@
- 	else true; fi
- 	@if [ -f $(srcdir)/f/g77.info ] ; then \
- 	  if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
--	    echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/g77.info"; \
--	    install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/g77.info || : ; \
-+	    echo " install-info --dir-file=$(DESTDIR)$(infodir)/__TARGET-gcc-dir $(DESTDIR)$(infodir)/g77.info"; \
-+	    install-info --dir-file=$(DESTDIR)$(infodir)/__TARGET-gcc-dir $(DESTDIR)$(infodir)/g77.info || : ; \
- 	  else : ; fi; \
- 	else : ; fi
- 

Added: trunk/dports/cross/arm-rtems-gcc/files/patch-newlib-libc-configure.diff
===================================================================
--- trunk/dports/cross/arm-rtems-gcc/files/patch-newlib-libc-configure.diff	                        (rev 0)
+++ trunk/dports/cross/arm-rtems-gcc/files/patch-newlib-libc-configure.diff	2008-11-02 09:15:30 UTC (rev 41413)
@@ -0,0 +1,11 @@
+--- newlib/libc/configure.orig	2007-04-30 10:23:34.000000000 +0900
++++ newlib/libc/configure	2007-04-30 10:24:07.000000000 +0900
+@@ -1238,7 +1238,7 @@
+       ac_cache_corrupted=: ;;
+     ,);;
+     *)
+-      if test "x$ac_old_val" != "x$ac_new_val"; then
++      if test "x${ac_old_val%% }" != "x${ac_new_val%% }"; then
+ 	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+ echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ 	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20081102/3f74590a/attachment-0001.html>


More information about the macports-changes mailing list