pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
devel/gnat-glade: Add package 6.0.1
Module Name: pkgsrc-wip
Committed By: Dmytro Kazankov <dmytro.kazankov%gmail.com@localhost>
Pushed By: dkazankov
Date: Thu Feb 13 23:35:09 2025 +0200
Changeset: 28e44d772fb4123c28fdff21da63cda5c64acb42
Added Files:
gnat-glade/COMMIT_MSG
gnat-glade/DESCR
gnat-glade/Makefile
gnat-glade/PLIST
gnat-glade/buildlink3.mk
gnat-glade/distinfo
gnat-glade/patches/patch-Dist_Makefile.in
gnat-glade/patches/patch-Dist_config.sdefault
gnat-glade/patches/patch-Dist_gnatdist-config.in
gnat-glade/patches/patch-Dist_xe.adb
gnat-glade/patches/patch-Dist_xe__back-garlic.adb
gnat-glade/patches/patch-Dist_xe__back-polyorb.adb
gnat-glade/patches/patch-Dist_xe__back.adb
gnat-glade/patches/patch-Dist_xe__front.adb
gnat-glade/patches/patch-Dist_xe__main.adb
gnat-glade/patches/patch-Dist_xe__names.ads
gnat-glade/patches/patch-Dist_xe__parse.adb
gnat-glade/patches/patch-Dist_xe__scan.adb
gnat-glade/patches/patch-Dist_xe__stdcnf.adb
gnat-glade/patches/patch-Dist_xe__usage.adb
gnat-glade/patches/patch-Dist_xe__utils.adb
gnat-glade/patches/patch-Examples_MultiPro_s-gaprxy.adb
gnat-glade/patches/patch-Garlic_Makefile.in
gnat-glade/patches/patch-Garlic_garlic.gpr
gnat-glade/patches/patch-Garlic_isthrbio.adb
gnat-glade/patches/patch-Garlic_isthrbio.gpr
gnat-glade/patches/patch-Garlic_s-dsaser.ads
gnat-glade/patches/patch-Garlic_s-gafizi.adb
gnat-glade/patches/patch-Garlic_s-gaprre.adb
gnat-glade/patches/patch-Garlic_s-gaprre.ads
gnat-glade/patches/patch-Garlic_s-gaprtc.adb
gnat-glade/patches/patch-Garlic_s-garexc.adb
gnat-glade/patches/patch-Garlic_s-garsto.adb
gnat-glade/patches/patch-Garlic_s-garstr.ads
gnat-glade/patches/patch-Garlic_s-gartab.adb
gnat-glade/patches/patch-Garlic_s-gartas.adb
gnat-glade/patches/patch-Garlic_s-garuni.adb
gnat-glade/patches/patch-Garlic_s-gastdf.adb
gnat-glade/patches/patch-Garlic_s-gastha.adb
gnat-glade/patches/patch-Garlic_s-gptcse.adb
gnat-glade/patches/patch-Garlic_s-parint.adb
gnat-glade/patches/patch-Garlic_s-parint.ads
gnat-glade/patches/patch-Garlic_s-rpc.adb
gnat-glade/patches/patch-Garlic_s-rpcser.adb
gnat-glade/patches/patch-Garlic_s-shasto.adb
gnat-glade/patches/patch-Garlic_s-shasto.ads
gnat-glade/patches/patch-Garlic_s-stratt.adb
gnat-glade/patches/patch-Garlic_select.c
gnat-glade/patches/patch-configure
Log Message:
devel/gnat-glade: Add package 6.0.1
GLADE provides an up to date implementations of Annex E (Distributed Systems)
of the ISO standard ISO/IEC 8652:1995/COR1:2000 for GNAT
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=28e44d772fb4123c28fdff21da63cda5c64acb42
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
gnat-glade/COMMIT_MSG | 4 +
gnat-glade/DESCR | 4 +
gnat-glade/Makefile | 36 +
gnat-glade/PLIST | 135 ++
gnat-glade/buildlink3.mk | 17 +
gnat-glade/distinfo | 48 +
gnat-glade/patches/patch-Dist_Makefile.in | 29 +
gnat-glade/patches/patch-Dist_config.sdefault | 16 +
gnat-glade/patches/patch-Dist_gnatdist-config.in | 172 ++
gnat-glade/patches/patch-Dist_xe.adb | 16 +
gnat-glade/patches/patch-Dist_xe__back-garlic.adb | 16 +
gnat-glade/patches/patch-Dist_xe__back-polyorb.adb | 16 +
gnat-glade/patches/patch-Dist_xe__back.adb | 25 +
gnat-glade/patches/patch-Dist_xe__front.adb | 17 +
gnat-glade/patches/patch-Dist_xe__main.adb | 29 +
gnat-glade/patches/patch-Dist_xe__names.ads | 16 +
gnat-glade/patches/patch-Dist_xe__parse.adb | 53 +
gnat-glade/patches/patch-Dist_xe__scan.adb | 26 +
gnat-glade/patches/patch-Dist_xe__stdcnf.adb | 24 +
gnat-glade/patches/patch-Dist_xe__usage.adb | 15 +
gnat-glade/patches/patch-Dist_xe__utils.adb | 62 +
.../patches/patch-Examples_MultiPro_s-gaprxy.adb | 15 +
gnat-glade/patches/patch-Garlic_Makefile.in | 242 +++
gnat-glade/patches/patch-Garlic_garlic.gpr | 44 +
gnat-glade/patches/patch-Garlic_isthrbio.adb | 15 +
gnat-glade/patches/patch-Garlic_isthrbio.gpr | 17 +
gnat-glade/patches/patch-Garlic_s-dsaser.ads | 63 +
gnat-glade/patches/patch-Garlic_s-gafizi.adb | 15 +
gnat-glade/patches/patch-Garlic_s-gaprre.adb | 15 +
gnat-glade/patches/patch-Garlic_s-gaprre.ads | 15 +
gnat-glade/patches/patch-Garlic_s-gaprtc.adb | 49 +
gnat-glade/patches/patch-Garlic_s-garexc.adb | 16 +
gnat-glade/patches/patch-Garlic_s-garsto.adb | 64 +
gnat-glade/patches/patch-Garlic_s-garstr.ads | 19 +
gnat-glade/patches/patch-Garlic_s-gartab.adb | 16 +
gnat-glade/patches/patch-Garlic_s-gartas.adb | 15 +
gnat-glade/patches/patch-Garlic_s-garuni.adb | 16 +
gnat-glade/patches/patch-Garlic_s-gastdf.adb | 15 +
gnat-glade/patches/patch-Garlic_s-gastha.adb | 15 +
gnat-glade/patches/patch-Garlic_s-gptcse.adb | 15 +
gnat-glade/patches/patch-Garlic_s-parint.adb | 61 +
gnat-glade/patches/patch-Garlic_s-parint.ads | 16 +
gnat-glade/patches/patch-Garlic_s-rpc.adb | 18 +
gnat-glade/patches/patch-Garlic_s-rpcser.adb | 15 +
gnat-glade/patches/patch-Garlic_s-shasto.adb | 130 ++
gnat-glade/patches/patch-Garlic_s-shasto.ads | 213 ++
gnat-glade/patches/patch-Garlic_s-stratt.adb | 2025 ++++++++++++++++++++
gnat-glade/patches/patch-Garlic_select.c | 14 +
gnat-glade/patches/patch-configure | 84 +
49 files changed, 4033 insertions(+)
diffs:
diff --git a/gnat-glade/COMMIT_MSG b/gnat-glade/COMMIT_MSG
new file mode 100644
index 0000000000..da0e8ec5ae
--- /dev/null
+++ b/gnat-glade/COMMIT_MSG
@@ -0,0 +1,4 @@
+devel/gnat-glade: Add package 6.0.1
+
+GLADE provides an up to date implementations of Annex E (Distributed Systems)
+of the ISO standard ISO/IEC 8652:1995/COR1:2000 for GNAT
diff --git a/gnat-glade/DESCR b/gnat-glade/DESCR
new file mode 100644
index 0000000000..8a2f8744aa
--- /dev/null
+++ b/gnat-glade/DESCR
@@ -0,0 +1,4 @@
+GNAT Library for Ada Distributed Environment
+
+Provides implementations of Annex E (Distributed Systems)
+of the ISO standard ISO/IEC 8652:1995/COR1:2000 for GNAT.
\ No newline at end of file
diff --git a/gnat-glade/Makefile b/gnat-glade/Makefile
new file mode 100644
index 0000000000..1208067273
--- /dev/null
+++ b/gnat-glade/Makefile
@@ -0,0 +1,36 @@
+# $NetBSD: Makefile,v 1.0 2024/12/05 14:00:00 dkazankov Exp $
+
+PKGNAME= gnat-glade-6.0.1
+CATEGORIES= devel
+MAINTAINER= pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE= https://sourceforge.net/projects/gnat-glade/
+COMMENT= GNAT Library for Ada Distributed Environment
+LICENSE= gnu-gpl-v2
+
+DISTNAME= gnat-glade-code-r135-trunk
+DISTFILES= ${DISTNAME}.zip
+
+SITES.${DISTNAME}.zip= -https://sourceforge.net/code-snapshots/svn/g/gn/gnat-glade/code/gnat-glade-code-r135-trunk.zip
+
+USE_TOOLS+= gmake
+GNU_CONFIGURE= yes
+
+CHECK_PIE_SKIP+= bin/*
+CHECK_RELRO_SKIP+= bin/*
+
+USE_LANGUAGES= c ada
+
+GCC_REQD+= 13
+
+GENERATE_PLIST+= \
+ cd ${DESTDIR}${PREFIX} && \
+ ${FIND} bin include lib \( -type f -or -type l \) -print | ${SORT};
+
+.include "../../mk/bsd.prefs.mk"
+
+post-patch:
+ chmod +x ${WRKSRC}/Dist/config.sdefault
+
+.include "../../lang/gcc13-gnat-libs/buildlink3.mk"
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/gnat-glade/PLIST b/gnat-glade/PLIST
new file mode 100644
index 0000000000..3db5f5fc7c
--- /dev/null
+++ b/gnat-glade/PLIST
@@ -0,0 +1,135 @@
+@comment $NetBSD: PLIST,v 1.0 2024/11/12 18:30:00 dkazankov Exp $
+bin/gnatdist
+bin/gnatdist-config
+include/garlic/s-gafizi.adb
+include/garlic/s-gafizi.ads
+include/garlic/s-galiop.ads
+include/garlic/s-ganata.adb
+include/garlic/s-ganata.ads
+include/garlic/s-ganeut.adb
+include/garlic/s-ganeut.ads
+include/garlic/s-ganota.adb
+include/garlic/s-ganota.ads
+include/garlic/s-gaphlo.adb
+include/garlic/s-gaphlo.ads
+include/garlic/s-gaplsp.ads
+include/garlic/s-gaprco.adb
+include/garlic/s-gaprco.ads
+include/garlic/s-gaprma.adb
+include/garlic/s-gaprma.ads
+include/garlic/s-gaprre.adb
+include/garlic/s-gaprre.ads
+include/garlic/s-gaprtc.adb
+include/garlic/s-gaprtc.ads
+include/garlic/s-gardeb.adb
+include/garlic/s-gardeb.ads
+include/garlic/s-garela.adb
+include/garlic/s-garela.ads
+include/garlic/s-garexc.adb
+include/garlic/s-garexc.ads
+include/garlic/s-garfil.adb
+include/garlic/s-garfil.ads
+include/garlic/s-gargro.adb
+include/garlic/s-gargro.ads
+include/garlic/s-garhea.adb
+include/garlic/s-garhea.ads
+include/garlic/s-garlic.ads
+include/garlic/s-garopt.adb
+include/garlic/s-garopt.ads
+include/garlic/s-garpar.adb
+include/garlic/s-garpar.ads
+include/garlic/s-garpri.adb
+include/garlic/s-garpri.ads
+include/garlic/s-garpro.adb
+include/garlic/s-garpro.ads
+include/garlic/s-garrem.adb
+include/garlic/s-garrem.ads
+include/garlic/s-garsta.adb
+include/garlic/s-garsta.ads
+include/garlic/s-garsto.adb
+include/garlic/s-garsto.ads
+include/garlic/s-garstr.adb
+include/garlic/s-garstr.ads
+include/garlic/s-gartab.adb
+include/garlic/s-gartab.ads
+include/garlic/s-gartas.adb
+include/garlic/s-gartas.ads
+include/garlic/s-garter.adb
+include/garlic/s-garter.ads
+include/garlic/s-gartra.adb
+include/garlic/s-gartra.ads
+include/garlic/s-gartyp.adb
+include/garlic/s-gartyp.ads
+include/garlic/s-garuni.adb
+include/garlic/s-garuni.ads
+include/garlic/s-garuti.adb
+include/garlic/s-garuti.ads
+include/garlic/s-gasoli.adb
+include/garlic/s-gasoli.ads
+include/garlic/s-gastco.adb
+include/garlic/s-gastco.ads
+include/garlic/s-gastdf.adb
+include/garlic/s-gastdf.ads
+include/garlic/s-gastds.adb
+include/garlic/s-gastds.ads
+include/garlic/s-gastha.adb
+include/garlic/s-gastha.ads
+include/garlic/s-gprese.ads
+include/garlic/s-gptcse.adb
+include/garlic/s-gptcse.ads
+include/garlic/s-parint.adb
+include/garlic/s-parint.ads
+include/garlic/s-rpc.adb
+include/garlic/s-rpc.ads
+include/garlic/s-rpcser.adb
+include/garlic/s-rpcser.ads
+include/garlic/s-rpstio.adb
+include/garlic/s-rpstio.ads
+include/garlic/s-shasto.adb
+lib/garlic/libgarlic.a
+lib/garlic/s-gafizi.ali
+lib/garlic/s-galiop.ali
+lib/garlic/s-ganata.ali
+lib/garlic/s-ganeut.ali
+lib/garlic/s-ganota.ali
+lib/garlic/s-gaphlo.ali
+lib/garlic/s-gaplsp.ali
+lib/garlic/s-gaprco.ali
+lib/garlic/s-gaprma.ali
+lib/garlic/s-gaprre.ali
+lib/garlic/s-gaprtc.ali
+lib/garlic/s-gardeb.ali
+lib/garlic/s-garela.ali
+lib/garlic/s-garexc.ali
+lib/garlic/s-garfil.ali
+lib/garlic/s-gargro.ali
+lib/garlic/s-garhea.ali
+lib/garlic/s-garlic.ali
+lib/garlic/s-garopt.ali
+lib/garlic/s-garpar.ali
+lib/garlic/s-garpri.ali
+lib/garlic/s-garpro.ali
+lib/garlic/s-garrem.ali
+lib/garlic/s-garsta.ali
+lib/garlic/s-garsto.ali
+lib/garlic/s-garstr.ali
+lib/garlic/s-gartab.ali
+lib/garlic/s-gartas.ali
+lib/garlic/s-garter.ali
+lib/garlic/s-gartra.ali
+lib/garlic/s-gartyp.ali
+lib/garlic/s-garuni.ali
+lib/garlic/s-garuti.ali
+lib/garlic/s-gasoli.ali
+lib/garlic/s-gastco.ali
+lib/garlic/s-gastdf.ali
+lib/garlic/s-gastds.ali
+lib/garlic/s-gastha.ali
+lib/garlic/s-gprese.ali
+lib/garlic/s-gptcse.ali
+lib/garlic/s-parint.ali
+lib/garlic/s-rpc.ali
+lib/garlic/s-rpcser.ali
+lib/garlic/s-rpstio.ali
+lib/garlic/s-shasto.ali
+lib/gnat/garlic.gpr
diff --git a/gnat-glade/buildlink3.mk b/gnat-glade/buildlink3.mk
new file mode 100644
index 0000000000..cf59f6dba9
--- /dev/null
+++ b/gnat-glade/buildlink3.mk
@@ -0,0 +1,17 @@
+# $NetBSD: buildlink3.mk,v 1.0 2024/11/14 16:30:00 dkazankov Exp $
+
+BUILDLINK_TREE+= gnat-glade
+
+.if !defined(GNAT_GLADE_BUILDLINK3_MK)
+GNAT_GLADE_BUILDLINK3_MK:=
+
+BUILDLINK_API_DEPENDS.gnat-glade+= gnat-glade>=6.0.1
+BUILDLINK_PKGSRCDIR.gnat-glade= ../../wip/gnat-glade
+BUILDLINK_DEPMETHOD.gnat-glade?= build
+
+BUILDLINK_AUTO_VARS.gnat-glade= no
+BUILDLINK_AUTO_DIRS.gnat-glade= no
+
+.endif
+
+BUILDLINK_TREE+= -gnat-glade
diff --git a/gnat-glade/distinfo b/gnat-glade/distinfo
new file mode 100644
index 0000000000..014d820187
--- /dev/null
+++ b/gnat-glade/distinfo
@@ -0,0 +1,48 @@
+$NetBSD: distinfo,v 1.3 2024/05/02 14:00:00 dkazankov Exp $
+
+BLAKE2s (gnat-glade-code-r135-trunk.zip) = f2458d3696ce885fd2356461038b1bba102006aa5f24680cf601a1ba2da4865b
+SHA512 (gnat-glade-code-r135-trunk.zip) = feea72177d405c02378f32aff22f673cf57b9f629e5e82a0c51d537309507ff80e450838c3d19e1ba26fc90c6eccac8b1b7a2ee34ec98be0993d2462adc89b13
+Size (gnat-glade-code-r135-trunk.zip) = 3885324 bytes
+SHA1 (patch-Dist_Makefile.in) = 1c9a63dbe5e17e80c81647519d215b8887b544a4
+SHA1 (patch-Dist_config.sdefault) = 7fb3e662a2d565f0c40ad627cda74574ed3ebddd
+SHA1 (patch-Dist_gnatdist-config.in) = fa477f338c01ba6a9f81e0c3af84dbe2c8b1e76b
+SHA1 (patch-Dist_xe.adb) = 163bf676015a40f5fc4187159c7e16086db22359
+SHA1 (patch-Dist_xe__back-garlic.adb) = 9a66d461624621843abba99f8e8f5df4aa75e457
+SHA1 (patch-Dist_xe__back-polyorb.adb) = b2ee5226af5d51af7ca0236fc02d7bcf0489a716
+SHA1 (patch-Dist_xe__back.adb) = ea6c70f184c6359f52f3c37cdb4f0a1f62fab6f4
+SHA1 (patch-Dist_xe__front.adb) = d2ff90f0e08402fc19e9792d93e4e5180da68642
+SHA1 (patch-Dist_xe__main.adb) = 7a3297ed1f4eb7b45fb82e86b3f436a70b828984
+SHA1 (patch-Dist_xe__names.ads) = 55252237505359b3caa5dc2f54303e894eaf8ed0
+SHA1 (patch-Dist_xe__parse.adb) = 471873dd7134327425bf1a6df2a4b2e24e475465
+SHA1 (patch-Dist_xe__scan.adb) = 9272f4c6b0dade6d0d6d22d146aa0d371403a9bd
+SHA1 (patch-Dist_xe__stdcnf.adb) = 58324a21ac4e72dc9e7f5797ee008ce04edfe8c5
+SHA1 (patch-Dist_xe__usage.adb) = 0ae9e3b8ef811beb7293c115adca989bad62856b
+SHA1 (patch-Dist_xe__utils.adb) = e5a9eede82e19805fdaecd6305c4e564beed19ff
+SHA1 (patch-Examples_MultiPro_s-gaprxy.adb) = 503b5d6ccc62e1d4dd4e291e29b188ec28389818
+SHA1 (patch-Garlic_Makefile.in) = 674601db5717bb7dd691b93c919804bf000c4e6a
+SHA1 (patch-Garlic_garlic.gpr) = c410c7c352619dd9dfcd232e5a6cad4521ae8287
+SHA1 (patch-Garlic_isthrbio.adb) = d45ac410707eca5c646b563264d50c11458eb8bd
+SHA1 (patch-Garlic_isthrbio.gpr) = 991396abd6632cf7f7bfe6cf07a4ba4c7baf305d
+SHA1 (patch-Garlic_s-dsaser.ads) = 73cd62f844268e0dd68207fd37edd4876e6af728
+SHA1 (patch-Garlic_s-gafizi.adb) = bf47bc65cbff5eaf055870d16b68cbd52ac4aa61
+SHA1 (patch-Garlic_s-gaprre.adb) = cf8d8890dcf0919ec50f66b0eaf53b87df835850
+SHA1 (patch-Garlic_s-gaprre.ads) = b3da9598e2701ea5b025bb35da7affbd50e56d4d
+SHA1 (patch-Garlic_s-gaprtc.adb) = 7475c530957346fb598cec3c9f7e66322b67d95b
+SHA1 (patch-Garlic_s-garexc.adb) = 7df0925115b0206313a45def9fb2ef02962138f6
+SHA1 (patch-Garlic_s-garsto.adb) = be6b86a1a5ea31fb4e73eb087d7fea6a022614d4
+SHA1 (patch-Garlic_s-garstr.ads) = cfda7ce053dffaeae6db9f733826ff696f066111
+SHA1 (patch-Garlic_s-gartab.adb) = fdd8eb21aa7dc10dbf49d1794f65f804e169d3ae
+SHA1 (patch-Garlic_s-gartas.adb) = 9896fdef948441ea20716d860785cc4452f9c249
+SHA1 (patch-Garlic_s-garuni.adb) = 4287dd944ccd26b9ae0e6e115f6fe9813fa97d1a
+SHA1 (patch-Garlic_s-gastdf.adb) = 142c33147b64eb14a400e5623b6a31ca73be6960
+SHA1 (patch-Garlic_s-gastha.adb) = 3dbff7340936751840c5e89a5b40211333d9817f
+SHA1 (patch-Garlic_s-gptcse.adb) = 4f668c9f1be0921f5b236e7759859b1d7d3bc20d
+SHA1 (patch-Garlic_s-parint.adb) = cfc1498142a355036694635b0f9ed892fcbf6752
+SHA1 (patch-Garlic_s-parint.ads) = c0611648bca05951af809e8a9cdec98c2d832b1a
+SHA1 (patch-Garlic_s-rpc.adb) = 792e9ca62f15cbaf526354297df22037781539c1
+SHA1 (patch-Garlic_s-rpcser.adb) = 3394a7fed3eddee43c0d660f77785047bf771af5
+SHA1 (patch-Garlic_s-shasto.adb) = 2e76771ee23baa7a0cd5b24863fbe39ba89653f9
+SHA1 (patch-Garlic_s-shasto.ads) = f086c4f186143093b85f66fd5d5d7b88958d75d2
+SHA1 (patch-Garlic_s-stratt.adb) = 0684c2df09d7d74eb3f0141585875e13c31e2a6c
+SHA1 (patch-Garlic_select.c) = 0db5132fcc2184cc685cd6886b87645f73e31e04
+SHA1 (patch-configure) = 382ee31ce75432160186899ff81a18fba65ee245
diff --git a/gnat-glade/patches/patch-Dist_Makefile.in b/gnat-glade/patches/patch-Dist_Makefile.in
new file mode 100644
index 0000000000..2990369234
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_Makefile.in
@@ -0,0 +1,29 @@
+$NetBSD: patch-Dist_Makefile.in,v 1.0 2025/02/04 22:00:00 dkazankov Exp $
+
+Add configuration helper
+Fix bindir location
+
+--- Dist/Makefile.in.orig 2007-11-26 15:10:13.000000000 +0200
++++ Dist/Makefile.in
+@@ -223,9 +223,11 @@
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ xe_defs-defaults.ads: $(top_builddir)/config.status $(srcdir)/xe_defs-defaults.ads.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
++gnatdist-config: $(top_builddir)/config.status $(srcdir)/gnatdist-config.in
++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+ install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
++ test -z "$(DESTDIR)$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+@@ -235,6 +237,8 @@
+ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
++ cp -p $(srcdir)/gnatdist-config $(DESTDIR)$(bindir)/gnatdist-config ; \
++ chmod a+x $(DESTDIR)$(bindir)/gnatdist-config
+
+ uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
diff --git a/gnat-glade/patches/patch-Dist_config.sdefault b/gnat-glade/patches/patch-Dist_config.sdefault
new file mode 100644
index 0000000000..4275fe7850
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_config.sdefault
@@ -0,0 +1,16 @@
+$NetBSD: patch-Dist_config.sdefault,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix libgnat.a search
+https://github.com/reznikmm/garlic/commit/1c459d17d989e5df86234276013fd32430c97220
+
+--- Dist/config.sdefault.orig 2007-11-26 15:10:13.000000000 +0200
++++ Dist/config.sdefault
+@@ -7,7 +7,7 @@
+ sed -e '1,/Object Search Path/ d' | grep -v 'Current_Directory' > tmp1
+ sed -e 's,\\,/,g' tmp1 > tmp2
+ for i in `cat tmp2`; do
+- if [ -f ${i}libgnat.a ]; then
++ if [ -f ${i}/libgnat.a ]; then
+ LIBGNAT_DIR=${i}
+ break
+ fi
diff --git a/gnat-glade/patches/patch-Dist_gnatdist-config.in b/gnat-glade/patches/patch-Dist_gnatdist-config.in
new file mode 100644
index 0000000000..b61968edb6
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_gnatdist-config.in
@@ -0,0 +1,172 @@
+$NetBSD: patch-Dist_gnatdist-config.in,v 1.0 2025/02/04 22:00:00 dkazankov Exp $
+
+Create configuration helper for building applications
+
+--- /dev/null
++++ Dist/gnatdist-config.in
+@@ -0,0 +1,165 @@
++#!/bin/sh
++
++# This script provides tool chain command line switches used to build
++# applications that use garlic.
++
++# @configure_input@
++
++host=@host@
++target=@target@
++if [ "$host" = "$target" ]; then
++ is_cross=false
++else
++ is_cross=true
++fi
++
++# Determine installation prefix
++
++case "$0" in
++ */*)
++ # Already has a directory indication
++ exec_name="$0"
++ ;;
++
++ *)
++ # Just base filename, retrieve from PATH
++ exec_name=`which $0`
++ ;;
++esac
++exec_rel_dir=`dirname "${exec_name}"`
++exec_abs_dir=`cd ${exec_rel_dir} && pwd`
++exec_prefix=`dirname "${exec_abs_dir}"`
++
++# Translate Cygwin-style path to Windows equivalent
++
++case "$OS" in
++ Windows_NT)
++ exec_prefix=`cygpath -w $exec_prefix`
++esac
++
++unset tgt_subdir
++if $is_cross; then
++ tgt_subdir=/$target
++fi
++
++for candidate_prefix in "${exec_prefix}${tgt_subdir}" "@prefix@${tgt_subdir}"; do
++ prefix="${candidate_prefix}"
++ if [ -f "${candidate_prefix}"/include/garlic/s-garlic.ads ]; then
++ break
++ fi
++done
++
++usage() {
++ cat <<EOF 1>&2
++Usage: gnatdist-config [OPTIONS]
++Options:
++ No option:
++ Same as --options.
++ [--options]
++ Output options to use for GLADE.
++ [--prefix[=DIR]]
++ Output the directory in which GLADE architecture-independent
++ files are installed, or set this directory to DIR.
++ [--exec-prefix[=DIR]]
++ Output the directory in which GLADE architecture-dependent
++ files are installed, or set this directory to DIR.
++ [--version|-v]
++ Output the version of GLADE.
++ [--largs]
++ Output the linker flags to use for GLADE.
++ [--cargs]
++ Output the compiler flags to use for GLADE.
++ [--bargs]
++ Output the binder flags to use for GLADE.
++ [--help]
++ Output this message
++EOF
++}
++
++no_args=true
++while test $# -gt 0; do
++ no_args=false
++ case "$1" in
++ -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
++ *) optarg= ;;
++ esac
++
++ case $1 in
++ --help|-h)
++ usage 1>&2
++ exit 1
++ ;;
++ --prefix=*)
++ prefix=$optarg;
++ if test "x$exec_prefix_set" = x ; then
++ exec_prefix=$prefix
++ fi
++ ;;
++ --prefix)
++ echo_prefix=true
++ ;;
++ --exec-prefix=*)
++ exec_prefix=$optarg
++ ;;
++ --exec-prefix)
++ echo_exec_prefix=true
++ ;;
++ --version|-v)
++ echo "GNAT-GLADE @VERSION@ for ${target}" 1>&2
++ if $is_cross; then
++ echo " hosted on ${host}" 1>&2
++ fi
++ exit 0
++ ;;
++ --largs)
++ echo_largs=true
++ ;;
++ --cargs)
++ echo_cargs=true
++ ;;
++ --bargs)
++ echo_bargs=true
++ ;;
++ --options)
++ echo_options=true
++ ;;
++
++ *)
++ usage 1>&2
++ exit 1
++ ;;
++ esac
++ shift
++done
++if test ! x"$no_args" = x"true" ; then
++ echo_options=true
++fi
++
++includedir="@includedir@"
++libdir="@libdir@"
++garlic_incdir="${includedir}/garlic"
++garlic_libdir="${libdir}/garlic"
++
++if test ! x"$echo_options" = x"true" ; then
++ echo -a -aI${garlic_incdir} -aO${garlic_libdir}
++fi
++
++if test x"$echo_cargs" = x"true"; then
++ echo -cargs @GNATFLAGS@ -I${garlic_incdir}
++fi
++
++#if test x"$echo_bargs" = x"true"; then
++# echo -bargs ${garlic_lib}
++#fi
++
++if test x"$echo_largs" = x"true"; then
++ echo -largs @LDFLAGS@ -L${garlic_libdir} -lgarlic
++fi
++
++if test x"$echo_prefix" = x"true" ; then
++ echo $prefix
++fi
++if test x"$echo_exec_prefix" = x"true" ; then
++ echo $exec_prefix
++fi
++
diff --git a/gnat-glade/patches/patch-Dist_xe.adb b/gnat-glade/patches/patch-Dist_xe.adb
new file mode 100644
index 0000000000..34842f9c21
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Dist_xe.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe.adb.orig 2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe.adb
+@@ -1171,7 +1171,7 @@
+ -- Remove the nodes created in the previous context.
+
+ loop
+- exit when Nodes.Last <= Node_Id (Context.Last_Node);
++ exit when Nodes.Last <= Context.Last_Node;
+ Nodes.Decrement_Last;
+ end loop;
+ N_Anonymous_Variable := Context.Anonymous;
diff --git a/gnat-glade/patches/patch-Dist_xe__back-garlic.adb b/gnat-glade/patches/patch-Dist_xe__back-garlic.adb
new file mode 100644
index 0000000000..3722993f99
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__back-garlic.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Dist_xe__back-garlic.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+
+--- Dist/xe_back-garlic.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_back-garlic.adb
+@@ -34,9 +34,6 @@
+ with XE_Names; use XE_Names;
+ with XE_Utils; use XE_Utils;
+
+-with XE_Back;
+-pragma Elaborate_All (XE_Back);
+-
+ package body XE_Back.GARLIC is
+
+ type GARLIC_Backend is new Backend with null record;
diff --git a/gnat-glade/patches/patch-Dist_xe__back-polyorb.adb b/gnat-glade/patches/patch-Dist_xe__back-polyorb.adb
new file mode 100644
index 0000000000..2d217d0729
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__back-polyorb.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Dist_xe__back-polyorb.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+
+--- Dist/xe_back-polyorb.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_back-polyorb.adb
+@@ -34,9 +34,6 @@
+ with XE_Names; use XE_Names;
+ with XE_Utils; use XE_Utils;
+
+-with XE_Back;
+-pragma Elaborate_All (XE_Back);
+-
+ package body XE_Back.PolyORB is
+
+ type PolyORB_Backend is new Backend with null record;
diff --git a/gnat-glade/patches/patch-Dist_xe__back.adb b/gnat-glade/patches/patch-Dist_xe__back.adb
new file mode 100644
index 0000000000..aaae43a89b
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__back.adb
@@ -0,0 +1,25 @@
+$NetBSD: patch-Dist_xe__back.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Make gnatdist fail if compilation fails on stub/skel
+https://github.com/reznikmm/garlic/commit/d037957ca6828ec3a1cced2ea64e46310f11b22d
+
+--- Dist/xe_back.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_back.adb
+@@ -328,7 +328,7 @@
+ Arguments (3) := new String'(Name_Buffer (1 .. Name_Len));
+ end if;
+
+- Compile (Full_Unit_File, Arguments, Fatal => False, Silent => True);
++ Compile (Full_Unit_File, Arguments, Fatal => True, Silent => True);
+
+ Free (Arguments (3));
+ elsif not Quiet_Mode then
+@@ -604,7 +604,7 @@
+ Arguments (3) := new String'(Name_Buffer (1 .. Name_Len));
+ end if;
+
+- Compile (Full_Unit_File, Arguments, Fatal => False, Silent => True);
++ Compile (Full_Unit_File, Arguments, Fatal => True, Silent => True);
+
+ if Present (Part_Prj_Fname) then
+ Free (Arguments (3));
diff --git a/gnat-glade/patches/patch-Dist_xe__front.adb b/gnat-glade/patches/patch-Dist_xe__front.adb
new file mode 100644
index 0000000000..abf48b4bae
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__front.adb
@@ -0,0 +1,17 @@
+$NetBSD: patch-Dist_xe__front.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe_front.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_front.adb
+@@ -470,7 +470,8 @@
+ HID := Partitions.Table (P).Host;
+ if HID /= No_Host_Id
+ and then not Hosts.Table (HID).Static
+- and then Hosts.Table (HID).Import = Ada_Import then
++ and then Hosts.Table (HID).Import = Ada_Import
++ then
+ Add_Conf_Unit (Hosts.Table (HID).External, P);
+ end if;
+ end loop;
diff --git a/gnat-glade/patches/patch-Dist_xe__main.adb b/gnat-glade/patches/patch-Dist_xe__main.adb
new file mode 100644
index 0000000000..6117748af3
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__main.adb
@@ -0,0 +1,29 @@
+$NetBSD: patch-Dist_xe__main.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe_main.adb.orig 2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe_main.adb
+@@ -26,8 +26,8 @@
+
+ with XE; use XE;
+ with XE_Back; use XE_Back;
+-with XE_Back.GARLIC; use XE_Back.GARLIC;
+-with XE_Back.PolyORB; use XE_Back.PolyORB;
++with XE_Back.GARLIC;
++with XE_Back.PolyORB;
+ with XE_Defs; use XE_Defs;
+ with XE_Flags; use XE_Flags;
+ with XE_Front; use XE_Front;
+@@ -36,8 +36,8 @@
+ with XE_Parse; use XE_Parse;
+ with XE_Types; use XE_Types;
+ with XE_Sem; use XE_Sem;
+-with XE_Scan; use XE_Scan;
+-with XE_Stdcnf; use XE_Stdcnf;
++with XE_Scan;
++with XE_Stdcnf;
+ with XE_Utils; use XE_Utils;
+ with XE_Units; use XE_Units;
+ with XE_Usage;
diff --git a/gnat-glade/patches/patch-Dist_xe__names.ads b/gnat-glade/patches/patch-Dist_xe__names.ads
new file mode 100644
index 0000000000..217f53107f
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__names.ads
@@ -0,0 +1,16 @@
+$NetBSD: patch-Dist_xe__names.ads,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe_names.ads.orig 2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe_names.ads
+@@ -48,7 +48,7 @@
+ -- names table entry and subprograms are provided for setting and retrieving
+ -- these associated values. The usage of these values is up to the client.
+
+- Name_Buffer : String (1 .. 16*1024);
++ Name_Buffer : String (1 .. 16 * 1024);
+ -- This buffer is used to set the name to be stored in the table for the
+ -- Name_Find call, and to retrieve the name for the Get_Name_String call.
+ -- The plus 1 in the length allows for cases of adding ASCII.NUL. The
diff --git a/gnat-glade/patches/patch-Dist_xe__parse.adb b/gnat-glade/patches/patch-Dist_xe__parse.adb
new file mode 100644
index 0000000000..9a51d315d6
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__parse.adb
@@ -0,0 +1,53 @@
+$NetBSD: patch-Dist_xe__parse.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe_parse.adb.orig 2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe_parse.adb
+@@ -973,6 +973,7 @@
+ end if;
+
+ -- Declare <X> as a formal parameter.
++ pragma Warnings (Off, "modified by call");
+
+ Declare_Subprogram_Parameter
+ (Parameter_Name,
+@@ -1007,6 +1008,7 @@
+ Function_Node,
+ Para_Type_Sloc,
+ Parameter_Node);
++ pragma Warnings (On, "modified by call");
+
+ T_Semicolon;
+ end P_Function_Declaration;
+@@ -1159,7 +1161,8 @@
+ -- of the predefined type Partition_Type_Node.
+
+ if Partition_Node = Null_Variable or else
+- Get_Variable_Type (Partition_Node) /= Partition_Type_Node then
++ Get_Variable_Type (Partition_Node) /= Partition_Type_Node
++ then
+ Write_Conflict_Error (Partition_Sloc, Partition_Name);
+ end if;
+
+@@ -1952,8 +1955,7 @@
+
+ -- If Named, use Formal_Name to return format parameter node.
+ when Named =>
+- if Get_Node_Name
+- (Node_Id (Parameter_Node)) = Formal_Name then
++ if Get_Node_Name (Node_Id (Parameter_Node)) = Formal_Name then
+ return;
+ end if;
+
+@@ -2128,7 +2130,8 @@
+ begin
+ Search_Declaration (Variable_Name, Node);
+ if Node /= Null_Node and then
+- not Is_Variable (Node) then
++ not Is_Variable (Node)
++ then
+ Node := Null_Node;
+ end if;
+ Variable_Node := Variable_Id (Node);
diff --git a/gnat-glade/patches/patch-Dist_xe__scan.adb b/gnat-glade/patches/patch-Dist_xe__scan.adb
new file mode 100644
index 0000000000..07437bd2e7
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__scan.adb
@@ -0,0 +1,26 @@
+$NetBSD: patch-Dist_xe__scan.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe_scan.adb.orig 2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe_scan.adb
+@@ -214,7 +214,8 @@
+ if Buffer (Scan_Ptr) = LF or else
+ Buffer (Scan_Ptr) = FF or else
+ Buffer (Scan_Ptr) = CR or else
+- Buffer (Scan_Ptr) = VT then
++ Buffer (Scan_Ptr) = VT
++ then
+ New_Line;
+ exit;
+ elsif Buffer (Scan_Ptr) = EOF then
+@@ -426,8 +427,6 @@
+ procedure Write_Location
+ (Where : Location_Type) is
+
+- use ASCII;
+-
+ begin
+ Write_Name (Configuration_File_Name);
+ Write_Str (":");
diff --git a/gnat-glade/patches/patch-Dist_xe__stdcnf.adb b/gnat-glade/patches/patch-Dist_xe__stdcnf.adb
new file mode 100644
index 0000000000..2b57654896
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__stdcnf.adb
@@ -0,0 +1,24 @@
+$NetBSD: patch-Dist_xe__stdcnf.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+
+--- Dist/xe_stdcnf.adb.orig 2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe_stdcnf.adb
+@@ -161,6 +161,8 @@
+ Type_Sloc => Null_Location,
+ Type_Node => Host_Function_Type_Node);
+
++ pragma Warnings (Off, "modified by call");
++
+ Declare_Type_Component
+ (Type_Node => Host_Function_Type_Node,
+ Component_Name => Id ("partition_name"),
+@@ -734,6 +736,8 @@
+ Null_Location,
+ Parameter_Node);
+
++ pragma Warnings (On, "modified by call");
++
+ end Initialize;
+
+ end XE_Stdcnf;
diff --git a/gnat-glade/patches/patch-Dist_xe__usage.adb b/gnat-glade/patches/patch-Dist_xe__usage.adb
new file mode 100644
index 0000000000..600b0de787
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__usage.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Dist_xe__usage.adb,v 1.0 2025/02/04 22:00:00 dkazankov Exp $
+
+Update version
+
+--- Dist/xe_usage.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_usage.adb
+@@ -29,7 +29,7 @@
+ with XE_Flags; use XE_Flags;
+
+ procedure XE_Usage is
+- Version : constant String := "5.04w";
++ Version : constant String := "6.0w";
+ Length : Positive := Version'First;
+
+ begin
diff --git a/gnat-glade/patches/patch-Dist_xe__utils.adb b/gnat-glade/patches/patch-Dist_xe__utils.adb
new file mode 100644
index 0000000000..9948006382
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__utils.adb
@@ -0,0 +1,62 @@
+$NetBSD: patch-Dist_xe__utils.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+Calculate gnat driver name by gnatdist name
+Also fix -cargs option passing
+https://github.com/reznikmm/garlic/commit/1bca5670b0f08ab8e3902441a46bc1c7a9fdf059
+
+--- Dist/xe_utils.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_utils.adb
+@@ -24,6 +24,7 @@
+ -- --
+ ------------------------------------------------------------------------------
+
++with Ada.Directories;
+ with Ada.Command_Line; use Ada.Command_Line;
+ with XE_Defs; use XE_Defs;
+ with XE_Flags; use XE_Flags;
+@@ -81,12 +82,14 @@
+ S3 : String := No_Str);
+
+ type Sigint_Handler is access procedure;
++ pragma Convention (C, Sigint_Handler);
+
+ procedure Install_Int_Handler (Handler : Sigint_Handler);
+ pragma Import (C, Install_Int_Handler, "__gnat_install_int_handler");
+ -- Called by Gnatmake to install the SIGINT handler below
+
+ procedure Sigint_Intercepted;
++ pragma Convention (C, Sigint_Intercepted);
+ -- Called when the program is interrupted by Ctrl-C to delete the
+ -- temporary mapping files and configuration pragmas files.
+
+@@ -501,6 +504,11 @@
+ ----------------
+
+ procedure Initialize is
++ Command : constant String := Ada.Directories.Base_Name
++ (Ada.Command_Line.Command_Name);
++ GNAT : constant String :=
++ Command (Command'First .. Command'Last - 4);
++ -- calculate `[target-]gnat` driver name by gnatdist exe name
+ begin
+ XE_Names.Initialize;
+ Set_Space_Increment (3);
+@@ -550,7 +558,7 @@
+
+ Create_Dir (Stub_Dir_Name);
+
+- GNAT_Driver := Locate ("gnat");
++ GNAT_Driver := Locate (GNAT);
+ end Initialize;
+
+ ----------
+@@ -818,6 +826,7 @@
+
+ if Program_Args = Binder
+ or else Program_Args = Linker
++ or else Program_Args = Compiler
+ then
+ Add_Make_Switch (Argv);
+ return;
diff --git a/gnat-glade/patches/patch-Examples_MultiPro_s-gaprxy.adb b/gnat-glade/patches/patch-Examples_MultiPro_s-gaprxy.adb
new file mode 100644
index 0000000000..a163561be0
--- /dev/null
+++ b/gnat-glade/patches/patch-Examples_MultiPro_s-gaprxy.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Examples_MultiPro_s-gaprxy.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Examples/MultiPro/s-gaprxy.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Examples/MultiPro/s-gaprxy.adb
+@@ -43,7 +43,6 @@
+ with System.Garlic.Partitions; use System.Garlic.Partitions;
+ with System.Garlic.Physical_Location; use System.Garlic.Physical_Location;
+ with System.Garlic.Platform_Specific;
+-with System.Garlic.Protocols; use System.Garlic.Protocols;
+ with System.Garlic.Soft_Links;
+ with System.Garlic.Streams; use System.Garlic.Streams;
+ with System.Garlic.Table;
diff --git a/gnat-glade/patches/patch-Garlic_Makefile.in b/gnat-glade/patches/patch-Garlic_Makefile.in
new file mode 100644
index 0000000000..4553fec1b8
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_Makefile.in
@@ -0,0 +1,242 @@
+$NetBSD: patch-Garlic_Makefile.in,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Remove duplicate spec
+Remove "old" stream attributes implementation
+Remove unsupported Shared_Passive specification
+Make install aware of DESTDIR
+Copy project file to lib/gnat
+Remove all "inlining" staff
+
+--- Garlic/Makefile.in.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/Makefile.in
+@@ -187,7 +187,6 @@
+ $(srcdir)/s-gptcse.ads $(srcdir)/s-gptcse.adb
+
+ COMMONOBJECTS = \
+-s-dsaser.o\
+ s-galiop.o\
+ s-ganata.o\
+ s-ganeut.o\
+@@ -229,18 +228,16 @@
+ s-rpc.o\
+ s-rpcser.o\
+ s-rpstio.o\
+-s-shasto.o\
+-s-stratt.o
++s-shasto.o
+
+ COMMONSOURCES = \
+-$(srcdir)/s-dsaser.ads \
+- s-galiop.ads \
++$(srcdir)/s-galiop.ads \
+ $(srcdir)/s-ganata.ads $(srcdir)/s-ganata.adb \
+ $(srcdir)/s-ganeut.ads $(srcdir)/s-ganeut.adb \
+ $(srcdir)/s-ganota.ads $(srcdir)/s-ganota.adb \
+ $(srcdir)/s-gaphlo.ads $(srcdir)/s-gaphlo.adb \
+- s-gaplsp.ads \
+-$(srcdir)/s-gaprco.ads s-gaprco.adb \
++$(srcdir)/s-gaplsp.ads \
++$(srcdir)/s-gaprco.ads $(srcdir)/s-gaprco.adb \
+ $(srcdir)/s-gaprre.ads $(srcdir)/s-gaprre.adb \
+ $(srcdir)/s-gardeb.ads $(srcdir)/s-gardeb.adb \
+ $(srcdir)/s-garexc.ads $(srcdir)/s-garexc.adb \
+@@ -253,7 +250,7 @@
+ $(srcdir)/s-garpri.ads $(srcdir)/s-garpri.adb \
+ $(srcdir)/s-gaprma.ads $(srcdir)/s-gaprma.adb \
+ $(srcdir)/s-garpro.ads $(srcdir)/s-garpro.adb \
+-$(srcdir)/s-garrem.ads s-garrem.adb \
++$(srcdir)/s-garrem.ads $(srcdir)/s-garrem.adb \
+ $(srcdir)/s-garsta.ads $(srcdir)/s-garsta.adb \
+ $(srcdir)/s-garstr.ads $(srcdir)/s-garstr.adb \
+ $(srcdir)/s-gartas.ads $(srcdir)/s-gartas.adb \
+@@ -275,8 +272,7 @@
+ $(srcdir)/s-rpc.ads $(srcdir)/s-rpc.adb \
+ $(srcdir)/s-rpcser.ads $(srcdir)/s-rpcser.adb \
+ $(srcdir)/s-rpstio.ads $(srcdir)/s-rpstio.adb \
+-$(srcdir)/s-shasto.ads $(srcdir)/s-shasto.adb \
+-$(srcdir)/s-stratt.adb
++ $(srcdir)/s-shasto.adb
+
+ OBJECTS = \
+ $(PROTOCOLSOBJECTS) \
+@@ -286,7 +282,7 @@
+ SOURCES = $(PROTOCOLSSOURCES) $(FILTERSSOURCES) $(COMMONSOURCES)
+ CLEANFILES = lib*.a *.ali *.o b_*.c b~*.ad[bs]\
+ s-gaprco.adb s-galiop.ads\
+- inlining gnatlib/* constants_nodef\
++ gnatlib/* constants_nodef\
+ isthrbio$(EXEEXT)\
+ $(FILTERSOBJECTS)
+
+@@ -501,39 +497,14 @@
+ -rm -fr bldtool
+
+ install-dirs-local:
+- -rm -rf $(GARLIC)
+- -$(mkinstalldirs) $(GARLIC)
+- @echo $(GARLIC) created
+-
+-inlining: all-local
+- rm -rf gnatlib >/dev/null 2>&1;\
+- mkdir gnatlib >/dev/null 2>&1;\
+- gnatlibdir=`$(srcdir)/../Dist/config.sdefault $(GNAT_RTS_FLAG)`;\
+- (cd $$gnatlibdir && grep -l "D s-stratt.adb" *.ali)\
+- | $(SED) 's,\.ali$$,.o,' > gnatlib/tocheck;\
+- for i in $(OBJECTS); do\
+- echo "Checking $$i";\
+- mv gnatlib/tocheck gnatlib/tocheck.tmp;\
+- grep -v $$i gnatlib/tocheck.tmp > gnatlib/tocheck;\
+- done;\
+- for o in `cat gnatlib/tocheck`; do\
+- if [ ! -f gnatlib/$$o ]; then\
+- s=`gnatls -a -s $$o | sed 's/\013//g'`;\
+- (cd gnatlib;\
+- $(GNAT_FOR_TARGET) $(COMPILE) $(GNATFLAGS) -I. -I.. -I- \
+- $$s;\
+- if test $$? = 0; then\
+- echo $$o >>rebuild;\
+- else\
+- $(RM) -f tocheck;\
+- break;\
+- fi;\
+- );\
+- fi;\
+- done;\
+- $(CP) $(CP_PRESERVE) s-stratt.o s-stratt.ali gnatlib
+- echo s-stratt.o >>gnatlib/rebuild;\
+- echo yes > inlining
++ -rm -rf $(DESTDIR)$(GARLIC)
++ -$(mkinstalldirs) $(DESTDIR)$(GARLIC)
++ @echo $(DESTDIR)$(GARLIC) created
++ -rm -rf $(DESTDIR)$(includedir)/garlic
++ -$(mkinstalldirs) $(DESTDIR)$(includedir)/garlic
++ @echo $(DESTDIR)$(includedir)/garlic created
++ -$(mkinstalldirs) $(DESTDIR)$(libdir)/gnat
++ @echo $(DESTDIR)$(libdir)/gnat created
+
+ linktest: $(srcdir)/linktest.adb $(OBJECTS)
+ $(GNAT_FOR_HOST) -c -a -m $(GNATFLAGS) -I$(srcdir) -I. \
+@@ -541,47 +512,24 @@
+ $(GNAT_FOR_HOST) -b -a -m $(GNATFLAGS) -I$(srcdir) -I. \
+ $(srcdir)/linktest.adb
+
+-install-extra-libs: $(FILTERSEXTRALIBS) inlining install-dirs-local
++install-extra-libs: $(FILTERSEXTRALIBS) all-local install-dirs-local
+
+ install-data-local: all-local install-dirs-local install-extra-libs
+- if test ! -f inlining; then\
+- exit 1;\
+- fi
+- @-for lib in libgnat.a libgnarl.a libAtasking.a libPtasking.a; do \
+- pathtolib=`$(srcdir)/../Dist/config.sdefault $(GNAT_RTS_FLAG)`;\
+- if test -f $$pathtolib$$lib; then \
+- $(CP) $$pathtolib$$lib $(GARLIC)/$$lib;\
+- chmod u+w $(GARLIC)/$$lib;\
+- $(AR) d $(GARLIC)/$$lib s-rpc.o \
+- s-shasto.o \
+- s-parint.o 2>/dev/null;\
+- if test `cat inlining` = "yes"; then\
+- (cd gnatlib;\
+- for o in `cat rebuild`; do \
+- $(AR) d $(GARLIC)/$$lib $$o 2>/dev/null;\
+- if test $$? = 0; then \
+- $(AR) cq $(GARLIC)/$$lib $$o;\
+- echo Replace inlined $$o in $$lib;\
+- fi;\
+- done);\
+- fi;\
+- $(RANLIB) $(GARLIC)/$$lib;\
++ @for i in $(SOURCES); do\
++ if test -f $$i; then\
++ $(CP) $(CP_PRESERVE) $$i $(DESTDIR)$(includedir)/garlic/;\
+ fi;\
+ done
+- @if test `cat inlining` = "yes"; then\
+- (cd gnatlib;\
+- $(CP) $(CP_PRESERVE) `$(SED) 's/\.o/.ali/g' rebuild` $(GARLIC));\
+- fi
+- @for i in $(SOURCES)\
+- `echo $(OBJECTS) | $(SED) -e 's/\.o/.ali/g'`; do\
++ @for i in `echo $(OBJECTS) | $(SED) -e 's/\.o/.ali/g'`; do\
+ if test -f $$i; then\
+- $(CP) $(CP_PRESERVE) $$i $(GARLIC)/;\
++ $(CP) $(CP_PRESERVE) $$i $(DESTDIR)$(GARLIC)/;\
+ fi;\
+ done
+- $(AR) cq $(GARLIC)/libgarlic.a $(subst s-stratt.o,,$(OBJECTS))
+- $(RANLIB) $(GARLIC)/libgarlic.a
+- chmod a+r $(GARLIC)/*
+- chmod a-w $(GARLIC)/*
++ $(CP) $(CP_PRESERVE) garlic.gpr $(DESTDIR)$(libdir)/gnat/
++ $(AR) cq $(DESTDIR)$(GARLIC)/libgarlic.a $(OBJECTS)
++ $(RANLIB) $(DESTDIR)$(GARLIC)/libgarlic.a
++ chmod a+r $(DESTDIR)$(GARLIC)/*
++ chmod a-w $(DESTDIR)$(GARLIC)/*
+
+ # Dependencies
+
+@@ -597,10 +545,9 @@
+ ### dependencies or to use the "fast" target.
+ ###
+ ### DO NOT REMOVE THIS LINE, IT IS USED BY MAKEDEPEND ###
+-s-dsaser.o: s-dsaser.ads s-garlic.ads s-gardeb.ads s-garexc.ads s-gasoli.ads s-gastha.ads s-garstr.ads s-gartyp.ads s-garuni.ads s-parint.ads s-rpc.ads
+ s-gafizi.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-gafizi.ads s-gafizi.adb s-garhea.ads s-garpro.ads s-gasoli.ads s-gastha.ads s-garstr.ads s-gartyp.ads
+ s-galiop.o: s-garlic.ads s-galiop.ads
+-s-ganata.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-ganata.ads s-ganata.adb s-gasoli.ads s-gasoli.adb s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads s-stratt.adb
++s-ganata.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-ganata.ads s-ganata.adb s-gasoli.ads s-gasoli.adb s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads
+ s-ganeut.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-ganeut.ads s-ganeut.adb s-gasoli.ads s-gartyp.ads
+ s-ganota.o: s-garlic.ads s-garexc.ads s-ganota.ads s-ganota.adb s-garpro.ads s-gasoli.ads s-gartyp.ads
+ s-gaphlo.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-gaphlo.ads s-gaphlo.adb s-garpro.ads s-gasoli.ads s-gartyp.ads s-garuti.ads
+@@ -612,38 +559,37 @@
+ s-gardeb.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-gasoli.ads s-gartyp.ads
+ s-garela.o: s-garlic.ads s-garela.ads s-garela.adb s-garopt.ads s-gasoli.ads s-gartas.ads s-gartyp.ads
+ s-garexc.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garexc.adb s-gasoli.ads s-gartyp.ads
+-s-garfil.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-garfil.adb s-garhea.ads s-ganata.ads s-ganata.adb s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads s-stratt.adb
+-s-gargro.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-gargro.ads s-gargro.adb s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-garstr.adb s-gartyp.ads s-stratt.adb
++s-garfil.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-garfil.adb s-garhea.ads s-ganata.ads s-ganata.adb s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads
++s-gargro.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-gargro.ads s-gargro.adb s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-garstr.adb s-gartyp.ads
+ s-garhea.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-gargro.ads s-garhea.ads s-garhea.adb s-galiop.ads s-garopt.ads s-garpar.ads s-garpar.adb s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartra.ads s-gartyp.ads s-garuti.ads
+ s-garlic.o: s-garlic.ads
+ s-garopt.o: s-garlic.ads s-garopt.ads s-garopt.adb s-gaplsp.ads s-gartyp.ads s-garuti.ads
+-s-garpar.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-gargro.ads s-garhea.ads s-ganata.ads s-garopt.ads s-garpar.ads s-garpar.adb s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads s-stratt.adb
++s-garpar.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-gargro.ads s-garhea.ads s-ganata.ads s-garopt.ads s-garpar.ads s-garpar.adb s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads
+ s-garpri.o: s-garlic.ads s-garpri.ads s-garpri.adb
+ s-garpro.o: s-garlic.ads s-garexc.ads s-garpro.ads s-garpro.adb s-gartyp.ads
+ s-garrem.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-garrem.ads s-garrem.adb s-gasoli.ads s-gastha.ads s-garstr.ads s-gartyp.ads s-garuti.ads
+ s-garsta.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garela.ads s-garexc.ads s-garexc.adb s-garfil.ads s-gargro.ads s-garhea.ads s-ganata.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gaprco.ads s-garrem.ads s-gasoli.ads s-garsta.ads s-garsta.adb s-gastha.ads s-garsto.ads s-gastco.ads s-garstr.ads s-garter.ads s-gartra.ads s-gartyp.ads s-garuni.ads s-garuti.ads
+ s-garsto.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garpar.ads s-gaphlo.ads s-gaplsp.ads s-garpro.ads s-gasoli.ads s-gastha.ads s-garsto.ads s-garsto.adb s-garstr.ads s-gartyp.ads s-garuni.ads
+-s-garstr.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-gasoli.ads s-gasoli.adb s-gastha.ads s-gastha.adb s-garstr.ads s-garstr.adb s-gartyp.ads s-stratt.adb
++s-garstr.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-gasoli.ads s-gasoli.adb s-gastha.ads s-gastha.adb s-garstr.ads s-garstr.adb s-gartyp.ads
+ s-gartab.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-ganata.ads s-gasoli.ads s-gartab.ads s-gartab.adb s-gartyp.ads
+-s-gartas.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-gasoli.ads s-gartas.ads s-gartas.adb s-gartyp.ads s-stratt.adb
+-s-garter.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garela.ads s-garexc.ads s-garfil.ads s-garhea.ads s-garhea.adb s-galiop.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-garter.ads s-garter.adb s-gartra.ads s-gartyp.ads s-garuti.ads s-stratt.adb
+-s-gartra.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garopt.ads s-gasoli.ads s-gastha.ads s-garstr.ads s-gartra.ads s-gartra.adb s-gartyp.ads s-stratt.adb
++s-gartas.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-gasoli.ads s-gartas.ads s-gartas.adb s-gartyp.ads
++s-garter.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garela.ads s-garexc.ads s-garfil.ads s-garhea.ads s-garhea.adb s-galiop.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-garter.ads s-garter.adb s-gartra.ads s-gartyp.ads s-garuti.ads
++s-gartra.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garopt.ads s-gasoli.ads s-gastha.ads s-garstr.ads s-gartra.ads s-gartra.adb s-gartyp.ads
+ s-gartyp.o: s-garlic.ads s-gartyp.ads s-gartyp.adb
+-s-garuni.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-gargro.ads s-garhea.ads s-garhea.adb s-galiop.ads s-ganata.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartab.adb s-gartra.ads s-gartyp.ads s-garuni.ads s-garuni.adb s-garuti.ads s-stratt.adb
++s-garuni.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-gargro.ads s-garhea.ads s-garhea.adb s-galiop.ads s-ganata.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartab.adb s-gartra.ads s-gartyp.ads s-garuni.ads s-garuni.adb s-garuti.ads
+ s-garuti.o: s-garlic.ads s-garuti.ads s-garuti.adb
+-s-gasoli.o: s-garlic.ads s-gasoli.ads s-gasoli.adb s-gartyp.ads s-stratt.adb
++s-gasoli.o: s-garlic.ads s-gasoli.ads s-gasoli.adb s-gartyp.ads
+ s-gastco.o: s-garlic.ads s-garexc.ads s-garsto.ads s-gastco.ads s-gastco.adb s-gartyp.ads
+ s-gastdf.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garopt.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsto.ads s-gastdf.ads s-gastdf.adb s-gartyp.ads
+-s-gastds.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garexc.adb s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-gastds.ads s-gastds.adb s-garstr.ads s-gartyp.ads s-garuni.ads s-stratt.adb
++s-gastds.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garexc.adb s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-gastds.ads s-gastds.adb s-garstr.ads s-gartyp.ads s-garuni.ads
+ s-gastha.o: s-garlic.ads s-gasoli.ads s-gastha.ads s-gastha.adb s-gartyp.ads
+ s-gprese.o: s-garlic.ads s-garexc.ads s-garpro.ads s-gaprre.ads s-gprese.ads s-gartyp.ads
+ s-gptcse.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garpro.ads s-gaprtc.ads s-gptcse.ads s-gptcse.adb s-gasoli.ads s-gartyp.ads
+-s-parint.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-garsta.ads s-gastha.ads s-garsto.ads s-garstr.ads s-gartyp.ads s-garuni.ads s-garuti.ads s-garuti.adb s-parint.ads s-parint.adb s-rpc.ads s-stratt.adb
+-s-rpc.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-garhea.ads s-garhea.adb s-galiop.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpri.ads s-gaprma.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsta.ads s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-gartra.ads s-gartyp.ads s-garuni.ads s-garuti.ads s-rpc.ads s-rpc.adb s-stratt.adb
+-s-rpcser.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garhea.ads s-garopt.ads s-gaplsp.ads s-garpri.ads s-gaprma.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsta.ads s-gastha.ads s-garstr.ads s-garstr.adb s-gartas.ads s-gartyp.ads s-garuni.ads s-parint.ads s-rpc.ads s-rpcser.ads s-rpcser.adb s-stratt.adb
++s-parint.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-garsta.ads s-gastha.ads s-garsto.ads s-garstr.ads s-gartyp.ads s-garuni.ads s-garuti.ads s-garuti.adb s-parint.ads s-parint.adb s-rpc.ads
++s-rpc.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-garhea.ads s-garhea.adb s-galiop.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpri.ads s-gaprma.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsta.ads s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-gartra.ads s-gartyp.ads s-garuni.ads s-garuti.ads s-rpc.ads s-rpc.adb
++s-rpcser.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garhea.ads s-garopt.ads s-gaplsp.ads s-garpri.ads s-gaprma.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsta.ads s-gastha.ads s-garstr.ads s-garstr.adb s-gartas.ads s-gartyp.ads s-garuni.ads s-parint.ads s-rpc.ads s-rpcser.ads s-rpcser.adb
+ s-rpstio.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garhea.ads s-ganata.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsta.ads s-gastha.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartab.adb s-gartyp.ads s-rpc.ads s-rpstio.ads s-rpstio.adb
+-s-shasto.o: s-garlic.ads s-gardeb.ads s-garexc.ads s-garexc.adb s-garsto.ads s-gartyp.ads s-shasto.ads s-shasto.adb
+-s-stratt.o: s-stratt.adb
++s-shasto.o: s-garlic.ads s-gardeb.ads s-garexc.ads s-garexc.adb s-garsto.ads s-gartyp.ads s-shasto.adb
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+ .NOEXPORT:
diff --git a/gnat-glade/patches/patch-Garlic_garlic.gpr b/gnat-glade/patches/patch-Garlic_garlic.gpr
new file mode 100644
index 0000000000..7169965283
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_garlic.gpr
@@ -0,0 +1,44 @@
+$NetBSD: patch-Garlic_garlic.gpr,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Provide project file for gnatmake
+
+--- /dev/null
++++ Garlic/garlic.gpr
+@@ -0,0 +1,37 @@
++library project Garlic is
++
++ for Languages use ("Ada");
++
++ for Source_Dirs use ("../../include/garlic");
++ for Library_Dir use "../../lib/garlic";
++ for Library_Kind use "static";
++
++ for Library_Name use "garlic";
++
++ package Naming is
++ for dot_replacement use "-";
++ for casing use "lowercase";
++ for body_suffix ("ada") use ".adb";
++ for spec_suffix ("ada") use ".ads";
++ end Naming;
++
++ package Install is
++ for Active use "False";
++ end Install;
++
++ for Externally_Built use "True";
++
++ type Platforms is ("Posix", "Windows_NT");
++
++ type Library_Kind is ("static", "static-pic", "relocatable");
++
++ type Garlic_Build_Kind is ("dev", "prod");
++
++ Ada_Switches := ("-O2", "-g", "-gnatg");
++ Common_Dir := "../Garlic";
++ Platform_Dir := "../Garlic/platform/e";
++ Platform : Platforms := "Posix";
++ Library_Type : Library_Kind := "static";
++ Build_Mode : Garlic_Build_Kind := "prod";
++
++end Garlic;
diff --git a/gnat-glade/patches/patch-Garlic_isthrbio.adb b/gnat-glade/patches/patch-Garlic_isthrbio.adb
new file mode 100644
index 0000000000..4ade7f8fd8
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_isthrbio.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_isthrbio.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix link time version warning
+
+--- Garlic/isthrbio.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/isthrbio.adb
+@@ -65,7 +65,7 @@
+ Exceptfds : Fd_Set_Access;
+ Timeout : Timeval_Access)
+ return int;
+- pragma Import (C, C_Select, "select");
++ pragma Import (C, C_Select, "__netbsd_select");
+
+ task A_Task is
+ entry Start;
diff --git a/gnat-glade/patches/patch-Garlic_isthrbio.gpr b/gnat-glade/patches/patch-Garlic_isthrbio.gpr
new file mode 100644
index 0000000000..51d74433b0
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_isthrbio.gpr
@@ -0,0 +1,17 @@
+$NetBSD: patch-Garlic_isthrbio.gpr,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Make project to fix link time version warning
+
+--- /dev/null
++++ Garlic/isthrbio.gpr
+@@ -0,0 +1,10 @@
++project Isthrbio is
++
++ for Languages use ("C", "Ada");
++
++ for Exec_Dir use "../";
++ for Source_Dirs use (".");
++ for Main use ("isthrbio");
++ for Source_Files use ("isthrbio.adb", "select.c");
++
++end Isthrbio;
diff --git a/gnat-glade/patches/patch-Garlic_s-dsaser.ads b/gnat-glade/patches/patch-Garlic_s-dsaser.ads
new file mode 100644
index 0000000000..c95f265b15
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-dsaser.ads
@@ -0,0 +1,63 @@
+$NetBSD: patch-Garlic_s-stratt.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Remove duplicate specification
+
+--- Garlic/s-dsaser.ads.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-dsaser.ads
+@@ -1,56 +0,0 @@
+-------------------------------------------------------------------------------
+--- --
+--- GLADE COMPONENTS --
+--- --
+--- S Y S T E M . D S A _ S E R V I C E S --
+--- --
+--- S p e c --
+--- --
+--- Copyright (C) 2006 Free Software Foundation, Inc. --
+--- --
+--- GARLIC 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 2, or (at your option) any later ver- --
+--- sion. GARLIC is distributed in the hope that it will be useful, but --
+--- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABI- --
+--- LITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+--- License for more details. You should have received a copy of the GNU --
+--- General Public License distributed with GARLIC; see file COPYING. If --
+--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
+--- Boston, MA 02111-1307, USA. --
+--- --
+--- As a special exception, if other files instantiate generics from this --
+--- unit, or you link this unit with other files to produce an executable, --
+--- this unit does not by itself cause the resulting executable to be --
+--- covered by the GNU General Public License. This exception does not --
+--- however invalidate any other reasons why the executable file might be --
+--- covered by the GNU Public License. --
+--- --
+--- GLADE is maintained by ACT Europe. --
+--- (email: glade-report%act-europe.fr@localhost) --
+--- --
+-------------------------------------------------------------------------------
+-
+--- This package is used to call distributed system annex services, which
+--- require the partition communication sub-system to be initialized.
+-
+-with System.Partition_Interface;
+-with System.RPC;
+-
+-package System.DSA_Services is
+-
+- function Get_Active_Partition_ID
+- (Name : Partition_Interface.Unit_Name) return RPC.Partition_ID
+- renames Partition_Interface.Get_Active_Partition_ID;
+- -- Returns the partition ID of the partition in which Name resides
+-
+- function Get_Local_Partition_ID return RPC.Partition_ID
+- renames Partition_Interface.Get_Local_Partition_ID;
+- -- Return the Partition_ID of the current partition
+-
+- function Get_Passive_Partition_ID
+- (Name : Partition_Interface.Unit_Name) return RPC.Partition_ID
+- renames Partition_Interface.Get_Passive_Partition_ID;
+- -- Return the Partition_ID of the given shared passive partition
+-
+-end System.DSA_Services;
diff --git a/gnat-glade/patches/patch-Garlic_s-gafizi.adb b/gnat-glade/patches/patch-Garlic_s-gafizi.adb
new file mode 100644
index 0000000000..85af2ede5d
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gafizi.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gafizi.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix som compilation warnings
+
+--- Garlic/s-gafizi.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gafizi.adb
+@@ -33,8 +33,6 @@
+
+ with Ada.Streams; use Ada.Streams;
+ with Interfaces.C;
+-with System.Garlic.Filters;
+-pragma Warnings (Off, System.Garlic.Filters);
+ with System.Garlic.Debug; use System.Garlic.Debug;
+ with System.Garlic.Streams; use System.Garlic.Streams;
+
diff --git a/gnat-glade/patches/patch-Garlic_s-gaprre.adb b/gnat-glade/patches/patch-Garlic_s-gaprre.adb
new file mode 100644
index 0000000000..fe9eeac8ce
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gaprre.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gaprre.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Garlic/s-gaprre.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gaprre.adb
+@@ -41,7 +41,6 @@
+ with System.Garlic.Heart; use System.Garlic.Heart;
+ with System.Garlic.Options; use System.Garlic.Options;
+ with System.Garlic.Physical_Location; use System.Garlic.Physical_Location;
+-with System.Garlic.Protocols; use System.Garlic.Protocols;
+ with System.Garlic.Streams; use System.Garlic.Streams;
+ with System.Garlic.Trace; use System.Garlic.Trace;
+ with System.Garlic.Types; use System.Garlic.Types;
diff --git a/gnat-glade/patches/patch-Garlic_s-gaprre.ads b/gnat-glade/patches/patch-Garlic_s-gaprre.ads
new file mode 100644
index 0000000000..d80950978f
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gaprre.ads
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gaprre.ads,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Garlic/s-gaprre.ads.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gaprre.ads
+@@ -36,7 +36,6 @@
+ with GNAT.Strings;
+
+ with System.Garlic.Exceptions;
+-with System.Garlic.Protocols;
+ with System.Garlic.Types;
+
+ package System.Garlic.Protocols.Replay is
diff --git a/gnat-glade/patches/patch-Garlic_s-gaprtc.adb b/gnat-glade/patches/patch-Garlic_s-gaprtc.adb
new file mode 100644
index 0000000000..9f2b6742e9
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gaprtc.adb
@@ -0,0 +1,49 @@
+$NetBSD: patch-Garlic_s-gaprtc.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+
+--- Garlic/s-gaprtc.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gaprtc.adb
+@@ -43,7 +43,6 @@
+ with System.Garlic.Partitions; use System.Garlic.Partitions;
+ with System.Garlic.Physical_Location; use System.Garlic.Physical_Location;
+ with System.Garlic.Platform_Specific;
+-with System.Garlic.Protocols; use System.Garlic.Protocols;
+ with System.Garlic.Soft_Links;
+ with System.Garlic.Streams; use System.Garlic.Streams;
+ with System.Garlic.Table;
+@@ -58,7 +57,7 @@
+ Key : Debug_Key := Private_Debug_Key)
+ renames Print_Debug_Info;
+
+- use Ada.Streams, System.Garlic.Protocols, System.Garlic.Types;
++ use Ada.Streams, System.Garlic.Types;
+
+ subtype Error_Type is Exceptions.Error_Type;
+
+@@ -168,7 +167,6 @@
+ Data : access Stream_Element_Array;
+ From : Stream_Element_Count;
+ Error : in out Error_Type);
+- pragma Inline (Send);
+ pragma Export (Ada, Send, "GLADE_Physical_Send");
+ -- Receive and send data. Receive loops as long as Data has not
+ -- been filled and Send as long as everything has not
+@@ -320,12 +318,11 @@
+
+ function Do_Connect (Sock_Addr : Sock_Addr_Type) return Socket_Type is
+ Peer : Socket_Type := No_Socket;
+- Addr : Sock_Addr_Type := Sock_Addr;
+
+ begin
+ begin
+ Create_Socket (Peer);
+- Connect_Socket (Peer, Addr);
++ Connect_Socket (Peer, Sock_Addr);
+ exception when Socket_Error =>
+ pragma Debug (D ("Cannot connect to " & Image (Sock_Addr)));
+ if Peer /= No_Socket then
diff --git a/gnat-glade/patches/patch-Garlic_s-garexc.adb b/gnat-glade/patches/patch-Garlic_s-garexc.adb
new file mode 100644
index 0000000000..5436035db7
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-garexc.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Garlic_s-garexc.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warning
+https://github.com/reznikmm/garlic/commit/4d16e8caddbcc83f6d37e14d657a6c8515466cc7
+
+--- Garlic/s-garexc.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-garexc.adb
+@@ -113,8 +113,6 @@
+ procedure Raise_With_Errno (Id : Exception_Id) is
+ begin
+ Raise_Exception (Id, "Error" & Integer'Image (Errno));
+- -- Next line will never be called, just to avoid GNAT warnings
+- Raise_With_Errno (Id);
+ end Raise_With_Errno;
+
+ -----------
diff --git a/gnat-glade/patches/patch-Garlic_s-garsto.adb b/gnat-glade/patches/patch-Garlic_s-garsto.adb
new file mode 100644
index 0000000000..7e2e2ba7d6
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-garsto.adb
@@ -0,0 +1,64 @@
+$NetBSD: patch-Garlic_s-garsto.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Get rid of Getenv
+https://github.com/reznikmm/garlic/commit/4d16e8caddbcc83f6d37e14d657a6c8515466cc7
+
+--- Garlic/s-garsto.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-garsto.adb
+@@ -33,8 +33,7 @@
+
+ with Ada.Streams; use Ada.Streams;
+
+-with GNAT.HTable;
+-with GNAT.OS_Lib;
++with System.HTable;
+ with GNAT.Strings; use GNAT.Strings;
+
+ with System.Garlic.Debug; use System.Garlic.Debug;
+@@ -59,12 +58,10 @@
+ Key : Debug_Key := Private_Debug_Key)
+ renames Print_Debug_Info;
+
+- package OS renames GNAT.OS_Lib;
+-
+ subtype Hash_Header is Natural range 0 .. 30;
+
+- function Hash (F : OS.String_Access) return Hash_Header;
+- function Equal (F1, F2 : OS.String_Access) return Boolean;
++ function Hash (F : String_Access) return Hash_Header;
++ function Equal (F1, F2 : String_Access) return Boolean;
+ -- Hash and equality functions for hash table
+
+ function Extract_Pkg_Name (Var_Name : String) return String;
+@@ -88,11 +85,11 @@
+ Max_Storages : constant := 10;
+ Storage_Table : array (First_Storage .. Max_Storages) of Shared_Data_Access;
+
+- package SST is new GNAT.HTable.Simple_HTable
++ package SST is new System.HTable.Simple_HTable
+ (Header_Num => Hash_Header,
+ Element => Shared_Data_Access,
+ No_Element => null,
+- Key => OS.String_Access,
++ Key => String_Access,
+ Hash => Hash,
+ Equal => Equal);
+
+@@ -100,7 +97,7 @@
+ -- Equal --
+ -----------
+
+- function Equal (F1, F2 : OS.String_Access) return Boolean is
++ function Equal (F1, F2 : String_Access) return Boolean is
+ begin
+ return F1.all = F2.all;
+ end Equal;
+@@ -123,7 +120,7 @@
+ -- Hash --
+ ----------
+
+- function Hash (F : OS.String_Access) return Hash_Header is
++ function Hash (F : String_Access) return Hash_Header is
+ N : Natural := 0;
+
+ begin
diff --git a/gnat-glade/patches/patch-Garlic_s-garstr.ads b/gnat-glade/patches/patch-Garlic_s-garstr.ads
new file mode 100644
index 0000000000..bc0d7d7926
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-garstr.ads
@@ -0,0 +1,19 @@
+$NetBSD: patch-Garlic_s-garstr.ads,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-garstr.ads.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-garstr.ads
+@@ -48,10 +48,10 @@
+ type Node_Ptr is access Node;
+
+ type Node (Size : Ada.Streams.Stream_Element_Count) is record
+- Content : Ada.Streams.Stream_Element_Array (1 .. Size);
+ Current : Ada.Streams.Stream_Element_Offset := 1;
+ Last : Ada.Streams.Stream_Element_Offset := 1;
+ Next : Node_Ptr;
++ Content : Ada.Streams.Stream_Element_Array (1 .. Size);
+ end record;
+
+ type Params_Stream_Type (Initial_Size : Ada.Streams.Stream_Element_Count) is
diff --git a/gnat-glade/patches/patch-Garlic_s-gartab.adb b/gnat-glade/patches/patch-Garlic_s-gartab.adb
new file mode 100644
index 0000000000..e68576f48b
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gartab.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Garlic_s-gartab.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-gartab.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gartab.adb
+@@ -209,7 +209,7 @@
+ Index := Allocate;
+ Table (Index) := Null_Component;
+ Usage (Index).Name := Name;
+- Set_Info (Name, Integer (Integer (Index)));
++ Set_Info (Name, Integer (Index));
+ else
+ Index := Index_Type (Info);
+ end if;
diff --git a/gnat-glade/patches/patch-Garlic_s-gartas.adb b/gnat-glade/patches/patch-Garlic_s-gartas.adb
new file mode 100644
index 0000000000..ce6039212a
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gartas.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gartas.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Garlic/s-gartas.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gartas.adb
+@@ -35,7 +35,6 @@
+ with Ada.Dynamic_Priorities;
+ -- with Ada.Task_Attributes;
+
+-with System; use System;
+ with System.Garlic.Debug; use System.Garlic.Debug;
+ with System.Garlic.Soft_Links; use System.Garlic.Soft_Links;
+ with System.Garlic.Types; use System.Garlic.Types;
diff --git a/gnat-glade/patches/patch-Garlic_s-garuni.adb b/gnat-glade/patches/patch-Garlic_s-garuni.adb
new file mode 100644
index 0000000000..47577d9d37
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-garuni.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Garlic_s-garuni.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-garuni.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-garuni.adb
+@@ -543,7 +543,7 @@
+ end if;
+
+ pragma Debug
+- (D ("Looking for information on unit "& Units.Get_Name (Unit)));
++ (D ("Looking for information on unit " & Units.Get_Name (Unit)));
+
+ Units.Enter;
+ Current := Units.Get_Component (Unit);
diff --git a/gnat-glade/patches/patch-Garlic_s-gastdf.adb b/gnat-glade/patches/patch-Garlic_s-gastdf.adb
new file mode 100644
index 0000000000..c73e785e96
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gastdf.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gastdf.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Garlic/s-gastdf.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gastdf.adb
+@@ -36,7 +36,6 @@
+
+ with GNAT.OS_Lib; use GNAT.OS_Lib;
+
+-with System;
+ with System.File_Control_Block;
+ with System.File_IO;
+
diff --git a/gnat-glade/patches/patch-Garlic_s-gastha.adb b/gnat-glade/patches/patch-Garlic_s-gastha.adb
new file mode 100644
index 0000000000..2e4c5311ea
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gastha.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gastha.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-gastha.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gastha.adb
+@@ -39,7 +39,6 @@
+ package SSE renames System.Storage_Elements;
+
+ use type SSE.Storage_Count;
+- use type IC.int;
+
+ function malloc (Size : IC.int) return Address;
+ pragma Import (C, malloc, "__gnat_malloc");
diff --git a/gnat-glade/patches/patch-Garlic_s-gptcse.adb b/gnat-glade/patches/patch-Garlic_s-gptcse.adb
new file mode 100644
index 0000000000..324a2b22d9
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gptcse.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gptcse.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Garlic/s-gptcse.adb.orig 2007-11-26 15:35:25.000000000 +0200
++++ Garlic/s-gptcse.adb
+@@ -37,7 +37,6 @@
+
+ with System.Garlic.Debug; use System.Garlic.Debug;
+ with System.Garlic.Soft_Links; use System.Garlic.Soft_Links;
+-with System.Garlic.Protocols.Tcp; use System.Garlic.Protocols.Tcp;
+ with System.Garlic.Types; use System.Garlic.Types;
+
+ package body System.Garlic.Protocols.Tcp.Server is
diff --git a/gnat-glade/patches/patch-Garlic_s-parint.adb b/gnat-glade/patches/patch-Garlic_s-parint.adb
new file mode 100644
index 0000000000..738b1532e4
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-parint.adb
@@ -0,0 +1,61 @@
+$NetBSD: patch-Garlic_s-parint.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation error for caller stubs
+https://github.com/reznikmm/garlic/commit/97a0ea7e59e509d1328dc6287c432861a9044561
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-parint.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-parint.adb
+@@ -562,6 +562,7 @@
+
+ Name : String := RCI_Name;
+ Unit : Unit_Id;
++ Initialized : Boolean := False;
+
+ -----------------------------
+ -- Get_Active_Partition_ID --
+@@ -571,6 +572,11 @@
+ Partition : Partition_ID;
+ Error : aliased Error_Type;
+ begin
++ if not Initialized then
++ Initialized := True;
++ To_Lower (Name);
++ Unit := Get_Unit_Id (Name);
++ end if;
+ Get_Partition (Unit, Partition, Error);
+ if Found (Error) then
+ Raise_Communication_Error (Error'Access);
+@@ -586,6 +592,11 @@
+ Receiver : Unsigned_64;
+ Error : aliased Error_Type;
+ begin
++ if not Initialized then
++ Initialized := True;
++ To_Lower (Name);
++ Unit := Get_Unit_Id (Name);
++ end if;
+ Get_Receiver (Unit, Receiver, Error);
+ if Found (Error) then
+ Raise_Communication_Error (Error'Access);
+@@ -593,9 +604,6 @@
+ return Receiver;
+ end Get_RCI_Package_Receiver;
+
+- begin
+- To_Lower (Name);
+- Unit := Get_Unit_Id (Name);
+ end RCI_Locator;
+
+ ---------
+@@ -622,7 +630,8 @@
+ while Caller /= null loop
+ D ("Check " & Caller.Name.all & " version consistency");
+ if Different (Caller.Version.all,
+- Get_Unit_Version (Caller.Name.all, Caller.RCI)) then
++ Get_Unit_Version (Caller.Name.all, Caller.RCI))
++ then
+
+ -- If not boot partition, then terminate without waiting for
+ -- boot partition request.
diff --git a/gnat-glade/patches/patch-Garlic_s-parint.ads b/gnat-glade/patches/patch-Garlic_s-parint.ads
new file mode 100644
index 0000000000..5cd9cf6714
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-parint.ads
@@ -0,0 +1,16 @@
+$NetBSD: patch-Garlic_s-parint.ads,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Add PCS_Version constant to make GNAT work
+https://github.com/reznikmm/garlic/commit/a7d7065148e7af5fccdbf32e03906d68a8aba65b
+
+--- Garlic/s-parint.ads.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-parint.ads
+@@ -41,6 +41,8 @@
+
+ pragma Elaborate_Body;
+
++ PCS_Version : constant := 1;
++
+ type DSA_Implementation_Name is (No_DSA, GARLIC_DSA, PolyORB_DSA);
+ DSA_Implementation : constant DSA_Implementation_Name := GARLIC_DSA;
+
diff --git a/gnat-glade/patches/patch-Garlic_s-rpc.adb b/gnat-glade/patches/patch-Garlic_s-rpc.adb
new file mode 100644
index 0000000000..ce4ff07955
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-rpc.adb
@@ -0,0 +1,18 @@
+$NetBSD: patch-Garlic_s-rpc.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-rpc.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-rpc.adb
+@@ -48,10 +48,6 @@
+
+ package body System.RPC is
+
+- use Ada.Streams;
+-
+- use type System.Garlic.Streams.Params_Stream_Access;
+- use type System.Garlic.Streams.Params_Stream_Type;
+ use type System.Garlic.Types.Partition_ID;
+
+ -- This package needs extra comments ???
diff --git a/gnat-glade/patches/patch-Garlic_s-rpcser.adb b/gnat-glade/patches/patch-Garlic_s-rpcser.adb
new file mode 100644
index 0000000000..ef6cc647b1
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-rpcser.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-rpcser.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-rpcser.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-rpcser.adb
+@@ -61,7 +61,6 @@
+ package body System.RPC.Server is
+
+ use type System.Garlic.Types.Partition_ID;
+- use type System.Garlic.Streams.Params_Stream_Type;
+
+ Private_Debug_Key : constant Debug_Key :=
+ Debug_Initialize ("S_RPCSER", "(s-rpcser): ");
diff --git a/gnat-glade/patches/patch-Garlic_s-shasto.adb b/gnat-glade/patches/patch-Garlic_s-shasto.adb
new file mode 100644
index 0000000000..4aa2a8a0b7
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-shasto.adb
@@ -0,0 +1,130 @@
+$NetBSD: patch-Garlic_s-shasto.adb,v 1.0 2025/02/13 22:00:00 dkazankov Exp $
+
+Implementation of Shared_Var_Procs specs
+
+--- Garlic/s-shasto.adb.orig 2007-11-26 15:35:25.000000000 +0200
++++ Garlic/s-shasto.adb
+@@ -31,17 +31,24 @@
+ -- --
+ ------------------------------------------------------------------------------
+
++with Ada.Streams.Stream_IO;
++
+ with System.Garlic.Exceptions; use System.Garlic.Exceptions;
+ with System.Garlic.Storages; use System.Garlic.Storages;
+
+ package body System.Shared_Storage is
+
++ use Ada.Streams.Stream_IO;
++
++ procedure Shared_Var_Close (Var : in out Stream_Access);
++ function Shared_Var_ROpen (Var : String) return Stream_Access;
++ function Shared_Var_WOpen (Var : String) return Stream_Access;
++
+ ----------------------
+ -- Shared_Var_Close --
+ ----------------------
+
+- procedure Shared_Var_Close (Var : in out SIO.Stream_Access)
+- is
++ procedure Shared_Var_Close (Var : in out Stream_Access) is
+ VS : Shared_Data_Access;
+ pragma Warnings (Off, Var);
+ begin
+@@ -53,8 +60,7 @@
+ -- Shared_Var_Lock --
+ ---------------------
+
+- procedure Shared_Var_Lock (Var : String)
+- is
++ procedure Shared_Var_Lock (Var : String) is
+ VS : Shared_Data_Access;
+ Ok : Boolean;
+ E : aliased Error_Type;
+@@ -71,8 +77,7 @@
+ -- Shared_Var_ROpen --
+ ----------------------
+
+- function Shared_Var_ROpen (Var : String) return SIO.Stream_Access
+- is
++ function Shared_Var_ROpen (Var : String) return Stream_Access is
+ VS : Shared_Data_Access;
+ Ok : Boolean;
+ E : aliased Error_Type;
+@@ -84,7 +89,7 @@
+ end if;
+ Initiate_Request (VS, Read, Ok);
+ if Ok then
+- return SIO.Stream_Access (VS);
++ return Stream_Access (VS);
+ else
+ return null;
+ end if;
+@@ -94,8 +99,7 @@
+ -- Shared_Var_Unlock --
+ -----------------------
+
+- procedure Shared_Var_Unlock (Var : String)
+- is
++ procedure Shared_Var_Unlock (Var : String) is
+ VS : Shared_Data_Access;
+ E : aliased Error_Type;
+
+@@ -111,8 +115,7 @@
+ -- Shared_Var_WOpen --
+ ----------------------
+
+- function Shared_Var_WOpen (Var : String) return SIO.Stream_Access
+- is
++ function Shared_Var_WOpen (Var : String) return Stream_Access is
+ VS : Shared_Data_Access;
+ Ok : Boolean;
+ E : aliased Error_Type;
+@@ -123,7 +126,46 @@
+ Raise_Communication_Error (Content (E'Access));
+ end if;
+ Initiate_Request (VS, Write, Ok);
+- return SIO.Stream_Access (VS);
++ return Stream_Access (VS);
+ end Shared_Var_WOpen;
+
++ ----------------------
++ -- Shared_Var_Procs --
++ ----------------------
++
++ package body Shared_Var_Procs is
++
++ -- XXX for instance, we use stream attributes to
++ -- assign variable V of limited type Typ.
++
++ ----------
++ -- Read --
++ ----------
++
++ procedure Read is
++ S : Stream_Access := Shared_Var_ROpen (Full_Name);
++
++ begin
++ if S /= null then
++ Typ'Read (S, V);
++ Shared_Var_Close (S);
++ end if;
++ end Read;
++
++ -----------
++ -- Write --
++ -----------
++
++ procedure Write is
++ S : Stream_Access := Shared_Var_WOpen (Full_Name);
++
++ begin
++ if S /= null then
++ Typ'Write (S, V);
++ Shared_Var_Close (S);
++ end if;
++ end Write;
++
++ end Shared_Var_Procs;
++
+ end System.Shared_Storage;
diff --git a/gnat-glade/patches/patch-Garlic_s-shasto.ads b/gnat-glade/patches/patch-Garlic_s-shasto.ads
new file mode 100644
index 0000000000..7391844249
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-shasto.ads
@@ -0,0 +1,213 @@
+$NetBSD: patch-Garlic_s-shasto.ads,v 1.0 2025/02/13 21:00:00 dkazankov Exp $
+
+Remove unsupported old specification
+
+--- Garlic/s-shasto.ads.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-shasto.ads
+@@ -1,206 +0,0 @@
+-------------------------------------------------------------------------------
+--- --
+--- GLADE COMPONENTS --
+--- --
+--- S Y S T E M . S H A R E D _ S T O R A G E --
+--- --
+--- S p e c --
+--- --
+--- Copyright (C) 1996-2006 Free Software Foundation, Inc. --
+--- --
+--- GARLIC 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 2, or (at your option) any later ver- --
+--- sion. GARLIC is distributed in the hope that it will be useful, but --
+--- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABI- --
+--- LITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+--- License for more details. You should have received a copy of the GNU --
+--- General Public License distributed with GARLIC; see file COPYING. If --
+--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
+--- Boston, MA 02111-1307, USA. --
+--- --
+--- As a special exception, if other files instantiate generics from this --
+--- unit, or you link this unit with other files to produce an executable, --
+--- this unit does not by itself cause the resulting executable to be --
+--- covered by the GNU General Public License. This exception does not --
+--- however invalidate any other reasons why the executable file might be --
+--- covered by the GNU Public License. --
+--- --
+--- GLADE is maintained by ACT Europe. --
+--- (email: glade-report%act-europe.fr@localhost) --
+--- --
+-------------------------------------------------------------------------------
+-
+-with Ada.Streams.Stream_IO;
+-
+-package System.Shared_Storage is
+-
+- -- This package manages the shared/persistant memory required for
+- -- full implementation of variables in Shared_Passive packages,
+- -- more precisely variables whose enclosing dynamic scope is a
+- -- shared passive package.
+-
+- -- -------------------------
+- -- -- Shared Storage Model --
+- -- -------------------------
+-
+- -- The basic model used is that each partition that references the
+- -- Shared_Passive package has a local copy of the package data
+- -- that is initialized in accordance with the declarations of the
+- -- package in the normal manner. The routines in
+- -- System.Shared_Memory are then used to ensure that the values in
+- -- these separate copies are properly synchronized with the state
+- -- of the overall system.
+-
+- -- This synchronization is ensured by maintaining a set of files
+- -- in a designated directory. The directory is designated by
+- -- setting the environment variable SHARED_MEMORY_DIRECTORY. This
+- -- variable must be set for all partitions. If the environment
+- -- variable is not defined, then the current directory is used.
+-
+- -- There is one file for each variable. The name is the fully
+- -- qualified name of the variable with all letters forced to lower
+- -- case. For example, the variable Key_Name in the Shared_Passive
+- -- package Shared_Data results in the file name
+- -- shared_data.key_name.
+-
+- -- If the file does not exist, it indicates that no partition has
+- -- assigned a new value, so that the initial value is the correct
+- -- one. This is the critical component of the model. It means that
+- -- there is no system-wide synchronization required for
+- -- initializing the package, since the shared memory files need
+- -- not (and do not) reflect the initial state. There is therefore
+- -- no issue of synchronizing initialization and read/write
+- -- accress.
+-
+- -- If the file does exist, it is a Stream_IO file that contains
+- -- the most recently assigned value of the variable, as written by
+- -- the use of the typ'Write stream attribute.
+-
+- -- -----------------------
+- -- -- Read/Write Access --
+- -- -----------------------
+-
+- -- The approach is as follows:
+-
+- -- For each shared variable, var, an access routine varR is
+- -- created whose body has the following form (this example is for
+- -- Pkg.Var):
+-
+- -- procedure varR is
+- -- S : Ada.Streams.Stream_IO.Stream_Access;
+- -- begin
+- -- S := Shared_Mem_RFile ("pkg", "var");
+- -- if S /= null then
+- -- typ'Read (S);
+- -- end if;
+- -- end varR;
+-
+- -- The routine Shared_Mem_RFile in package System.Shared_Memory
+- -- either returns null if the file does not exist, or otherwise a
+- -- Stream_Access value that references the corresponding shared
+- -- memory file, positioned at start of the file, ready to read the
+- -- current value.
+-
+- -- Each reference to the shared variable, var, is preceded by a
+- -- call to the corresponding varR procedure, which either leaves
+- -- the initial value unchanged if the file does not exist, or
+- -- reads the current value from the shared memory file.
+-
+- -- In addition, for each shared variable, var, an assignment
+- -- routine is created whose body has the following form (again for
+- -- Pgg.Var)
+-
+- -- procedure VarA is
+- -- begin
+- -- typ'Write (Shared_Mem_WFile ("pkg", "var"), var);
+- -- end VarA;
+-
+- -- The routine Shared_Mem_WFile is package System.Shared_Memory
+- -- returns a Stream_Access value that references the corresponding
+- -- shared memory file, positioned at the start, ready to write the
+- -- new value.
+-
+- -- Each assignment to the shared variable, var, is followed by a
+- -- call to the corresponding varA procedure, which writes the new
+- -- value to the shared memory file.
+-
+- -- Note that there is no synchronization for these file read and
+- -- write operations, since it is assumed that a correctly
+- -- operating programs will provide appropriate synchronization. In
+- -- particular, variables can be protected using protected types
+- -- with no entries.
+-
+- -- Note: a special circuit allows the use of stream attributes
+- -- Read and Write for limited types (using the corresponding
+- -- attribute for the full type), but there are limitations on the
+- -- data that can be placed in shared passive partitions. See
+- -- sem_smem.ads/adb for details.
+-
+- -- ----------------------------------------------------------------
+- -- -- Handling of Protected Objects in Shared Passive Partitions --
+- -- ----------------------------------------------------------------
+-
+- -- During the execution of a protected subprogram call, access is
+- -- locked out using a global locking mechanism, as provided by the
+- -- GNAT.Lock_Files capability. This package contains the lock and
+- -- unlock calls, and the expander generates a call to the lock
+- -- routine before the protected call and a call to the unlock
+- -- routine after the protected call.
+-
+- -- Within the code of the protected subprogram, the access to the
+- -- protected object itself uses the local copy, without any
+- -- special synchronization. Since global access is locked out, no
+- -- other task or partition can attempt to read or write this data
+- -- as long as the lock is held.
+-
+- -- The data in the local copy does however need synchronizing with
+- -- the global values in the shared memory file. This is achieved
+- -- as follows:
+-
+- -- The protected object generates a read and assignment routine as
+- -- described for other shared passive variables. The code for the
+- -- 'Read and 'Write attributes (not normally allowed, but allowed
+- -- in this special case) simply reads or writes the values of the
+- -- components in the protected record.
+-
+- -- The lock call is followed by a call to the shared read routine
+- -- to synchronize the local copy to contain the proper global
+- -- value.
+-
+- -- The unlock call in the procedure case only is preceded by a
+- -- call to the shared assign routine to synchronize the global
+- -- shared memory files with the (possibly modified) local copy.
+-
+- -- These calls to the read and assign routines, as well as the
+- -- lock and unlock routines, are inserted by the expander (see
+- -- exp_smem.adb).
+-
+- package SIO renames Ada.Streams.Stream_IO;
+-
+- function Shared_Var_ROpen (Var : String) return SIO.Stream_Access;
+- -- As described above, this routine returns null if the corresponding
+- -- shared memory file does not exist, and otherwise, if the file does
+- -- exist, a Stream_Access value that references the shared memory file,
+- -- positioned to the start, ready to read the current value.
+-
+- function Shared_Var_WOpen (Var : String) return SIO.Stream_Access;
+- -- As described above, this routine returns a Stream_Access value that
+- -- references the shared memory file, positioned to the start, ready to
+- -- write the new value. The file is created by this call if it does not
+- -- already exist.
+-
+- procedure Shared_Var_Lock (Var : String);
+- -- This procedure claims the global shared memory lock. It is used for
+- -- protected types in shared passive packages. A call to this locking
+- -- routine is generated as the first operation in the code for the body
+- -- of a protected subprogram, and it busy waits if the lock is busy.
+-
+- procedure Shared_Var_Unlock (Var : String);
+- -- This procedure releases the lock obtaind by a prior call to the
+- -- Shared_Mem_Lock procedure, and is to be generated as the last
+- -- operation in the body of a protected subprogram.
+-
+- procedure Shared_Var_Close (Var : in out SIO.Stream_Access);
+-
+-end System.Shared_Storage;
diff --git a/gnat-glade/patches/patch-Garlic_s-stratt.adb b/gnat-glade/patches/patch-Garlic_s-stratt.adb
new file mode 100644
index 0000000000..2f8b6b4a0e
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-stratt.adb
@@ -0,0 +1,2025 @@
+$NetBSD: patch-Garlic_s-stratt.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Remove old stream attributes implementation
+
+--- Garlic/s-stratt.adb.orig 2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-stratt.adb
+@@ -1,2018 +0,0 @@
+-------------------------------------------------------------------------------
+--- --
+--- GLADE COMPONENTS --
+--- --
+--- S Y S T E M . S T R E A M _ A T T R I B U T E S --
+--- --
+--- B o d y --
+--- --
+--- Copyright (C) 1996-2006 Free Software Foundation, Inc. --
+--- --
+--- GARLIC 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 2, or (at your option) any later ver- --
+--- sion. GARLIC is distributed in the hope that it will be useful, but --
+--- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABI- --
+--- LITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+--- License for more details. You should have received a copy of the GNU --
+--- General Public License distributed with GARLIC; see file COPYING. If --
+--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
+--- Boston, MA 02111-1307, USA. --
+--- --
+--- As a special exception, if other files instantiate generics from this --
+--- unit, or you link this unit with other files to produce an executable, --
+--- this unit does not by itself cause the resulting executable to be --
+--- covered by the GNU General Public License. This exception does not --
+--- however invalidate any other reasons why the executable file might be --
+--- covered by the GNU Public License. --
+--- --
+--- GLADE is maintained by ACT Europe. --
+--- (email: glade-report%act-europe.fr@localhost) --
+--- --
+-------------------------------------------------------------------------------
+-
+-with Ada.IO_Exceptions;
+-with Ada.Streams; use Ada.Streams;
+-with Ada.Unchecked_Conversion;
+-
+-package body System.Stream_Attributes is
+-
+- pragma Suppress (Range_Check);
+- pragma Suppress (Overflow_Check);
+-
+- use UST;
+-
+- Data_Error : exception renames Ada.IO_Exceptions.End_Error;
+- -- Exception raised if insufficient data read (End_Error is
+- -- mandated by AI95-00132).
+-
+- SU : constant := System.Storage_Unit;
+- -- XXXXX pragma Assert (SU = 8);
+-
+- BB : constant := 2 ** SU; -- Byte base
+- BL : constant := 2 ** SU - 1; -- Byte last
+- BS : constant := 2 ** (SU - 1); -- Byte sign
+-
+- US : constant := Unsigned'Size; -- Unsigned size
+- UB : constant := (US - 1) / SU + 1; -- Unsigned byte
+- UL : constant := 2 ** US - 1; -- Unsigned last
+-
+- FB : constant := 2.0 ** SU; -- Float base
+-
+- subtype SE is Ada.Streams.Stream_Element;
+- subtype SEA is Ada.Streams.Stream_Element_Array;
+- subtype SEO is Ada.Streams.Stream_Element_Offset;
+-
+- generic function UC renames Ada.Unchecked_Conversion;
+-
+- type Field_Type is
+- record
+- E_Size : Integer; -- Exponent bit size
+- E_Bias : Integer; -- Exponent bias
+- F_Size : Integer; -- Fraction bit size
+- E_Last : Integer; -- Max exponent value
+- F_Mask : SE; -- Mask to apply on first fraction byte
+- E_Bytes : SEO; -- N. of exponent bytes completly used
+- F_Bytes : SEO; -- N. of fraction bytes completly used
+- F_Bits : Integer; -- N. of bits used on first fraction word
+- end record;
+-
+- type Precision is (Single, Double, Extended);
+- Fields : constant array (Precision) of Field_Type
+- := (
+- -- Single precision
+- (E_Size => 8,
+- E_Bias => 127,
+- F_Size => 23,
+- E_Last => 2 ** 8 - 1,
+- F_Mask => 16#7F#, -- 2 ** 7 - 1,
+- E_Bytes => 2,
+- F_Bytes => 3,
+- F_Bits => 23 mod US),
+- -- Double precision
+- (E_Size => 11,
+- E_Bias => 1023,
+- F_Size => 52,
+- E_Last => 2 ** 11 - 1,
+- F_Mask => 16#0F#, -- 2 ** 4 - 1,
+- E_Bytes => 2,
+- F_Bytes => 7,
+- F_Bits => 52 mod US),
+- -- Extended precision
+- (E_Size => 15,
+- E_Bias => 16383,
+- F_Size => 63,
+- E_Last => 2 ** 15 - 1,
+- F_Mask => 16#FF#, -- 2 ** 8 - 1,
+- E_Bytes => 2,
+- F_Bytes => 8,
+- F_Bits => 63 mod US));
+-
+- -- The representation of all items requires a multiple of four bytes
+- -- (or 32 bits) of data. The bytes are numbered 0 through n-1. The bytes
+- -- are read or written to some byte stream such that byte m always
+- -- precedes byte m+1. If the n bytes needed to contain the data are not
+- -- a multiple of four, then the n bytes are followed by enough (0 to 3)
+- -- residual zero bytes, r, to make the total byte count a multiple of 4.
+-
+- -- An XDR signed integer is a 32-bit datum that encodes an integer
+- -- in the range [-2147483648,2147483647]. The integer is represented
+- -- in two's complement notation. The most and least significant bytes
+- -- are 0 and 3, respectively. Integers are declared as follows:
+- --
+- -- (MSB) (LSB)
+- -- +-------+-------+-------+-------+
+- -- |byte 0 |byte 1 |byte 2 |byte 3 |
+- -- +-------+-------+-------+-------+
+- -- <------------32 bits------------>
+-
+- -- XXXXX pragma Assert (Long_Long_Integer'Size <= 64);
+- -- XXXXX pragma Assert (16 <= Integer'Size and Integer'Size <= 32);
+-
+- SSI_L : constant := 1;
+- SI_L : constant := 2;
+- I_L : constant := 4;
+- LI_L : constant := 8;
+- LLI_L : constant := 8;
+-
+- subtype XDR_S_SSI is SEA (1 .. SSI_L);
+- subtype XDR_S_SI is SEA (1 .. SI_L);
+- subtype XDR_S_I is SEA (1 .. I_L);
+- subtype XDR_S_LI is SEA (1 .. LI_L);
+- subtype XDR_S_LLI is SEA (1 .. LLI_L);
+-
+- function Short_Short_Integer_To_XDR_S_SSI is
+- new Ada.Unchecked_Conversion (Short_Short_Integer, XDR_S_SSI);
+- function XDR_S_SSI_To_Short_Short_Integer is
+- new Ada.Unchecked_Conversion (XDR_S_SSI, Short_Short_Integer);
+-
+- function Short_Integer_To_XDR_S_SI is
+- new Ada.Unchecked_Conversion (Short_Integer, XDR_S_SI);
+- function XDR_S_SI_To_Short_Integer is
+- new Ada.Unchecked_Conversion (XDR_S_SI, Short_Integer);
+-
+- function Integer_To_XDR_S_I is
+- new Ada.Unchecked_Conversion (Integer, XDR_S_I);
+- function XDR_S_I_To_Integer is
+- new Ada.Unchecked_Conversion (XDR_S_I, Integer);
+-
+- function Long_Long_Integer_To_XDR_S_LI is
+- new Ada.Unchecked_Conversion (Long_Long_Integer, XDR_S_LI);
+- function XDR_S_LI_To_Long_Long_Integer is
+- new Ada.Unchecked_Conversion (XDR_S_LI, Long_Long_Integer);
+-
+- function Long_Long_Integer_To_XDR_S_LLI is
+- new Ada.Unchecked_Conversion (Long_Long_Integer, XDR_S_LLI);
+- function XDR_S_LLI_To_Long_Long_Integer is
+- new Ada.Unchecked_Conversion (XDR_S_LLI, Long_Long_Integer);
+-
+- -- An XDR unsigned integer is a 32-bit datum that encodes a nonnegative
+- -- integer in the range [0,4294967295]. It is represented by an unsigned
+- -- binary number whose most and least significant bytes are 0 and 3,
+- -- respectively. An unsigned integer is declared as follows:
+- --
+- -- (MSB) (LSB)
+- -- +-------+-------+-------+-------+
+- -- |byte 0 |byte 1 |byte 2 |byte 3 |
+- -- +-------+-------+-------+-------+
+- -- <------------32 bits------------>
+-
+- -- XXXXX pragma Assert (Long_Long_Unsigned'Size <= 64);
+- -- XXXXX pragma Assert (16 <= Unsigned'Size and Unsigned'Size <= 32);
+-
+- SSU_L : constant := 1;
+- SU_L : constant := 2;
+- U_L : constant := 4;
+- LU_L : constant := 8;
+- LLU_L : constant := 8;
+-
+- subtype XDR_S_SSU is SEA (1 .. SSU_L);
+- subtype XDR_S_SU is SEA (1 .. SU_L);
+- subtype XDR_S_U is SEA (1 .. U_L);
+- subtype XDR_S_LU is SEA (1 .. LU_L);
+- subtype XDR_S_LLU is SEA (1 .. LLU_L);
+-
+- type XDR_SSU is mod BB ** SSU_L;
+- type XDR_SU is mod BB ** SU_L;
+- type XDR_U is mod BB ** U_L;
+- -- type XDR_LU is mod BB ** LU_L; -- Computed using Unsigned
+- -- type XDR_LLU is mod BB ** LLU_L; -- Computed using Unsigned
+-
+- function Short_Unsigned_To_XDR_S_SU is
+- new Ada.Unchecked_Conversion (Short_Unsigned, XDR_S_SU);
+- function XDR_S_SU_To_Short_Unsigned is
+- new Ada.Unchecked_Conversion (XDR_S_SU, Short_Unsigned);
+-
+- function Unsigned_To_XDR_S_U is
+- new Ada.Unchecked_Conversion (Unsigned, XDR_S_U);
+- function XDR_S_U_To_Unsigned is
+- new Ada.Unchecked_Conversion (XDR_S_U, Unsigned);
+-
+- function Long_Long_Unsigned_To_XDR_S_LU is
+- new Ada.Unchecked_Conversion (Long_Long_Unsigned, XDR_S_LU);
+- function XDR_S_LU_To_Long_Long_Unsigned is
+- new Ada.Unchecked_Conversion (XDR_S_LU, Long_Long_Unsigned);
+-
+- function Long_Long_Unsigned_To_XDR_S_LLU is
+- new Ada.Unchecked_Conversion (Long_Long_Unsigned, XDR_S_LLU);
+- function XDR_S_LLU_To_Long_Long_Unsigned is
+- new Ada.Unchecked_Conversion (XDR_S_LLU, Long_Long_Unsigned);
+-
+- -- The standard defines the floating-point data type "float" (32 bits
+- -- or 4 bytes). The encoding used is the IEEE standard for normalized
+- -- single-precision floating-point numbers.
+-
+- -- The standard defines the encoding for the double-precision
+- -- floating-point data type "double" (64 bits or 8 bytes). The
+- -- encoding used is the IEEE standard for normalized double-precision
+- -- floating-point numbers.
+-
+- SF_L : constant := 4; -- Single precision
+- F_L : constant := 4; -- Single precision
+- LF_L : constant := 8; -- Double precision
+- LLF_L : constant := 12; -- Extended precision
+-
+- -- TBD
+- TM_L : constant := 8;
+- subtype XDR_S_TM is SEA (1 .. TM_L);
+- type XDR_TM is mod BB ** TM_L;
+-
+- type XDR_SA is mod 2 ** Standard'Address_Size;
+- function To_XDR_SA is new UC (System.Address, XDR_SA);
+- function To_XDR_SA is new UC (XDR_SA, System.Address);
+-
+- -- Enumerations have the same representation as signed integers.
+- -- Enumerations are handy for describing subsets of the integers.
+-
+- -- Booleans are important enough and occur frequently enough to warrant
+- -- their own explicit type in the standard. Booleans are declared as
+- -- an enumeration, with FALSE = 0 and TRUE = 1.
+-
+- -- The standard defines a string of n (numbered 0 through n-1) ASCII
+- -- bytes to be the number n encoded as an unsigned integer (as described
+- -- above), and followed by the n bytes of the string. Byte m of the string
+- -- always precedes byte m+1 of the string, and byte 0 of the string always
+- -- follows the string's length. If n is not a multiple of four, then the
+- -- n bytes are followed by enough (0 to 3) residual zero bytes, r, to make
+- -- the total byte count a multiple of four.
+-
+- -- To fit with XDR string, do not consider character as an enumeration
+- -- type.
+-
+- C_L : constant := 1;
+- subtype XDR_S_C is SEA (1 .. C_L);
+-
+- -- Consider Wide_Character as an enumeration type.
+- WC_L : constant := 4;
+- subtype XDR_S_WC is SEA (1 .. WC_L);
+- type XDR_WC is mod BB ** WC_L;
+-
+- -- Optimization: if we already have the correct Bit_Order, then some
+- -- computations can be avoided since the source and the target will be
+- -- identical anyway. They will be replaced by direct unchecked
+- -- conversions.
+-
+- Optimize_Integers : constant Boolean :=
+- Default_Bit_Order = High_Order_First;
+-
+- ----------------
+- -- Workaround --
+- ----------------
+-
+- function Scaling
+- (X : Short_Float; A : Integer)
+- return Short_Float;
+-
+- function Scaling
+- (X : Float; A : Integer)
+- return Float;
+-
+- function Scaling
+- (X : Long_Float; A : Integer)
+- return Long_Float;
+- function Scaling
+- (X : Long_Long_Float; A : Integer)
+- return Long_Long_Float;
+- ----------
+- -- I_AD --
+- ----------
+-
+- function I_AD (Stream : not null access RST) return Fat_Pointer is
+- FP : Fat_Pointer;
+-
+- begin
+- FP.P1 := I_AS (Stream).P1;
+- FP.P2 := I_AS (Stream).P1;
+-
+- return FP;
+- end I_AD;
+-
+- ----------
+- -- I_AS --
+- ----------
+-
+- function I_AS (Stream : not null access RST) return Thin_Pointer is
+- S : XDR_S_TM;
+- L : SEO;
+- U : XDR_TM := 0;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- else
+- for N in S'Range loop
+- U := U * BB + XDR_TM (S (N));
+- end loop;
+-
+- return (P1 => To_XDR_SA (XDR_SA (U)));
+- end if;
+- end I_AS;
+-
+- ---------
+- -- I_B --
+- ---------
+-
+- function I_B (Stream : not null access RST) return Boolean is
+- begin
+- case I_SSU (Stream) is
+- when 0 => return False;
+- when 1 => return True;
+- when others => raise Data_Error;
+- end case;
+- end I_B;
+-
+- ---------
+- -- I_C --
+- ---------
+-
+- function I_C (Stream : not null access RST) return Character is
+- S : XDR_S_C;
+- L : SEO;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- else
+-
+- -- Use Ada requirements on Character representation clause.
+- return Character'Val (S (1));
+- end if;
+- end I_C;
+-
+- ---------
+- -- I_F --
+- ---------
+-
+- function I_F (Stream : not null access RST) return Float is
+- I : constant Precision := Single;
+- E_Size : Integer renames Fields (I).E_Size;
+- E_Bias : Integer renames Fields (I).E_Bias;
+- E_Last : Integer renames Fields (I).E_Last;
+- F_Size : Integer renames Fields (I).F_Size;
+- F_Mask : SE renames Fields (I).F_Mask;
+- E_Bytes : SEO renames Fields (I).E_Bytes;
+- F_Bytes : SEO renames Fields (I).F_Bytes;
+-
+- E : Unsigned;
+- P : Boolean;
+- X : Float;
+- S : SEA (1 .. F_L);
+- L : SEO;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- end if;
+-
+- -- Extract Fraction, Exponent and Sign.
+- X := Float (S (F_L + 1 - F_Bytes) and F_Mask);
+- for N in F_L + 2 - F_Bytes .. F_L loop
+- X := X * FB + Float (S (N));
+- end loop;
+- X := Scaling (X, -F_Size); -- Float
+-
+- if BS <= S (1) then
+- P := False;
+- E := Unsigned (S (1) - BS);
+- else
+- P := True;
+- E := Unsigned (S (1));
+- end if;
+-
+- for N in 2 .. E_Bytes loop
+- E := E * BB + Unsigned (S (N));
+- end loop;
+- E := Shift_Right (E, Integer (E_Bytes) * SU - E_Size - 1);
+-
+- -- Look for special cases.
+- if X = 0.0 then
+-
+- -- Signed zeros.
+- if E = 0 then
+- if P then
+- return Float'Copy_Sign (0.0, 1.0);
+- else
+- return Float'Copy_Sign (0.0, -1.0);
+- end if;
+-
+- else
+-
+- -- Signed infinites.
+- if E = Unsigned (E_Last) then
+- if P then
+- return Float'Safe_Last;
+- else
+- return Float'Safe_First;
+- end if;
+- end if;
+- end if;
+- end if;
+-
+- -- Denormalized float.
+- if E = 0 then
+-
+- X := Scaling (X, 1 - E_Bias); -- Flaot
+-
+- -- Normalized float.
+- else
+-
+- X := Scaling (X + 1.0, Integer (E) - E_Bias); -- Float
+-
+- end if;
+-
+- if P then
+- X := Float'Copy_Sign (X, 1.0);
+- else
+- X := Float'Copy_Sign (X, -1.0);
+- end if;
+-
+- return X;
+- end I_F;
+-
+- ---------
+- -- I_I --
+- ---------
+-
+- function I_I (Stream : not null access RST) return Integer is
+- S : XDR_S_I;
+- L : SEO;
+- U : XDR_U := 0;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- elsif Optimize_Integers then
+- return XDR_S_I_To_Integer (S);
+- else
+- for N in S'Range loop
+- U := U * BB + XDR_U (S (N));
+- end loop;
+-
+- -- Test sign and apply two complement's notation.
+- if S (1) < BL then
+- return Integer (U);
+- else
+- return Integer (-((XDR_U'Last xor U) + 1));
+- end if;
+- end if;
+- end I_I;
+-
+- ----------
+- -- I_LF --
+- ----------
+-
+- function I_LF (Stream : not null access RST) return Long_Float is
+- I : constant Precision := Double;
+- E_Size : Integer renames Fields (I).E_Size;
+- E_Bias : Integer renames Fields (I).E_Bias;
+- E_Last : Integer renames Fields (I).E_Last;
+- F_Size : Integer renames Fields (I).F_Size;
+- F_Mask : SE renames Fields (I).F_Mask;
+- E_Bytes : SEO renames Fields (I).E_Bytes;
+- F_Bytes : SEO renames Fields (I).F_Bytes;
+-
+- E : Unsigned;
+- P : Boolean;
+- X : Long_Float;
+- S : SEA (1 .. LF_L);
+- L : SEO;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- end if;
+-
+- -- Extract Fraction, Exponent and Sign.
+- X := Long_Float (S (LF_L + 1 - F_Bytes) and F_Mask);
+- for N in LF_L + 2 - F_Bytes .. LF_L loop
+- X := X * FB + Long_Float (S (N));
+- end loop;
+- X := Scaling (X, -F_Size); -- Long_Float
+-
+- if BS <= S (1) then
+- P := False;
+- E := Unsigned (S (1) - BS);
+- else
+- P := True;
+- E := Unsigned (S (1));
+- end if;
+-
+- for N in 2 .. E_Bytes loop
+- E := E * BB + Unsigned (S (N));
+- end loop;
+- E := Shift_Right (E, Integer (E_Bytes) * SU - E_Size - 1);
+-
+- -- Look for special cases.
+- if X = 0.0 then
+-
+- -- Signed zeros.
+- if E = 0 then
+- if P then
+- return Long_Float'Copy_Sign (0.0, 1.0);
+- else
+- return Long_Float'Copy_Sign (0.0, -1.0);
+- end if;
+-
+- else
+-
+- -- Signed infinites.
+- if E = Unsigned (E_Last) then
+- if P then
+- return Long_Float'Safe_Last;
+- else
+- return Long_Float'Safe_First;
+- end if;
+- end if;
+- end if;
+- end if;
+-
+- -- Denormalized float.
+- if E = 0 then
+-
+- X := Scaling (X, 1 - E_Bias); -- Long_Float
+-
+- -- Normalized float.
+- else
+-
+- X := Scaling (X + 1.0, Integer (E) - E_Bias); -- Long_Float
+-
+- end if;
+-
+- if P then
+- X := Long_Float'Copy_Sign (X, 1.0);
+- else
+- X := Long_Float'Copy_Sign (X, -1.0);
+- end if;
+-
+- return X;
+- end I_LF;
+-
+- ----------
+- -- I_LI --
+- ----------
+-
+- function I_LI (Stream : not null access RST) return Long_Integer is
+- S : XDR_S_LI;
+- L : SEO;
+- U : Unsigned := 0;
+- X : Long_Unsigned := 0;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- elsif Optimize_Integers then
+- return Long_Integer (XDR_S_LI_To_Long_Long_Integer (S));
+- else
+-
+- -- Compute using machine unsigned
+- -- rather than long_long_unsigned
+-
+- for N in S'Range loop
+- U := U * BB + Unsigned (S (N));
+-
+- -- We have filled an unsigned.
+- if N mod UB = 0 then
+- X := Shift_Left (X, US) + Long_Unsigned (U);
+- U := 0;
+- end if;
+- end loop;
+-
+- -- Test sign and apply two complement's notation.
+- if S (1) < BL then
+- return Long_Integer (X);
+- else
+- return Long_Integer (-((Long_Unsigned'Last xor X) + 1));
+- end if;
+-
+- end if;
+- end I_LI;
+-
+- -----------
+- -- I_LLF --
+- -----------
+-
+- function I_LLF (Stream : not null access RST) return Long_Long_Float is
+- I : constant Precision := Extended;
+- E_Size : Integer renames Fields (I).E_Size;
+- E_Bias : Integer renames Fields (I).E_Bias;
+- E_Last : Integer renames Fields (I).E_Last;
+- F_Size : Integer renames Fields (I).F_Size;
+- F_Mask : SE renames Fields (I).F_Mask;
+- E_Bytes : SEO renames Fields (I).E_Bytes;
+- F_Bytes : SEO renames Fields (I).F_Bytes;
+-
+- E : Unsigned;
+- P : Boolean;
+- X : Long_Long_Float;
+- S : SEA (1 .. LLF_L);
+- L : SEO;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- end if;
+-
+- -- Extract Fraction, Exponent and Sign.
+- X := Long_Long_Float (S (LLF_L + 1 - F_Bytes) and F_Mask);
+- for N in LLF_L + 2 - F_Bytes .. LLF_L loop
+- X := X * FB + Long_Long_Float (S (N));
+- end loop;
+- X := Scaling (X, -F_Size); -- Long_Long_Float
+-
+- if BS <= S (1) then
+- P := False;
+- E := Unsigned (S (1) - BS);
+- else
+- P := True;
+- E := Unsigned (S (1));
+- end if;
+-
+- for N in 2 .. E_Bytes loop
+- E := E * BB + Unsigned (S (N));
+- end loop;
+- E := Shift_Right (E, Integer (E_Bytes) * SU - E_Size - 1);
+-
+- -- Look for special cases.
+- if X = 0.0 then
+-
+- -- Signed zeros.
+- if E = 0 then
+- if P then
+- return Long_Long_Float'Copy_Sign (0.0, 1.0);
+- else
+- return Long_Long_Float'Copy_Sign (0.0, -1.0);
+- end if;
+-
+- else
+-
+- -- Signed infinites.
+- if E = Unsigned (E_Last) then
+- if P then
+- return Long_Long_Float'Safe_Last;
+- else
+- return Long_Long_Float'Safe_First;
+- end if;
+- end if;
+- end if;
+- end if;
+-
+- -- Denormalized float.
+- if E = 0 then
+-
+- X := Scaling (X, 1 - E_Bias); -- Long_Long_Float
+-
+- -- Normalized float.
+- else
+-
+- X := Scaling (X + 1.0, Integer (E) - E_Bias); -- Long_Long_Float
+-
+- end if;
+-
+- if P then
+- X := Long_Long_Float'Copy_Sign (X, 1.0);
+- else
+- X := Long_Long_Float'Copy_Sign (X, -1.0);
+- end if;
+-
+- return X;
+- end I_LLF;
+-
+- -----------
+- -- I_LLI --
+- -----------
+-
+- function I_LLI (Stream : not null access RST) return Long_Long_Integer is
+- S : XDR_S_LLI;
+- L : SEO;
+- U : Unsigned := 0;
+- X : Long_Long_Unsigned := 0;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- elsif Optimize_Integers then
+- return XDR_S_LLI_To_Long_Long_Integer (S);
+- else
+-
+- -- Compute using machine unsigned for computing
+- -- rather than long_long_unsigned.
+-
+- for N in S'Range loop
+- U := U * BB + Unsigned (S (N));
+-
+- -- We have filled an unsigned.
+- if N mod UB = 0 then
+- X := Shift_Left (X, US) + Long_Long_Unsigned (U);
+- U := 0;
+- end if;
+- end loop;
+-
+- -- Test sign and apply two complement's notation.
+- if S (1) < BL then
+- return Long_Long_Integer (X);
+- else
+- return Long_Long_Integer (-((Long_Long_Unsigned'Last xor X) + 1));
+- end if;
+- end if;
+- end I_LLI;
+-
+- -----------
+- -- I_LLU --
+- -----------
+-
+- function I_LLU (Stream : not null access RST) return Long_Long_Unsigned is
+- S : XDR_S_LLU;
+- L : SEO;
+- U : Unsigned := 0;
+- X : Long_Long_Unsigned := 0;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- elsif Optimize_Integers then
+- return XDR_S_LLU_To_Long_Long_Unsigned (S);
+- else
+-
+- -- Compute using machine unsigned
+- -- rather than long_long_unsigned.
+-
+- for N in S'Range loop
+- U := U * BB + Unsigned (S (N));
+-
+- -- We have filled an unsigned.
+- if N mod UB = 0 then
+- X := Shift_Left (X, US) + Long_Long_Unsigned (U);
+- U := 0;
+- end if;
+- end loop;
+-
+- return X;
+- end if;
+- end I_LLU;
+-
+- ----------
+- -- I_LU --
+- ----------
+-
+- function I_LU (Stream : not null access RST) return Long_Unsigned is
+- S : XDR_S_LU;
+- L : SEO;
+- U : Unsigned := 0;
+- X : Long_Unsigned := 0;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- elsif Optimize_Integers then
+- return Long_Unsigned (XDR_S_LU_To_Long_Long_Unsigned (S));
+- else
+-
+- -- Compute using machine unsigned
+- -- rather than long_unsigned.
+-
+- for N in S'Range loop
+- U := U * BB + Unsigned (S (N));
+-
+- -- We have filled an unsigned.
+- if N mod UB = 0 then
+- X := Shift_Left (X, US) + Long_Unsigned (U);
+- U := 0;
+- end if;
+- end loop;
+-
+- return X;
+- end if;
+- end I_LU;
+-
+- ----------
+- -- I_SF --
+- ----------
+-
+- function I_SF (Stream : not null access RST) return Short_Float is
+- I : constant Precision := Single;
+- E_Size : Integer renames Fields (I).E_Size;
+- E_Bias : Integer renames Fields (I).E_Bias;
+- E_Last : Integer renames Fields (I).E_Last;
+- F_Size : Integer renames Fields (I).F_Size;
+- F_Mask : SE renames Fields (I).F_Mask;
+- E_Bytes : SEO renames Fields (I).E_Bytes;
+- F_Bytes : SEO renames Fields (I).F_Bytes;
+-
+- E : Unsigned;
+- P : Boolean;
+- X : Short_Float;
+- S : SEA (1 .. SF_L);
+- L : SEO;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- end if;
+-
+- -- Extract Fraction, Exponent and Sign.
+- X := Short_Float (S (SF_L + 1 - F_Bytes) and F_Mask);
+- for N in SF_L + 2 - F_Bytes .. SF_L loop
+- X := X * FB + Short_Float (S (N));
+- end loop;
+- X := Scaling (X, -F_Size); -- Short_Float
+-
+- if BS <= S (1) then
+- P := False;
+- E := Unsigned (S (1) - BS);
+- else
+- P := True;
+- E := Unsigned (S (1));
+- end if;
+-
+- for N in 2 .. E_Bytes loop
+- E := E * BB + Unsigned (S (N));
+- end loop;
+- E := Shift_Right (E, Integer (E_Bytes) * SU - E_Size - 1);
+-
+- -- Look for special cases.
+- if X = 0.0 then
+-
+- -- Signed zeros.
+- if E = 0 then
+- if P then
+- return Short_Float'Copy_Sign (0.0, 1.0);
+- else
+- return Short_Float'Copy_Sign (0.0, -1.0);
+- end if;
+-
+- else
+-
+- -- Signed infinites.
+- if E = Unsigned (E_Last) then
+- if P then
+- return Short_Float'Safe_Last;
+- else
+- return Short_Float'Safe_First;
+- end if;
+- end if;
+- end if;
+- end if;
+-
+- -- Denormalized float.
+- if E = 0 then
+-
+- X := Scaling (X, 1 - E_Bias); -- Short_Float
+-
+- -- Normalized float.
+- else
+-
+- X := Scaling (X + 1.0, Integer (E) - E_Bias); -- Short_Float
+-
+- end if;
+-
+- if P then
+- X := Short_Float'Copy_Sign (X, 1.0);
+- else
+- X := Short_Float'Copy_Sign (X, -1.0);
+- end if;
+-
+- return X;
+- end I_SF;
+-
+- ----------
+- -- I_SI --
+- ----------
+-
+- function I_SI (Stream : not null access RST) return Short_Integer is
+- S : XDR_S_SI;
+- L : SEO;
+- U : XDR_SU := 0;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- elsif Optimize_Integers then
+- return XDR_S_SI_To_Short_Integer (S);
+- else
+- for N in S'Range loop
+- U := U * BB + XDR_SU (S (N));
+- end loop;
+-
+- -- test sign and apply two complement's notation.
+- if S (1) < BL then
+- return Short_Integer (U);
+- else
+- return Short_Integer (-((XDR_SU'Last xor U) + 1));
+- end if;
+- end if;
+- end I_SI;
+-
+- -----------
+- -- I_SSI --
+- -----------
+-
+- function I_SSI (Stream : not null access RST) return Short_Short_Integer is
+- S : XDR_S_SSI;
+- L : SEO;
+- U : XDR_SSU;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- elsif Optimize_Integers then
+- return XDR_S_SSI_To_Short_Short_Integer (S);
+- else
+- -- for N in S'Range loop
+- -- U := U * BB + XDR_SSU (S (N));
+- -- end loop;
+- U := XDR_SSU (S (1));
+-
+- -- Test sign and apply two complement's notation.
+- if S (1) < BL then
+- return Short_Short_Integer (U);
+- else
+- return Short_Short_Integer (-((XDR_SSU'Last xor U) + 1));
+- end if;
+- end if;
+- end I_SSI;
+-
+- -----------
+- -- I_SSU --
+- -----------
+-
+- function I_SSU (Stream : not null access RST) return Short_Short_Unsigned is
+- S : XDR_S_SSU;
+- L : SEO;
+- U : XDR_SSU := 0;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- else
+- -- for N in S'Range loop
+- -- U := U * BB + XDR_SSU (S (N));
+- -- end loop;
+- U := XDR_SSU (S (1));
+-
+- return Short_Short_Unsigned (U);
+- end if;
+- end I_SSU;
+-
+- ----------
+- -- I_SU --
+- ----------
+-
+- function I_SU (Stream : not null access RST) return Short_Unsigned is
+- S : XDR_S_SU;
+- L : SEO;
+- U : XDR_SU := 0;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- elsif Optimize_Integers then
+- return XDR_S_SU_To_Short_Unsigned (S);
+- else
+- for N in S'Range loop
+- U := U * BB + XDR_SU (S (N));
+- end loop;
+-
+- return Short_Unsigned (U);
+- end if;
+- end I_SU;
+-
+- ---------
+- -- I_U --
+- ---------
+-
+- function I_U (Stream : not null access RST) return Unsigned is
+- S : XDR_S_U;
+- L : SEO;
+- U : XDR_U := 0;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- elsif Optimize_Integers then
+- return XDR_S_U_To_Unsigned (S);
+- else
+- for N in S'Range loop
+- U := U * BB + XDR_U (S (N));
+- end loop;
+-
+- return Unsigned (U);
+- end if;
+- end I_U;
+-
+- ----------
+- -- I_WC --
+- ----------
+-
+- function I_WC (Stream : not null access RST) return Wide_Character is
+- S : XDR_S_WC;
+- L : SEO;
+- U : XDR_WC := 0;
+-
+- begin
+- Ada.Streams.Read (Stream.all, S, L);
+-
+- if L /= S'Last then
+- raise Data_Error;
+- else
+- for N in S'Range loop
+- U := U * BB + XDR_WC (S (N));
+- end loop;
+-
+- -- Use Ada requirements on Wide_Character representation clause.
+- return Wide_Character'Val (U);
+- end if;
+- end I_WC;
+-
+- -------------
+- -- Scaling --
+- -------------
+-
+- function Scaling
+- (X : Short_Float; A : Integer)
+- return Short_Float is
+- E : constant Integer := Short_Float'Exponent (X);
+- begin
+- return Short_Float'Compose (X, A + E);
+- end Scaling;
+-
+- -------------
+- -- Scaling --
+- -------------
+-
+- function Scaling
+- (X : Float; A : Integer)
+- return Float is
+- E : constant Integer := Float'Exponent (X);
+- begin
+- return Float'Compose (X, A + E);
+- end Scaling;
+-
+- -------------
+- -- Scaling --
+- -------------
+-
+- function Scaling
+- (X : Long_Float; A : Integer)
+- return Long_Float is
+- E : constant Integer := Long_Float'Exponent (X);
+- begin
+- return Long_Float'Compose (X, A + E);
+- end Scaling;
+-
+- -------------
+- -- Scaling --
+- -------------
+-
+- function Scaling
+- (X : Long_Long_Float; A : Integer)
+- return Long_Long_Float is
+- E : constant Integer := Long_Long_Float'Exponent (X);
+- begin
+- return Long_Long_Float'Compose (X, A + E);
+- end Scaling;
+-
+- ----------
+- -- W_AD --
+- ----------
+-
+- procedure W_AD (Stream : not null access RST; Item : Fat_Pointer) is
+- S : XDR_S_TM;
+- U : XDR_TM;
+-
+- begin
+- U := XDR_TM (To_XDR_SA (Item.P1));
+- for N in reverse S'Range loop
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- Ada.Streams.Write (Stream.all, S);
+-
+- U := XDR_TM (To_XDR_SA (Item.P2));
+- for N in reverse S'Range loop
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- Ada.Streams.Write (Stream.all, S);
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end W_AD;
+-
+- ----------
+- -- W_AS --
+- ----------
+-
+- procedure W_AS (Stream : not null access RST; Item : Thin_Pointer) is
+- S : XDR_S_TM;
+- U : XDR_TM := XDR_TM (To_XDR_SA (Item.P1));
+-
+- begin
+- for N in reverse S'Range loop
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- Ada.Streams.Write (Stream.all, S);
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end W_AS;
+-
+- ---------
+- -- W_B --
+- ---------
+-
+- procedure W_B (Stream : not null access RST; Item : Boolean) is
+- begin
+- if Item then
+- W_SSU (Stream, 1);
+- else
+- W_SSU (Stream, 0);
+- end if;
+- end W_B;
+-
+- ---------
+- -- W_C --
+- ---------
+-
+- procedure W_C (Stream : not null access RST; Item : Character) is
+- S : XDR_S_C;
+-
+- pragma Assert (C_L = 1);
+-
+- begin
+-
+- -- Use Ada requirements on Character representation clause.
+- S (1) := SE (Character'Pos (Item));
+-
+- Ada.Streams.Write (Stream.all, S);
+- end W_C;
+-
+- ---------
+- -- W_F --
+- ---------
+-
+- procedure W_F (Stream : not null access RST; Item : Float) is
+- I : constant Precision := Single;
+- E_Size : Integer renames Fields (I).E_Size;
+- E_Bias : Integer renames Fields (I).E_Bias;
+- E_Last : Integer renames Fields (I).E_Last;
+- E_Bytes : SEO renames Fields (I).E_Bytes;
+- F_Bytes : SEO renames Fields (I).F_Bytes;
+-
+- E : Integer := 0;
+- F : Float;
+- Q : Float;
+- N : SEO;
+- U : Unsigned;
+- P : Integer;
+- S : SEA (1 .. F_L) := (others => 0);
+- V : Float;
+-
+- begin
+- if Item'Valid then
+- V := Item;
+- else
+- V := 0.0;
+- end if;
+-
+- F := abs (V);
+-
+- -- Signed zero.
+- if V = 0.0 then
+-
+- U := 0;
+-
+- else
+-
+- -- Signed infinites.
+- if V <= Float'Safe_First or else
+- Float'Safe_Last <= V then
+- E := E_Last;
+-
+- else
+- E := Float'Exponent (F);
+-
+- -- Denormalized float.
+- if E <= 1 - E_Bias then
+- E := 0;
+- F := Scaling (F, E_Bias - 1); -- Float
+-
+- -- Signed infinites.
+- else
+- if E_Last + E_Bias < E then
+- E := E_Last;
+- F := 0.0;
+-
+- -- Normalized float.
+- else
+- E := E + E_Bias - 1;
+- F := Float'Fraction (F) * 2.0 - 1.0;
+- end if;
+- end if;
+-
+- -- Copy fraction on the stream array.
+- -- Compute using machine unsigned rather
+- -- than larger unsigned.
+- -- N : Number of intermediate unsigned.
+- -- F : Float fraction.
+- -- P : Bits to shift left.
+- -- U : Intermediate unsigned.
+-
+- N := (F_Bytes - 1) / UB;
+- P := Fields (I).F_Bits;
+- loop
+- F := Scaling (F, P); -- Float
+- Q := Float'Truncation (F);
+- U := Unsigned (Q);
+- for I in reverse F_L - UB * (N + 1) + 1 .. F_L - UB * N loop
+- S (I) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+- exit when N = 0;
+- N := N - 1;
+- F := F - Q;
+- P := Unsigned'Size;
+- end loop;
+- end if;
+-
+- -- Store the exponent at the proper bit position.
+- U := Shift_Left (Unsigned (E), Integer (E_Bytes) * SU - E_Size - 1);
+-
+- -- We intentionnally don't store the first byte
+- -- as we have to add the sign bit.
+- for N in reverse 2 .. E_Bytes loop
+- S (N) := SE (U mod BB) + S (N);
+- U := U / BB;
+- end loop;
+-
+- end if;
+-
+- -- Store the sign and the first exponent byte.
+- if Float'Copy_Sign (1.0, V) = -1.0 then
+- S (1) := SE (U + BS);
+- else
+- S (1) := SE (U);
+- end if;
+- U := U / BB;
+-
+- Ada.Streams.Write (Stream.all, S);
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end W_F;
+-
+- ---------
+- -- W_I --
+- ---------
+-
+- procedure W_I (Stream : not null access RST; Item : Integer) is
+- S : XDR_S_I;
+- U : XDR_U;
+-
+- begin
+- if Optimize_Integers then
+- S := Integer_To_XDR_S_I (Item);
+- else
+- -- Test sign and apply two complement's notation.
+- if Item < 0 then
+- U := XDR_U'Last xor XDR_U (-(Item + 1));
+- else
+- U := XDR_U (Item);
+- end if;
+-
+- for N in reverse S'Range loop
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end if;
+-
+- Ada.Streams.Write (Stream.all, S);
+- end W_I;
+-
+- ----------
+- -- W_LF --
+- ----------
+-
+- procedure W_LF (Stream : not null access RST; Item : Long_Float) is
+- I : constant Precision := Double;
+- E_Size : Integer renames Fields (I).E_Size;
+- E_Bias : Integer renames Fields (I).E_Bias;
+- E_Last : Integer renames Fields (I).E_Last;
+- E_Bytes : SEO renames Fields (I).E_Bytes;
+- F_Bytes : SEO renames Fields (I).F_Bytes;
+-
+- E : Integer := 0;
+- F : Long_Float;
+- Q : Long_Float;
+- N : SEO;
+- U : Unsigned;
+- P : Integer;
+- S : SEA (1 .. LF_L) := (others => 0);
+- V : Long_Float;
+-
+- begin
+- if Item'Valid then
+- V := Item;
+- else
+- V := 0.0;
+- end if;
+-
+- F := abs (V);
+-
+- -- Signed zero.
+- if V = 0.0 then
+-
+- U := 0;
+-
+- else
+-
+- -- Signed infinites.
+- if V <= Long_Float'Safe_First or else
+- Long_Float'Safe_Last <= V then
+- E := E_Last;
+-
+- else
+- E := Long_Float'Exponent (F);
+-
+- -- Denormalized float.
+- if E <= 1 - E_Bias then
+- E := 0;
+- F := Scaling (F, E_Bias - 1); -- Long_Float
+-
+- -- Signed infinites.
+- else
+- if E_Last + E_Bias < E then
+- E := E_Last;
+- F := 0.0;
+-
+- -- Normalized float.
+- else
+- E := E + E_Bias - 1;
+- F := Long_Float'Fraction (F) * 2.0 - 1.0;
+- end if;
+- end if;
+-
+- -- Copy fraction on the stream array.
+- -- Compute using machine unsigned rather
+- -- than larger unsigned.
+- -- N : Number of intermediate unsigned.
+- -- F : Float fraction.
+- -- P : Bits to shift left.
+- -- U : Intermediate unsigned.
+-
+- N := (F_Bytes - 1) / UB;
+- P := Fields (I).F_Bits;
+- loop
+- F := Scaling (F, P); -- Long_Float
+- Q := Long_Float'Truncation (F);
+- U := Unsigned (Q);
+- for I in reverse LF_L - UB * (N + 1) + 1 .. LF_L - UB * N loop
+- S (I) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+- exit when N = 0;
+- N := N - 1;
+- F := F - Q;
+- P := Unsigned'Size;
+- end loop;
+- end if;
+-
+- -- Store the exponent at the proper bit position.
+- U := Shift_Left (Unsigned (E), Integer (E_Bytes) * SU - E_Size - 1);
+-
+- -- We intentionnally don't store the first byte
+- -- as we have to add the sign bit.
+- for N in reverse 2 .. E_Bytes loop
+- S (N) := SE (U mod BB) + S (N);
+- U := U / BB;
+- end loop;
+-
+- end if;
+-
+- -- Store the sign and the first exponent byte.
+- if Long_Float'Copy_Sign (1.0, V) = -1.0 then
+- S (1) := SE (U + BS);
+- else
+- S (1) := SE (U);
+- end if;
+- U := U / BB;
+-
+- Ada.Streams.Write (Stream.all, S);
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end W_LF;
+-
+- ----------
+- -- W_LI --
+- ----------
+-
+- procedure W_LI (Stream : not null access RST; Item : Long_Integer) is
+- S : XDR_S_LI;
+- U : Unsigned;
+- X : Long_Unsigned;
+-
+- begin
+- if Optimize_Integers then
+- S := Long_Long_Integer_To_XDR_S_LI (Long_Long_Integer (Item));
+- else
+- -- Test sign and apply two complement's notation.
+- if Item < 0 then
+- X := Long_Unsigned'Last xor Long_Unsigned (-(Item + 1));
+- else
+- X := Long_Unsigned (Item);
+- end if;
+-
+- -- Compute using machine unsigned
+- -- rather than long_unsigned.
+-
+- for N in reverse S'Range loop
+-
+- -- We have filled an unsinged.
+- if (LU_L - N) mod UB = 0 then
+- U := Unsigned (X and UL);
+- X := Shift_Right (X, US);
+- end if;
+-
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end if;
+-
+- Ada.Streams.Write (Stream.all, S);
+- end W_LI;
+-
+- -----------
+- -- W_LLF --
+- -----------
+-
+- procedure W_LLF (Stream : not null access RST; Item : Long_Long_Float) is
+- I : constant Precision := Extended;
+- E_Size : Integer renames Fields (I).E_Size;
+- E_Bias : Integer renames Fields (I).E_Bias;
+- E_Last : Integer renames Fields (I).E_Last;
+- E_Bytes : SEO renames Fields (I).E_Bytes;
+- F_Bytes : SEO renames Fields (I).F_Bytes;
+-
+- E : Integer := 0;
+- F : Long_Long_Float;
+- Q : Long_Long_Float;
+- N : SEO;
+- U : Unsigned;
+- P : Integer;
+- S : SEA (1 .. LLF_L) := (others => 0);
+- V : Long_Long_Float;
+-
+- begin
+- if Item'Valid then
+- V := Item;
+- else
+- V := 0.0;
+- end if;
+-
+- F := abs (V);
+-
+- -- Signed zero.
+- if V = 0.0 then
+-
+- U := 0;
+-
+- else
+-
+- -- Signed infinites.
+- if V <= Long_Long_Float'Safe_First or else
+- Long_Long_Float'Safe_Last <= V then
+- E := E_Last;
+-
+- else
+- E := Long_Long_Float'Exponent (F);
+-
+- -- Denormalized float.
+- if E <= 1 - E_Bias then
+- E := 0;
+- F := Scaling (F, E_Bias - 1); -- Long_Long_Float
+-
+- -- Signed infinites.
+- else
+- if E_Last + E_Bias < E then
+- E := E_Last;
+- F := 0.0;
+-
+- -- Normalized float.
+- else
+- E := E + E_Bias - 1;
+- F := Long_Long_Float'Fraction (F) * 2.0 - 1.0;
+- end if;
+- end if;
+-
+- -- Copy fraction on the stream array.
+- -- Compute using machine unsigned rather
+- -- than larger unsigned.
+- -- N : Number of intermediate unsigned.
+- -- F : Float fraction.
+- -- P : Bits to shift left.
+- -- U : Intermediate unsigned.
+-
+- N := (F_Bytes - 1) / UB;
+- P := Fields (I).F_Bits;
+- loop
+- F := Scaling (F, P); -- Long_Long_Float
+- Q := Long_Long_Float'Truncation (F);
+- U := Unsigned (Q);
+- for I in reverse LLF_L - UB * (N + 1) + 1 .. LLF_L - UB * N loop
+- S (I) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+- exit when N = 0;
+- N := N - 1;
+- F := F - Q;
+- P := Unsigned'Size;
+- end loop;
+- end if;
+-
+- -- Store the exponent at the proper bit position.
+- U := Shift_Left (Unsigned (E), Integer (E_Bytes) * SU - E_Size - 1);
+-
+- -- We intentionnally don't store the first byte
+- -- as we have to add the sign bit.
+- for N in reverse 2 .. E_Bytes loop
+- S (N) := SE (U mod BB) + S (N);
+- U := U / BB;
+- end loop;
+-
+- end if;
+-
+- -- Store the sign and the first exponent byte.
+- if Long_Long_Float'Copy_Sign (1.0, V) = -1.0 then
+- S (1) := SE (U + BS);
+- else
+- S (1) := SE (U);
+- end if;
+- U := U / BB;
+-
+- Ada.Streams.Write (Stream.all, S);
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end W_LLF;
+-
+- -----------
+- -- W_LLI --
+- -----------
+-
+- procedure W_LLI
+- (Stream : not null access RST; Item : Long_Long_Integer)
+- is
+- S : XDR_S_LLI;
+- U : Unsigned;
+- X : Long_Long_Unsigned;
+-
+- begin
+- if Optimize_Integers then
+- S := Long_Long_Integer_To_XDR_S_LLI (Item);
+- else
+- -- Test sign and apply two complement's notation.
+- if Item < 0 then
+- X := Long_Long_Unsigned'Last xor Long_Long_Unsigned (-(Item + 1));
+- else
+- X := Long_Long_Unsigned (Item);
+- end if;
+-
+- -- Compute using machine unsigned
+- -- rather than long_long_unsigned.
+-
+- for N in reverse S'Range loop
+-
+- -- We have filled an unsigned.
+- if (LLU_L - N) mod UB = 0 then
+- U := Unsigned (X and UL);
+- X := Shift_Right (X, US);
+- end if;
+-
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end if;
+-
+- Ada.Streams.Write (Stream.all, S);
+- end W_LLI;
+-
+- -----------
+- -- W_LLU --
+- -----------
+-
+- procedure W_LLU
+- (Stream : not null access RST; Item : Long_Long_Unsigned)
+- is
+- S : XDR_S_LLU;
+- U : Unsigned;
+- X : Long_Long_Unsigned := Item;
+-
+- begin
+- if Optimize_Integers then
+- S := Long_Long_Unsigned_To_XDR_S_LLU (Item);
+- else
+- -- Compute using machine unsigned
+- -- rather than long_long_unsigned.
+-
+- for N in reverse S'Range loop
+-
+- -- We have filled an unsigned.
+- if (LLU_L - N) mod UB = 0 then
+- U := Unsigned (X and UL);
+- X := Shift_Right (X, US);
+- end if;
+-
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end if;
+-
+- Ada.Streams.Write (Stream.all, S);
+- end W_LLU;
+-
+- ----------
+- -- W_LU --
+- ----------
+-
+- procedure W_LU (Stream : not null access RST; Item : Long_Unsigned) is
+- S : XDR_S_LU;
+- U : Unsigned;
+- X : Long_Unsigned := Item;
+-
+- begin
+- if Optimize_Integers then
+- S := Long_Long_Unsigned_To_XDR_S_LU (Long_Long_Unsigned (Item));
+- else
+- -- Compute using machine unsigned
+- -- rather than long_unsigned.
+-
+- for N in reverse S'Range loop
+-
+- -- We have filled an unsigned.
+- if (LU_L - N) mod UB = 0 then
+- U := Unsigned (X and UL);
+- X := Shift_Right (X, US);
+- end if;
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end if;
+-
+- Ada.Streams.Write (Stream.all, S);
+- end W_LU;
+-
+- ----------
+- -- W_SF --
+- ----------
+-
+- procedure W_SF (Stream : not null access RST; Item : Short_Float) is
+- I : constant Precision := Single;
+- E_Size : Integer renames Fields (I).E_Size;
+- E_Bias : Integer renames Fields (I).E_Bias;
+- E_Last : Integer renames Fields (I).E_Last;
+- E_Bytes : SEO renames Fields (I).E_Bytes;
+- F_Bytes : SEO renames Fields (I).F_Bytes;
+-
+- E : Integer := 0;
+- F : Short_Float;
+- Q : Short_Float;
+- N : SEO;
+- U : Unsigned := 0;
+- P : Integer;
+- S : SEA (1 .. SF_L) := (others => 0);
+- V : Short_Float;
+-
+- begin
+- if Item'Valid then
+- V := Item;
+- else
+- V := 0.0;
+- end if;
+-
+- F := abs (V);
+-
+- -- Signed zero.
+- if V = 0.0 then
+-
+- U := 0;
+-
+- else
+-
+- -- Signed infinites.
+- if V <= Short_Float'Safe_First or else
+- Short_Float'Safe_Last <= V then
+- E := E_Last;
+-
+- else
+- E := Short_Float'Exponent (F);
+-
+- -- Denormalized float.
+- if E <= 1 - E_Bias then
+- E := 0;
+- F := Scaling (F, E_Bias - 1); -- Short_Float
+-
+- -- Signed infinites.
+- else
+- if E_Last + E_Bias < E then
+- E := E_Last;
+- F := 0.0;
+-
+- -- Normalized float.
+- else
+- E := E + E_Bias - 1;
+- F := Short_Float'Fraction (F) * 2.0 - 1.0;
+- end if;
+- end if;
+-
+- -- Copy fraction on the stream array.
+- -- Compute using machine unsigned rather
+- -- than larger unsigned.
+- -- N : Number of intermediate unsigned.
+- -- F : Float fraction.
+- -- P : Bits to shift left.
+- -- U : Intermediate unsigned.
+-
+- N := (F_Bytes - 1) / UB;
+- P := Fields (I).F_Bits;
+- loop
+- F := Scaling (F, P); -- Short_Float
+- Q := Short_Float'Truncation (F);
+- U := Unsigned (Q);
+- for I in reverse SF_L - UB * (N + 1) + 1 .. SF_L - UB * N loop
+- S (I) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+- exit when N = 0;
+- N := N - 1;
+- F := F - Q;
+- P := Unsigned'Size;
+- end loop;
+- end if;
+-
+- -- Store the exponent at the proper bit position.
+- U := Shift_Left (Unsigned (E), Integer (E_Bytes) * SU - E_Size - 1);
+-
+- -- We intentionnally don't store the first byte
+- -- as we have to add the sign bit.
+- for N in reverse 2 .. E_Bytes loop
+- S (N) := SE (U mod BB) + S (N);
+- U := U / BB;
+- end loop;
+-
+- end if;
+-
+- -- Store the sign and the first exponent byte.
+- if Short_Float'Copy_Sign (1.0, V) = -1.0 then
+- S (1) := SE (U + BS);
+- else
+- S (1) := SE (U);
+- end if;
+- U := U / BB;
+-
+- Ada.Streams.Write (Stream.all, S);
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end W_SF;
+-
+- ----------
+- -- W_SI --
+- ----------
+-
+- procedure W_SI (Stream : not null access RST; Item : Short_Integer) is
+- S : XDR_S_SI;
+- U : XDR_SU;
+-
+- begin
+- if Optimize_Integers then
+- S := Short_Integer_To_XDR_S_SI (Item);
+- else
+- -- Test sign and apply two complement's notation.
+- if Item < 0 then
+- U := XDR_SU'Last xor XDR_SU (-(Item + 1));
+- else
+- U := XDR_SU (Item);
+- end if;
+-
+- for N in reverse S'Range loop
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end if;
+-
+- Ada.Streams.Write (Stream.all, S);
+- end W_SI;
+-
+- -----------
+- -- W_SSI --
+- -----------
+-
+- procedure W_SSI
+- (Stream : not null access RST; Item : Short_Short_Integer)
+- is
+- S : XDR_S_SSI;
+- U : XDR_SSU;
+-
+- begin
+- if Optimize_Integers then
+- S := Short_Short_Integer_To_XDR_S_SSI (Item);
+- else
+- -- Test sign and apply two complement's notation.
+- if Item < 0 then
+- U := XDR_SSU'Last xor XDR_SSU (-(Item + 1));
+- else
+- U := XDR_SSU (Item);
+- end if;
+-
+- S (1) := SE (U);
+- end if;
+-
+- Ada.Streams.Write (Stream.all, S);
+- end W_SSI;
+-
+- -----------
+- -- W_SSU --
+- -----------
+-
+- procedure W_SSU
+- (Stream : not null access RST; Item : Short_Short_Unsigned)
+- is
+- S : XDR_S_SSU;
+- U : constant XDR_SSU := XDR_SSU (Item);
+-
+- begin
+- -- for N in reverse S'Range loop
+- -- S (N) := SE (U mod BB);
+- -- U := U / BB;
+- -- end loop;
+- S (1) := SE (U);
+-
+- Ada.Streams.Write (Stream.all, S);
+-
+- -- if U /= 0 then
+- -- raise Data_Error;
+- -- end if;
+- end W_SSU;
+-
+- ----------
+- -- W_SU --
+- ----------
+-
+- procedure W_SU (Stream : not null access RST; Item : Short_Unsigned) is
+- S : XDR_S_SU;
+- U : XDR_SU := XDR_SU (Item);
+-
+- begin
+- if Optimize_Integers then
+- S := Short_Unsigned_To_XDR_S_SU (Item);
+- else
+- for N in reverse S'Range loop
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end if;
+-
+- Ada.Streams.Write (Stream.all, S);
+- end W_SU;
+-
+- ---------
+- -- W_U --
+- ---------
+-
+- procedure W_U (Stream : not null access RST; Item : Unsigned) is
+- S : XDR_S_U;
+- U : XDR_U := XDR_U (Item);
+-
+- begin
+- if Optimize_Integers then
+- S := Unsigned_To_XDR_S_U (Item);
+- else
+- for N in reverse S'Range loop
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end if;
+-
+- Ada.Streams.Write (Stream.all, S);
+- end W_U;
+-
+- ----------
+- -- W_WC --
+- ----------
+-
+- procedure W_WC (Stream : not null access RST; Item : Wide_Character) is
+- S : XDR_S_WC;
+- U : XDR_WC;
+-
+- begin
+-
+- -- Use Ada requirements on Wide_Character representation clause.
+- U := XDR_WC (Wide_Character'Pos (Item));
+-
+- for N in reverse S'Range loop
+- S (N) := SE (U mod BB);
+- U := U / BB;
+- end loop;
+-
+- Ada.Streams.Write (Stream.all, S);
+-
+- if U /= 0 then
+- raise Data_Error;
+- end if;
+- end W_WC;
+-
+-end System.Stream_Attributes;
diff --git a/gnat-glade/patches/patch-Garlic_select.c b/gnat-glade/patches/patch-Garlic_select.c
new file mode 100644
index 0000000000..e5a1d97824
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_select.c
@@ -0,0 +1,14 @@
+$NetBSD: patch-Garlic_select.c,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix link time version warning on NetBSD
+
+--- /dev/null
++++ Garlic/select.c
+@@ -0,0 +1,7 @@
++#include <sys/select.h>
++int
++__netbsd_select(int nfds, fd_set * restrict readfds, fd_set * restrict writefds,
++ fd_set * restrict exceptfds, struct timeval * restrict timeout)
++{
++ return select(nfds, readfds, writefds, exceptfds, timeout);
++}
diff --git a/gnat-glade/patches/patch-configure b/gnat-glade/patches/patch-configure
new file mode 100644
index 0000000000..0da58989cf
--- /dev/null
+++ b/gnat-glade/patches/patch-configure
@@ -0,0 +1,84 @@
+$NetBSD: patch-configure,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix version
+Add var for configuration helper
+Fix GNAT version control
+Add NetBSD support
+Fix link time version warning
+Add configuration helper
+
+--- configure.orig 2007-11-28 21:27:21.000000000 +0200
++++ configure
+@@ -1669,7 +1669,7 @@
+
+ # Define the identity of the package.
+ PACKAGE=GLADE
+- VERSION=dev
++ VERSION=6.0.1
+
+
+ cat >>confdefs.h <<_ACEOF
+@@ -3372,7 +3372,6 @@
+ fi
+
+
+-
+ #
+ # Check for maintainer mode
+ #
+@@ -3522,7 +3521,10 @@
+ echo "$as_me:$LINENO: checking if the Ada compiler is recent enough" >&5
+ echo $ECHO_N "checking if the Ada compiler is recent enough... $ECHO_C" >&6
+ am_gnatls_date=`$GNATLS -v | $SED -ne 's/^GNATLS .*(\(........\).*$/\1/p'`
+-if test "20041007" -le "$am_gnatls_date"; then
++if test -z "$am_gnatls_date"; then
++ echo "$as_me:$LINENO: result: yes" >&5
++ echo "${ECHO_T}yes" >&6
++elif test "20041007" -le "$am_gnatls_date"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+ echo "${ECHO_T}yes" >&6
+ else
+@@ -3559,6 +3561,7 @@
+ *-linux*) PLATFORM_SPECIFIC=l;;
+ *-*-solaris2*) PLATFORM_SPECIFIC=s;;
+ sparc-sun-sunos4*) PLATFORM_SPECIFIC=u;;
++ *-*netbsd) PLATFORM_SPECIFIC=n;;
+ *) ;;
+ esac
+
+@@ -3574,6 +3577,7 @@
+ g) PSNAME="SGI";;
+ h) PSNAME="HP";;
+ b) PSNAME="AIX";;
++ n) PSNAME="NetBSD";;
+ e) PSNAME="Empty";;
+ *) PSNAME="Unknown target (${target})";;
+ esac
+@@ -3596,8 +3600,8 @@
+
+ PROCESS_BLOCKING_IO="no";
+ case ${PLATFORM_SPECIFIC} in
+- s|l)
+- ${GNATMAKE} -q -o ./isthrbio ${srcdir}/Garlic/isthrbio.adb>/dev/null 2>&1;
++ s|l|n)
++ ${GNATMAKE} -q -P${srcdir}/Garlic/isthrbio.gpr >/dev/null 2>&1;
+ if ./isthrbio; then
+ PROCESS_BLOCKING_IO="yes";
+ fi;
+@@ -4054,7 +4058,7 @@
+ #
+ # Output
+ #
+- ac_config_files="$ac_config_files Makefile Dist/Makefile Dist/xe_defs-defaults.ads Garlic/Makefile Garlic/s-gaplsp.ads Examples/check-config Examples/Makefile Examples/Bank/Makefile Examples/Eratho/Makefile Examples/Eratho/absolute/Makefile Examples/Eratho/cycle/Makefile Examples/Eratho/dynamic/Makefile Examples/Eratho/spiral/Makefile Examples/Filters/Makefile Examples/Messages/Makefile Examples/MultiPro/Makefile Examples/DSMStorage/Makefile Examples/MultiSto/Makefile Examples/Reconnection/Makefile Examples/LightBank/Makefile"
++ac_config_files="$ac_config_files Makefile Dist/Makefile Dist/xe_defs-defaults.ads Dist/gnatdist-config Garlic/Makefile Garlic/s-gaplsp.ads Examples/check-config Examples/Makefile Examples/Bank/Makefile Examples/Eratho/Makefile Examples/Eratho/absolute/Makefile Examples/Eratho/cycle/Makefile Examples/Eratho/dynamic/Makefile Examples/Eratho/spiral/Makefile Examples/Filters/Makefile Examples/Messages/Makefile Examples/MultiPro/Makefile Examples/DSMStorage/Makefile Examples/MultiSto/Makefile Examples/Reconnection/Makefile Examples/LightBank/Makefile"
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+@@ -4633,6 +4639,7 @@
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "Dist/Makefile" ) CONFIG_FILES="$CONFIG_FILES Dist/Makefile" ;;
+ "Dist/xe_defs-defaults.ads" ) CONFIG_FILES="$CONFIG_FILES Dist/xe_defs-defaults.ads" ;;
++ "Dist/gnatdist-config" ) CONFIG_FILES="$CONFIG_FILES Dist/gnatdist-config" ;;
+ "Garlic/Makefile" ) CONFIG_FILES="$CONFIG_FILES Garlic/Makefile" ;;
+ "Garlic/s-gaplsp.ads" ) CONFIG_FILES="$CONFIG_FILES Garlic/s-gaplsp.ads" ;;
+ "Examples/check-config" ) CONFIG_FILES="$CONFIG_FILES Examples/check-config" ;;
Home |
Main Index |
Thread Index |
Old Index