Hello,
I'm not a regular subscriber to this list. I'm just following the suggestion in the README. Please excuse me if this bug has already been hashed to death.
I ran into a problem installing GPC(gpc-19990118) after the compile. I am running Solaris 2.7 (sparc) with gcc 2.8.1. I copied the "p" directory to the gcc-2.8.1 source directory. Installed the patches. Compiled C/C++/GPC without a problem. The problem started when I tried to "make install". Particularly, in the "pascal.install-info" section. Anyway, I tracked it down to a problem in the "Make-lang.in" file. Basicly, in the "Make-lang.in", whenever you had a "cd" before a call to ($INSTALL_DATA) the Makefile couldn't find "./install.sh -c". Also, I had to remove the "$$f" (files) from the Target-Dir option to "install.sh"
I hope this helps,
__Jim O'Dell
Here's the Make-lang.in I used to install GPC ********************************************************************** # -*- mode: makefile-mode -*- # Top level makefile fragment for GNU Pascal. # Copyright (C) 1994, 1995 Free Software Foundation, Inc.
#This file is part of GNU Pascal.
#GNU Pascal 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 Pascal 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 Pascal; 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.distdir, # 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: gpc) # - the compiler proper (eg: gpc1) # - define the names for selecting the language in LANGUAGES.
# Can be overwritten for DJGPP host HARDLINK=ln
# Where to install the demos (relative to the prefix) DEMO_DIR=doc/gpc/demos demodir=$(prefix)/$(DEMO_DIR)
# Analogous to objext interfaceext=.gpi
# Version numbers gpc_major=2 gpc_minor=0 gpc_release=19990118 gpc_version=$(gpc_release) rts_version=$(gpc_release)
# Extra flags to pass to recursive makes. GPC_FLAGS_TO_PASS = \ "CROSS=$(CROSS)" \ "X_CFLAGS=$(X_CFLAGS)" \ "GPC_EGCS_FLAG=$(GPC_EGCS_FLAG)" \ "EXTRA_LIBS=$(EXTRA_LIBS)" \ "MAYBE_TARGET_DEFAULT=$(MAYBE_TARGET_DEFAULT)" \ "MAYBE_USE_COLLECT2=$(MAYBE_USE_COLLECT2)" \ "SCHED_CFLAGS=$(SCHED_CFLAGS)" \ "includedir=`echo '$(includedir)'|sed -e 's/\$$/\\&&/g'`" \ "libsubdir=`echo '$(libsubdir)'|sed -e 's/\$$/\\&&/g'`" \ "target_alias=$(target_alias)" \ "gpc_version=$(gpc_version)" \ "rts_version=$(rts_version)" \ "version=$(version)" # "LIBS=`echo "$(LIBS)"|sed -e 's,../libiberty/libiberty.a,../../libiberty/libiberty.a,g' -e 's,obstack.o,../obstack.o,g'`" \
# Extra flags to pass when building the RTS. RTS_FLAGS_TO_PASS = \ CROSS="$(CROSS)" \ AR_FLAGS="$(AR_FLAGS)" \ AR_FOR_TARGET="$(AR_FOR_TARGET)" \ BISON="$(BISON)" \ BISONFLAGS="$(BISONFLAGS)" \ CFLAGS="$(CFLAGS)" \ X_CFLAGS="$(X_CFLAGS)" \ LDFLAGS="$(LDFLAGS)" \ RANLIB="$(RANLIB)" \ RANLIB_TEST="$(RANLIB_TEST)" \ RANLIB_FOR_TARGET="$(RANLIB_FOR_TARGET)" \ RANLIB_TEST_FOR_TARGET="$(RANLIB_TEST_FOR_TARGET)" \ SHELL="$(SHELL)"
# Actual names to use when installing a native compiler. GPC_INSTALL_NAME = `t='$(program_transform_name)'; echo gpc | sed $$t`
# Additional driver aliases. PC_INSTALL_NAME = `t='$(program_transform_name)'; echo pc | sed $$t` EPC_INSTALL_NAME = `t='$(program_transform_name)'; echo epc | sed $$t` BPC_INSTALL_NAME = `t='$(program_transform_name)'; echo bpc | sed $$t`
# Actual names to use when installing a cross-compiler. GPC_CROSS_NAME = `t='$(program_transform_cross_name)'; echo gpc | sed $$t`
# Additional cross driver aliases. PC_CROSS_NAME = `t='$(program_transform_cross_name)'; echo pc | sed $$t` EPC_CROSS_NAME = `t='$(program_transform_cross_name)'; echo epc | sed $$t` BPC_CROSS_NAME = `t='$(program_transform_cross_name)'; echo bpc | sed $$t`
# The GPC to use for compiling libgpc.a # Usually the one we just built. GPC_FOR_TARGET = ./xgpc -B./
# Define the names for selecting Pascal in LANGUAGES. Pascal pascal: xgpc$(exeext) gpc1$(exeext) gpc-cpp$(exeext) pascal.rts specs
# Tell GNU make to ignore these if they exist. .PHONY: Pascal pascal
GPC_SRCS = \ $(srcdir)/c-aux-info.c \ $(srcdir)/c-iterate.c \ $(srcdir)/c-pragma.c \ $(srcdir)/convert.c \ $(srcdir)/dbxout.c \ $(srcdir)/expr.c \ $(srcdir)/fold-const.c \ $(srcdir)/function.c \ $(srcdir)/optabs.c \ $(srcdir)/stor-layout.c \ $(srcdir)/toplev.c \ $(srcdir)/tree.c \ $(srcdir)/p/assert_.h \ $(srcdir)/p/circle-buf.c \ $(srcdir)/p/circle-buf.h \ $(srcdir)/p/gbe.h \ $(srcdir)/p/gpc-common.c \ $(srcdir)/p/gpc-convert.c \ $(srcdir)/p/gpc-decl.c \ $(srcdir)/p/gpc-defs.h \ $(srcdir)/p/gpc-lang.c \ $(srcdir)/p/gpc-lang.h \ $(srcdir)/p/gpc-lex.c \ $(srcdir)/p/gpc-typeck.c \ $(srcdir)/p/gpi-hash.c \ $(srcdir)/p/gpi-hash.h \ $(srcdir)/p/lang-options.h \ $(srcdir)/p/lang-specs.h \ $(srcdir)/p/mkstemp.c \ $(srcdir)/p/module.c \ $(srcdir)/p/module.h \ $(srcdir)/p/objects.c \ $(srcdir)/p/objects.h \ $(srcdir)/p/parse.y \ $(srcdir)/p/setop.c \ $(srcdir)/p/setop.h \ $(srcdir)/p/rts.c \ $(srcdir)/p/rts.h \ $(srcdir)/p/types.c \ $(srcdir)/p/types.h \ $(srcdir)/p/util.c \ $(srcdir)/p/util.h \ $(srcdir)/p/version.c
GPC_TEXI = $(srcdir)/p/doc/gpc.texi \ $(srcdir)/p/doc/copying.texi \ $(srcdir)/p/doc/funding.texi \ $(srcdir)/p/doc/lookfeel.texi \ $(srcdir)/p/doc/gnu.texi \ $(srcdir)/p/doc/contributors.texi \ $(srcdir)/p/doc/welcome.texi \ $(srcdir)/p/doc/install.texi \ $(srcdir)/p/doc/invoke.texi \ $(srcdir)/p/doc/programming.texi \ $(srcdir)/p/doc/reference.texi \ $(srcdir)/p/doc/keywords.texi \ $(srcdir)/p/doc/builtin.texi \ $(srcdir)/p/doc/extend.texi \ $(srcdir)/p/doc/borland2ep.texi \ $(srcdir)/p/doc/bpqstart.texi \ $(srcdir)/p/doc/bugs.texi \ $(srcdir)/p/doc/support.texi \ $(srcdir)/p/doc/how-to-contrib.texi \ $(srcdir)/p/doc/gpc-source.texi \ $(srcdir)/p/doc/notes.texi \ $(srcdir)/p/doc/pvs.texi \ $(srcdir)/p/doc/sets.texi
p/gpc.o: $(srcdir)/p/gpc.c $(CONFIG_H) gansidecl.h multilib.h Makefile $(lang_specs_files) $(CC) -DGPC $(GPC_EGCS_FLAG) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -DGPC_MAJOR=""$(gpc_major)"" \ -DGPC_MINOR=""$(gpc_minor)"" \ -DGPC_RELEASE=""$(gpc_release)"" \ $(DRIVER_DEFINES) \ -c `echo $(srcdir)/p/gpc.c | sed 's,^./,,'` -o $@
p/gpc_date: date '+%h %e %Y' > $@
p/gpc_time: date '+%H:%M:%S' > $@
p/version.o: p/gpc_date p/gpc_time $(srcdir)/p/version.c config.status $(CC) -DGPC $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -DGPC_TIME=""`cat p/gpc_time`"" \ -DGPC_DATE=""`cat p/gpc_date`"" \ -DGCC_VERSION=""$(version)"" \ -DGPC_VERSION=""$(gpc_version)"" \ -c `echo $(srcdir)/p/version.c | sed 's,^./,,'` -o $@
p/mkstemp.o: p/mkstemp.c $(CC) -DGPC $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c $< -o $@
# We call this executable `xgpc' rather than `gpc' # to avoid confusion if the current directory is in the path # and PC is `gpc'. It is renamed to `gpc' when it is installed. xgpc$(exeext): p/gpc.o version.o choose-temp.o pexecute.o prefix.o p/version.o \ p/mkstemp.o $(LIBDEPS) $(EXTRA_GCC_OBJS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ p/gpc.o prefix.o p/version.o \ choose-temp.o pexecute.o p/mkstemp.o $(EXTRA_GCC_OBJS) $(LIBS) $(EXTRA_LIBS)
# Also create gpc-cross, so that pascal.install-common will install properly. gpc-cross$(exeext): xgpc$(exeext) cp xgpc$(exeext) gpc-cross$(exeext)
gpc1$(exeext): $(P) $(GPC_SRCS) $(LIBDEPS) stamp-objlist c-aux-info.o \ c-iterate.o c-pragma.o choose-temp.o pexecute.o p/mkstemp.o p/version.c cd p; $(MAKE) $(FLAGS_TO_PASS) $(GPC_FLAGS_TO_PASS) ../gpc1$(exeext)
gpc-cpp$(exeext): $(P) mbchar.o cexp.o $(srcdir)/p/gpc-cccp.c $(srcdir)/p/version.c cd p; $(MAKE) $(FLAGS_TO_PASS) $(GPC_FLAGS_TO_PASS) ../gpc-cpp$(exeext)
pascal.rts: p/rts/Makefile case "$(LANGUAGES)" in \ *pascal*) cd p/rts && $(MAKE) \ GCC_FOR_TARGET="`case '$(GCC_FOR_TARGET)' in \ './xgcc -B./'*) echo ../../xgcc -B../../;; \ *) echo '$(GCC_FOR_TARGET)';; esac`" \ GPC_FOR_TARGET="`case '$(GPC_FOR_TARGET)' in \ './xgpc -B./'*) echo ../../xgpc -B../../;; \ *) echo '$(GPC_FOR_TARGET)';; esac`" \ GCC_FLAGS="$(GCC_FLAGS)" $(RTS_FLAGS_TO_PASS) \ all ;; \ esac
# The configuration of the runtime system relies on an autoconf-type # configure, not a Cygnus-type one. It needs to be run *after* the # appropriate (cross-)compiler has been built, thus depend on GCC_PARTS. # `stmp-headers' ensures that float.h has been built. # dj: Depending on $(GCC_PARTS) here is bad news - very bad news. # mk: but it needs $(EXTRA_OBJS) and $(LIBGCC), what to do? p/rts/Makefile: $(srcdir)/p/rts/Makefile.in $(srcdir)/p/rts/configure \ $(GCC_PARTS) stmp-headers if [ -d p/rts ]; then true; else mkdir p/rts; fi src=`cd $(srcdir); pwd`; \ cd p/rts; \ CC="`case '$(GCC_FOR_TARGET)' in \ './xgcc -B./'*) echo ../../xgcc -B../../;; \ *) echo '$(GCC_FOR_TARGET)';; esac`" \ PC="`case '$(GPC_FOR_TARGET)' in \ './xgpc -B./'*) echo ../../xgpc -B../../;; \ *) echo '$(GPC_FOR_TARGET)';; esac`" \ $(RTS_FLAGS_TO_PASS) CONFIG_SITE=nonexisting-file $(SHELL) \ $${src}/p/rts/configure --srcdir=$${src}/p/rts
# Derive parts of the documentation of the run time library directly # from the source. p/doc/gpcpas.texi: $(srcdir)/p/rts/gpc.pas if [ -d p/doc ]; then true; else mkdir p/doc; fi sed -e 's/[@{}]/@&/g' < $(srcdir)/p/rts/gpc.pas > p/doc/gpcpas.texi # Build hooks:
pascal.all.build: xgpc$(exeext) pascal.all.cross: gpc-cross$(exeext) pascal.start.encap: pascal.rest.encap:
pascal.info: p/doc/gpc.info pascal.dvi: p/doc/gpc.dvi
p/doc/gpc.info: $(GPC_TEXI) p/doc/gpcpas.texi if [ -d p/doc ]; then true; else mkdir p/doc; fi src=`cd $(srcdir); pwd`; \ cd p/doc; $(MAKEINFO) -I$${src}/p/doc -o gpc.info $${src}/p/doc/gpc.texi
p/doc/gpc.dvi: $(GPC_TEXI) p/doc/gpcpas.texi if [ -d p/doc ]; then true; else mkdir p/doc; fi $(TEXI2DVI) -I$(srcdir)/p -o p/doc/gpc.dvi $(srcdir)/p/doc/gpc.texi
$(srcdir)/p/INSTALL: $(srcdir)/p/doc/install.texi cd $(srcdir)/p; $(MAKEINFO) -DINSTALLONLY --no-header \ --no-split doc/install.texi -o INSTALL
# Install hooks: # gpc1 is installed elsewhere as part of $(COMPILERS).
unitsubdir=$(libsubdir)/units
pascal.install-normal: install-gpc-cpp install-libgpc pascal.install-units pascal.install-demos
install-gpc-cpp: gpc-cpp$(exeext) -rm -f $(libsubdir)/gpc-cpp$(exeext) $(INSTALL_PROGRAM) gpc-cpp$(exeext) $(libsubdir)/gpc-cpp$(exeext)
install-libgpc: pascal.install-dir pascal.rts -if [ -f libgpc.a ] ; then \ rm -f $(libsubdir)/libgpc.a; \ $(INSTALL_DATA) libgpc.a $(libsubdir)/libgpc.a; \ if $(RANLIB_TEST_FOR_TARGET) ; then \ (cd $(libsubdir); $(RANLIB_FOR_TARGET) libgpc.a); else true; fi; \ chmod a-x $(libsubdir)/libgpc.a; \ else true; fi
$(srcdir)/p/units/crtc.h: $(srcdir)/p/units/crt.inc (echo '/* Automatically generated from crt.inc'; \ echo ' DO NOT CHANGE THIS FILE MANUALLY! */'; \ sed -e '1,/^const/d;s/^([^=]*)= #?([^;]*);(.*;)?$$/#define \1 \2/' \ -e '/^.$$/d' < $(srcdir)/p/units/crt.inc) > $(srcdir)/p/units//crtc.h
pascal.install-units: pascal.install-dir $(srcdir)/p/units/crtc.h $(INSTALL_DATA) $(srcdir)/p/rts/gpc.pas $(unitsubdir)/gpc.pas; \ chmod a-x $(unitsubdir)/gpc.pas; \ $(INSTALL_DATA) $(srcdir)/p/rts/internal.pas $(unitsubdir)/internal.pas; \ chmod a-x $(unitsubdir)/internal.pas; \ $(INSTALL_DATA) $(srcdir)/p/rts/getopt.h $(unitsubdir)/getopt.h; \ chmod a-x $(unitsubdir)/getopt.h; \ $(INSTALL_DATA) $(srcdir)/p/rts/pexecute.h $(unitsubdir)/pexecute.h; \ chmod a-x $(unitsubdir)/pexecute.h; \ cd $(srcdir)/p/units; \ for file in *.pas *.inc *.c *.h; do \ ../../$(INSTALL_DATA) $$file $(unitsubdir); \ chmod a-x $(unitsubdir)/$$file; \ done
pascal.install-demos: pascal.install-dir cd $(srcdir)/p/demos; \ for file in *; do \ ../../$(INSTALL_DATA) $$file $(demodir); \ chmod a-x $(demodir)/$$file; \ done
# Install the driver program as $(target)-gpc # and also as either gpc (if native) or $(tooldir)/bin/gpc. pascal.install-common: -if [ -f gpc1$(exeext) ] ; then \ if [ -f gpc-cross$(exeext) ] ; then \ rm -f $(bindir)/$(GPC_CROSS_NAME)$(exeext); \ $(INSTALL_PROGRAM) gpc-cross$(exeext) $(bindir)/$(GPC_CROSS_NAME)$(exeext); \ chmod a+x $(bindir)/$(GPC_CROSS_NAME)$(exeext); \ rm -f $(bindir)/$(PC_CROSS_NAME)$(exeext); \ $(HARDLINK) $(bindir)/$(GPC_CROSS_NAME)$(exeext) $(bindir)/$(PC_CROSS_NAME)$(exeext) \ > /dev/null 2>&1 \ || cp $(bindir)/$(GPC_CROSS_NAME)$(exeext) $(bindir)/$(PC_CROSS_NAME)$(exeext) ; \ rm -f $(bindir)/$(EPC_CROSS_NAME)$(exeext); \ $(HARDLINK) $(bindir)/$(GPC_CROSS_NAME)$(exeext) $(bindir)/$(EPC_CROSS_NAME)$(exeext) \ > /dev/null 2>&1 \ || cp $(bindir)/$(GPC_CROSS_NAME)$(exeext) $(bindir)/$(EPC_CROSS_NAME)$(exeext) ; \ rm -f $(bindir)/$(BPC_CROSS_NAME)$(exeext); \ $(HARDLINK) $(bindir)/$(GPC_CROSS_NAME)$(exeext) $(bindir)/$(BPC_CROSS_NAME)$(exeext) \ > /dev/null 2>&1 \ || cp $(bindir)/$(GPC_CROSS_NAME)$(exeext) $(bindir)/$(BPC_CROSS_NAME)$(exeext) ; \ else \ rm -f $(bindir)/$(GPC_INSTALL_NAME)$(exeext); \ $(INSTALL_PROGRAM) xgpc$(exeext) $(bindir)/$(GPC_INSTALL_NAME)$(exeext); \ chmod a+x $(bindir)/$(GPC_INSTALL_NAME)$(exeext); \ rm -f $(bindir)/$(PC_INSTALL_NAME)$(exeext); \ $(HARDLINK) $(bindir)/$(GPC_INSTALL_NAME)$(exeext) $(bindir)/$(PC_INSTALL_NAME)$(exeext) \ > /dev/null 2>&1 \ || cp $(bindir)/$(GPC_INSTALL_NAME)$(exeext) $(bindir)/$(PC_INSTALL_NAME)$(exeext) ; \ rm -f $(bindir)/$(EPC_INSTALL_NAME)$(exeext); \ $(HARDLINK) $(bindir)/$(GPC_INSTALL_NAME)$(exeext) $(bindir)/$(EPC_INSTALL_NAME)$(exeext) \ > /dev/null 2>&1 \ || cp $(bindir)/$(GPC_INSTALL_NAME)$(exeext) $(bindir)/$(EPC_INSTALL_NAME)$(exeext) ; \ rm -f $(bindir)/$(BPC_INSTALL_NAME)$(exeext); \ $(HARDLINK) $(bindir)/$(GPC_INSTALL_NAME)$(exeext) $(bindir)/$(BPC_INSTALL_NAME)$(exeext) \ > /dev/null 2>&1 \ || cp $(bindir)/$(GPC_INSTALL_NAME)$(exeext) $(bindir)/$(BPC_INSTALL_NAME)$(exeext) ; \ fi ; \ fi
pascal.install-info: pascal.info -rm -f $(infodir)/gpc.info* ; if [ -f p/doc/gpc.info ]; then \ cd p/doc; \ else \ cd $(srcdir)/p/doc; \ fi; \ for f in gpc.info*; do \ ../../$(INSTALL_DATA) $$f $(infodir); \ done -chmod a-x $(infodir)/gpc.info*
pascal.install-man: $(srcdir)/p/gpc.1 -if [ -f gpc1$(exeext) ] ; then \ if [ -f gpc-cross$(exeext) ] ; then \ rm -f $(mandir)/$(GPC_CROSS_NAME)$(manext); \ $(INSTALL_DATA) $(srcdir)/p/gpc.1 $(mandir)/$(GPC_CROSS_NAME)$(manext); \ chmod a-x $(mandir)/$(GPC_CROSS_NAME)$(manext); \ for f in $(PC_CROSS_NAME) $(EPC_CROSS_NAME) $(BPC_CROSS_NAME); do \ rm -f $(mandir)/$$f$(manext); \ ln -s $(GPC_CROSS_NAME)$(manext) $(mandir)/$$f$(manext); \ done; \ else \ rm -f $(mandir)/$(GPC_INSTALL_NAME)$(manext); \ $(INSTALL_DATA) $(srcdir)/p/gpc.1 $(mandir)/$(GPC_INSTALL_NAME)$(manext); \ chmod a-x $(mandir)/$(GPC_INSTALL_NAME)$(manext); \ for f in $(PC_INSTALL_NAME) $(EPC_INSTALL_NAME) $(BPC_INSTALL_NAME); do \ rm -f $(mandir)/$$f$(manext); \ ln -s $(GPC_INSTALL_NAME)$(manext) $(mandir)/$$f$(manext); \ done; \ fi; \ else true; fi
pascal.install-dir: -for directory in $(bindir) $(libsubdir) $(unitsubdir) $(demodir) $(infodir) $(mandir); do \ if [ -d $$directory ]; then \ true; \ else \ mkdir -p $$directory; \ fi; \ done
# Install gpc1 et.al. # Do *not* overwrite files if they exist. pascal.install-compiler: pascal for file in gpc1$(exeext); do \ if [ -f $$file ] ; then \ rm -f $(libsubdir)/$$file; \ $(INSTALL_PROGRAM) $$file $(libsubdir)/$$file; \ else true; \ fi; \ done for file in $(EXTRA_PASSES) $(EXTRA_PROGRAMS) $(USE_COLLECT2) ..; do \ if [ x"$$file" != x.. ]; then \ if ! [ -f $(libsubdir)/$$file ]; then \ $(INSTALL_PROGRAM) $$file $(libsubdir)/$$file; else true; fi; \ else true; fi; \ done for file in $(EXTRA_PARTS) ..; do \ if [ x"$$file" != x.. ]; then \ if ! [ -f $(libsubdir)/$$file ]; then \ $(INSTALL_DATA) $$file $(libsubdir); else true; fi; \ else true; fi; \ done # Don't mess with specs if it doesn't exist yet. -if [ -f specs ] ; then \ if ! [ -f $(libsubdir)/specs ]; then \ $(INSTALL_DATA) specs $(libsubdir)/specs; fi; \ fi # Install libgcc.a FIXME: doesn't handle multilib (multiple libgcc.a) -if [ -f libgcc.a ] ; then \ if ! [ -f $(libsubdir)/libgcc.a ]; then \ $(INSTALL_DATA) libgcc.a $(libsubdir)/libgcc.a; \ if $(RANLIB_TEST_FOR_TARGET) ; then \ (cd $(libsubdir); $(RANLIB_FOR_TARGET) libgcc.a); else true; fi; \ chmod a-x $(libsubdir)/libgcc.a; fi; \ else true; fi
# This target will install GPC into an existing GCC installation, # without overwriting existing files. # The semicolon is to prevent the install.sh -> install default rule # from doing anything. Having it run true helps avoid problems and # noise from versions of make which don't like to have null commands. pascal.install: pascal.install-dir pascal.install-compiler pascal.install-common \ pascal.install-normal pascal.install-info pascal.install-man ; @true
pascal.uninstall: -rm -rf $(bindir)/$(GPC_INSTALL_NAME)$(exeext) -rm -rf $(bindir)/$(GPC_CROSS_NAME)$(exeext) -rm -rf $(bindir)/$(PC_INSTALL_NAME)$(exeext) -rm -rf $(bindir)/$(PC_CROSS_NAME)$(exeext) -rm -rf $(bindir)/$(EPC_INSTALL_NAME)$(exeext) -rm -rf $(bindir)/$(EPC_CROSS_NAME)$(exeext) -rm -rf $(bindir)/$(BPC_INSTALL_NAME)$(exeext) -rm -rf $(bindir)/$(BPC_CROSS_NAME)$(exeext) -rm -rf $(mandir)/$(GPC_INSTALL_NAME)$(manext) -rm -rf $(mandir)/$(GPC_CROSS_NAME)$(manext)
pascal.bindist: pascal tmp_base=`pwd`/tmp ; \ tmp_prefix=$${tmp_base}/$(prefix) ; \ if [ -d "$${tmp_prefix}" ]; \ then true; \ else mkdir -p "$${tmp_prefix}"; \ fi; \ $(MAKE) pascal.install prefix=$${tmp_prefix} exeext=$(exeext) HARDLINK=$(HARDLINK) && \ cd $${tmp_base} && tar cvzf ../gpc-$(gpc_version).$(target).tar.gz * && \ rm -rf $${tmp_base} # Clean hooks: # A lot of the ancillary files are deleted by the main makefile. # We just have to delete files specific to us.
pascal.mostlyclean: -rm -f p/*$(objext) -cd p/rts; $(MAKE) -f ../../$(srcdir)/p/rts/Makefile.in mostlyclean pascal.clean: -rm -f xgpc -cd p/rts; $(MAKE) -f ../../$(srcdir)/p/rts/Makefile.in clean -if [ -d p/test ]; then cd p/test; $(MAKE) clean; fi pascal.distclean: -cd p/rts; $(MAKE) -f ../../$(srcdir)/p/rts/Makefile.in distclean -if [ -d p/test ]; then cd p/test; $(MAKE) clean; fi -rm -f p/Makefile p/gpc-config.h p/site.exp p/site.bak units/crtc.h -rm -f p/config.cache p/config.log p/config.status -rm -f p/testsuite/gpc.log p/testsuite/gpc.sum -rm -f p/parse.output -rm -f p/gpc_date p/gpc_time -rm -f gcc-version.h # like gcc's extraclean, which does clean p/ for us, but not p/rts. pascal.extraclean: -if [ -d p/test ]; then cd p/test; $(MAKE) clean; fi -if [ -d p/test/knownbugs ]; then -cd p/test/knownbugs; $(MAKE) -f ../Makefile clean; fi -rm -f p/*/=* p/*/"#"* p/*/*~* -rm -f p/*/patch* p/*/*.orig p/*/*.rej -rm -f p/*/*.dvi p/*/*.oaux p/*/*.d p/*/*.[zZ] p/*/*.gz -rm -f p/*/*.tar p/*/*.xtar p/*/*.tar.* p/*/*.xtar.* -rm -f p/*/*lose p/*/*.s p/*/*.s[0-9] p/*/*.i pascal.maintainer-clean: -cd p/rts; $(MAKE) -f ../../$(srcdir)/p/rts/Makefile.in maintainer-clean -if [ -d p/test ]; then cd p/test; $(MAKE) clean; fi -rm -f p/doc/gpc.info* p/gpc.*aux p/TAGS p/INSTALL p/NEWS -rm -f p/parse.c p/parse.h # Stage hooks: # The main makefile has already created stage?/p.
GPCSTAGESTUFF = p/*$(objext) p/stamp-gbe p/stamp-gpc1
RTSSTAGESTUFF = p/rts/*$(objext) p/rts/*$(interfaceext) p/rts/config.cache p/rts/config.log \ p/rts/config.status p/rts/Makefile p/rts/rts-config.h
UNITSSTAGESTUFF = p/units/*$(objext) p/units/*$(interfaceext)
pascal.stage1: -if [ -d stage1/p/rts ] ; then true ; else mkdir stage1/p/rts ; fi -if [ -d stage1/p/units ] ; then true ; else mkdir stage1/p/units ; fi -mv $(GPCSTAGESTUFF) stage1/p -mv $(RTSSTAGESTUFF) stage1/p/rts -mv $(UNITSSTAGESTUFF) stage1/p/units pascal.stage2: -if [ -d stage2/p/rts ] ; then true ; else mkdir stage2/p/rts ; fi -if [ -d stage2/p/units ] ; then true ; else mkdir stage2/p/units ; fi -mv $(GPCSTAGESTUFF) stage2/p -mv $(RTSSTAGESTUFF) stage2/p/rts -mv $(UNITSSTAGESTUFF) stage2/p/units pascal.stage3: -if [ -d stage3/p/rts ] ; then true ; else mkdir stage3/p/rts ; fi -if [ -d stage3/p/units ] ; then true ; else mkdir stage3/p/units ; fi -mv $(GPCSTAGESTUFF) stage3/p -mv $(RTSSTAGESTUFF) stage3/p/rts -mv $(UNITSSTAGESTUFF) stage3/p/units pascal.stage4: -if [ -d stage4/p/rts ] ; then true ; else mkdir stage4/p/rts ; fi -if [ -d stage4/p/units ] ; then true ; else mkdir stage4/p/units ; fi -mv $(GPCSTAGESTUFF) stage4/p -mv $(RTSSTAGESTUFF) stage4/p/rts -mv $(UNITSSTAGESTUFF) stage4/p/units # Maintenance hooks:
# This target creates the files that can be rebuilt, but go in the # distribution anyway. It then copies the files to the distdir directory. pascal.distdir: mkdir tmp/p cd p ; $(MAKE) $(FLAGS_TO_PASS) $(GPC_FLAGS_TO_PASS) parse.c hash.h cd p/doc ; $(MAKE) $(FLAGS_TO_PASS) $(GPC_FLAGS_TO_PASS) info cd p; \ for file in *[0-9a-zA-Z+]; do \ ln $$file ../tmp/p >/dev/null 2>&1 || p $$file ../tmp/p; \ done