aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Larkin <glarkin@FreeBSD.org>2009-11-11 01:32:26 +0000
committerGreg Larkin <glarkin@FreeBSD.org>2009-11-11 01:32:26 +0000
commit8c1019b987d87507693756beaca4a95f115cb5f4 (patch)
tree7efa7622fd7257f54f17345e3d25c8dfc9e2d876
parentea8e9c82987667327379f4697f268e35d5bb3c9e (diff)
downloadports-8c1019b987d87507693756beaca4a95f115cb5f4.tar.gz
ports-8c1019b987d87507693756beaca4a95f115cb5f4.zip
Notes
-rw-r--r--lang/Makefile1
-rw-r--r--lang/gnat-gcc44/Makefile169
-rw-r--r--lang/gnat-gcc44/distinfo15
-rw-r--r--lang/gnat-gcc44/files/patch-gcc-interface-Makefile.in36
-rw-r--r--lang/gnat-gcc44/files/patch-system-freebsd-x86_64.ads148
-rw-r--r--lang/gnat-gcc44/pkg-descr6
-rw-r--r--lang/gnat-gcc44/pkg-plist22
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