|
|||||||||
Sunday the 20th of July, 2008 |
|||||||||
arm-elf-gcc most recent diff
Scroll down toward the bottom of the page to get installation instructions for arm-elf-gcc. The raw portfile for arm-elf-gcc 4.1.1 is located here: http://arm-elf-gcc.darwinports.com/dports/cross/arm-elf-gcc/Portfile Find related portfiles with the unique DarwinPorts.com search feature. Check for any related Fink projects here: pdb.finkproject.org/pdb/package.php/arm-elf-gcc # $Id: Portfile 30687 2007-11-04 07:27:28Z pguyot PortSystem 1.0 Name: arm-elf-gcc Version: 4.1.1 # Parameters for this port. set newlibversion 1.14.0 set crossgcc-target arm-elf set default-languages --enable-languages="c,c++,objc" Description: gcc cross-compilers for arm-elf, with newlib runtime library. Long Description: gnu compilers collection (including c++, fortran and objc) for arm-elf, with newlib runtime library. Homepage: http://gcc.gnu.org/ Platform: darwin Category: cross devel Maintainers: pguyot 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 distfiles gcc-${version}.tar.bz2:gcc newlib-${newlibversion}.tar.gz:newlib worksrcdir gcc-${version} checksums gcc-${version}.tar.bz2 md5 ad9f97a4d04982ccf4fd67cb464879f3 sha1 a398b95d38b6e35f4c4e02c34c0a3bff79811f8f rmd160 0edeac242d900b075a7e36796380492b5b3c8564 newlib-${newlibversion}.tar.gz md5 3fa663f131b355d3adb24ead4df678f2 sha1 edc50f5cda734b50c5431a2b8d1e579ac82ce3f9 rmd160 6f2b3f32759925142421ddc069229eff857dd106 patchfiles patch-gcc-config-arm-t-arm-elf.diff # All cross ports violate the mtree layout. destroot.violate_mtree yes # Download everything to gcc/ dist_subdir gcc 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 depends_build bin:msgfmt:gettext # 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 "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] proc multilibpatch_enable { options dirnames exceptions matches } { global worksrcpath system "echo 'MULTILIB_OPTIONS += ${options}' >> ${worksrcpath}/gcc/config/arm/t-arm-elf" system "echo 'MULTILIB_DIRNAMES += ${dirnames}' >> ${worksrcpath}/gcc/config/arm/t-arm-elf" system "echo 'MULTILIB_EXCEPTIONS += ${exceptions}' >> ${worksrcpath}/gcc/config/arm/t-arm-elf" system "echo 'MULTILIB_MATCHES += ${matches}' >> ${worksrcpath}/gcc/config/arm/t-arm-elf" } Variant: be { # Big endian multilib support post-patch { multilibpatch_enable "mlittle-endian/mbig-endian" "le be" "" "mbig-endian=mbe mlittle-endian=mle" } } Variant: ep9312 { # ep9312 multilib support post-patch { multilibpatch_enable "mcpu=ep9312" "ep9312" "*mthumb/*mcpu=ep9312* *mcpu=ep9312*/*mhard-float*" "" } } Variant: fpu { # fpu multilib support post-patch { multilibpatch_enable "mhard-float/msoft-float" "fpu soft" "*mthumb/*mhard-float*" "" } } Variant: interwork { # thumb interwork multilib support post-patch { multilibpatch_enable "mno-thumb-interwork/mthumb-interwork" "normal interwork" "" "" } } Variant: under { # leading underscore multilib support post-patch { multilibpatch_enable "fno-leading-underscore/fleading-underscore" "elf under" "" "" } } Variant: nofmult { # no fpu multiplication multilib support post-patch { multilibpatch_enable "mcpu=arm7" "nofmult" "*mthumb*/*mcpu=arm7*" "" } } # Build in a different directory, as advised in the README file. 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 --with-newlib --enable-multilib --enable-biendian --with-gxx-include-dir=${prefix}/${crossgcc-target}/include/c++/${version}/ ${default-languages} build.dir ${workpath}/build build.args ${environment} destroot.args ${environment} 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 souce page (texinfo or texi) proc crossgcc::fixinfo { path makefile name suffix } { global crossgcc-target worksrcpath # Fix the source reinplace "s|setfilename ${name}.info|setfilename ${crossgcc-target}-${name}.info|g" ${worksrcpath}/${path}/${name}.${suffix} reinplace "s|(${name})|(${crossgcc-target}-${name})|g" ${worksrcpath}/${path}/${name}.${suffix} reinplace "s| # Fix the Makefile 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}.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} ${worksrcpath}/${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" "${worksrcpath}/${makefile}" } # Fix the gettext files and related stuff. # # module: name of the module (e.g. gas) proc crossgcc::fixgettext { module } { global crossgcc-target worksrcpath if { [ file exists "${worksrcpath}/${module}/Makefile.in" ] } { reinplace "s| } if { [ file exists "${worksrcpath}/${module}/doc/Makefile.in" ] } { reinplace "s| } if { [ file exists "${worksrcpath}/${module}/po/Make-in" ] } { reinplace "s| } } # 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/f/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 # fastjar/fastjar.texi crossgcc::fixinfo fastjar/ fastjar/Makefile.in fastjar texi # gcc/doc/gccinstall.info crossgcc::fixinfo gcc/doc/ gcc/Makefile.in gccinstall info # gettext stuff. crossgcc::fixgettext gcc crossgcc::fixgettext fastjar 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) # aliases for locales (should be on the system) file delete "${destroot}/${prefix}/share/locale/locale.alias" # FSF propaganda (should already be there or would conflict) file delete -force "${destroot}/${prefix}/share/man/man7" # (host) libiberty file delete "${destroot}/${prefix}/lib/libiberty.a" # 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). 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 livecheck.url http://gcc.gnu.org/releases.html livecheck.regex { GCC (.*) | .* | If you haven't already installed Darwin Ports, you can find easy instructions for doing so at the main Darwin Ports page. Once Darwin Ports has been installed, in a terminal window and while online, type the following and hit return:
% cd /opt/local/bin/portslocation/dports/arm-elf-gccYou will then be prompted for your root password, which you should enter. You may have to wait for a few minutes while the software is retrieved from the network and installed for you. Y ou should see something that looks similar to: Make sure that you do not close the terminal window while Darwin Ports is working. Once the software has been installed, you can find further information about using arm-elf-gcc with these commands: % man arm-elf-gcc Where to find more information:
|
![]() |
![]() Digg arm-elf-gcc on MacOSX
Other Helpful SitesMacOSForgeDebian Packages MacPorts - SVN Freshports - FreeBSD Fink Package List RPM for MacOSX Port Categories
aqua
archivers audio benchmarks cad comms cross databases devel editors emulators games genealogy gnome gnustep graphics irc java kde lang math multimedia net news palm perl python ruby science security shells sysutils textproc www x11 xfce zope
Current CVS DownloadsDarwin Ports Current :nightly CVS snapshot OpenDarwin CVSWeb SSH Key Gen |
|||||
| |




