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