# Make-maintainer.in subsidiary -*- makefile -*- build support for GNU M2 tools. # Copyright (C) 2022-2024 Free Software Foundation, Inc. #This file is part of GCC. #GCC 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 3, or (at your option) #any later version. #GCC 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 GCC; see the file COPYING3. If not see #. # QUIAT=@ XGCC = ./xgcc -B./ GM2_2 = ./gm2 -B./m2/m2obj2 -g -fm2-g # m2/ppg$(exeext) is the recursive descent parser generator. PPG-INTERFACE-C = libc.c mcrts.c Selective.c termios.c \ SysExceptions.c wrapc.c \ SYSTEM.c errno.c PPG-INTERFACE-CC = UnixArgs.cc ldtoa.cc dtoa.cc # Implementation modules found in the gm2-compiler directory. PPG-MODS = SymbolKey.mod NameKey.mod Lists.mod bnflex.mod Output.mod PPG-DEFS = SymbolKey.def NameKey.def Lists.def bnflex.def Output.def # Core library definition modules used by ppg found in the gm2-libs directory. PPG-LIB-DEFS = Args.def Assertion.def ASCII.def Debug.def \ DynamicStrings.def FIO.def Indexing.def IO.def \ NumberIO.def PushBackInput.def \ M2Dependent.def \ M2EXCEPTION.def M2RTS.def \ RTExceptions.def \ StdIO.def SFIO.def StrIO.def StrLib.def \ Storage.def StrCase.def SysStorage.def # Core library implementation modules used by ppg found in the gm2-libs directory. PPG-LIB-MODS = ASCII.mod \ Args.mod \ Assertion.mod \ Debug.mod \ DynamicStrings.mod \ FIO.mod \ IO.mod \ Indexing.mod \ M2Dependent.mod \ M2EXCEPTION.mod \ M2RTS.mod \ NumberIO.mod \ PushBackInput.mod \ RTExceptions.mod \ SFIO.mod \ StdIO.mod \ Storage.mod \ StrCase.mod \ StrIO.mod \ StrLib.mod \ SysStorage.mod # Program module ppg.mod from which pge.mod is created. ppg.mod is # where changes should be made and then you should run pge-maintainer # to recreate the C++ version of pge. PPG-SRC = ppg.mod BUILD-PPG-O = $(PPG-INTERFACE-C:%.c=m2/gm2-ppg-boot/$(SRC_PREFIX)%.o) \ $(PPG-INTERFACE-CC:%.cc=m2/gm2-ppg-boot/$(SRC_PREFIX)%.o) \ $(PPG-MODS:%.mod=m2/gm2-ppg-boot/$(SRC_PREFIX)%.o) \ $(PPG-LIB-MODS:%.mod=m2/gm2-ppg-boot/$(SRC_PREFIX)%.o) \ $(PPG-SRC:%.mod=m2/gm2-ppg-boot/$(SRC_PREFIX)%.o) MCC_ARGS= --olang=c++ \ --quiet \ --h-file-prefix=$(SRC_PREFIX) \ -I$(srcdir)/m2/gm2-libs \ -I$(srcdir)/m2/gm2-compiler \ -I$(srcdir)/m2/gm2-libiberty \ -I$(srcdir)/m2/gm2-gcc MCC=m2/boot-bin/mc$(exeext) $(MCC_ARGS) BUILD-PPG-LIBS-H = $(PPG-LIB-DEFS:%.def=m2/gm2-ppg-boot/$(SRC_PREFIX)%.h) BUILD-PPG-H = m2/boot-bin/mc$(exeext) $(BUILD-PPG-LIBS-H) BUILD-BOOT-PPG-H: $(BUILD-BOOT-H) \ m2/gm2-ppg-boot/$(SRC_PREFIX)M2RTS.h \ m2/gm2-ppg-boot/$(SRC_PREFIX)M2Dependent.h \ $(PPG-DEFS:%.def=m2/gm2-ppg-boot/$(SRC_PREFIX)%.h) m2/gm2-ppg-boot/$(SRC_PREFIX)%.h: $(srcdir)/m2/gm2-libs/%.def $(MCDEPS) -test -d m2/gm2-ppg-boot || $(mkinstalldirs) m2/gm2-ppg-boot $(MCC) -o=$@ $(srcdir)/m2/gm2-libs/$*.def m2/gm2-ppg-boot/$(SRC_PREFIX)%.o: m2/mc-boot-ch/$(SRC_PREFIX)%.c m2/gm2-libs/gm2-libs-host.h $(BUILD-BOOT-PPG-H) -test -d m2/gm2-ppg-boot || $(mkinstalldirs) m2/gm2-ppg-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs $(INCLUDES) -g -c $< -o $@ m2/gm2-ppg-boot/$(SRC_PREFIX)%.o: m2/mc-boot-ch/$(SRC_PREFIX)%.cc m2/gm2-libs/gm2-libs-host.h $(BUILD-BOOT-PPG-H) -test -d m2/gm2-ppg-boot || $(mkinstalldirs) m2/gm2-ppg-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs $(INCLUDES) -g -c $< -o $@ m2/gm2-ppg-boot/$(SRC_PREFIX)M2RTS.o: $(srcdir)/m2/gm2-libs/M2RTS.mod $(MCDEPS) $(BUILD-BOOT-PPG-H) -test -d m2/gm2-ppg-boot || $(mkinstalldirs) m2/gm2-ppg-boot $(MCC) --suppress-noreturn -o=m2/gm2-ppg-boot/$(SRC_PREFIX)M2RTS.cc $(srcdir)/m2/gm2-libs/M2RTS.mod $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) \ -Im2/gm2-ppg-boot -I$(srcdir)/m2/mc-boot -Im2/gm2-libs-boot \ -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) -g -c m2/gm2-ppg-boot/$(SRC_PREFIX)M2RTS.cc -o $@ m2/gm2-ppg-boot/$(SRC_PREFIX)%.o: $(srcdir)/m2/gm2-libs/%.mod $(MCDEPS) $(BUILD-BOOT-PPG-H) -test -d m2/gm2-ppg-boot || $(mkinstalldirs) m2/gm2-ppg-boot $(MCC) -o=m2/gm2-ppg-boot/$(SRC_PREFIX)$*.cc $(srcdir)/m2/gm2-libs/$*.mod $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) \ -Im2/gm2-ppg-boot -I$(srcdir)/m2/mc-boot -Im2/gm2-libs-boot \ -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) -g -c m2/gm2-ppg-boot/$(SRC_PREFIX)$*.cc -o $@ m2/gm2-ppg-boot/$(SRC_PREFIX)%.o: $(srcdir)/m2/gm2-compiler/%.mod $(MCDEPS) $(BUILD-BOOT-PPG-H) -test -d m2/gm2-ppg-boot || $(mkinstalldirs) m2/gm2-ppg-boot $(MCC) -o=m2/gm2-ppg-boot/$(SRC_PREFIX)$*.cc $(srcdir)/m2/gm2-compiler/$*.mod $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) \ -Im2/mc-boot -Im2/gm2-compiler-boot -Im2/gm2-libs-boot \ -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) -g -c m2/gm2-ppg-boot/$(SRC_PREFIX)$*.cc -o $@ m2/ppg$(exeext): m2/boot-bin/mc $(BUILD-PPG-O) $(BUILD-MC-INTERFACE-O) m2/gm2-ppg-boot/main.o \ m2/gm2-libs-boot/RTcodummy.o m2/mc-boot-ch/$(SRC_PREFIX)abort.o -test -d m2 || $(mkinstalldirs) m2 +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $(BUILD-PPG-O) m2/gm2-ppg-boot/main.o \ m2/gm2-libs-boot/RTcodummy.o m2/mc-boot-ch/$(SRC_PREFIX)abort.o -lm m2/gm2-ppg-boot/main.o: $(M2LINK) $(srcdir)/m2/init/mcinit -test -d m2/gm2-ppg-boot || $(mkinstalldirs) m2/gm2-ppg-boot unset CC ; $(M2LINK) -s --langc++ --exit --name mainppginit.cc $(srcdir)/m2/init/ppginit mv mainppginit.cc m2/gm2-ppg-boot/main.cc $(CXX) $(INCLUDES) -g -c -o $@ m2/gm2-ppg-boot/main.cc m2/gm2-auto: -test -d $@ || $(mkinstalldirs) $@ c-family/m2pp.o : $(srcdir)/m2/m2pp.cc $(GCC_HEADER_DEPENDENCIES_FOR_M2) $(COMPILER) -c -g $(ALL_COMPILERFLAGS) \ $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) # m2/pg$(exext) is the 2nd generation parser generator built from ebnf # without error recovery PG-SRC = pg.mod PGE-DEF = ASCII.def \ Args.def \ Assertion.def \ Break.def \ COROUTINES.def \ CmdArgs.def \ Debug.def \ DynamicStrings.def \ Environment.def \ FIO.def \ FormatStrings.def \ FpuIO.def \ IO.def \ M2Dependent.def \ M2EXCEPTION.def \ M2RTS.def \ MemUtils.def \ NumberIO.def \ PushBackInput.def \ RTExceptions.def \ RTco.def \ RTentity.def \ RTint.def \ SArgs.def \ SFIO.def \ SYSTEM.def \ Selective.def \ StdIO.def \ Storage.def \ StrCase.def \ StrIO.def \ StrLib.def \ StringConvert.def \ SysExceptions.def \ SysStorage.def \ TimeString.def \ UnixArgs.def \ dtoa.def \ errno.def \ ldtoa.def \ libc.def \ libm.def \ termios.def \ wrapc.def \ PGE-DEPS = Gabort.cc \ GArgs.cc \ GArgs.h \ GASCII.cc \ GASCII.h \ GAssertion.cc \ GAssertion.h \ Gbnflex.cc \ Gbnflex.h \ GBreak.h \ GBuiltins.cc \ Gcbuiltin.cc \ GCmdArgs.h \ GDebug.cc \ GDebug.h \ Gdtoa.cc \ Gdtoa.h \ GDynamicStrings.cc \ GDynamicStrings.h \ GEnvironment.h \ Gerrno.cc \ Gerrno.h \ GFIO.cc \ GFIO.h \ GFormatStrings.h \ GFpuIO.h \ GIndexing.cc \ GIndexing.h \ GIO.cc \ GIO.h \ Gldtoa.cc \ Gldtoa.h \ Glibc.cc \ Glibc.h \ Glibm.cc \ Glibm.h \ GLists.cc \ GLists.h \ GM2Dependent.cc \ GM2Dependent.h \ GM2EXCEPTION.cc \ GM2EXCEPTION.h \ GM2RTS.cc \ GM2RTS.h \ Gmcrts.cc \ Gmcrts.h \ GNameKey.cc \ GNameKey.h \ Gnetwork.h \ GNumberIO.cc \ GNumberIO.h \ GOutput.cc \ GOutput.h \ Gpge.cc \ GPushBackInput.cc \ GPushBackInput.h \ GRTco.cc \ GRTExceptions.cc \ GRTExceptions.h \ GSArgs.h \ GScan.h \ GSelective.cc \ GSEnvironment.h \ GSFIO.cc \ GSFIO.h \ GStdIO.cc \ GStdIO.h \ GStorage.cc \ GStorage.h \ GStrCase.cc \ GStrCase.h \ GStringConvert.h \ GStrIO.cc \ GStrIO.h \ GStrLib.cc \ GStrLib.h \ GSymbolKey.cc \ GSymbolKey.h \ GSysExceptions.cc \ GSysExceptions.h \ GSysStorage.cc \ GSysStorage.h \ GSYSTEM.cc \ GSYSTEM.h \ Gtermios.cc \ Gtermios.h \ GTimeString.h \ GUnixArgs.cc \ GUnixArgs.h \ Gwrapc.cc \ Gwrapc.h BUILD-PG-O = $(PPG-INTERFACE-C:%.c=m2/gm2-pg-boot/$(SRC_PREFIX)%.o) \ $(PPG-INTERFACE-CC:%.cc=m2/gm2-pg-boot/$(SRC_PREFIX)%.o) \ $(PPG-MODS:%.mod=m2/gm2-pg-boot/$(SRC_PREFIX)%.o) \ $(PPG-LIB-MODS:%.mod=m2/gm2-pg-boot/$(SRC_PREFIX)%.o) \ $(PG-SRC:%.mod=m2/gm2-pg-boot/$(SRC_PREFIX)%.o) BUILD-BOOT-PG-H: $(BUILD-BOOT-H) \ m2/gm2-pg-boot/$(SRC_PREFIX)M2RTS.h \ m2/gm2-pg-boot/$(SRC_PREFIX)M2Dependent.h m2/gm2-pg-boot/$(SRC_PREFIX)%.h: $(srcdir)/m2/gm2-libs/%.def $(MCDEPS) -test -d m2/gm2-pg-boot || $(mkinstalldirs) m2/gm2-pg-boot $(MCC) -o=$@ $(srcdir)/m2/gm2-libs/$*.def m2/gm2-pg-boot/$(SRC_PREFIX)%.o: m2/mc-boot-ch/$(SRC_PREFIX)%.c m2/gm2-libs/gm2-libs-host.h $(BUILD-BOOT-PG-H) -test -d m2/gm2-pg-boot || $(mkinstalldirs) m2/gm2-pg-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs $(INCLUDES) -g -c $< -o $@ m2/gm2-pg-boot/$(SRC_PREFIX)%.o: m2/mc-boot-ch/$(SRC_PREFIX)%.cc m2/gm2-libs/gm2-libs-host.h $(BUILD-BOOT-PG-H) -test -d m2/gm2-pg-boot || $(mkinstalldirs) m2/gm2-pg-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs $(INCLUDES) -g -c $< -o $@ m2/gm2-pg-boot/$(SRC_PREFIX)M2RTS.o: $(srcdir)/m2/gm2-libs/M2RTS.mod $(MCDEPS) $(BUILD-BOOT-PG-H) -test -d m2/gm2-pg-boot || $(mkinstalldirs) m2/gm2-pg-boot $(MCC) --suppress-noreturn -o=m2/gm2-pg-boot/$(SRC_PREFIX)M2RTS.c $(srcdir)/m2/gm2-libs/M2RTS.mod $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -Im2/gm2-pg-boot -I$(srcdir)/m2/mc-boot \ -I$(srcdir)/m2/mc-boot-ch \ -Im2/gm2-libs-boot $(INCLUDES) \ -g -c m2/gm2-pg-boot/$(SRC_PREFIX)M2RTS.c -o $@ m2/gm2-pg-boot/$(SRC_PREFIX)%.o: $(srcdir)/m2/gm2-libs/%.mod $(MCDEPS) $(BUILD-BOOT-PG-H) -test -d m2/gm2-pg-boot || $(mkinstalldirs) m2/gm2-pg-boot $(MCC) -o=m2/gm2-pg-boot/$(SRC_PREFIX)$*.c $(srcdir)/m2/gm2-libs/$*.mod $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -Im2/gm2-pg-boot -I$(srcdir)/m2/mc-boot \ -I$(srcdir)/m2/mc-boot-ch \ -Im2/gm2-libs-boot $(INCLUDES) \ -g -c m2/gm2-pg-boot/$(SRC_PREFIX)$*.c -o $@ m2/gm2-pg-boot/$(SRC_PREFIX)%.o: $(srcdir)/m2/gm2-compiler/%.mod $(MCDEPS) $(BUILD-BOOT-PG-H) -test -d m2/gm2-pg-boot || $(mkinstalldirs) m2/gm2-pg-boot $(MCC) -o=m2/gm2-pg-boot/$(SRC_PREFIX)$*.c $(srcdir)/m2/gm2-compiler/$*.mod $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot -Im2/gm2-compiler-boot -Im2/gm2-libs-boot \ -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) -g -c m2/gm2-pg-boot/$(SRC_PREFIX)$*.c -o $@ m2/gm2-pg-boot/$(SRC_PREFIX)pg.o: m2/gm2-auto/pg.mod $(MCDEPS) $(BUILD-BOOT-PG-H) -test -d m2/gm2-pg-boot || $(mkinstalldirs) m2/gm2-pg-boot $(MCC) -o=m2/gm2-pg-boot/$(SRC_PREFIX)pg.c m2/gm2-auto/pg.mod $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot -Im2/gm2-compiler-boot -Im2/gm2-libs-boot \ -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) -g -c m2/gm2-pg-boot/$(SRC_PREFIX)pg.c -o $@ m2/pg$(exeext): m2/boot-bin/mc \ $(BUILD-PG-O) $(GM2-PPG-MODS:%.mod=m2/gm2-pg-boot/%.o) \ $(BUILD-MC-INTERFACE-O) m2/gm2-pg-boot/main.o m2/gm2-libs-boot/RTcodummy.o \ m2/mc-boot-ch/$(SRC_PREFIX)abort.o -test -d m2 || $(mkinstalldirs) m2 +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $(BUILD-PG-O) \ m2/gm2-pg-boot/main.o m2/gm2-libs-boot/RTcodummy.o \ m2/mc-boot-ch/$(SRC_PREFIX)abort.o -lm m2/gm2-auto/pginit: -test -d m2/gm2-auto || $(mkinstalldirs) m2/gm2-auto sed -e 's/ppg/pg/' < $(srcdir)/m2/init/ppginit > $@ m2/gm2-pg-boot/main.o: m2/gm2-auto/pginit $(M2LINK) -test -d m2/gm2-pg-boot || $(mkinstalldirs) m2/gm2-pg-boot unset CC ; $(M2LINK) -s --langc++ --exit --name mainpginit.cc m2/gm2-auto/pginit mv mainpginit.cc m2/gm2-pg-boot/main.cc $(CXX) $(INCLUDES) -g -c -o $@ m2/gm2-pg-boot/main.cc m2/pg-e$(exeext): m2/pg$(exeext) -test -d m2 || $(mkinstalldirs) m2 $(CP) m2/pg$(exeext) m2/pg-e$(exeext) $(SHELL) $(srcdir)/m2/tools-src/buildpg $(srcdir)/m2/gm2-compiler/ppg.mod pg -e > m2/gm2-auto/t.bnf ./m2/pg-e$(exeext) -e -l m2/gm2-auto/t.bnf | sed -e 's/t\.bnf/pg\.bnf/' > m2/gm2-auto/t.mod $(QUIAT)if ! diff m2/gm2-auto/t.mod m2/gm2-auto/pg.mod > /dev/null ; then \ echo "pg failed during self build" ; \ exit 1 ; \ fi $(RM) m2/gm2-auto/t.bnf m2/gm2-auto/t.mod m2/gm2-auto/pg.mod: m2/ppg$(exeext) -test -d m2/gm2-auto || $(mkinstalldirs) m2/gm2-auto $(SHELL) $(srcdir)/m2/tools-src/buildpg $(srcdir)/m2/gm2-compiler/ppg.mod pg -e > m2/gm2-auto/pg.bnf ./m2/ppg$(exeext) -e -l m2/gm2-auto/pg.bnf > m2/gm2-auto/pg.mod # pge is the recursive descent parser with first/followset error recovery. PGE-SRC = pge.mod BUILD-PGE-O = $(PPG-INTERFACE-C:%.c=m2/gm2-pge-boot/$(SRC_PREFIX)%.o) \ $(PPG-INTERFACE-CC:%.cc=m2/gm2-pge-boot/$(SRC_PREFIX)%.o) \ $(PPG-MODS:%.mod=m2/gm2-pge-boot/$(SRC_PREFIX)%.o) \ $(PPG-LIB-MODS:%.mod=m2/gm2-pge-boot/$(SRC_PREFIX)%.o) \ $(PGE-SRC:%.mod=m2/gm2-pge-boot/$(SRC_PREFIX)%.o) BUILD-BOOT-PGE-H: $(BUILD-BOOT-H) $(PGE-DEF:%.def=m2/gm2-pge-boot/$(SRC_PREFIX)%.h) \ m2/gm2-pge-boot/GM2RTS.h m2/gm2-pge-boot/GM2Dependent.h m2/gm2-auto/pge.mod: m2/pg$(exeext) -test -d m2/gm2-auto || $(mkinstalldirs) m2/gm2-auto $(SHELL) $(srcdir)/m2/tools-src/buildpg $(srcdir)/m2/gm2-compiler/ppg.mod pge > m2/gm2-auto/pge.bnf ./m2/pg$(exeext) -l m2/gm2-auto/pge.bnf -o m2/gm2-auto/pge.mod m2/gm2-pge-boot/$(SRC_PREFIX)%.h: $(srcdir)/m2/gm2-libs/%.def $(MCDEPS) -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(MCC) -o=$@ $(srcdir)/m2/gm2-libs/$*.def m2/gm2-pge-boot/$(SRC_PREFIX)libc.o: $(srcdir)/m2/mc-boot-ch/Glibc.c m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) $(INCLUDES) -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs -g -c $< -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)mcrts.o: $(srcdir)/m2/mc-boot-ch/Gmcrts.c m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) $(INCLUDES) -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs -g -c $< -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)UnixArgs.o: $(srcdir)/m2/mc-boot-ch/GUnixArgs.cc -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) -g -c $< -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)Selective.o: $(srcdir)/m2/mc-boot-ch/GSelective.c m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) -Im2/gm2-libs -g -c $< -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)termios.o: $(srcdir)/m2/mc-boot-ch/Gtermios.cc m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs $(INCLUDES) -g -c $< -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)SysExceptions.o: $(srcdir)/m2/mc-boot-ch/GSysExceptions.c m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs $(INCLUDES) -g -c $< -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)ldtoa.o: $(srcdir)/m2/mc-boot-ch/Gldtoa.cc m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs $(INCLUDES) -g -c $< -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)dtoa.o: $(srcdir)/m2/mc-boot-ch/Gdtoa.cc m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs $(INCLUDES) -g -c $< -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)wrapc.o: $(srcdir)/m2/mc-boot-ch/Gwrapc.c m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs $(INCLUDES) -g -c $< -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)SYSTEM.o: $(srcdir)/m2/mc-boot-ch/GSYSTEM.c $(BUILD-BOOT-PGE-H) -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) -g -c $< -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)errno.o: $(srcdir)/m2/mc-boot-ch/Gerrno.cc -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) -g -c $< -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)M2RTS.o: $(srcdir)/m2/gm2-libs/M2RTS.mod $(MCDEPS) $(BUILD-BOOT-PGE-H) -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(MCC) --suppress-noreturn -o=m2/gm2-pge-boot/$(SRC_PREFIX)M2RTS.cc $(srcdir)/m2/gm2-libs/M2RTS.mod $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/gm2-pge-boot -I$(srcdir)/m2/mc-boot \ -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs-boot \ $(INCLUDES) -g -c m2/gm2-pge-boot/$(SRC_PREFIX)M2RTS.cc -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)%.o: $(srcdir)/m2/gm2-libs/%.mod $(MCDEPS) $(BUILD-BOOT-PGE-H) -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(MCC) -o=m2/gm2-pge-boot/$(SRC_PREFIX)$*.cc $(srcdir)/m2/gm2-libs/$*.mod $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/gm2-pge-boot -I$(srcdir)/m2/mc-boot \ -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs-boot \ $(INCLUDES) -g -c m2/gm2-pge-boot/$(SRC_PREFIX)$*.cc -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)%.o: $(srcdir)/m2/gm2-compiler/%.mod $(MCDEPS) $(BUILD-BOOT-PGE-H) -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(MCC) -o=m2/gm2-pge-boot/$(SRC_PREFIX)$*.cc $(srcdir)/m2/gm2-compiler/$*.mod $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot -Im2/gm2-compiler-boot \ -Im2/gm2-libs-boot -Im2/gm2-pge-boot \ -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) -g -c m2/gm2-pge-boot/$(SRC_PREFIX)$*.cc -o $@ m2/gm2-pge-boot/$(SRC_PREFIX)pge.o: m2/gm2-auto/pge.mod $(MCDEPS) $(BUILD-BOOT-PGE-H) -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(MCC) -o=m2/gm2-pge-boot/$(SRC_PREFIX)pge.cc m2/gm2-auto/pge.mod $(CXX) -I. -I$(srcdir)/../include -I$(srcdir) \ -I$(srcdir)/m2/mc-boot -Im2/gm2-compiler-boot -Im2/gm2-libs-boot \ -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) -g -c m2/gm2-pge-boot/$(SRC_PREFIX)pge.cc -o $@ m2/pge$(exeext): m2/boot-bin/mc \ $(BUILD-PGE-O) $(GM2-PPG-MODS:%.mod=m2/gm2-pge-boot/%.o) \ $(BUILD-MC-INTERFACE-O) m2/gm2-pge-boot/main.o m2/gm2-libs-boot/RTcodummy.o \ m2/mc-boot-ch/$(SRC_PREFIX)abort.o -test -d m2 || $(mkinstalldirs) m2 +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $(BUILD-PGE-O) \ m2/gm2-pge-boot/main.o m2/gm2-libs-boot/RTcodummy.o \ m2/mc-boot-ch/$(SRC_PREFIX)abort.o -lm $(SHELL) $(srcdir)/m2/tools-src/buildpg $(srcdir)/m2/gm2-compiler/ppg.mod t > m2/gm2-auto/t.bnf ./m2/pge$(exeext) m2/gm2-auto/t.bnf -o m2/gm2-auto/t1.mod ./m2/pg$(exeext) m2/gm2-auto/t.bnf -o m2/gm2-auto/t2.mod $(QUIAT)if ! diff m2/gm2-auto/t1.mod m2/gm2-auto/t2.mod > /dev/null ; then \ echo "failure: pg (with error recovery) failed" ; \ $(RM) m2/pge$(exeext) ; \ exit 1 ; \ fi $(RM) m2/gm2-auto/t.mod m2/gm2-auto/t1.mod m2/gm2-auto/t2.mod m2/gm2-auto/pgeinit: -test -d m2/gm2-auto || $(mkinstalldirs) m2/gm2-auto sed -e 's/ppg/pge/' < $(srcdir)/m2/init/ppginit > $@ m2/gm2-pge-boot/main.o: m2/gm2-auto/pgeinit $(M2LINK) -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot unset CC ; $(M2LINK) -s --langc++ --exit --name mainpgeinit.cc m2/gm2-auto/pgeinit mv mainpgeinit.cc m2/gm2-pge-boot/main.cc $(CXX) $(INCLUDES) -g -c -o $@ m2/gm2-pge-boot/main.cc $(objdir)/m2/gm2-ppg-boot: -test -d $@ || $(mkinstalldirs) $@ $(objdir)/m2/gm2-pg-boot: -test -d $@ || $(mkinstalldirs) $@ $(objdir)/m2/gm2-pge-boot: -test -d $@ || $(mkinstalldirs) $@ m2/gm2-auto/pg.o: m2/gm2-auto/pg.mod $(MCDEPS) -test -d m2/gm2-pge-boot || $(mkinstalldirs) m2/gm2-pge-boot $(MC) --quiet -o=m2/gm2-auto/pg.c m2/gm2-auto/pg.mod $(COMPILER) -c $(CFLAGS) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2 -Im2/gm2-libs-boot -Im2/gm2-compiler-boot -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) m2/gm2-auto/pg.c -o $@ m2/gm2-auto/pge.o: m2/gm2-auto/pge.mod $(MCDEPS) -test -d m2/gm2-auto || $(mkinstalldirs) m2/gm2-auto $(MC) --quiet -o=m2/gm2-auto/pge.c m2/gm2-auto/pge.mod $(COMPILER) -c $(CFLAGS) -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2 -Im2/gm2-libs-boot -Im2/gm2-compiler-boot -I$(srcdir)/m2/mc-boot-ch $(INCLUDES) m2/gm2-auto/pge.c -o $@ pge-help: force @echo "The pge maintainer commands are:" @echo " " @echo " make pge-maintainer" @echo " make pge-verify" @echo " make pge-push # copy pge C++ sources (app and libs) into srcdir/m2/pge-boot" @echo " make pge-libs-push # copy C++ libraries which pge uses into srcdir/m2/pge-boot" @echo " make pge-app-push # copy pge C++ application modules into srcdir/m2/pge-boot" @echo " make pge-clean" # pge-maintainer: $(PGE) pge-maintainer: pge-clean $(PGE) pge-verify pge-push # Copy the C++ sources for ppe.mod into $(srcdir)/pge-boot. pge-push: pge-libs-push pge-app-push pge-libs-push: force for i in ${PGE-DEPS} ; do \ if [ -f ${srcdir}/m2/gm2-libs-ch/$${i} ] ; then \ echo cp ${srcdir}/m2/gm2-libs-ch/$${i} ${srcdir}/m2/pge-boot ; \ cp ${srcdir}/m2/gm2-libs-ch/$${i} ${srcdir}/m2/pge-boot ; \ elif [ -f m2/gm2-pge-boot/$${i} ] ; then \ echo cp m2/gm2-pge-boot/$${i} ${srcdir}/m2/pge-boot ; \ cp m2/gm2-pge-boot/$${i} ${srcdir}/m2/pge-boot ; \ elif [ -f m2/gm2-compiler-boot/$${i} ] ; then \ echo cp m2/gm2-compiler-boot/$${i} ${srcdir}/m2/pge-boot ; \ cp m2/gm2-compiler-boot/$${i} ${srcdir}/m2/pge-boot ; \ elif [ -f m2/gm2-libs-boot/$${i} ] ; then \ echo cp m2/gm2-libs-boot/$${i} ${srcdir}/m2/pge-boot ; \ cp m2/gm2-libs-boot/$${i} ${srcdir}/m2/pge-boot ; \ else \ echo "not found $${i}" ; \ fi ; \ done pge-app-push: force cp m2/gm2-pge-boot/*.c* $(srcdir)/m2/pge-boot # Perform sanity checks. pge-verify: force # Remove pge build files. pge-clean: force $(RM) -f m2/gm2-pg-boot/* m2/gm2-ppg-boot/* m2/gm2-pge-boot/* # The rest of the Make-lang.in handles the bootstrap tool (maintained # mode) and also provides testing between the bootstrapped and the # non-bootstrapped compilers. # Rules for mc # The default rule used generate mc, eventually it will be replaced by mc-bootstrap. BOOTGM2=gm2 MCOPTIONS=-g -c -fsources -fsoft-check-all -fm2-g # -fauto-init MCLINK=-g # use -g -fmodules -c if you are debugging and wish to see missing modules. # This is only needed in maintainer mode by 'make mc-maintainer' when regenerating the C # version of mc. We need a working Modula-2 compiler to run mc-maintainer. # GM2SYS=${HOME}/opt/lib/gcc/x86_64-pc-linux-gnu/13.0.0/m2/m2pim GM2PATH=-I$(srcdir)/m2/mc \ -I$(srcdir)/m2 -Im2/gm2-auto \ -fm2-pathname=m2pim -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-ch \ -fm2-pathname=m2iso -I$(srcdir)/m2/gm2-libs-iso -fm2-pathname=- mc: mc-clean mc-devel mc-push: force cp -p m2/mc-boot-gen/*.cc $(srcdir)/m2/mc-boot/ cp -p m2/mc-boot-gen/*.h $(srcdir)/m2/mc-boot/ mc-clean: force m2/mc-obj $(RM) m2/mc-boot-gen/*.{cc,h} m2/boot-bin/* m2/mc-boot/* m2/mc-boot-ch/* mc-maintainer: mc-clean mc-autogen mc-push mc-clean mc-bootstrap mc-clean-libs: force $(RM) m2/gm2-libs-boot/* mc-continue: mc-clean mc-bootstrap mc-clean-libs mc-fresh $(BUILD-MC-INTERFACE-O) $(BUILD-LIBS-BOOT) $(BUILD-COMPILER-BOOT) mc-fresh: force $(RM) m2/gm2-auto/* m2/gm2-compiler-boot/* m2/gm2-libs-boot/* mc-help: force @echo "mc-maintainer produces a new mc C version in the source tree (takes longer)" @echo "mc-continue builds the mc from the C version and attempts to build gm2 libraries and gm2 compiler" @echo "mc-verify builds mc from Modula-2 sources and mc from C sources and run both on all sources diffing the output" @echo "mc builds mc from Modula-2 sources, quickly" @echo "m2/pge build the parser generator (needed by mc-maintainer)" m2/mc-obj: $(mkinstalldirs) $@ mc-verify: mc-clean mc-bootstrap mc mv mc m2/boot-bin/mc.m2 @echo "verifying the two generations of mc" for i in $(GM2-VERIFY-MODS) ; do \ echo -n "$$i " ; \ m2/boot-bin/mc $(MC_ARGS) -o=mcout.cc $(srcdir)/m2/gm2-compiler/$$i > /dev/null ; \ echo -n "[1]" ; \ m2/boot-bin/mc.m2 $(MC_ARGS) -o=mcout.m2 $(srcdir)/m2/gm2-compiler/$$i > /dev/null ; \ echo -n "[2]" ; \ $(RM) $$i.mc-diff ; \ if [ -f mcout.cc -a -f mcout.m2 ] ; then \ if diff mcout.cc mcout.m2 > /dev/null ; then \ echo "[passed]" ; \ else \ echo "[*** failed ***]" ; \ diff mcout.cc mcout.m2 > $$i.mc-diff ; \ fi \ fi ; \ $(RM) mcout.cc mcout.m2 ; \ done mc-stage2: force m2/boot-bin/mc$(exeext) -I$(srcdir)/m2/mc:$(srcdir)/m2/gm2-libs:$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=m2/mc-boot-gen/GmcStream.cc $(srcdir)/m2/mc/mcStream.mod m2/boot-bin/mc$(exeext) -I$(srcdir)/m2/mc:$(srcdir)/m2/gm2-libs:$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=m2/mc-boot-gen/Gdecl.cc $(srcdir)/m2/mc/decl.mod if diff m2/mc-boot-gen/Gdecl.cc $(srcdir)/m2/mc-boot/Gdecl.cc ; then echo "passed" ; else echo "failed" ; fi # mc-devel - compiles mc using gm2 mc-devel: m2/boot-bin/mc-devel$(exeext) m2/boot-bin/mc-devel$(exeext): m2/mc-obj/mcp1.mod \ m2/mc-obj/mcp2.mod \ m2/mc-obj/mcp3.mod \ m2/mc-obj/mcp4.mod \ m2/mc-obj/mcp5.mod \ mcflex.c \ m2/mc-boot-ch/Gabort.o \ m2/mc-boot-ch/Gm2rtsdummy.o $(RM) -rf mc-obj $(mkinstalldirs) mc-obj $(CC) -I$(srcdir)/m2/mc -c -g mcflex.c -o mc-obj/mcflex.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/decl.mod -o mc-obj/decl.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcStream.mod -o mc-obj/mcStream.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcPretty.mod -o mc-obj/mcPretty.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcStack.mod -o mc-obj/mcStack.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/varargs.mod -o mc-obj/varargs.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcMetaError.mod -o mc-obj/mcMetaError.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcOptions.mod -o mc-obj/mcOptions.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcComp.mod -o mc-obj/mcComp.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) m2/mc-obj/mcp1.mod -o mc-obj/mcp1.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) m2/mc-obj/mcp2.mod -o mc-obj/mcp2.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) m2/mc-obj/mcp3.mod -o mc-obj/mcp3.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) m2/mc-obj/mcp4.mod -o mc-obj/mcp4.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) m2/mc-obj/mcp5.mod -o mc-obj/mcp5.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/wlists.mod -o mc-obj/wlists.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/alists.mod -o mc-obj/alists.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/symbolKey.mod -o mc-obj/symbolKey.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcReserved.mod -o mc-obj/mcReserved.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/nameKey.mod -o mc-obj/nameKey.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcSearch.mod -o mc-obj/mcSearch.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcFileName.mod -o mc-obj/mcFileName.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcLexBuf.mod -o mc-obj/mcLexBuf.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcQuiet.mod -o mc-obj/mcQuiet.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcError.mod -o mc-obj/mcError.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcDebug.mod -o mc-obj/mcDebug.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcPrintf.mod -o mc-obj/mcPrintf.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/Indexing.mod -o mc-obj/Indexing.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcPreprocess.mod -o mc-obj/mcPreprocess.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/keyc.mod -o mc-obj/keyc.o $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) $(srcdir)/m2/mc/mcComment.mod -o mc-obj/mcComment.o $(BOOTGM2) $(MCLINK) -I. -fscaffold-static -fscaffold-main $(GM2PATH) \ -fuse-list=$(srcdir)/m2/init/mcinit $(srcdir)/m2/mc/top.mod -o mc \ m2/gm2-libs-boot/RTcodummy.o \ m2/gm2-libs-boot/dtoa.o m2/gm2-libs-boot/ldtoa.o mc-obj/*o \ m2/mc-boot-ch/Gabort.o m2/mc-boot-ch/Gm2rtsdummy.o m2/boot-bin/mc-opt$(exeext): m2/mc-obj/mcp1.mod \ m2/mc-obj/mcp2.mod \ m2/mc-obj/mcp3.mod \ m2/mc-obj/mcp4.mod \ m2/mc-obj/mcp5.mod \ mcflex.c -test -d m2/boot-bin || $(mkinstalldirs) m2/boot-bin g++ -I$(srcdir)/m2/mc -c -g mcflex.c $(BOOTGM2) -fsources -fm2-whole-program -g -I$(srcdir)/m2/mc -I$(objdir)/m2/mc-obj -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/mc $(srcdir)/m2/mc/top.mod m2/mc/decl.o: $(srcdir)/m2/mc/decl.mod -test -d m2/mc || $(mkinstalldirs) m2/mc $(BOOTGM2) $(MCOPTIONS) $(GM2PATH) -o $@ $(srcdir)/m2/mc/decl.mod m2/mc-obj/%.mod: $(srcdir)/m2/mc/%.bnf $(PGE) -test -d m2/mc-obj || $(mkinstalldirs) m2/mc-obj $(PGE) -l $< -o $@ gm2-bootstrap: mc-devel for i in $(srcdir)/m2/gm2-libs/*.def ; do echo $$i ; ./mc --gcc-config-system -I$(srcdir)/m2/gm2-libs $$i ; done for i in $(srcdir)/m2/gm2-compiler/*.def ; do echo $$i ; ./mc --gcc-config-system -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-gcc $$i ; done for i in $(srcdir)/m2/gm2-libs/*.mod ; do echo $$i ; ./mc --gcc-config-system -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-gcc $$i ; done $(objdir)/plugin: -test -d $@ || $(mkinstalldirs) $@ $(objdir)/m2/mc-boot: -test -d $@ || $(mkinstalldirs) $@ $(objdir)/m2/mc-boot-ch: -test -d $@ || $(mkinstalldirs) $@ $(objdir)/m2/mc-boot-gen: -test -d $@ || $(mkinstalldirs) $@ mc-autogen: mc-clean mc-devel \ $(BUILD-MC-BOOT-H) $(BUILD-MC-BOOT-CC) \ $(BUILD-MC-BOOT-AUTO-CC) for i in m2/mc-boot-gen/*.cc ; do \ echo $(CXX) -g -c -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch -Im2/mc-boot-gen/ $$i -o m2/mc-boot-gen/`basename $$i .cc`.o ; \ $(CXX) -g -c -I. -I$(srcdir)/../include -I$(srcdir) -I$(srcdir)/m2/mc-boot-ch -Im2/mc-boot-gen/ $$i -o m2/mc-boot-gen/`basename $$i .cc`.o ; done @echo -n "built " @cd m2/mc-boot-gen ; ls *.o | wc -l @echo -n "out of " @cd m2/mc-boot-gen ; ls *.cc | wc -l @echo "modules" # EXTENDED_OPAQUE = --extended-opaque EXTENDED_OPAQUE = MC_OPTIONS = $(MC_COPYRIGHT) --gcc-config-system --olang=c++ m2/mc-boot-gen/$(SRC_PREFIX)%.h: $(srcdir)/m2/mc/%.def -test -d m2/mc-boot-gen || $(mkinstalldirs) m2/mc-boot-gen ./mc $(MC_OPTIONS) -I$(srcdir)/m2/mc -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=$@ $< m2/mc-boot-gen/$(SRC_PREFIX)%.h: $(srcdir)/m2/gm2-libs-iso/%.def -test -d m2/mc-boot-gen || $(mkinstalldirs) m2/mc-boot-gen ./mc $(MC_OPTIONS) -I$(srcdir)/m2/mc -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=$@ $< m2/mc-boot-gen/$(SRC_PREFIX)%.h: $(srcdir)/m2/gm2-libs/%.def -test -d m2/mc-boot-gen || $(mkinstalldirs) m2/mc-boot-gen ./mc $(MC_OPTIONS) -I$(srcdir)/m2/mc -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=$@ $< m2/mc-boot-gen/$(SRC_PREFIX)decl.cc: $(srcdir)/m2/mc/decl.mod -test -d m2/mc-boot-gen || $(mkinstalldirs) m2/mc-boot-gen ./mc $(MC_OPTIONS) --extended-opaque -I$(srcdir)/m2/mc -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-iso --h-file-prefix=$(SRC_PREFIX) -o=$@ $< m2/mc-boot-gen/$(SRC_PREFIX)%.cc: $(srcdir)/m2/mc/%.mod -test -d m2/mc-boot-gen || $(mkinstalldirs) m2/mc-boot-gen ./mc $(MC_OPTIONS) -I$(srcdir)/m2/mc -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=$@ $< m2/mc-boot-gen/$(SRC_PREFIX)%.cc: $(srcdir)/m2/gm2-libs/%.mod -test -d m2/mc-boot-gen || $(mkinstalldirs) m2/mc-boot-gen ./mc $(MC_OPTIONS) -I$(srcdir)/m2/mc -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=$@ $< m2/mc-boot-gen/$(SRC_PREFIX)%.cc: $(srcdir)/m2/gm2-libs-iso/%.mod -test -d m2/mc-boot-gen || $(mkinstalldirs) m2/mc-boot-gen ./mc $(MC_OPTIONS) -I$(srcdir)/m2/mc -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=$@ $< m2/mc-boot-gen/$(SRC_PREFIX)%.h: $(srcdir)/m2/gm2-libs-iso/%.def -test -d m2/mc-boot-gen || $(mkinstalldirs) m2/mc-boot-gen ./mc $(MC_OPTIONS) -I$(srcdir)/m2/mc -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=$@ $< m2/mc-boot-gen/$(SRC_PREFIX)%.cc: m2/mc-obj/%.mod -test -d m2/mc-boot-gen || $(mkinstalldirs) m2/mc-boot-gen ./mc $(MC_OPTIONS) -I$(srcdir)/m2/mc -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=$@ $< # mc-bootstrap compiles mc using the C version previously generated by mc-autogen. # These autogenerated files will be checked into git by the maintainer. mc-bootstrap: mc-clean m2/boot-bin/mc$(exeext) gm2.maintainer-reconfigure: force autoconf $(srcdir)/m2/gm2-libs/config-host.in > $(srcdir)/m2/gm2-libs/config-host ( cd $(srcdir)/m2/gm2-libs ; autoheader config-host.in ) ( cd $(srcdir)/m2 ; autoconf configure.in > configure ) gm2.maintainer-help: force @echo "make knows about:" @echo " " @echo "make gm2.maintainer-help this command" @echo "make gm2.maintainer-reconfigure rebuild the configure scripts" @echo "make gm2.maintainer-tools rebuild mc and ppg bootstrap tools" @echo " note gm2.maintainer-tools requires a working gm2 to be in your path" @echo "make gm2.maintainer-doc rebuild target independent documentation sections" @echo "make pge-help sub commands to build pge" @echo "make mc-help sub commands to build mc" gm2.maintainer-tools: mc-maintainer pge-maintainer gm2.maintainer-doc: m2-target-independent-doc # verify the compiler can be built across three generations of cc1gm2 diffing assembly output. # m2/stage1/cc1gm2 built by translating all M2 sources into C++. # m2/m2obj2/cc1gm2 built from m2/stage1/cc1gm2. # m2/m2obj3/cc1gm2 built from m2/m2obj2/cc1gm2. # # This test only makes sense if host = target = build # GM2-VERIFY-MODS is a list of modules which have no __DATE__ stamp inside them # and thus they can be built by the different versions of gm2. # This list is used for testing only. GM2-VERIFY-MODS = FifoQueue.mod M2AsmUtil.mod M2Optimize.mod \ M2StackWord.mod M2Pass.mod M2Batch.mod \ M2Quads.mod M2Comp.mod M2Reserved.mod \ M2Debug.mod M2Defaults.mod NameKey.mod \ M2FileName.mod P0SymBuild.mod P1SymBuild.mod P2SymBuild.mod \ P3SymBuild.mod \ SymbolKey.mod SymbolTable.mod M2Error.mod \ M2StackAddress.mod \ M2Students.mod \ M2BasicBlock.mod M2Code.mod M2GenGCC.mod M2GCCDeclare.mod\ M2ALU.mod M2System.mod M2Base.mod Lists.mod \ M2Search.mod bnflex.mod ppg.mod Output.mod \ SymbolConversion.mod \ M2Preprocess.mod M2Printf.mod M2LexBuf.mod M2Quiet.mod \ M2Bitset.mod M2Size.mod CLexBuf.mod M2Scope.mod \ M2Range.mod M2Swig.mod M2MetaError.mod Sets.mod \ M2CaseList.mod PCSymBuild.mod M2Const.mod \ M2DebugStack.mod ObjectFiles.mod M2ColorString.mod M2Emit.mod GM2-VERIFY-AUTO = P1Build.mod P2Build.mod PCBuild.mod P3Build.mod \ PHBuild.mod pg.mod P0SyntaxCheck.mod GM2_LIBS_PARANOID = m2/gm2-compiler-paranoid/gm2.a \ m2/gm2-libs-paranoid/libgm2.a # build it again using GM2_LIBS gm2.paranoid: m2/m2obj3/cc1gm2$(exeext) gm2.verifyparanoid m2/m2obj3/cc1gm2$(exeext): m2/m2obj2/cc1gm2$(exeext) m2/gm2-compiler-paranoid/m2flex.o \ $(GM2_C_OBJS) $(BACKEND) $(LIBDEPS) $(GM2_LIBS_PARANOID) \ m2/gm2-gcc/rtegraph.o plugin/m2rte$(exeext).so -test -d m2/m2obj3 || $(mkinstalldirs) m2/m2obj3 @$(call LINK_PROGRESS,$(INDEX.m2),start) +$(LLINKER) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(GM2_C_OBJS) m2/gm2-compiler-paranoid/m2flex.o \ attribs.o \ $(GM2_LIBS_PARANOID) \ $(BACKEND) $(LIBS) m2/gm2-gcc/rtegraph.o \ $(BACKENDLIBS) $(LIBSTDCXX) -lm @$(call LINK_PROGRESS,$(INDEX.m2),end) # gm2.verifyparanoid diffs the output of all three compilers with the compiler source code gm2.verifyparanoid: m2/stage1/cc1gm2$(exeext) m2/m2obj2/cc1gm2$(exeext) m2/m2obj3/cc1gm2$(exeext) force @echo "verifying the three generations of GNU Modula-2 compilers - it may take some time.." $(QUIAT)for i in $(GM2-VERIFY-MODS) ; do \ echo -n "$$i " ; \ ./gm2 -S $(GM2_FLAGS) -c -B./stage1/m2 -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $(srcdir)/m2/gm2-compiler/$$i -o m2/gm2-compiler-verify/1.s ; \ echo -n "[1]" ; \ ./gm2 -S $(GM2_FLAGS) -c -B./stage2/m2 -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $(srcdir)/m2/gm2-compiler/$$i -o m2/gm2-compiler-verify/2.s ; \ echo -n "[2]" ; \ ./gm2 -S $(GM2_FLAGS) -c -B./stage3/m2 -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $(srcdir)/m2/gm2-compiler/$$i -o m2/gm2-compiler-verify/3.s ; \ echo -n "[3]" ; \ if ! diff m2/gm2-compiler-verify/1.s m2/gm2-compiler-verify/2.s > m2/gm2-compiler-verify/1_2.diff 2>&1 ; then \ echo -n " [stage 1 and stage 2 differ]" ; \ cp m2/gm2-compiler-verify/1.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.1.lst ; \ cp m2/gm2-compiler-verify/2.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.2.lst ; \ echo " " ; \ exit 1 ; \ fi ; \ if ! diff m2/gm2-compiler-verify/2.s m2/gm2-compiler-verify/3.s > m2/gm2-compiler-verify/2_3.diff 2>&1 ; then \ echo -n " [stage 2 and stage 3 differ]" ; \ cp m2/gm2-compiler-verify/2.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.2.lst ; \ cp m2/gm2-compiler-verify/3.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.3.lst ; \ fi ; \ echo " " ; \ done $(QUIAT)echo "now verifying automatically built modules" $(QUIAT)for i in x $(GM2-VERIFY-AUTO) ; do \ if [ -f m2/gm2-auto/$$i ] ; then \ echo -n "$$i " ; \ ./gm2 -S $(GM2_FLAGS) -c -B./m2/stage1 -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty m2/gm2-auto/$$i -o m2/gm2-compiler-verify/1.s ; \ echo -n "[1]" ; \ ./gm2 -S $(GM2_FLAGS) -c -B./m2/m2obj2 -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty m2/gm2-auto/$$i -o m2/gm2-compiler-verify/2.s ; \ echo -n "[2]" ; \ ./gm2 -S $(GM2_FLAGS) -c -B./m2/m2obj3 -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty m2/gm2-auto/$$i -o m2/gm2-compiler-verify/3.s ; \ echo -n "[3]" ; \ if ! diff m2/gm2-compiler-verify/1.s m2/gm2-compiler-verify/2.s > m2/gm2-compiler-verify/1_2.diff 2>&1 ; then \ echo -n " [stage 1 and stage 2 differ]" ; \ cp m2/gm2-compiler-verify/1.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.1.lst ; \ cp m2/gm2-compiler-verify/2.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.2.lst ; \ echo " " ; \ exit 1 ; \ fi ; \ if ! diff m2/gm2-compiler-verify/2.s m2/gm2-compiler-verify/3.s > m2/gm2-compiler-verify/2_3.diff 2>&1 ; then \ echo -n " [stage 2 and stage 3 differ]" ; \ cp m2/gm2-compiler-verify/2.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.2.lst ; \ cp m2/gm2-compiler-verify/3.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.3.lst ; \ fi ; \ echo " " ; \ fi ; \ done ; \ $(RM) -f m2/gm2-compiler-verify/1.s m2/gm2-compiler-verify/2.s m2/gm2-compiler-verify/3.s m2/gm2-compiler-verify/2_3.diff m2/gm2-compiler-verify/1_2.diff # gm2.verifystage12 diffs the output of the stage1 and stage2 compilers with the compiler source code gm2.verifystage12: force m2/stage1/cc1gm2$(exeext) m2/m2obj2/cc1gm2$(exeext) @echo "verifying stage1 and stage2 generations of GNU Modula-2 compilers - it may take some time.." $(QUIAT)for i in $(GM2-VERIFY-MODS) ; do \ echo -n "$$i " ; \ ./gm2 -S $(GM2_FLAGS) -c -B./stage1/m2 -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $(srcdir)/m2/gm2-compiler/$$i -o m2/gm2-compiler-verify/1.s ; \ echo -n "[1]" ; \ ./gm2 -S $(GM2_FLAGS) -c -B./stage2/m2 -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $(srcdir)/m2/gm2-compiler/$$i -o m2/gm2-compiler-verify/2.s ; \ echo -n "[2]" ; \ if ! diff m2/gm2-compiler-verify/1.s m2/gm2-compiler-verify/2.s > m2/gm2-compiler-verify/1_2.diff 2>&1 ; then \ echo -n " [stage 1 and stage 2 differ]" ; \ cp m2/gm2-compiler-verify/1.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.1.lst ; \ cp m2/gm2-compiler-verify/2.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.2.lst ; \ echo " " ; \ fi ; \ echo " " ; \ done $(QUIAT)echo "now verifying automatically built modules" $(QUIAT)for i in x $(GM2-VERIFY-AUTO) ; do \ if [ -f m2/gm2-auto/$$i ] ; then \ echo -n "$$i " ; \ ./gm2 -S $(GM2_FLAGS) -c -B./m2/stage1 -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty m2/gm2-auto/$$i -o m2/gm2-compiler-verify/1.s ; \ echo -n "[1]" ; \ ./gm2 -S $(GM2_FLAGS) -c -B./m2/m2obj2 -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty m2/gm2-auto/$$i -o m2/gm2-compiler-verify/2.s ; \ echo -n "[2]" ; \ if ! diff m2/gm2-compiler-verify/1.s m2/gm2-compiler-verify/2.s > m2/gm2-compiler-verify/1_2.diff 2>&1 ; then \ echo -n " [stage 1 and stage 2 differ]" ; \ cp m2/gm2-compiler-verify/1.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.1.lst ; \ cp m2/gm2-compiler-verify/2.s m2/gm2-compiler-verify/t.s | as -ahl m2/gm2-compiler-verify/t.s > m2/gm2-compiler-verify/$$i.2.lst ; \ echo " " ; \ fi ; \ echo " " ; \ fi ; \ done ; \ $(RM) -f m2/gm2-compiler-verify/1.s m2/gm2-compiler-verify/2.s m2/gm2-compiler-verify/3.s m2/gm2-compiler-verify/2_3.diff m2/gm2-compiler-verify/1_2.diff # The rules which build objects in the gm2-compiler-paranoid gm2-libs-paranoid directories. m2/gm2-libs-paranoid/%.o: m2/gm2-libs-ch/%.c -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(XGCC) -c -g $(GM2_O_S3) $(GM2_O) -I./ -Im2/gm2-libs -Wall $(INCLUDES) $< -o $@ m2/gm2-libs-paranoid/%.o: $(srcdir)/m2/gm2-libs/%.mod -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-iso -I$(srcdir)/m2/gm2-libiberty $< -o $@ m2/gm2-compiler-paranoid/%.o: $(srcdir)/m2/gm2-compiler/%.mod -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ m2/gm2-compiler-paranoid/%.o: m2/gm2-compiler-paranoid/%.mod -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ m2/gm2-compiler-paranoid/P0SyntaxCheck.o: m2/gm2-compiler-paranoid/P0SyntaxCheck.mod -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ m2/gm2-compiler-paranoid/P1Build.o: m2/gm2-compiler-paranoid/P1Build.mod -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ m2/gm2-compiler-paranoid/P2Build.o: m2/gm2-compiler-paranoid/P2Build.mod -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ m2/gm2-compiler-paranoid/P3Build.o: m2/gm2-compiler-paranoid/P3Build.mod -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ m2/gm2-compiler-paranoid/PHBuild.o: m2/gm2-compiler-paranoid/PHBuild.mod -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ m2/gm2-compiler-paranoid/PCBuild.o: m2/gm2-compiler-paranoid/PCBuild.mod -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ m2/gm2-libs-paranoid/host.o: $(srcdir)/m2/gm2-libs-ch/host.c m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(CXX) -c $(GM2_O_S3) $(CFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ m2/gm2-libs-paranoid/wrapc.o: $(srcdir)/m2/gm2-libs-ch/wrapc.c m2/gm2-libs-boot/$(SRC_PREFIX)wrapc.h m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(CXX) -c -DIN_GCC $(GM2_O_S3) $(CFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ m2/gm2-libs-paranoid/UnixArgs.o: $(srcdir)/m2/gm2-libs-ch/UnixArgs.cc \ m2/gm2-libs-boot/$(SRC_PREFIX)UnixArgs.h -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(CXX) -c -DIN_GCC $(GM2_O_S3) $(CFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ m2/gm2-libs-paranoid/errno.o: $(srcdir)/m2/gm2-libs-ch/errno.c \ m2/gm2-libs-boot/$(SRC_PREFIX)errno.h -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(CXX) -c -DIN_GCC $(GM2_O_S3) $(CFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ m2/gm2-libs-paranoid/Selective.o: $(srcdir)/m2/gm2-libs-ch/Selective.c \ m2/gm2-libs-boot/$(SRC_PREFIX)Selective.h -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(COMPILER) -c -DIN_GCC $(GM2_O_S3) $(CFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ m2/gm2-libs-paranoid/choosetemp.o: $(srcdir)/m2/gm2-libs-ch/choosetemp.c \ m2/gm2-libiberty/$(SRC_PREFIX)choosetemp.h -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(CXX) -c -DIN_GCC $(GM2_O_S3) $(CFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot -Im2/gm2-libiberty $(INCLUDES) $< -o $@ m2/gm2-libs-paranoid/SysExceptions.o: $(srcdir)/m2/gm2-libs-ch/SysExceptions.c \ m2/gm2-libs-boot/$(SRC_PREFIX)SysExceptions.h -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(CXX) -c -DIN_GCC $(GM2_O_S3) $(CFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ m2/gm2-compiler-paranoid/m2flex.o: m2/gm2-compiler/m2flex.c $(TIMEVAR_H) -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(COMPILER) -c $(GM2_O_S3) -g $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(GM2GCC) -Im2/gm2-compiler-boot -Im2/gm2-libs-boot $< -o $@ m2/gm2-libs-paranoid/dtoa.o: $(srcdir)/m2/gm2-libs-ch/dtoa.cc \ m2/gm2-libs-boot/$(SRC_PREFIX)dtoa.h \ m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(CXX) -c $(GM2_O_S3) $(CFLAGS) -I$(srcdir)/m2 -Im2/gm2-libs-boot -Im2/gm2-libs $(INCLUDES) $< -o $@ m2/gm2-libs-paranoid/ldtoa.o: $(srcdir)/m2/gm2-libs-ch/ldtoa.cc \ m2/gm2-libs-boot/$(SRC_PREFIX)ldtoa.h \ m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(CXX) -c $(GM2_O_S3) $(CFLAGS) -I$(srcdir)/m2 -Im2/gm2-libs-boot -Im2/gm2-libs $(INCLUDES) $< -o $@ m2/gm2-libs-paranoid/termios.o: $(srcdir)/m2/gm2-libs-ch/termios.c \ m2/gm2-libs-boot/$(SRC_PREFIX)termios.h \ m2/gm2-libs/gm2-libs-host.h -test -d m2/gm2-libs-paranoid || $(mkinstalldirs) m2/gm2-libs-paranoid $(CXX) -c $(GM2_O_S3) $(CFLAGS) -I$(srcdir)/m2 -Im2/gm2-libs-boot -Im2/gm2-libs $(INCLUDES) $< -o $@ # The rules which build the paranoid version of gm2. BUILD-LIBS-PARANOID-H = $(GM2-LIBS-BOOT-DEFS:%.def=m2/gm2-libs-boot/$(SRC_PREFIX)%.h) BUILD-LIBS-PARANOID = $(BUILD-LIBS-PARANOID-H) \ $(GM2-LIBS-MODS:%.mod=m2/gm2-libs-paranoid/%.o) \ $(GM2-LIBS-CC:%.cc=m2/gm2-libs-paranoid/%.o) \ $(GM2-LIBS-C:%.c=m2/gm2-libs-paranoid/%.o) m2/gm2-libs-paranoid/libgm2.a: m2/boot-bin/mc$(exeext) $(BUILD-LIBS-PARANOID) $(AR) cr $@ $(GM2-LIBS-MODS:%.mod=m2/gm2-libs-paranoid/%.o) \ $(GM2-LIBS-CC:%.cc=m2/gm2-libs-paranoid/%.o) \ $(GM2-LIBS-C:%.c=m2/gm2-libs-paranoid/%.o) $(RANLIB) $@ m2/gm2-compiler-paranoid/gm2.a: \ $(GM2-COMP-MODS:%.mod=m2/gm2-compiler-paranoid/%.o) \ $(GM2-AUTO-MODS:%.mod=m2/gm2-compiler-paranoid/%.o) \ m2/gm2-compiler-paranoid/M2Version.o \ m2/gm2-compiler-paranoid/m2flex.o $(AR) cr $@ $(GM2-COMP-MODS:%.mod=m2/gm2-compiler-paranoid/%.o) \ $(GM2-AUTO-MODS:%.mod=m2/gm2-compiler-paranoid/%.o) \ m2/gm2-compiler-paranoid/M2Version.o $(RANLIB) $@ m2/gm2-compiler-paranoid/M2Version.mod: -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(SHELL) $(srcdir)/m2/tools-src/makeversion -m $(srcdir) m2/gm2-compiler-paranoid m2/gm2-compiler-paranoid/M2Version.o: m2/gm2-compiler-paranoid/M2Version.mod -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(GM2_2) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc $< -o $@ m2/gm2-compiler-paranoid/%.mod: $(srcdir)/m2/gm2-compiler/%.bnf $(PGE) -test -d m2/gm2-compiler-paranoid || $(mkinstalldirs) m2/gm2-compiler-paranoid $(PGE) -k -l $< -o $@ # Recreate the target independent copies of the documentation which is # used during the build if Python3 is unavailable. # m2-target-independent-doc-rst should be enabled once # tools-src/def2doc.py is completed (module hyperlinks need rst # treatment). m2-target-independent-doc: m2-target-independent-doc-texi # m2-target-independent-doc-rst m2-target-independent-doc-texi: force ifeq ($(HAVE_PYTHON),yes) python3 $(srcdir)/m2/tools-src/def2doc.py -t -b$(srcdir)/m2 -f$(srcdir)/m2/gm2-libs-iso/SYSTEM.def -o $(srcdir)/m2/target-independent/m2/SYSTEM-iso.texi python3 $(srcdir)/m2/tools-src/def2doc.py -t -b$(srcdir)/m2 -f$(srcdir)/m2/gm2-libs/SYSTEM.def -o $(srcdir)/m2/target-independent/m2/SYSTEM-pim.texi python3 $(srcdir)/m2/tools-src/def2doc.py -t -b$(srcdir)/m2 -f$(srcdir)/m2/gm2-libs/Builtins.def -o $(srcdir)/m2/target-independent/m2/Builtins.texi python3 $(srcdir)/m2/tools-src/def2doc.py -t -uLibraries -s$(srcdir)/m2 -b$(srcdir)/m2 -o $(srcdir)/m2/target-independent/m2/gm2-libs.texi else echo "m2-target-independent-doc-texi will only work if Python3 was detected during configure" endif m2-target-independent-doc-rst: force ifeq ($(HAVE_PYTHON),yes) python3 $(srcdir)/m2/tools-src/def2doc.py -x -b$(srcdir)/m2 -f$(srcdir)/m2/gm2-libs-iso/SYSTEM.def -o $(srcdir)/m2/target-independent/m2/SYSTEM-iso.rst python3 $(srcdir)/m2/tools-src/def2doc.py -x -b$(srcdir)/m2 -f$(srcdir)/m2/gm2-libs/SYSTEM.def -o $(srcdir)/m2/target-independent/m2/SYSTEM-pim.rst python3 $(srcdir)/m2/tools-src/def2doc.py -x -b$(srcdir)/m2 -f$(srcdir)/m2/gm2-libs/Builtins.def -o $(srcdir)/m2/target-independent/m2/Builtins.rst python3 $(srcdir)/m2/tools-src/def2doc.py -x -uLibraries -s$(srcdir)/m2 -b$(srcdir)/m2 -o $(srcdir)/m2/target-independent/m2/gm2-libs.rst else echo "m2-target-independent-doc-rst will only work if Python3 was detected during configure" endif