diff options
author | glarkin <glarkin@FreeBSD.org> | 2009-11-11 09:32:26 +0800 |
---|---|---|
committer | glarkin <glarkin@FreeBSD.org> | 2009-11-11 09:32:26 +0800 |
commit | c96067b4e0c8d25445d2d327aa3926b13e5f58d7 (patch) | |
tree | 6fe540932574e535757753edce43b98cf86381b2 /lang | |
parent | 7b55846e163ebcfdb25975966ff93cb28f9eeb92 (diff) | |
download | freebsd-ports-gnome-c96067b4e0c8d25445d2d327aa3926b13e5f58d7.tar.gz freebsd-ports-gnome-c96067b4e0c8d25445d2d327aa3926b13e5f58d7.tar.zst freebsd-ports-gnome-c96067b4e0c8d25445d2d327aa3926b13e5f58d7.zip |
The GNU Ada compiler system built from GCC 4.4.0.
Please add ${PREFIX}/bin/gcc44 to your PATH variable
before using this port.
WWW: http://gcc.gnu.org/
PR: ports/136359
Submitted by: M Rothwell <freebsd-ports@coreland.ath.cx> (maintainer)
Diffstat (limited to 'lang')
-rw-r--r-- | lang/Makefile | 1 | ||||
-rw-r--r-- | lang/gnat-gcc44/Makefile | 169 | ||||
-rw-r--r-- | lang/gnat-gcc44/distinfo | 15 | ||||
-rw-r--r-- | lang/gnat-gcc44/files/patch-gcc-interface-Makefile.in | 36 | ||||
-rw-r--r-- | lang/gnat-gcc44/files/patch-system-freebsd-x86_64.ads | 148 | ||||
-rw-r--r-- | lang/gnat-gcc44/pkg-descr | 6 | ||||
-rw-r--r-- | lang/gnat-gcc44/pkg-plist | 22 |
7 files changed, 397 insertions, 0 deletions
diff --git a/lang/Makefile b/lang/Makefile index 8b6f1fc7b835..417aa0ab97a6 100644 --- a/lang/Makefile +++ b/lang/Makefile @@ -107,6 +107,7 @@ SUBDIR += gnat-gcc41 SUBDIR += gnat-gcc42 SUBDIR += gnat-gcc43 + SUBDIR += gnat-gcc44 SUBDIR += gnat-glade SUBDIR += gnustep-base SUBDIR += gnustep-guile diff --git a/lang/gnat-gcc44/Makefile b/lang/gnat-gcc44/Makefile new file mode 100644 index 000000000000..965d2e5516e9 --- /dev/null +++ b/lang/gnat-gcc44/Makefile @@ -0,0 +1,169 @@ +# ex:ts=8 +# Ports collection makefile for: gnat-gcc +# Date created: 2009-07-04 +# Whom: <freebsd-ports@coreland.ath.cx> +# +# $FreeBSD$ +# + +PORTNAME= gnat-gcc +PORTVERSION= 4.4.0 +CATEGORIES= lang +MASTER_SITES= GCC/releases/gcc-${PORTVERSION} \ + http://coreland.ath.cx/data/code/gnatport/src/:boot +DISTFILES= gcc-core-${PORTVERSION}${EXTRACT_SUFX} \ + gcc-ada-${PORTVERSION}${EXTRACT_SUFX} \ + gcc-testsuite-${PORTVERSION}${EXTRACT_SUFX} \ + gnat-gcc44-boot-${boot_stamp}.tbz:boot + +MAINTAINER= freebsd-ports@coreland.ath.cx +COMMENT= The GNU Ada Compiler system + +LIB_DEPENDS= gmp.8:${PORTSDIR}/math/libgmp4 \ + mpfr.3:${PORTSDIR}/math/mpfr + +ONLY_FOR_ARCHS= i386 amd64 + +USE_BZIP2= yes +USE_GMAKE= yes +USE_ICONV= yes +USE_PERL5_BUILD= yes # Needed for man pages. +USE_BISON= build + +CONFLICTS= gcc-4.4.* +WRKSRC= ${WRKDIR}/build + +MAN1= cpp${gcc_suffix}.1 \ + gcc${gcc_suffix}.1 \ + gcov${gcc_suffix}.1 +MAN7= ${fsf_mans:S/$/${fsf_suffix}.7/} +NOMANCOMPRESS= yes # XXX 5-cur and releng4 problems? +INFO= gcc${gcc_suffix}/cpp \ + gcc${gcc_suffix}/cppinternals \ + gcc${gcc_suffix}/gcc \ + gcc${gcc_suffix}/gccinstall \ + gcc${gcc_suffix}/gccint \ + gcc${gcc_suffix}/gnat-style \ + gcc${gcc_suffix}/gnat_rm \ + gcc${gcc_suffix}/gnat_ugn \ + gcc${gcc_suffix}/libgomp + +LATEST_LINK= ${PORTNAME}${gcc_suffix} + +.include <bsd.port.pre.mk> + +# This port only works on 7.0 at the moment +.if ${OSVERSION} < 700000 || ${OSVERSION} >= 800000 +IGNORE= only works on 7.0 +.endif + +srcdir= ${WRKDIR}/gcc-${PORTVERSION} +gcc_suffix= 44 +fsf_mans= fsf-funding gfdl gpl +fsf_suffix= -${PORTNAME}${gcc_suffix} +targlib= ${PREFIX}/lib/gcc-${PORTVERSION} +gcc_link= ${PREFIX}/bin/gcc${gcc_suffix}/gcc +boot_stamp= ${ARCH}-freebsd-${OSREL:C/\.[0-9.]*//:S/8/7/} +check_target= check # XXX + +PATCH_WRKSRC= ${srcdir} + +GNU_CONFIGURE= yes +CONFIGURE_SCRIPT= ../${srcdir:C/${WRKDIR}//}/configure + +# XXX: This should be automated with GNU_CONFIGURE. For some reason, +# it isn't. + +.if ${ARCH} == "amd64" +CONFIGURE_TARGET= x86_64-portbld-freebsd${OSREL} +.else +CONFIGURE_TARGET= ${ARCH}-portbld-freebsd${OSREL} +.endif + +CONFIGURE_ARGS= --enable-languages="c,ada" \ + --disable-nls \ + --with-system-zlib \ + --with-libiconv-prefix=${LOCALBASE} \ + --program-suffix=${gcc_suffix} \ + --bindir=${PREFIX}/bin/gcc${gcc_suffix} \ + --libdir=${targlib} + +ALL_TARGET= bootstrap-lean +MAKE_ENV+= MAKEINFOFLAGS="--no-split" PTHREAD_LIBS=${PTHREAD_LIBS} + +PLIST_SUB= GCC_VER=${PORTVERSION} \ + GNU_HOST=${CONFIGURE_TARGET} \ + SUFFIX=${gcc_suffix} + +USE_LDCONFIG= ${targlib} + +# Prepare environment for the bootstrap compiler. +CC= ${WRKDIR}/boot/bin/gcc +build_env= PTHREAD_LIBS=${PTHREAD_LIBS} \ + PATH=${WRKDIR}/boot/bin:${WRKDIR}/boot/libexec:${PATH} + +CONFIGURE_ENV+= ${build_env} CC="${CC}" +MAKE_ENV+= ${build_env} + +pre-everything:: + @${ECHO_MSG} -n "Making GCC ${DISTNAME:S/^gcc-//} for ${OPSYS} " + @${ECHO_MSG} "${OSREL} target=${CONFIGURE_TARGET}" + +post-patch: + # Append ' [FreeBSD]' to the gcc version string. + ${REINPLACE_CMD} \ + -e 's|\(const char version_string.*\)";|\1 [FreeBSD]";|' \ + ${srcdir}/gcc/version.c + # New putenv(3) behavior in FreeBSD 7. + if [ ${OSVERSION} -ge 700050 ]; then \ + ${REINPLACE_CMD} -e 's/#if defined (__FreeBSD__) ||/#if/' \ + ${srcdir}/gcc/ada/env.c; \ + fi + +pre-configure: + cd ${srcdir} ; contrib/gcc_update --touch + ${RM} -f ${srcdir}/gcc/*/*.info* + ${MKDIR} ${CONFIGURE_WRKSRC} + +post-build: + @${ECHO_MSG} -n "Consider running 'make check' before 'make install', " + @${ECHO_MSG} -n "especially if you have not performed this build on " + @${ECHO_MSG} -n "-STABLE or -CURRENT. This assumes that you have " + @${ECHO_MSG} "dejagnu and autogen ports installed." + +check: build + cd ${WRKSRC} && \ + export RUNTESTFLAGS='--target_board ''unix{-pthread}''' && \ + ${GMAKE} -sk ${check_target} + +post-install: + # Create a gcc link. + ${RM} -f ${gcc_link} + ${LN} -s ${PREFIX}/bin/gcc${gcc_suffix}/gcc${gcc_suffix} ${gcc_link} + # This empty fortran directory is making trouble. + ${RM} -rf ${PREFIX}/lib/gcc-${PORTVERSION}/gcc/${CONFIGURE_TARGET}/${PORTVERSION}/finclude + # Man pages can only be generated if Perl >= 5.6 is installed; fake them otherwise. + for mp in ${_MANPAGES}; do \ + ${TEST} -e $${mp} || ${TOUCH} ${TOUCH_FLAGS} $${mp}; \ + done + # Version FSF funding and licensing manuals. XXX Fix before it happens! + for mp in ${fsf_mans}; do \ + ${MV} -f ${PREFIX}/man/man7/$${mp}.7 \ + ${PREFIX}/man/man7/$${mp}${fsf_suffix}.7; \ + done + # Prepare a temporary list of installed libraries and include files. + ${RM} -f ${WRKDIR}/PLIST.lib + for d in lib/gcc-${PORTVERSION} libexec/gcc/${CONFIGURE_TARGET}/${PORTVERSION}; do \ + cd ${PREFIX}; \ + if [ -d $${d} ]; then \ + ${FIND} $${d} -type f -o -type l >>${WRKDIR}/PLIST.lib; \ + ${FIND} $${d} -type d | ${SORT} -r | ${SED} -e 's/^/@dirrm /g' >>${WRKDIR}/PLIST.lib; \ + fi; \ + done + # Following directories should be removed on deinstal if empty. Add them to the temporary list. + ${ECHO_CMD} "@unexec ${RMDIR} %D/libexec/gcc/${CONFIGURE_TARGET} 2>/dev/null || true" >> ${WRKDIR}/PLIST.lib + ${ECHO_CMD} "@unexec ${RMDIR} %D/libexec/gcc 2>/dev/null || true" >> ${WRKDIR}/PLIST.lib + # Insert the temporary list in the packing list. + cd ${WRKDIR}; ${SED} -i -e "/PLIST.lib/ r PLIST.lib" ${TMPPLIST} + +.include <bsd.port.post.mk> diff --git a/lang/gnat-gcc44/distinfo b/lang/gnat-gcc44/distinfo new file mode 100644 index 000000000000..c851ce8f7956 --- /dev/null +++ b/lang/gnat-gcc44/distinfo @@ -0,0 +1,15 @@ +MD5 (gcc-core-4.4.0.tar.bz2) = c7e65c47fa94541f7f6cd0cf3d9c850b +SHA256 (gcc-core-4.4.0.tar.bz2) = 619fadd010408b1f7ef09b3ffb5af01e5a2604109d762fdc1c66f0dc898e0f5c +SIZE (gcc-core-4.4.0.tar.bz2) = 25722128 +MD5 (gcc-ada-4.4.0.tar.bz2) = fe387009d6fcd56fa4c11beaffe1a05f +SHA256 (gcc-ada-4.4.0.tar.bz2) = 39a81afa402bb866c1d33816ed8dfe5c5c50156ae651c035907f0b0470f3dcb6 +SIZE (gcc-ada-4.4.0.tar.bz2) = 5431582 +MD5 (gcc-testsuite-4.4.0.tar.bz2) = c18d53bf941614217a5748b9c98c7e22 +SHA256 (gcc-testsuite-4.4.0.tar.bz2) = c7d27efbbb4a7894318c9bf6f07bc7b0410d43294cb9dbdd4d95244e892456d7 +SIZE (gcc-testsuite-4.4.0.tar.bz2) = 5040536 +MD5 (gnat-gcc44-boot-i386-freebsd-7.tbz) = 16299a13b12f6bbe692cb371332e3cb3 +SHA256 (gnat-gcc44-boot-i386-freebsd-7.tbz) = cc1777f813c80c3ca3ca925ba90e82f3d39cf86f6a7b4f76eb0019ceece59f4d +SIZE (gnat-gcc44-boot-i386-freebsd-7.tbz) = 50867992 +MD5 (gnat-gcc44-boot-amd64-freebsd-7.tbz) = 1f0217035586dc6d802f0bd9d7e72d89 +SHA256 (gnat-gcc44-boot-amd64-freebsd-7.tbz) = 30d0d7ca1451c0452b1220080fdec702dd9a7474ba145f2e4c77d6b62a71397b +SIZE (gnat-gcc44-boot-amd64-freebsd-7.tbz) = 51010737 diff --git a/lang/gnat-gcc44/files/patch-gcc-interface-Makefile.in b/lang/gnat-gcc44/files/patch-gcc-interface-Makefile.in new file mode 100644 index 000000000000..621ae897e359 --- /dev/null +++ b/lang/gnat-gcc44/files/patch-gcc-interface-Makefile.in @@ -0,0 +1,36 @@ +--- gcc/ada/gcc-interface/Makefile.in.old 2009-07-05 14:26:09.000000000 +0100 ++++ gcc/ada/gcc-interface/Makefile.in 2009-07-05 14:27:11.000000000 +0100 +@@ -903,6 +903,33 @@ + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++ifeq ($(strip $(filter-out %x86_64 freebsd%,$(arch) $(osys))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads<a-intnam-freebsd.ads \ ++ a-numaux.adb<a-numaux-x86.adb \ ++ a-numaux.ads<a-numaux-x86.ads \ ++ g-bytswa.adb<g-bytswa-x86.adb \ ++ s-inmaop.adb<s-inmaop-posix.adb \ ++ s-intman.adb<s-intman-posix.adb \ ++ s-osinte.adb<s-osinte-freebsd.adb \ ++ s-osinte.ads<s-osinte-freebsd.ads \ ++ s-osprim.adb<s-osprim-posix.adb \ ++ s-taprop.adb<s-taprop-posix.adb \ ++ s-taspri.ads<s-taspri-posix.ads \ ++ s-tpopsp.adb<s-tpopsp-posix.adb \ ++ system.ads<system-freebsd-x86_64.ads ++ ++ TOOLS_TARGET_PAIRS = \ ++ mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb ++ GNATLIB_SHARED = gnatlib-shared-dual ++ ++ EH_MECHANISM=-gcc ++ THREADSLIB= -lpthread ++ GMEM_LIB = gmemlib ++ PREFIX_OBJS = $(PREFIX_REAL_OBJS) ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + ifeq ($(strip $(filter-out %86 kfreebsd%,$(arch) $(osys))),) + LIBGNAT_TARGET_PAIRS = \ + a-intnam.ads<a-intnam-freebsd.ads \ diff --git a/lang/gnat-gcc44/files/patch-system-freebsd-x86_64.ads b/lang/gnat-gcc44/files/patch-system-freebsd-x86_64.ads new file mode 100644 index 000000000000..75c8e38cc62b --- /dev/null +++ b/lang/gnat-gcc44/files/patch-system-freebsd-x86_64.ads @@ -0,0 +1,148 @@ +--- gcc/ada/system-freebsd-x86_64.ads.orig 1970-01-01 01:00:00.000000000 +0100 ++++ gcc/ada/system-freebsd-x86_64.ads 2009-07-05 14:19:37.000000000 +0100 +@@ -0,0 +1,145 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME COMPONENTS -- ++-- -- ++-- S Y S T E M -- ++-- -- ++-- S p e c -- ++-- (FreeBSD/x86_64 Version) -- ++-- -- ++-- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- ++-- -- ++-- This specification is derived from the Ada Reference Manual for use with -- ++-- GNAT. The copyright notice above, and the license provisions that follow -- ++-- apply solely to the contents of the part following the private keyword. -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 3, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. -- ++-- -- ++-- As a special exception under Section 7 of GPL version 3, you are granted -- ++-- additional permissions described in the GCC Runtime Library Exception, -- ++-- version 3.1, as published by the Free Software Foundation. -- ++-- -- ++-- You should have received a copy of the GNU General Public License and -- ++-- a copy of the GCC Runtime Library Exception along with this program; -- ++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- ++-- <http://www.gnu.org/licenses/>. -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++package System is ++ pragma Pure; ++ -- Note that we take advantage of the implementation permission to make ++ -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ++ -- 2005, this is Pure in any case (AI-362). ++ ++ type Name is (SYSTEM_NAME_GNAT); ++ System_Name : constant Name := SYSTEM_NAME_GNAT; ++ ++ -- System-Dependent Named Numbers ++ ++ Min_Int : constant := Long_Long_Integer'First; ++ Max_Int : constant := Long_Long_Integer'Last; ++ ++ Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size; ++ Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1; ++ ++ Max_Base_Digits : constant := Long_Long_Float'Digits; ++ Max_Digits : constant := Long_Long_Float'Digits; ++ ++ Max_Mantissa : constant := 63; ++ Fine_Delta : constant := 2.0 ** (-Max_Mantissa); ++ ++ Tick : constant := 0.000_001; ++ ++ -- Storage-related Declarations ++ ++ type Address is private; ++ pragma Preelaborable_Initialization (Address); ++ Null_Address : constant Address; ++ ++ Storage_Unit : constant := 8; ++ Word_Size : constant := 64; ++ Memory_Size : constant := 2 ** 64; ++ ++ -- Address comparison ++ ++ function "<" (Left, Right : Address) return Boolean; ++ function "<=" (Left, Right : Address) return Boolean; ++ function ">" (Left, Right : Address) return Boolean; ++ function ">=" (Left, Right : Address) return Boolean; ++ function "=" (Left, Right : Address) return Boolean; ++ ++ pragma Import (Intrinsic, "<"); ++ pragma Import (Intrinsic, "<="); ++ pragma Import (Intrinsic, ">"); ++ pragma Import (Intrinsic, ">="); ++ pragma Import (Intrinsic, "="); ++ ++ -- Other System-Dependent Declarations ++ ++ type Bit_Order is (High_Order_First, Low_Order_First); ++ Default_Bit_Order : constant Bit_Order := Low_Order_First; ++ pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning ++ ++ -- Priority-related Declarations (RM D.1) ++ ++ Max_Priority : constant Positive := 30; ++ Max_Interrupt_Priority : constant Positive := 31; ++ ++ subtype Any_Priority is Integer range 0 .. 31; ++ subtype Priority is Any_Priority range 0 .. 30; ++ subtype Interrupt_Priority is Any_Priority range 31 .. 31; ++ ++ Default_Priority : constant Priority := 15; ++ ++private ++ ++ type Address is mod Memory_Size; ++ Null_Address : constant Address := 0; ++ ++ -------------------------------------- ++ -- System Implementation Parameters -- ++ -------------------------------------- ++ ++ -- These parameters provide information about the target that is used ++ -- by the compiler. They are in the private part of System, where they ++ -- can be accessed using the special circuitry in the Targparm unit ++ -- whose source should be consulted for more detailed descriptions ++ -- of the individual switch values. ++ ++ Backend_Divide_Checks : constant Boolean := False; ++ Backend_Overflow_Checks : constant Boolean := False; ++ Command_Line_Args : constant Boolean := True; ++ Configurable_Run_Time : constant Boolean := False; ++ Denorm : constant Boolean := True; ++ Duration_32_Bits : constant Boolean := False; ++ Exit_Status_Supported : constant Boolean := True; ++ Fractional_Fixed_Ops : constant Boolean := False; ++ Frontend_Layout : constant Boolean := False; ++ Machine_Overflows : constant Boolean := False; ++ Machine_Rounds : constant Boolean := True; ++ Preallocated_Stacks : constant Boolean := False; ++ Signed_Zeros : constant Boolean := True; ++ Stack_Check_Default : constant Boolean := False; ++ Stack_Check_Probes : constant Boolean := True; ++ Stack_Check_Limits : constant Boolean := False; ++ Support_64_Bit_Divides : constant Boolean := True; ++ Support_Aggregates : constant Boolean := True; ++ Support_Composite_Assign : constant Boolean := True; ++ Support_Composite_Compare : constant Boolean := True; ++ Support_Long_Shifts : constant Boolean := True; ++ Always_Compatible_Rep : constant Boolean := False; ++ Suppress_Standard_Library : constant Boolean := False; ++ Use_Ada_Main_Program_Name : constant Boolean := False; ++ ZCX_By_Default : constant Boolean := True; ++ GCC_ZCX_Support : constant Boolean := True; ++ ++end System; diff --git a/lang/gnat-gcc44/pkg-descr b/lang/gnat-gcc44/pkg-descr new file mode 100644 index 000000000000..22be8524c525 --- /dev/null +++ b/lang/gnat-gcc44/pkg-descr @@ -0,0 +1,6 @@ +The GNU Ada compiler system built from GCC 4.4.0. + +Please add ${PREFIX}/bin/gcc44 to your PATH variable +before using this port. + +WWW: http://gcc.gnu.org/ diff --git a/lang/gnat-gcc44/pkg-plist b/lang/gnat-gcc44/pkg-plist new file mode 100644 index 000000000000..aa847ce38dca --- /dev/null +++ b/lang/gnat-gcc44/pkg-plist @@ -0,0 +1,22 @@ +bin/gcc%%SUFFIX%%/cpp%%SUFFIX%% +bin/gcc%%SUFFIX%%/gcc +bin/gcc%%SUFFIX%%/gcc%%SUFFIX%% +bin/gcc%%SUFFIX%%/gccbug%%SUFFIX%% +bin/gcc%%SUFFIX%%/gcov%%SUFFIX%% +bin/gcc%%SUFFIX%%/gnat +bin/gcc%%SUFFIX%%/gnatbind +bin/gcc%%SUFFIX%%/gnatchop +bin/gcc%%SUFFIX%%/gnatclean +bin/gcc%%SUFFIX%%/gnatfind +bin/gcc%%SUFFIX%%/gnatkr +bin/gcc%%SUFFIX%%/gnatlink +bin/gcc%%SUFFIX%%/gnatls +bin/gcc%%SUFFIX%%/gnatmake +bin/gcc%%SUFFIX%%/gnatname +bin/gcc%%SUFFIX%%/gnatprep +bin/gcc%%SUFFIX%%/gnatxref +bin/gcc%%SUFFIX%%/%%GNU_HOST%%-gcc-%%GCC_VER%% +bin/gcc%%SUFFIX%%/%%GNU_HOST%%-gcc%%SUFFIX%% +info/gcc%%SUFFIX%%/dir +@dirrm bin/gcc%%SUFFIX%% +@comment Insert PLIST.lib here |