Revision: 81601 http://trac.macports.org/changeset/81601 Author: raimue@macports.org Date: 2011-08-02 14:23:07 -0700 (Tue, 02 Aug 2011) Log Message: ----------- cross/arm-none-eabi-gcc: New port Added Paths: ----------- trunk/dports/cross/arm-none-eabi-gcc/ trunk/dports/cross/arm-none-eabi-gcc/Portfile Added: trunk/dports/cross/arm-none-eabi-gcc/Portfile =================================================================== --- trunk/dports/cross/arm-none-eabi-gcc/Portfile (rev 0) +++ trunk/dports/cross/arm-none-eabi-gcc/Portfile 2011-08-02 21:23:07 UTC (rev 81601) @@ -0,0 +1,207 @@ +# $Id$ + +PortSystem 1.0 + +name arm-none-eabi-gcc +version 4.6.1 +set branch [join [lrange [split ${version} .] 0 1] .] + +categories cross devel +platforms darwin +license GPL-3 +maintainers nomaintainer +description The GNU compiler collection for arm-none-eabi +long_description \ + The GNU compiler collection, including front ends for C, C++, Objective-C \ + and Objective-C++ for arm-none-eabi. +homepage http://gcc.gnu.org/ + +set newlibversion 1.19.0 +set crossgcc-target arm-none-eabi + +set dcore gcc-core-${version}.tar.bz2 +#set dfort gcc-fortran-${version}.tar.bz2 +set dcxx gcc-g++-${version}.tar.bz2 +#set djava gcc-java-${version}.tar.bz2 +set dobjc gcc-objc-${version}.tar.bz2 +#set ecj ecj-4.5.jar +set dnewlib newlib-${newlibversion}.tar.gz + +master_sites gnu:gcc/gcc-${version}/:gcc \ + ftp://sources.redhat.com/pub/newlib/:newlib +distfiles ${dcore}:gcc \ + ${dcxx}:gcc \ + ${dobjc}:gcc \ + ${dnewlib}:newlib +dist_subdir gcc +checksums ${dcore} \ + sha1 9b766705f051ffb7321de58f247688b0ae661b98 \ + rmd160 bbe0b5127e584ad92516aff79bfa74ec30db2be4 \ + ${dcxx} \ + sha1 043aa427ede603196588c2a2737c22e0d241ceca \ + rmd160 857253c13eb4177512fc1bc6d797af28dde60eeb \ + ${dobjc} \ + sha1 ed6f640b62465999eb1439a4db6dda3c35b6d19d \ + rmd160 728e7ea55a04f28c6c3556c56213b2d9f023a0be \ + ${dnewlib} \ + sha1 b2269d30ce7b93b7c714b90ef2f40221c2df0fcd \ + rmd160 a28bd656ec895da0738dac3fb367851a2992d724 +use_bzip2 yes +worksrcdir build + +depends_lib port:${crossgcc-target}-binutils \ + port:gmp \ + port:mpfr \ + port:libiconv \ + port:libmpc + +extract.only ${dcore} ${dcxx} ${dobjc} +post-extract { + system -W ${workpath} "tar -xzf ${distpath}/newlib-${newlibversion}.tar.gz" + ln -s ${workpath}/newlib-${newlibversion}/newlib ${workpath}/gcc-${version}/ +} + +post-patch { + namespace eval crossgcc {} + + # Fix the info pages and related stuff. + # + # path: path to the doc directory (e.g. gas/doc/) + # makefile: path to Makefile.in (e.g. gas/doc/Makefile.in) + # name: name of the info page (e.g. as) + # suffix: suffix of the source page (texinfo or texi) + proc crossgcc::fixinfo { path makefile name suffix } { + global crossgcc-target workpath version + + # Fix the source + reinplace "s|setfilename ${name}.info|setfilename ${crossgcc-target}-${name}.info|g" \ + ${workpath}/gcc-${version}/${path}/${name}.${suffix} + reinplace "s|(${name})|(${crossgcc-target}-${name})|g" \ + ${workpath}/gcc-${version}/${path}/${name}.${suffix} + reinplace "s|@file{${name}}|@file{${crossgcc-target}-${name}}|g" \ + ${workpath}/gcc-${version}/${path}/${name}.${suffix} + + # Fix the Makefile + reinplace "s| ${name}.info| ${crossgcc-target}-${name}.info|g" \ + ${workpath}/gcc-${version}/${makefile} + reinplace "s|/${name}.info|/${crossgcc-target}-${name}.info|g" \ + ${workpath}/gcc-${version}/${makefile} + reinplace "s|^${name}.info|${crossgcc-target}-${name}.info|g" \ + ${workpath}/gcc-${version}/${makefile} + reinplace "s| ${name}.pod| ${crossgcc-target}-${name}.pod|g" \ + ${workpath}/gcc-${version}/${makefile} + reinplace "s|/${name}.pod|/${crossgcc-target}-${name}.pod|g" \ + ${workpath}/gcc-${version}/${makefile} + reinplace "s|^${name}.pod|${crossgcc-target}-${name}.pod|g" \ + ${workpath}/gcc-${version}/${makefile} + reinplace "s| ${name}.${suffix}| ${crossgcc-target}-${name}.${suffix}|g" \ + ${workpath}/gcc-${version}/${makefile} + reinplace "s|/${name}.${suffix}|/${crossgcc-target}-${name}.${suffix}|g" \ + ${workpath}/gcc-${version}/${makefile} + reinplace "s|^${name}.${suffix}|${crossgcc-target}-${name}.${suffix}|g" \ + ${workpath}/gcc-${version}/${makefile} + + # Rename the source + file rename ${workpath}/gcc-${version}/${path}/${name}.${suffix} \ + ${workpath}/gcc-${version}/${path}/${crossgcc-target}-${name}.${suffix} + + # Fix install-info's dir. + # (note: this may be effectless if there was no info dir to be fixed) + reinplace "s|--info-dir=\$(DESTDIR)\$(infodir)|--dir-file=\$(DESTDIR)\$(infodir)/${crossgcc-target}-gcc-dir|g" \ + ${workpath}/gcc-${version}/${makefile} + } + + # gcc/doc/cpp.texi + crossgcc::fixinfo gcc/doc/ gcc/Makefile.in cpp texi + + # gcc/doc/cppinternals.texi + crossgcc::fixinfo gcc/doc/ gcc/Makefile.in cppinternals texi + + # gcc/doc/gcc.texi + crossgcc::fixinfo gcc/doc/ gcc/Makefile.in gcc texi + + # gcc/doc/gccint.texi + crossgcc::fixinfo gcc/doc/ gcc/Makefile.in gccint texi + + # # gcc/fortran/gfortran.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 + + # libquadmath/libquadmath.info + crossgcc::fixinfo libquadmath libquadmath/Makefile.in libquadmath info +} + +# the generated compiler doesn't accept -arch +configure.cc_archflags +configure.cxx_archflags +configure.objc_archflags +configure.ld_archflags +platform darwin { + configure.args-append --build=${build_arch}-apple-darwin${os.major} +} + +pre-configure { + file mkdir ${worksrcpath} +} + +configure.cmd ../gcc-${version}/configure +configure.args --target=${crossgcc-target} \ + --enable-languages="c,objc,c++,obj-c++" \ + --infodir=${prefix}/share/info \ + --mandir=${prefix}/share/man \ + --datarootdir=${prefix}/share/${name} \ + --with-system-zlib \ + --disable-nls \ + --with-gmp=${prefix} \ + --with-mpfr=${prefix} \ + --with-mpc=${prefix} \ + --enable-stage1-checking \ + --enable-multilib + +# specific to ARM +configure.args-append \ + --enable-interwork + +configure.env-append \ + AR_FOR_TARGET=${crossgcc-target}-ar \ + AS_FOR_TARGET=${crossgcc-target}-as \ + LD_FOR_TARGET=${crossgcc-target}-ld \ + NM_FOR_TARGET=${crossgcc-target}-nm \ + OBJDUMP_FOR_TARGET=${crossgcc-target}-objdump \ + RANLIB_FOR_TARGET=${crossgcc-target}-ranlib \ + STRIP_FOR_TARGET=${crossgcc-target}-strip + +# http://trac.macports.org/ticket/29104 +if {${configure.compiler} == "llvm-gcc-4.2"} { + configure.compiler clang +} + +destroot.violate_mtree yes + +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 { + # Stuff we 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) + + # FSF propaganda (should already be there or would conflict) + file delete -force "${destroot}/${prefix}/share/man/man7" + + # (host) libiberty + file delete "${destroot}/${prefix}/lib/${build_arch}/libiberty.a" +} + +livecheck.type regex +livecheck.url http://gcc.gnu.org/releases.html +livecheck.regex {<tr><td><a href="gcc-.*/">GCC (.*)</a></td> <td>.*</td></tr>} Property changes on: trunk/dports/cross/arm-none-eabi-gcc/Portfile ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native