From a89bb895d87768df1c0d78d3941f8cec37593222 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Gr=C3=B6ber?= <dxld@darkboxed.org>
Date: Sat, 12 Mar 2022 16:27:22 +0100
Subject: Fix hardcoded values in gcc backend's default_paths

The gcc backend's Make-lang.in still had hardcoded install paths. Since
this is copied to the gcc build system we don't have access to our
configure variables, so just treat it as a subst_file in the configure
script.

While we're at it we get rid of the separate sed invocation for
default_paths and have that go through config.status instead.
---
 scripts/gcc/Make-lang.in    | 222 -------------------------------------------
 scripts/gcc/Make-lang.in.in | 224 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 224 insertions(+), 222 deletions(-)
 delete mode 100644 scripts/gcc/Make-lang.in
 create mode 100644 scripts/gcc/Make-lang.in.in

(limited to 'scripts')

diff --git a/scripts/gcc/Make-lang.in b/scripts/gcc/Make-lang.in
deleted file mode 100644
index 826f65538..000000000
--- a/scripts/gcc/Make-lang.in
+++ /dev/null
@@ -1,222 +0,0 @@
-# Top level -*- makefile -*- fragment for vhdl (GHDL).
-#   Copyright (C) 2002
-#   Free Software Foundation, Inc.
-
-#This file is part of GNU CC.
-
-#GNU CC is free software; you can redistribute it and/or modify
-#it under the terms of the GNU General Public License as published by
-#the Free Software Foundation; either version 2, or (at your option)
-#any later version.
-
-#GNU CC is distributed in the hope that it will be useful,
-#but WITHOUT ANY WARRANTY; without even the implied warranty of
-#MERCHANTABILITY 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
-#along with GNU CC; see the file COPYING.  If not, write to
-#the Free Software Foundation, 59 Temple Place - Suite 330,
-#Boston, MA 02111-1307, USA.
-
-# This file provides the language dependent support in the main Makefile.
-# Each language makefile fragment must provide the following targets:
-#
-# foo.all.build, foo.all.cross, foo.start.encap, foo.rest.encap,
-# foo.info, foo.dvi,
-# foo.install-normal, foo.install-common, foo.install-info, foo.install-man,
-# foo.uninstall, foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean,
-# foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4
-#
-# where `foo' is the name of the language.
-#
-# It should also provide rules for:
-#
-# - making any compiler driver (eg: g++)
-# - the compiler proper (eg: cc1plus)
-# - define the names for selecting the language in LANGUAGES.
-# tool definitions
-MV = mv
-RM = rm -f
-
-
-# Extra flags to pass to recursive makes.
-GHDL_ADAFLAGS=-gnata -gnaty3befhkmr -gnatwa -gnatwC
-GNATBIND = gnatbind
-GNATMAKE = gnatmake
-
-# Define the names for selecting vhdl in LANGUAGES.
-vhdl VHDL: ghdl1$(exeext) ghdl$(exeext)
-
-# Tell GNU Make to ignore these, if they exist.
-.PHONY: vhdl VHDL
-
-GHDL1_OBJS = attribs.o vhdl/ortho-lang.o vhdl/grt-cstdio.o
-
-# To be put in ALL_HOST_FRONTEND_OBJS, so that generated files are created
-# before.
-vhdl_OBJS=vhdl/ortho-lang.o
-
-# The compiler proper.
-# It is compiled into the vhdl/ subdirectory to avoid file name clashes but
-# linked in in gcc directory to be able to access to gcc object files.
-ghdl1$(exeext): force $(GHDL1_OBJS) $(BACKEND) $(LIBDEPS)
-        # Create object file in vhdl/subdir
-	$(GNATMAKE) -c -aI$(srcdir)/vhdl --subdirs=vhdl ortho_gcc-main \
-	 -cargs $(CFLAGS) $(GHDL_ADAFLAGS)
-	$(GNATMAKE) -o $@ -aI$(srcdir)/vhdl -aOvhdl ortho_gcc-main \
-         -cargs $(CFLAGS) $(GHDL_ADAFLAGS) \
-	 -bargs -E \
-	 -largs --LINK=$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) $(GHDL1_OBJS) \
-	 $(filter-out main.o,$(BACKEND)) $(LIBS) $(BACKENDLIBS)
-
-vhdl_target1:=$(subst -gnu,,$(target))
-vhdl_targ:=$(subst -, ,$(vhdl_target1))
-ifeq ($(words $(vhdl_targ)),2)
-  vhdl_osys:=$(word 2,$(vhdl_targ))
-else
-  vhdl_osys:=$(word 3,$(vhdl_targ))
-endif
-
-# Set target files.
-ifeq ($(filter-out mingw32 mingw64,$(vhdl_osys)),)
-  VHDL_SOEXT=.dll
-else ifeq ($(filter-out darwin%,$(vhdl_osys)),)
-  VHDL_SOEXT=.dylib
-else
-  VHDL_SOEXT=.so
-endif
-
-vhdl/default_paths.ads: Makefile
-	echo "--  DO NOT EDIT" > tmp-dpaths.ads
-	echo "--  This file is created by Makefile" >> tmp-dpaths.ads
-	echo "package Default_Paths is" >> tmp-dpaths.ads
-	echo "   --  Accept long lines."  >> tmp-dpaths.ads
-	echo "   pragma Style_Checks (\"M999\");"  >> tmp-dpaths.ads
-	echo "   Install_Prefix : constant String :=" >> tmp-dpaths.ads
-	echo "     \"$(exec_prefix)\";" >> tmp-dpaths.ads
-	suffix=`expr @"$(libexecdir)" : @"$(prefix)/\(.*\)"`; \
-	if test x"$$suffix" = x; then suffix="$(libexecdir)"; fi; \
-	echo "   Compiler_Gcc   : constant String :=" >> tmp-dpaths.ads; \
-	echo "     \"$$suffix/gcc/$(target_noncanonical)/$(version)/ghdl1$(exeext)\";" >> tmp-dpaths.ads
-	echo "   Compiler_Debug : constant String := \"\";" >> tmp-dpaths.ads
-	echo "   Compiler_Mcode : constant String := \"\";" >> tmp-dpaths.ads
-	echo "   Compiler_Llvm  : constant String := \"\";" >> tmp-dpaths.ads
-	echo "   Post_Processor : constant String := \"\";" >> tmp-dpaths.ads
-	echo "   LibDir_Suffix  : constant String :=">> tmp-dpaths.ads
-	echo "     \"lib\";" >> tmp-dpaths.ads
-	echo "   LibGhdlDir_Suffix  : constant String :=">> tmp-dpaths.ads
-	echo "     \"lib/ghdl\";" >> tmp-dpaths.ads
-	echo "   IncDir_Suffix  : constant String :=" >> tmp-dpaths.ads
-	echo "     \"include/ghdl\";" >> tmp-dpaths.ads
-	echo "   Shared_Library_Extension : constant String :=">> tmp-dpaths.ads
-	echo "     \"$(VHDL_SOEXT)\";" >> tmp-dpaths.ads
-	echo "   Default_Pie : constant Boolean := False;" >> tmp-dpaths.ads
-	echo "end Default_Paths;" >> tmp-dpaths.ads
-	$(srcdir)/../move-if-change tmp-dpaths.ads $@
-
-GHDL_GRT_OBJS=vhdl/grt-cstdio.o
-
-# The driver for ghdl.  Depends on ghdl1 to use object files in vhdl/ subdir.
-ghdl$(exeext): ghdl1$(exeext) $(GHDL_GRT_OBJS) vhdl/default_paths.ads force
-	$(GNATMAKE) -o $@ -aI$(srcdir)/vhdl -aI$(srcdir)/vhdl/ghdldrv \
-	 -aIvhdl -aOvhdl ghdl_gcc \
-	 -cargs $(CFLAGS) $(GHDL_ADAFLAGS) \
-	 -bargs -E \
-         -largs --LINK=$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) \
-           $(GHDL_GRT_OBJS) $(LIBS)
-
-# Build hooks:
-
-vhdl.all.build:
-
-vhdl.all.cross:
-	@echo "No support for building vhdl cross-compiler"
-	exit 1
-
-vhdl.start.encap:
-vhdl.rest.encap:
-
-# Documentation hooks
-doc/ghdl.info: vhdl/ghdl.texi
-	-rm -f doc/ghdl.info*
-	$(MAKEINFO) $(MAKEINFOFLAGS) -o $@ $<
-
-doc/ghdl.dvi: vhdl/ghdl.texi
-	$(TEXI2DVI) -o $@ $<
-
-vhdl.info: doc/ghdl.info
-
-vhdl.man:
-
-vhdl.dvi: doc/ghdl.dvi
-
-vhdl.generated-manpages:
-
-# Install hooks:
-# ghdl1 is installed elsewhere as part of $(COMPILERS).
-
-vhdl.install-normal:
-
-vhdl.install-plugin:
-
-# Install the driver program as ghdl.
-vhdl.install-common: ghdl$(exeext) ghdl1$(exeext)
-	-mkdir $(DESTDIR)$(bindir)
-	-$(RM) $(DESTDIR)$(bindir)/ghdl$(exeext)
-	$(INSTALL_PROGRAM) ghdl$(exeext) $(DESTDIR)$(bindir)/ghdl$(exeext)
-	-mkdir $(DESTDIR)$(libdir)
-	-mkdir $(DESTDIR)$(libdir)/ghdl
-	$(INSTALL_DATA) ../libbacktrace/.libs/libbacktrace.a $(DESTDIR)$(libdir)/ghdl
-
-install-info:: $(DESTDIR)$(infodir)/ghdl.info
-
-vhdl.install-info: $(DESTDIR)$(infodir)/ghdl.info
-
-vhdl.install-man: $(DESTDIR)$(man1dir)/ghdl$(man1ext)
-
-$(DESTDIR)$(man1dir)/ghdl$(man1ext): $(srcdir)/vhdl/ghdl.1
-	-rm -f $@
-	-$(INSTALL_DATA) $< $@
-	-chmod a-x $@
-
-vhdl.uninstall:
-	-$(RM) $(DESTDIR)$(bindir)/ghdl$(exeext)
-
-
-# Clean hooks:
-# A lot of the ancillary files are deleted by the main makefile.
-# We just have to delete files specific to us.
-
-vhdl.mostlyclean:
-	-$(RM) vhdl/*$(objext) vhdl/*.ali vhdl/b~*.ad?
-	-$(RM) vhdl/default_paths.ads
-vhdl.clean:
-	-$(RM) vhdl/*$(objext)
-	-$(RM) vhdl/default_paths.ads
-vhdl.distclean:
-	-$(RM) vhdl/Makefile
-	-$(RM) ghdl$(exeext)
-vhdl.extraclean:
-
-vhdl.maintainer-clean:
-
-
-# Stage hooks:
-# The main makefile has already created stage?/vhdl
-
-vhdl.stage1:
-	-$(MV) vhdl/*$(objext) vhdl/*.ali vhdl/b_*.c stage1/vhdl
-	-$(MV) vhdl/stamp-* stage1/vhdl
-vhdl.stage2:
-	-$(MV) vhdl/*$(objext) vhdl/*.ali vhdl/b_*.c stage2/vhdl
-	-$(MV) vhdl/stamp-* stage2/vhdl
-vhdl.stage3:
-	-$(MV) vhdl/*$(objext) vhdl/*.ali vhdl/b_*.c stage3/vhdl
-	-$(MV) vhdl/stamp-* stage3/vhdl
-vhdl.stage4:
-	-$(MV) vhdl/*$(objext) vhdl/*.ali vhdl/b_*.c stage4/vhdl
-	-$(MV) vhdl/stamp-* stage4/vhdl
-
-# No vhdl-specific selftests
-selftest-vhdl:
diff --git a/scripts/gcc/Make-lang.in.in b/scripts/gcc/Make-lang.in.in
new file mode 100644
index 000000000..cdea74be8
--- /dev/null
+++ b/scripts/gcc/Make-lang.in.in
@@ -0,0 +1,224 @@
+# Top level -*- makefile -*- fragment for vhdl (GHDL).
+#   Copyright (C) 2002
+#   Free Software Foundation, Inc.
+
+#This file is part of GNU CC.
+
+#GNU CC is free software; you can redistribute it and/or modify
+#it under the terms of the GNU General Public License as published by
+#the Free Software Foundation; either version 2, or (at your option)
+#any later version.
+
+#GNU CC is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY 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
+#along with GNU CC; see the file COPYING.  If not, write to
+#the Free Software Foundation, 59 Temple Place - Suite 330,
+#Boston, MA 02111-1307, USA.
+
+# This file provides the language dependent support in the main Makefile.
+# Each language makefile fragment must provide the following targets:
+#
+# foo.all.build, foo.all.cross, foo.start.encap, foo.rest.encap,
+# foo.info, foo.dvi,
+# foo.install-normal, foo.install-common, foo.install-info, foo.install-man,
+# foo.uninstall, foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean,
+# foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4
+#
+# where `foo' is the name of the language.
+#
+# It should also provide rules for:
+#
+# - making any compiler driver (eg: g++)
+# - the compiler proper (eg: cc1plus)
+# - define the names for selecting the language in LANGUAGES.
+# tool definitions
+MV = mv
+RM = rm -f
+
+
+# Extra flags to pass to recursive makes.
+GHDL_ADAFLAGS=-gnata -gnaty3befhkmr -gnatwa -gnatwC
+GNATBIND = gnatbind
+GNATMAKE = gnatmake
+
+# Define the names for selecting vhdl in LANGUAGES.
+vhdl VHDL: ghdl1$(exeext) ghdl$(exeext)
+
+# Tell GNU Make to ignore these, if they exist.
+.PHONY: vhdl VHDL
+
+GHDL1_OBJS = attribs.o vhdl/ortho-lang.o vhdl/grt-cstdio.o
+
+# To be put in ALL_HOST_FRONTEND_OBJS, so that generated files are created
+# before.
+vhdl_OBJS=vhdl/ortho-lang.o
+
+# The compiler proper.
+# It is compiled into the vhdl/ subdirectory to avoid file name clashes but
+# linked in in gcc directory to be able to access to gcc object files.
+ghdl1$(exeext): force $(GHDL1_OBJS) $(BACKEND) $(LIBDEPS)
+        # Create object file in vhdl/subdir
+	$(GNATMAKE) -c -aI$(srcdir)/vhdl --subdirs=vhdl ortho_gcc-main \
+	 -cargs $(CFLAGS) $(GHDL_ADAFLAGS)
+	$(GNATMAKE) -o $@ -aI$(srcdir)/vhdl -aOvhdl ortho_gcc-main \
+         -cargs $(CFLAGS) $(GHDL_ADAFLAGS) \
+	 -bargs -E \
+	 -largs --LINK=$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) $(GHDL1_OBJS) \
+	 $(filter-out main.o,$(BACKEND)) $(LIBS) $(BACKENDLIBS)
+
+vhdl_target1:=$(subst -gnu,,$(target))
+vhdl_targ:=$(subst -, ,$(vhdl_target1))
+ifeq ($(words $(vhdl_targ)),2)
+  vhdl_osys:=$(word 2,$(vhdl_targ))
+else
+  vhdl_osys:=$(word 3,$(vhdl_targ))
+endif
+
+# Set target files.
+ifeq ($(filter-out mingw32 mingw64,$(vhdl_osys)),)
+  VHDL_SOEXT=.dll
+else ifeq ($(filter-out darwin%,$(vhdl_osys)),)
+  VHDL_SOEXT=.dylib
+else
+  VHDL_SOEXT=.so
+endif
+
+vhdl/default_paths.ads: Makefile
+	echo "--  DO NOT EDIT" > tmp-dpaths.ads
+	echo "--  This file is created by Makefile" >> tmp-dpaths.ads
+	echo "package Default_Paths is" >> tmp-dpaths.ads
+	echo "   --  Accept long lines."  >> tmp-dpaths.ads
+	echo "   pragma Style_Checks (\"M999\");"  >> tmp-dpaths.ads
+	echo "   Install_Prefix : constant String :=" >> tmp-dpaths.ads
+	echo "     \"$(exec_prefix)\";" >> tmp-dpaths.ads
+	suffix=`expr @"$(libexecdir)" : @"$(prefix)/\(.*\)"`; \
+	if test x"$$suffix" = x; then suffix="$(libexecdir)"; fi; \
+	echo "   Compiler_Gcc   : constant String :=" >> tmp-dpaths.ads; \
+	echo "     \"$$suffix/gcc/$(target_noncanonical)/$(version)/ghdl1$(exeext)\";" >> tmp-dpaths.ads
+	echo "   Compiler_Debug : constant String := \"\";" >> tmp-dpaths.ads
+	echo "   Compiler_Mcode : constant String := \"\";" >> tmp-dpaths.ads
+	echo "   Compiler_Llvm  : constant String := \"\";" >> tmp-dpaths.ads
+	echo "   Post_Processor : constant String := \"\";" >> tmp-dpaths.ads
+        # Note: the @VARs@ below are replaced by ghdl's configure script
+        # not gcc's.
+	echo "   LibDir_Suffix  : constant String :=">> tmp-dpaths.ads
+	echo "     \"@LIBDIR_SUFFIX@\";" >> tmp-dpaths.ads
+	echo "   LibGhdlDir_Suffix  : constant String :=">> tmp-dpaths.ads
+	echo "     \"@LIBGHDLDIR_SUFFIX@\";" >> tmp-dpaths.ads
+	echo "   IncDir_Suffix  : constant String :=" >> tmp-dpaths.ads
+	echo "     \"@INCDIR_SUFFIX@\";" >> tmp-dpaths.ads
+	echo "   Shared_Library_Extension : constant String :=">> tmp-dpaths.ads
+	echo "     \"$(VHDL_SOEXT)\";" >> tmp-dpaths.ads
+	echo "   Default_Pie : constant Boolean := False;" >> tmp-dpaths.ads
+	echo "end Default_Paths;" >> tmp-dpaths.ads
+	$(srcdir)/../move-if-change tmp-dpaths.ads $@
+
+GHDL_GRT_OBJS=vhdl/grt-cstdio.o
+
+# The driver for ghdl.  Depends on ghdl1 to use object files in vhdl/ subdir.
+ghdl$(exeext): ghdl1$(exeext) $(GHDL_GRT_OBJS) vhdl/default_paths.ads force
+	$(GNATMAKE) -o $@ -aI$(srcdir)/vhdl -aI$(srcdir)/vhdl/ghdldrv \
+	 -aIvhdl -aOvhdl ghdl_gcc \
+	 -cargs $(CFLAGS) $(GHDL_ADAFLAGS) \
+	 -bargs -E \
+         -largs --LINK=$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) \
+           $(GHDL_GRT_OBJS) $(LIBS)
+
+# Build hooks:
+
+vhdl.all.build:
+
+vhdl.all.cross:
+	@echo "No support for building vhdl cross-compiler"
+	exit 1
+
+vhdl.start.encap:
+vhdl.rest.encap:
+
+# Documentation hooks
+doc/ghdl.info: vhdl/ghdl.texi
+	-rm -f doc/ghdl.info*
+	$(MAKEINFO) $(MAKEINFOFLAGS) -o $@ $<
+
+doc/ghdl.dvi: vhdl/ghdl.texi
+	$(TEXI2DVI) -o $@ $<
+
+vhdl.info: doc/ghdl.info
+
+vhdl.man:
+
+vhdl.dvi: doc/ghdl.dvi
+
+vhdl.generated-manpages:
+
+# Install hooks:
+# ghdl1 is installed elsewhere as part of $(COMPILERS).
+
+vhdl.install-normal:
+
+vhdl.install-plugin:
+
+# Install the driver program as ghdl.
+vhdl.install-common: ghdl$(exeext) ghdl1$(exeext)
+	-mkdir $(DESTDIR)$(bindir)
+	-$(RM) $(DESTDIR)$(bindir)/ghdl$(exeext)
+	$(INSTALL_PROGRAM) ghdl$(exeext) $(DESTDIR)$(bindir)/ghdl$(exeext)
+	-mkdir $(DESTDIR)$(libdir)
+	-mkdir $(DESTDIR)$(libdir)/ghdl
+	$(INSTALL_DATA) ../libbacktrace/.libs/libbacktrace.a $(DESTDIR)$(libdir)/ghdl
+
+install-info:: $(DESTDIR)$(infodir)/ghdl.info
+
+vhdl.install-info: $(DESTDIR)$(infodir)/ghdl.info
+
+vhdl.install-man: $(DESTDIR)$(man1dir)/ghdl$(man1ext)
+
+$(DESTDIR)$(man1dir)/ghdl$(man1ext): $(srcdir)/vhdl/ghdl.1
+	-rm -f $@
+	-$(INSTALL_DATA) $< $@
+	-chmod a-x $@
+
+vhdl.uninstall:
+	-$(RM) $(DESTDIR)$(bindir)/ghdl$(exeext)
+
+
+# Clean hooks:
+# A lot of the ancillary files are deleted by the main makefile.
+# We just have to delete files specific to us.
+
+vhdl.mostlyclean:
+	-$(RM) vhdl/*$(objext) vhdl/*.ali vhdl/b~*.ad?
+	-$(RM) vhdl/default_paths.ads
+vhdl.clean:
+	-$(RM) vhdl/*$(objext)
+	-$(RM) vhdl/default_paths.ads
+vhdl.distclean:
+	-$(RM) vhdl/Makefile
+	-$(RM) ghdl$(exeext)
+vhdl.extraclean:
+
+vhdl.maintainer-clean:
+
+
+# Stage hooks:
+# The main makefile has already created stage?/vhdl
+
+vhdl.stage1:
+	-$(MV) vhdl/*$(objext) vhdl/*.ali vhdl/b_*.c stage1/vhdl
+	-$(MV) vhdl/stamp-* stage1/vhdl
+vhdl.stage2:
+	-$(MV) vhdl/*$(objext) vhdl/*.ali vhdl/b_*.c stage2/vhdl
+	-$(MV) vhdl/stamp-* stage2/vhdl
+vhdl.stage3:
+	-$(MV) vhdl/*$(objext) vhdl/*.ali vhdl/b_*.c stage3/vhdl
+	-$(MV) vhdl/stamp-* stage3/vhdl
+vhdl.stage4:
+	-$(MV) vhdl/*$(objext) vhdl/*.ali vhdl/b_*.c stage4/vhdl
+	-$(MV) vhdl/stamp-* stage4/vhdl
+
+# No vhdl-specific selftests
+selftest-vhdl:
-- 
cgit v1.2.3