Add new source package: lang/gnat_util

Several tools are built with GNAT sources and they have to be the
exact source that built the Ada compiler that builds the tool.  To
ensure this, a common trick to the create a library with those sources
and link the library instead of using the embedded source files which
never match the FSF compiler properly.  The first tool this new
gcc 4.9.0-based library will be used for is devel/gprbuild-aux
This commit is contained in:
marino 2014-04-30 16:25:20 +00:00
parent a4768e28c3
commit 826bcd6c30
10 changed files with 392 additions and 1 deletions

View file

@ -1,4 +1,4 @@
# $NetBSD: Makefile,v 1.374 2014/04/22 20:50:49 ryoon Exp $
# $NetBSD: Makefile,v 1.375 2014/04/30 16:25:20 marino Exp $
#
COMMENT= Programming languages
@ -73,6 +73,7 @@ SUBDIR+= ghc
SUBDIR+= ghc-bootstrap
SUBDIR+= ghc7
SUBDIR+= gnat-aux
SUBDIR+= gnat_util
SUBDIR+= go
SUBDIR+= gpc
SUBDIR+= gprolog

2
lang/gnat_util/DESCR Normal file
View file

@ -0,0 +1,2 @@
Gnat_Util is a library unit consisting of GNAT sources that are used by
different tools such as ASIS, GNATCOLL and Gprbuild.

33
lang/gnat_util/Makefile Normal file
View file

@ -0,0 +1,33 @@
# $NetBSD: Makefile,v 1.1 2014/04/30 16:25:20 marino Exp $
PKGNAME= gnat_util-${SNAPSHOT}
CATEGORIES= lang
MASTER_SITES= ${MASTER_SITE_GNU:=gcc/gcc-${GCC_VERSION}/}
DISTFILES= gcc-${GCC_VERSION}.tar.bz2
MAINTAINER= draco@marino.st
HOMEPAGE= http://www.dragonlace.net/
COMMENT= Library used to build GNAT source-based tools
LICENSE= gnu-gpl-v3 AND gnu-lgpl-v3
.include "../../mk/bsd.prefs.mk"
.include "../../lang/gcc-aux/Makefile.version"
.include "Makefile.sources"
MAKE_ENV= MAKEOBJDIR=${WRKSRC}/obj
USE_LANGUAGES= c ada
# Automatic package list generation
GENERATE_PLIST= cd ${DESTDIR}${PREFIX};
GENERATE_PLIST+= ${FIND} * \( -type f -or -type l \) | ${SORT} -dr;
post-extract:
${MKDIR} ${WRKSRC}/obj
.for f in Makefile gnat_util.gpr sdefault_adb.gnat_util
${CP} ${FILESDIR}/${f} ${WRKSRC}/
.endfor
.for f in ${GNAT_SRCS}
${CP} ${WRKDIR}/gcc-${GCC_VERSION}/gcc/ada/${f} ${WRKSRC}/
.endfor
.include "../../mk/bsd.pkg.mk"

View file

@ -0,0 +1,162 @@
# $NetBSD: Makefile.sources,v 1.1 2014/04/30 16:25:20 marino Exp $
GNAT_SRCS= \
ali-util.adb \
ali-util.ads \
ali.adb \
ali.ads \
alloc.ads \
aspects.adb \
aspects.ads \
atree.adb \
atree.ads \
binderr.adb \
binderr.ads \
butil.adb \
butil.ads \
casing.adb \
casing.ads \
csets.adb \
csets.ads \
debug.adb \
debug.ads \
einfo.adb \
einfo.ads \
elists.adb \
elists.ads \
err_vars.ads \
errout.adb \
errout.ads \
erroutc.adb \
erroutc.ads \
errutil.adb \
errutil.ads \
fmap.adb \
fmap.ads \
fname-uf.adb \
fname-uf.ads \
fname.adb \
fname.ads \
gnatvsn.adb \
gnatvsn.ads \
hostparm.ads \
krunch.adb \
krunch.ads \
lib-list.adb \
lib-sort.adb \
lib.adb \
lib.ads \
link.c \
makeutl.adb \
makeutl.ads \
mlib-fil.adb \
mlib-fil.ads \
mlib-tgt-specific.adb \
mlib-tgt-specific.ads \
mlib-tgt-vms_common.adb \
mlib-tgt-vms_common.ads \
mlib-tgt.adb \
mlib-tgt.ads \
mlib-utl.adb \
mlib-utl.ads \
mlib.adb \
mlib.ads \
namet.adb \
namet.ads \
nlists.adb \
nlists.ads \
opt.adb \
opt.ads \
osint.adb \
osint.ads \
output.adb \
output.ads \
prj-attr-pm.adb \
prj-attr-pm.ads \
prj-attr.adb \
prj-attr.ads \
prj-com.ads \
prj-conf.adb \
prj-conf.ads \
prj-dect.adb \
prj-dect.ads \
prj-env.adb \
prj-env.ads \
prj-err.adb \
prj-err.ads \
prj-ext.adb \
prj-ext.ads \
prj-nmsc.adb \
prj-nmsc.ads \
prj-part.adb \
prj-part.ads \
prj-pp.adb \
prj-pp.ads \
prj-proc.adb \
prj-proc.ads \
prj-strt.adb \
prj-strt.ads \
prj-tree.adb \
prj-tree.ads \
prj-util.adb \
prj-util.ads \
prj.adb \
prj.ads \
repinfo.adb \
repinfo.ads \
restrict.adb \
restrict.ads \
rident.ads \
scans.adb \
scans.ads \
scng.adb \
scng.ads \
sdefault.ads \
sem_aux.adb \
sem_aux.ads \
sinfo.adb \
sinfo.ads \
sinput-c.adb \
sinput-c.ads \
sinput-p.adb \
sinput-p.ads \
sinput.adb \
sinput.ads \
snames.adb-tmpl \
snames.ads-tmpl \
snames.h-tmpl \
stand.adb \
stand.ads \
stringt.adb \
stringt.ads \
styleg.adb \
styleg.ads \
stylesw.adb \
stylesw.ads \
switch-m.adb \
switch-m.ads \
switch.adb \
switch.ads \
table.adb \
table.ads \
targparm.adb \
targparm.ads \
tempdir.adb \
tempdir.ads \
tree_in.adb \
tree_in.ads \
tree_io.adb \
tree_io.ads \
types.adb \
types.ads \
uintp.adb \
uintp.ads \
uname.adb \
uname.ads \
urealp.adb \
urealp.ads \
widechar.adb \
widechar.ads \
xsnamest.adb \
xutil.adb \
xutil.ads

View file

@ -0,0 +1,13 @@
# $NetBSD: buildlink3.mk,v 1.1 2014/04/30 16:25:20 marino Exp $
BUILDLINK_TREE+= gnat_util
.if !defined(GNAT_UTIL_BUILDLINK3_MK)
GNAT_UTIL_BUILDLINK3_MK:=
BUILDLINK_API_DEPENDS.gnat_util+= gnat_util>=20140422
BUILDLINK_PKGSRCDIR.gnat_util?= ../../lang/gnat_util
.endif
BUILDLINK_TREE+= -gnat_util

6
lang/gnat_util/distinfo Normal file
View file

@ -0,0 +1,6 @@
$NetBSD: distinfo,v 1.1 2014/04/30 16:25:20 marino Exp $
SHA1 (gcc-4.9.0.tar.bz2) = fbde8eb49f2b9e6961a870887cf7337d31cd4917
RMD160 (gcc-4.9.0.tar.bz2) = ac561660744127fa009ae75202d1ac81ac8d7668
Size (gcc-4.9.0.tar.bz2) = 89677407 bytes
SHA1 (patch-gnatvsn.adb) = 1e16dba2500abf090b05484567cc0f1a2327c350

View file

@ -0,0 +1,68 @@
# To avoid a cirular dependency with GPRBuild, this custom BSD Makefile is
# used instead of the provided asis.gpr file.
CP=cp -p
MKDIR=mkdir -p
SRC=gen_src
ADA_FLAGS= -O2 -gnatn -gnatws -gnat05
C_FLAGS= -O2
ADB_SRCS!= cd ${.CURDIR} && ls *.adb | sort -r
GEN_SRCS= sdefault.adb snames.adb xsnamest.adb
ADS_SRCS= rident.ads hostparm.ads err_vars.ads alloc.ads prj-com.ads
LIB_SRCS+= link.c ${GEN_SRCS} ${ADS_SRCS} ${ADB_SRCS:Nlib-*.adb}
LIB_OBJS= ${LIB_SRCS:R:S/$/.o/}
.PHONY: all
.PHONY: generate_sources
.PHONY: libgnat_util.a
.PHONY: install
.PHONY: clean
all: libgnat_util.a
generate_sources:
(cd ${.CURDIR} && ${MKDIR} ${SRC} lib)
${CP} ${.CURDIR}/sdefault_adb.gnat_util ${.CURDIR}/${SRC}/sdefault.adb
(cd ${.CURDIR} && ${CP} \
xsnamest.adb xutil.* snames.adb-tmpl snames.ads-tmpl \
snames.h-tmpl ${SRC})
(cd ${.CURDIR}/${SRC} && \
gnatmake -gnatf -gnatwae -gnatyg -gnatyS xsnamest && \
./xsnamest && mv snames.ns snames.ads && mv snames.nb snames.adb)
${LIB_OBJS}: generate_sources
install:
${MKDIR} ${DESTDIR}${PREFIX}/lib/gnat
${MKDIR} ${DESTDIR}${PREFIX}/lib/gnat_util
${MKDIR} ${DESTDIR}${PREFIX}/include/gnat_util
${BSD_INSTALL_DATA} ../gnat_util.gpr ${DESTDIR}${PREFIX}/lib/gnat
find ../lib -type f -exec $(BSD_INSTALL_DATA) {} \
${DESTDIR}${PREFIX}/lib/gnat_util \;
find ../* -name \*\.ad\[bs\] -exec $(BSD_INSTALL_DATA) {} \
${DESTDIR}${PREFIX}/include/gnat_util \;
clean:
rm -f ${.OBJDIR}/*
rm -f ${.CURDIR}/lib/*
rm -rf ${.CURDIR}/${SRC}
.SUFFIXES: .adb .ads .c .o
.adb.o:
ada ${ADA_FLAGS} -I../ -I../${SRC} -c ../${.TARGET:R}.adb
.c.o:
${CC} ${C_FLAGS} -c ../${.TARGET:R}.c
${ADS_SRCS:R:S/$/.o/}:
ada ${ADA_FLAGS} -I../${SRC} -c ../${.TARGET:R}.ads
${GEN_SRCS:R:S/$/.o/}:
ada ${ADA_FLAGS} -I../ -c ../${SRC}/${.TARGET:R}.adb
libgnat_util.a: ${LIB_OBJS}
ar cq ${.TARGET} `lorder ${LIB_OBJS} | tsort -q`
ranlib ${.TARGET}
mv ${.TARGET} *.ali ../lib

View file

@ -0,0 +1,7 @@
project Gnat_Util is
for Languages use ("ada", "C");
for Library_Name use "gnat_util";
for Library_Dir use "../gnat_util";
for Source_Dirs use ("../../include/gnat_util");
for Externally_Built use "true";
end Gnat_Util;

View file

@ -0,0 +1,59 @@
------------------------------------------------------------------------------
-- --
-- GNAT COMPILER COMPONENTS --
-- --
-- S D E F A U L T --
-- --
-- B o d y --
-- --
-- Copyright (C) 1992-2007, Free Software Foundation, Inc. --
-- --
-- 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. --
-- --
------------------------------------------------------------------------------
-- This is a dummy version of the body of Sdefault, used by gnat_util. It gets
-- copied to sdefault.adb by Makefile.gnat_util.
package body Sdefault is
Target : constant String_Ptr := new String'("no target");
function Include_Dir_Default_Name return String_Ptr is
begin
return null;
end Include_Dir_Default_Name;
function Object_Dir_Default_Name return String_Ptr is
begin
return null;
end Object_Dir_Default_Name;
function Target_Name return String_Ptr is
begin
return Target;
end Target_Name;
function Search_Dir_Prefix return String_Ptr is
begin
return null;
end Search_Dir_Prefix;
end Sdefault;

View file

@ -0,0 +1,40 @@
$NetBSD: patch-gnatvsn.adb,v 1.1 2014/04/30 16:25:21 marino Exp $
version_string symbol won't exist, just use the static version
--- gnatvsn.adb.orig 2013-07-16 03:35:21.000000000 +0000
+++ gnatvsn.adb
@@ -53,32 +53,13 @@ package body Gnatvsn is
" FOR A PARTICULAR PURPOSE.";
end Gnat_Free_Software;
- type char_array is array (Natural range <>) of aliased Character;
- Version_String : char_array (0 .. Ver_Len_Max - 1);
- -- Import the C string defined in the (language-independent) source file
- -- version.c using the zero-based convention of the C language.
- -- The size is not the real one, which does not matter since we will
- -- check for the nul character in Gnat_Version_String.
- pragma Import (C, Version_String, "version_string");
-
-------------------------
-- Gnat_Version_String --
-------------------------
function Gnat_Version_String return String is
- S : String (1 .. Ver_Len_Max);
- Pos : Natural := 0;
begin
- loop
- exit when Version_String (Pos) = ASCII.NUL;
-
- S (Pos + 1) := Version_String (Pos);
- Pos := Pos + 1;
-
- exit when Pos = Ver_Len_Max;
- end loop;
-
- return S (1 .. Pos);
+ Return Gnat_Static_Version_String;
end Gnat_Version_String;
end Gnatvsn;