#CLASSPATH=/usr/java/lib/classes.zip
mmpcdir=./mmpc
DC=c:\classes
# put -V here for full debugging info from test runs
VERBOSE=
# set prefix to -U when compiling under windows
PREFIX=
PROF=-pg
# set OMF to -felf for linux or cygwin and -fcoff for djgpp
OMF=-felf
MMPC=java -jar mmpc.jar
OUT=.
CC=gcc -c
TM=time
#JVC=javac -d $(OUT)
JVC=javac
#JVC=javac -source 1.3
#JVC=gcj -C
#JVC=jikes
# define GCF if we are using BOEHM collector
GCF=BOEHM
#GCF=NOBOEHM
DISK=win
#JAVA=java -classpath $(CLASSPATH)
JAVA=java
PASCALSTEM= ilcg/Pascal/PascalCompiler\
ilcg/Pascal/ArrayFinder\
ilcg/Pascal/ArraySubscription\
ilcg/Pascal/ArrayType\
ilcg/Pascal/CommonScalarFinder\
ilcg/Pascal/Compiler\
ilcg/Pascal/CPUrun\
ilcg/Pascal/Dimensioned\
ilcg/Pascal/DimensionError\
ilcg/Pascal/Field\
ilcg/Pascal/ForwardProc\
ilcg/Pascal/IntegralType\
ilcg/Pascal/LiteralVector\
ilcg/Pascal/ObsConstOf\
ilcg/Pascal/OrdinalType\
ilcg/Pascal/PascalFileType\
ilcg/Pascal/Pointer\
ilcg/Pascal/PointerToNamedType\
ilcg/Pascal/ProcType\
ilcg/Pascal/ProgressNotifier\
ilcg/Pascal/RealType\
ilcg/Pascal/RecordType\
ilcg/Pascal/Ref\
ilcg/Pascal/ScalarRange\
ilcg/Pascal/SchemaField\
ilcg/Pascal/SetType\
ilcg/Pascal/SimpleType\
ilcg/Pascal/StringType\
ilcg/Pascal/TOP\
ilcg/Pascal/TypeTag\
ilcg/Pascal/Undeclared\
ilcg/Pascal/UserDefinedOperator\
ilcg/Pascal/Yylex\
ilcg/STelEnumerator\
ilcg/STEnumerator ilcg/SyntaxError\
ilcg/SymbolTable
UNITS=VPunits/invertgauss.pas\
VPunits/VectorClient.pas\
VPunits/blas.pas\
VPunits/blas1_s.pas\
VPunits/bmp.pas\
VPunits/genericset.pas\
VPunits/graphio.pas\
VPunits/maketest.pas\
VPunits/matrices.pas\
VPunits/matrices_real.pas\
VPunits/sdl_rwops.c\
VPunits/numerics.pas\
VPunits/sdl.pas\
VPunits/sdl_mixer.pas\
VPunits/sdl_ttf.pas\
VPunits/testrealset.pas\
VPunits/testset.pas\
VPunits/transpose.pas\
VPunits/vectors.pas\
system.pas\
VPunits/Unitsread.me\
VPunits/vectors_real.pas
PASCALSRCSTEM=ilcg/Pascal/SimpleType ilcg/Pascal/UserDefinedOperatorilcg/Pascal/Yylex\
ilcg/Pascal/ArrayType\
ilcg/Pascal/RecordType\
ilcg/Pascal/IntegralType\
ilcg/Pascal/SetType\
ilcg/Pascal/PascalCompiler\
ilcg/Pascal/OrdinalType\
ilcg/Pascal/ScalarRange\
ilcg/Pascal/StringType\
ilcg/Pascal/ProcType\
ilcg/Pascal/ArraySubscription\
ilcg/Pascal/Compiler
ISOLATES=ilcg/Pascal/YyCaller.class\
ilcg/Pascal/TreeSearcher.class\
ilcg/Pascal/ExternalReferenceFinder.class\
ilcg/Pascal/CommonSubscriptionFinder.class\
ilcg/Pascal/UndeclaredType.class\
ilcg/Pascal/CommonCastFinder.class\
ilcg/Pascal/UnitHolder.class\
ilcg/Pascal/UndeclaredVariable.class\
ilcg/Pascal/TypeIdError.class\
ilcg/Pascal/BoolLit.class
TREESTEM= ilcg/tree/Annotated\
ilcg/tree/AsmLink\
ilcg/tree/Assign\
ilcg/tree/AssignmentException\
ilcg/tree/Block\
ilcg/tree/BoundedHinttable\
ilcg/tree/Cartesian\
ilcg/tree/Cast\
ilcg/tree/CharLit\
ilcg/tree/CommonMemExpressionFinder\
ilcg/tree/CommonRHSFinder\
ilcg/tree/CommonSubExpressionFinder\
ilcg/tree/Condition\
ilcg/tree/Control\
ilcg/tree/Deref\
ilcg/tree/dif\
ilcg/tree/div\
ilcg/tree/Dyad\
ilcg/tree/evaluatedDyad\
ilcg/tree/ExpressionSearcher\
ilcg/tree/ExpressionSubstituter\
ilcg/tree/ExtLabel\
ilcg/tree/Fail\
ilcg/tree/For\
ilcg/tree/Format\
ilcg/tree/Function\
ilcg/tree/Goto\
ilcg/tree/If\
ilcg/tree/IlcgParam\
ilcg/tree/ImpLabel\
ilcg/tree/Int\
ilcg/tree/Integer\
ilcg/tree/IntelPeep\
ilcg/tree/IsMemref\
ilcg/tree/Label\
ilcg/tree/LabelFinder\
ilcg/tree/Loader\
ilcg/tree/LocalFinder\
ilcg/tree/LocalStoreAllocator\
ilcg/tree/Location\
ilcg/tree/Mem\
ilcg/tree/Memref\
ilcg/tree/mod\
ilcg/tree/Monad\
ilcg/tree/MyHashSet\
ilcg/tree/MySet\
ilcg/tree/MyVecSet\
ilcg/tree/Node\
ilcg/tree/Num\
ilcg/tree/Op\
ilcg/tree/Pattern\
ilcg/tree/Procedure\
ilcg/tree/prod\
ilcg/tree/Push\
ilcg/tree/Pushop\
ilcg/tree/Real\
ilcg/tree/Ref\
ilcg/tree/Register\
ilcg/tree/RegisterStack\
ilcg/tree/RegReservation\
ilcg/tree/Reservation\
ilcg/tree/Return\
ilcg/tree/RollBackBuffer\
ilcg/tree/Statement\
ilcg/tree/StreamGobbler\
ilcg/tree/SubField\
ilcg/tree/SubscriptionRemover\
ilcg/tree/SubstitutionException\
ilcg/tree/sum\
ilcg/tree/toReal\
ilcg/tree/TreeExaminer\
ilcg/tree/TreeModifier\
ilcg/tree/Type\
ilcg/tree/UnguardedAssignFinder\
ilcg/tree/Unit\
ilcg/tree/Variable\
ilcg/tree/Walker\
ilcg/tree/Writecounter\
ilcg/tree/WritedependencyFinder\
ilcg/tree/WrittenSetFinder
TREESRCSTEM=ilcg/tree/Node ilcg/tree/Assign ilcg/tree/Block ilcg/tree/BoundedHinttable\
ilcg/tree/Cartesian ilcg/tree/Label ilcg/tree/Cast\
ilcg/tree/CommonSubExpressionFinder ilcg/tree/Deref\
ilcg/tree/Dyad ilcg/tree/ExpressionSubstituter\
ilcg/tree/Fail ilcg/tree/Location ilcg/tree/Goto\
ilcg/tree/Annotated\
ilcg/tree/TreeExaminer ilcg/tree/TreeModifier\
ilcg/tree/Return\
ilcg/tree/RegisterStack\
ilcg/tree/SubField\
ilcg/tree/Control\
ilcg/tree/ImpLabel ilcg/tree/ExtLabel\
ilcg/tree/Type\
ilcg/tree/AsmLink\
ilcg/tree/AssignmentException \
ilcg/tree/For ilcg/tree/Format ilcg/tree/If\
ilcg/tree/Int ilcg/tree/Integer\
ilcg/tree/LocalStoreAllocator ilcg/tree/IntelPeep\
ilcg/tree/Mem ilcg/tree/Memref ilcg/tree/Monad\
ilcg/tree/Num ilcg/tree/Op\
ilcg/tree/Loader\
ilcg/tree/Function\
ilcg/tree/Procedure ilcg/tree/Push ilcg/tree/Real\
ilcg/tree/Ref ilcg/tree/Register\
ilcg/tree/RegReservation ilcg/tree/RollBackBuffer\
ilcg/tree/Statement ilcg/tree/Unit ilcg/tree/Variable
#ilcg/tree/C.class ilcg/tree/CCG.class
CGS= ilcg/tree/gnuIntelPeep.class\
ilcg/tree/PentiumCG.class\
ilcg/tree/EECG.class\
ilcg/tree/EE.class ilcg/tree/PPC.class\
ilcg/tree/IA32.class\
ilcg/tree/Pentium.class\
ilcg/tree/P3.class\
ilcg/tree/gnu486.class\
ilcg/tree/gnuPentium.class\
ilcg/tree/gnuP4.class\
ilcg/tree/P4.class\
ilcg/tree/K6.class\
ilcg/tree/Opteron.class\
ilcg/tree/gnuPentiumCG.class\
ilcg/tree/gnuP4CG.class ilcg/tree/IA32CG.class\
ilcg/tree/K6CG.class\
ilcg/tree/OpteronCG.class\
ilcg/tree/CELLCG.class\
ilcg/tree/PPCCG.class\
ilcg/tree/PPECG.class\
ilcg/tree/P3CG.class\
ilcg/tree/gnu486CG.class \
ilcg/tree/P4CG.class\
ilcg/tree/PcodeCG.class\
ilcg/tree/Pcode.class\
ilcg/tree/SSE2CG.class
CGO=$(subst .class,.o,$(CGS))
TREE=$(addsuffix .class, $(TREESTEM))
TREESRC=$(addsuffix .java,$(TREESRCSTEM))
PASCAL=$(addsuffix .class, $(PASCALSTEM))
PASCALSRC = $(addsuffix .java, $(PASCALSRCSTEM))
TREEO=$(addsuffix .o,$(TREESTEM))
PASCO=$(subst .class,.o,$(PASCAL))
ISOLATESO=$(subst .class,.o,$(ISOLATES))
OBJFILES= $(ISOLATESO) Vptex.o compiler.o ilcg/tree/Pentium.o ilcg/tree/PentiumCG.o
cgs.jar: $(CGS)
jar -cf cgs.jar $(CGS)
compiler.jar: $(TREE) $(PASCAL)
jar -cf compiler.jar $(TREE) $(PASCAL)
%.c :%.pas
p2c -LTurbo $<
.SUFFIXES: .java .class .c .o .pas .jar
.java.class:
$(JVC) $<
#.class.o:
# gcj -c -o $(subst .class,.o,$< ) $<
.jar.o:
gcj $(PROF) -O3 -c -o $(subst .jar,.o,$< ) $<
.c.o :
$(CC) $<
all: prog mmpc.jar test
rtl.jar:rtl/rtl.c rtl/gc/gc.a
jar -cf rtl.jar rtl
rtl/gc/gc.a:
make -Crtl/gc
cp rtl/gc/gc.a $(DISK)/mmpc
cp rtl/gc/gc.a ilcg/Pascal
src.jar: makefile
jar -cf src.jar ilcg/*.java *.pas *.txt makefile ilcg/tree/*.ver *.m4 ilcg/tree/*.m4\
rtl/*.c ilcg/Pascal ilcg/tree/*.java ilcg/tree/*.hd\
macros.asm macros.s AMD64macros.s PPCmacros.s system.pas cpus/fpu.m4 cpus/mmx.m4 rtl/gc\
cpus/fpu.m4 cpus/ifpu.m4 *.tex ilcg/Pascal/*.ver\
cpus/i386base.m4 cpus/ia32.m4 cpus/*.m4 ilcg/tree/*.tl cpus/*.m4\
viper VPTeX VPunits org *.dvi ca JLex *.bat sab*.jar *.mf\
*.class *.java vpc read* manual.pdf vp* vp
$(DISK)/mmpc/mmpc.jar: mmpc.jar
cp mmpc.jar $(DISK)/mmpc
$(DISK)/mmpc/viper.jar: viper.jar
cp viper.jar $(DISK)/mmpc
cp vipset.bat $(DISK)/mmpc
cp vpc.bat $(DISK)/mmpc
cp viper.bat $(DISK)/mmpc
cp SystemReset.class $(DISK)/mmpc
$(DISK)/mmpc/gc.a: rtl/gc/gc.a
cp rtl/gc/gc.a $(DISK)/mmpc
$(DISK)/mmpc/genericset.pas: system.pas VPunits/genericset.pas
cp system.pas $(DISK)/mmpc
cp VPunits/genericset.pas $(DISK)/mmpc
$(DISK)/mmpc/system.pas: system.pas VPunits/genericset.pas
cp system.pas $(DISK)/mmpc
cp VPunits/genericset.pas $(DISK)/mmpc
$(DISK)/mmpc/rtlb.o: rtl/rtl.c $(DISK)/mmpc/gc.a
gcc -DNOBOEHM -DDOS -g -c -o $(DISK)/mmpc/rtl.o rtl/rtl.c
cp $(DISK)/mmpc/rtl.o $(DISK)/mmpc/WIN_rtl.o
gcc -DBOEHM -DDOS -g -c -o $(DISK)/mmpc/rtlb.o rtl/rtl.c
cp rtl/rtl.c $(DISK)/mmpc
tree.o: tree.jar
mmpc:
mkdir mmpc
quickinst: mmpc.jar
cp mmpc.jar $(mmpcdir)
locinstall: install.jar
cp mmpc/* /home/wpc/mmpc
install: install.jar
manual.dvi: manual.tex man.tex #ilcg.tex
latex manual
latex manual
manual.ps: manual.dvi
dvips -f <manual.dvi >manual.ps
stable: mmpc/stablemmpc.jar
cp mmpc/stablemmpc.jar mmpc/mmpc.jar
testver: mmpc/mmpc.jar mmpc/threadlib.pas
# rm -f X:/root/SourceForge/vectorpascalcom/PP*.vwu
# rm -f X:/root/SourceForge/vectorpascalcom/mmpc/systemPP*.*
# rm -f X:/root/SourceForge/vectorpascalcom/CEL*.vwu
# rm -f X:/root/SourceForge/vectorpascalcom/mmpc/systemCEL*.*
# cp ./mmpc/mmpc.jar X:/root/SourceForge/vectorpascalcom/mmpc/mmpc.jar
rm -f ./PP*.vwu
rm -f ./mmpc/systemPP*.*
rm -f ./systemPP*.asm
rm -f ./CEL*.vwu
rm -f ./mmpc/systemCEL*.*
cp mmpc.jar mmpc/mmpc.jar
manual.pdf: manual.ps
ps2pdf13 manual.ps
mmpc/Makefile: makefile.ins
cp makefile.ins ./mmpc/Makefile
mmpc/threadlib.pas: threadlib.pas mmpc/gnuPentiumCGtaskexecute.s mmpc/threadlib.c
cp threadlib.pas mmpc
mmpc/threadlib.c : rtl/threadlib.c
cp rtl/threadlib.c mmpc
mmpc/gnuPentiumCGtaskexecute.s: gnuPentiumCGtaskexecute.s gnuP4CGtaskexecute.s OpteronCGtaskexecute.s
cp gnuPentiumCGtaskexecute.s mmpc
cp gnuP4CGtaskexecute.s mmpc
cp OpteronCGtaskexecute.s mmpc
mmpc/mmpc.jar: mmpc.jar
cp mmpc.jar mmpc
install.jar: prog mmpc.jar vpc-cygwin.bat vpc.bat msvpc.bat system.pas rtl/rtl.c mmpc/threadlib.pas ./mmpc/Makefile viper.jar vpc mmpc rtl.jar vp.bat rtl/gc/gc.a $(UNITS) manual.pdf
(cd mmpc;make clean)
cp $(UNITS) ./mmpc
cp system.pas ./mmpc
cp mmpc.jar ./mmpc
cp VPunits/genericset.pas ./mmpc
cp vpc vpc-cygwin* msvpc.bat ./mmpc
cp rtl/gc/gc.a .
cp rtl/gc/gc.a ./mmpc
cp rtl/rtl.c ./mmpc
gcc -DNOBOEHM -I rtl/gc/include -g -c -o ./mmpc/rtl.o rtl/rtl.c
gcc -DBOEHM -I rtl/gc/include -g -c -o ./mmpc/rtlb.o rtl/rtl.c
cp rtl.jar ./mmpc
cp macros.asm ./mmpc
cp AMD64macros.s ./mmpc
cp macros.s ./mmpc
cp PPCmacros.s ./mmpc
cp vpc.bat ./mmpc
cp mingvpc ./mmpc
cp vp.bat ./mmpc
cp readme ./mmpc
cp manual.pdf ./mmpc
cp VPUnicode.doc ./mmpc
cp vp ./mmpc
cp viper.jar ./mmpc
rm -f ./mmpc/*.vwu
rm -f ./mmpc/*.mpu
jar -cf install.jar ./mmpc
# cp ./mmpc/rtl.o ./mmpc/LIN_rtl.o
clean:
# make -Crtl/gc clean
rm -f ca/mcgill/sable/util/*.class
rm -f VPTeX/*.class
rm -f ilcg/node/*.class
rm -f viper/*.class
rm -f ilcg/parser/*
rm -f ilcg/lexer/*.java
rm -f -r ilcg/*.class
rm -f ilcg/tree/*.class
rm -f ilcg/Pascal/*.class
rm -f org/gjt/sp/jedit/textarea/*.class
rm -f ilcg/analysis/*.java
rm -f ilcg/analysis/*.class
rm -f ilcg/node/*.java
rm -f mmpc.jar
rm -f viper.jar
rm -f rtl.jar
rm -f winstall.jar
rm -f linstall.jar
rm -f ilcg/tree/WalkerVer.java
rm -f ilcg/Pascal/PascalCompilerVer.java
rm -f src.jar
rm -f ilcg/tree/*.bak
rm -f ilcg/Pascal/*.bak
rm -f PP*.vwu
rm -f ./mmpc/systemPPC*.*
doc: prog
# javadoc -private -d doc ilcg ilcg.tree ilcg.Pascal ilcg.analysis ilcg.node
javadoc -J-Xmx440m -d doc ilcg.tree ilcg.Pascal ilcg
test: prog testIA32 testPentium testP3 testK6 testP4
mmpc.jar: $(PASCAL) $(TREE) $(CGS) $(ISOLATES)
jar -cmf mmpc.mf mmpc.jar ilcg/*.class ilcg/Pascal/*.class ilcg/tree/*.class VPTeX/*.class
ilcg/tree/AsmLink.class: ilcg/tree/PentiumCG.class ilcg/tree/AsmLink.java
objfiles: $(OBJFILES)
pcc: mmpc.jar objfiles
# gcj -o pcc -I. -I./ -I/home/wpc/vp --main=ilcg.Pascal.PascalCompiler $(OBJFILES)
gcj $(PROF) -o pcc -I. -I./ -I/home/wpc/vp -lgij $(OBJFILES)
Vptex.jar:
jar -cf Vptex.jar VPTeX
Vptex.o: Vptex.jar
gcj -c Vptex.jar
viper/Viper.class: viper/Viper.java
$(JVC) -source 1.3 viper/*.java
ilcg/Pascal/VPC.class: ilcg/Pascal/VPC.java viper/Viper.class $(CGS)
viper.jar: ilcg/Pascal/VPC.class viper/Viper.class\
VPTeX/vPTeX.class SystemReset.class ilcg/Pascal/PascalCompiler.class\
$(TREE) $(CGS)
jar -cmf viper.mf viper.jar ilcg/*.class ilcg/Pascal/*.class org ilcg/tree/*.class viper/*.class viper/resources VPTeX/*.class SystemReset.class
prog: ilcg/tree/PentiumCG.class ilcg/Pascal/PascalCompiler.class ilcg/Pascal/rtl.o macros.asm
ilcg/tree/Condition.class: ilcg/tree/Op.class
ilcg/tree/dif.class: ilcg/tree/Op.class
ilcg/tree/MyVecSet.class: ilcg/tree/MySet.class
ilcg/tree/mod.class: ilcg/tree/Op.class
ilcg/tree/sum.class: ilcg/tree/Op.class
ilcg/tree/prod.class: ilcg/tree/Op.class
ilcg/tree/div.class: ilcg/tree/Op.class
ilcg/tree/Pushop.class: ilcg/tree/Push.class
ilcg/Pascal/ExternalReferenceFinder.class: ilcg/Pascal/PascalCompiler.class
#ilcg.tex: ILCG.tex
# cp ILCG.tex ilcg.tex
#ilcg.dvi: ilcg.tex ilcggram.tex
# latex ilcg
ilcg/tree/MyVecSet.class: ilcg/tree/MySet.class
ilcg/tree/Condition.class: ilcg/tree/Op.class
ilcg/tree/dif.class: ilcg/tree/Op.class
ilcg/tree/div.class: ilcg/tree/Op.class
ilcg/tree/mod.class: ilcg/tree/Op.class
ilcg/tree/prod.class: ilcg/tree/Op.class
ilcg/tree/sum.class: ilcg/tree/Op.class
ilcg/tree/Unit.class: ilcg/tree/Node.class ilcg/tree/Format.class ilcg/tree/Statement.class ilcg/tree/Block.class ilcg/tree/Procedure.class
ilcg/tree/Procedure.class: ilcg/tree/Statement.class ilcg/tree/Block.class ilcg/tree/Format.class ilcg/tree/TreeExaminer.class
ilcg/tree/TreeExaminer.class: ilcg/tree/Node.class
ilcg/tree/Loader.class: ilcg/tree/Loader.java $(TREESRC)
ilcg/tree/Assign.class: ilcg/tree/Variable.class
tests/Delphi/test.exe: tests/test.pas
dcc32 -CC -E"tests/Delphi" "tests/test.pas"
testDelphi: tests/Delphi/test.exe
$(TM) tests/Delphi/test
ilcg/Pascal/rtl.o: rtl/rtl.c
gcc -g -c -o ilcg/Pascal/rtl.o rtl/rtl.c
ilcg/parser/Parser.java: ilcggram.tex sablecc.jar sableutil.jar
$(JAVA) -jar sablecc.jar ilcggram.tex
ilcgasm/parser/Parser.java: ilcgasm.tex sablecc.jar sableutil.jar
$(JAVA) -jar sablecc.jar ilcgasm.tex
ilcgasm/Ilcgasm.class:ilcgasm/Ilcgasm.java ilcgasm/parser/Parser.java
postfix: ../simpleC/parser/Parser.class ../simpleC/Main.class
../simpleC/Main.class: ../simpleC/Main.java
ilcg/tree/Assign.class: ilcg/tree/Node.class ilcg/tree/Format.class
ilcg/tree/For.class: ilcg/tree/Goto.class
ilcg/tree/LabelFinder.class: ilcg/tree/For.class
ilcg/tree/toReal.class: ilcg/tree/Op.class
ilcg/tree/Monad.class: ilcg/tree/Node.class
ilcg/tree/Variable.class: ilcg/tree/Memref.class
#ilcg/tree/Node.class: ilcg/tree/TreeModifier.class
ilcg/tree/Deref.class: ilcg/tree/Monad.class ilcg/tree/Node.class
../simpleC/parser/Parser.java: ../simpleC/simple.txt
savlecc ../simpleC/simple.txt
ilcg/Ilcg.class: ilcg/Ilcg.java ilcg/parser/Parser.class ilcg/analysis/Analysis.class ilcg/IlcgTreeWalkGenerator.class ilcg/node/Switch.class ilcg/analysis/DepthFirstAdapter.class ilcg/SymbolTable.class ilcg/tree/If.class ilcg/tree/RegReservation.class ilcg/tree/Deref.class
$(JVC) ilcg/analysis/*.java
$(JVC) ilcg/node/*.java
$(JVC) ilcg/parser/*.java
$(JVC) ilcg/Ilcg.java
ilcg/IlcgTreeWalkGenerator.class: ilcg/IlcgTreeWalkGenerator.java ilcg/parser/Parser.java ilcg/Ver.class \
ilcg/tree/Format.java ilcg/tree/Node.java ilcg/RegDetails.java ilcg/pattern.class ilcg/RegAlias.java\
ilcg/Operation.java ilcg/Param.java
$(JVC) ilcg/IlcgTreeWalkGenerator.java
# java ilcg.Ver IlcgTreeWalkGenerator ilcg
ilcg/Pascal/Yylex.java:ilcg/Pascal/Yylex JLex/Main.java
$(JVC) -source 1.3 JLex/Main.java
java JLex.Main ilcg/Pascal/Yylex
ilcg/Pascal/Yylex: JLex/Main.java
touch ilcg/Pascal/Yylex
ilcg/nl/Yylex.java:ilcg/nl/Yylex JLex/Main.java
java JLex.Main ilcg/nl/Yylex
ilcg/nl/Cellular.class:ilcg/nl/Cellular.java ilcg/nl/Yylex.class
$(JVC) ilcg/nl/Cellular.java
ilcg/Pascal/PascalCompiler.class: ilcg/SymbolTable.class ilcg/Pascal/PascalCompiler.java $(PASCALSRC) ilcg/Pascal/PascalCompilerVer.java ilcg/tree/PentiumCG.class
javac -source 1.5 -cp . ilcg/Pascal/PascalCompiler.java
ilcg/Pascal/PascalCompilerVer.java: ilcg/Ver.class
java ilcg.Ver PascalCompiler ilcg.Pascal
ilcg/tree/WalkerVer.java: ilcg/Ver.class ilcg/tree/Walker.java
java ilcg.Ver Walker ilcg.tree
ilcg/Pascal/ArrayType.class: ilcg/Pascal/ArrayType.java ilcg/Pascal/IntegralType.class
ilcg/tree/MyRegSet.class: ilcg/tree/MyHashSet.class
ilcg/tree/MyHashSet.class: ilcg/tree/MySet.class
# build the machine descriptions all of which descend from Walker
ilcg/tree/Walker.class: $(TREESRC) ilcg/Ver.class ilcg/tree/Walker.java ilcg/Pascal/ProgressNotifier.class ilcg/tree/MyRegSet.class \
ilcg/tree/TreeExaminer.class ilcg/tree/StreamGobbler.class # ilcg/tree/Loader.class
$(JVC) ilcg/tree/Walker.java
# java ilcg.Ver Walker ilcg.tree
# C translation
ilcg/tree/C.class: ilcg/tree/C.java ilcg/tree/Walker.java
$(JVC) ilcg/tree/C.javar
ilcg/tree/C.java: cpus/C.lc
$(JAVA) ilcg.Ilcg cpus/C.ilc ilcg/tree/C.java C
ilcg/tree/CCG.class: ilcg/tree/C.class
# basic 486 architecture
ilcg/tree/IA32CG.class: ilcg/tree/IA32.class ilcg/tree/Walker.class
ilcg/tree/IA32CG.java: ilcg/tree/IA32CG.hd ilcg/tree/I386gen.tl $(TREE)
cat ilcg/tree/IA32CG.hd ilcg/tree/I386gen.tl >ilcg/tree/IA32CG.java
ilcg/tree/IA32.java: cpus/ia32.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class
$(JAVA) ilcg.Ilcg cpus/ia32.ilc ilcg/tree/IA32.java IA32
cpus/ia32.ilc: cpus/ia32.m4 cpus/i386base.m4 cpus/ifpu.m4
m4 <cpus/ia32.m4 >cpus/ia32.ilc
tests/ia32/test.exe: tests/test.pas mmpc.jarilcg/tree/IA32.class ilcg/tree/IA32CG.class vecadd.pas
$(MMPC) tests/test -cpuIA32 -otests/ia32/test.exe -Atests/ia32/test.asm $(VERBOSE) $(OMF) $(PREFIX)
testIA32: tests/ia32/test.exe
$(TM) tests/ia32/test.exe
ilcg/tree/IA32CG.class: ilcg/tree/Walker.class ilcg/tree/IA32CG.java
# basic 486 for gas assembler
ilcg/tree/gnu486CG.class: ilcg/tree/gnu486.java ilcg/tree/Walker.java ilcg/tree/gnu486CG.java
$(JVC) ilcg/tree/gnu486CG.java
ilcg/tree/gnu486CG.java: ilcg/tree/gnu486CG.hd ilcg/tree/gnu486.tl
cat ilcg/tree/gnu486CG.hd ilcg/tree/gnu486.tl >ilcg/tree/gnu486CG.java
ilcg/tree/gnu486.java: cpus/gnu486.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class
$(JAVA) ilcg.Ilcg cpus/gnu486.ilc ilcg/tree/gnu486.java gnu486
cpus/gnu486.ilc: cpus/gnu486.m4 cpus/i386gas.m4
m4 <cpus/gnu486.m4 >cpus/gnu486.ilc
# Pentium for gas assembler
ilcg/tree/gnuPentiumCG.class: ilcg/tree/gnuPentiumCG.java
ilcg/tree/gnuPentiumCG.java: ilcg/tree/gnuPentiumCG.hd ilcg/tree/gnu486.tl ilcg/tree/gnuPentium.java
cat ilcg/tree/gnuPentiumCG.hd ilcg/tree/gnu486.tl >ilcg/tree/gnuPentiumCG.java
ilcg/tree/gnuPentium.java: cpus/gnuPentium.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class
$(JAVA) ilcg.Ilcg cpus/gnuPentium.ilc ilcg/tree/gnuPentium.java gnuPentium
cpus/gnuPentium.ilc: cpus/gnuPentium.m4 cpus/i386gas.m4 cpus/gnummx.m4
m4 <cpus/gnuPentium.m4 >cpus/gnuPentium.ilc
# P4 for gas assembler
ilcg/tree/gnuP4CG.class: ilcg/tree/gnuP4CG.java ilcg/tree/gnuIntelPeep.class
ilcg/tree/gnuP4CG.java: ilcg/tree/gnuP4CG.hd ilcg/tree/gnu486.tl ilcg/tree/gnuP4.java
cat ilcg/tree/gnuP4CG.hd ilcg/tree/gnu486.tl >ilcg/tree/gnuP4CG.java
ilcg/tree/gnuP4.java: cpus/gnuP4.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class
$(JAVA) ilcg.Ilcg cpus/gnuP4.ilc ilcg/tree/gnuP4.java gnuP4
cpus/gnuP4.ilc: cpus/gnuP4.m4 cpus/i386gas.m4 cpus/gnusse2.m4
m4 <cpus/gnuP4.m4 >cpus/gnuP4.ilc
# AMD k6 architecture
ilcg/tree/K6CG.class: ilcg/tree/K6.class ilcg/tree/K6CG.java
ilcg/tree/K6CG.java: ilcg/tree/K6CG.hd ilcg/tree/I386gen.tl
cat ilcg/tree/K6CG.hd ilcg/tree/I386gen.tl >ilcg/tree/K6CG.java
ilcg/tree/K6.java: cpus/K6.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class
$(JAVA) ilcg.Ilcg cpus/K6.ilc ilcg/tree/K6.java K6
cpus/K6.ilc: cpus/K6.m4 cpus/i386base.m4 cpus/ifpu.m4 cpus/mmx.m4
m4 <cpus/K6.m4 >cpus/K6.ilc
tests/K6/test: prog tests/test.pas ilcg/tree/K6.class ilcg/tree/K6CG.class
$(MMPC) tests/test $(OMF) -cpuK6 -otests/K6/test -Atests/K6/test.asm $(VERBOSE) $(PREFIX)
testK6: tests/K6/test
$(TM) tests/K6/test
# AMD opteron architecture
ilcg/tree/OpteronCG.class: ilcg/tree/Opteron.class ilcg/tree/OpteronCG.java
ilcg/tree/Opteron.java: cpus/opteron.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class
$(JAVA) ilcg.Ilcg cpus/opteron.ilc ilcg/tree/Opteron.java Opteron
cpus/opteron.ilc: cpus/opteron.m4 cpus/sse2-opteron.m4 cpus/ifpu-gas.m4 cpus/amd64.m4
m4 <cpus/opteron.m4 >cpus/opteron.ilc
# Pentium with MMX
PentiumCG.vwu: ilcg/tree/Pentium.class tests/trainer.pas tests/seive.pas
# Note the order in which these is run is crucial trainer must come first
$(JAVA) ilcg.Pascal.PascalCompiler tests/trainer -T -S -opt3 $(VERBOSE)
$(JAVA) ilcg.Pascal.PascalCompiler tests/seive -S -opt3
cpus/pentium.ilc: cpus/pentium.m4 cpus/i386base.m4 cpus/ifpu.m4 cpus/mmx.m4
m4 <cpus/pentium.m4 >cpus/pentium.ilc
ilcg/tree/Pentium.java: cpus/pentium.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class
$(JAVA) ilcg.Ilcg cpus/pentium.ilc ilcg/tree/Pentium.java Pentium
ilcg/tree/PentiumCG.class: ilcg/tree/Walker.class ilcg/tree/Pentium.class
testPentium: tests/Pentium/test
$(TM) tests/Pentium/test
ilcg/tree/PentiumCG.java: ilcg/tree/PentiumCG.hd ilcg/tree/I386gen.tl
cat ilcg/tree/PentiumCG.hd ilcg/tree/I386gen.tl >ilcg/tree/PentiumCG.java
tests/Pentium/test: prog tests/test.pas mmpc.jarilcg/tree/Pentium.class ilcg/tree/PentiumCG.class
# touch vectests.pas
$(MMPC) tests/test $(OMF) -cpuPentium -otests/Pentium/test -Atests/Pentium/test.asm $(VERBOSE) $(PREFIX)
# intel P3 architecture
# train the code generator cache on the standard training program
P3CG.vwu: ilcg/tree/P3.class tests/trainer.pas tests/seive.pas
# Note the order in which these is run is crucial trainer must come first
$(JAVA) ilcg.Pascal.PascalCompiler tests/trainer -S -cpuP3
$(JAVA) ilcg.Pascal.PascalCompiler tests/seive -S -cpuP3
ilcg/tree/P3CG.java: ilcg/tree/P3CG.hd ilcg/tree/I386gen.tl ilcg/tree/P3.java
cat ilcg/tree/P3CG.hd ilcg/tree/I386gen.tl >ilcg/tree/P3CG.java
ilcg/tree/P3.java: cpus/P3.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class ilcg/tree/Walker.class
$(JAVA) ilcg.Ilcg cpus/P3.ilc ilcg/tree/P3.java P3
cpus/P3.ilc: cpus/P3.m4 cpus/i386base.m4 cpus/ifpu.m4 cpus/mmx.m4 cpus/sse.m4
m4 <cpus/P3.m4 >cpus/P3.ilc
tests/P3/test:prog ilcg/tree/P3CG.class tests/test.pas ilcg/tree/P3.class mmpc.jar
$(MMPC) tests/test $(OMF) -cpuP3 -otests/P3/test -Atests/P3/test.asm $(PREFIX) $(VERBOSE)
testP3: tests/P3/test
$(TM) tests/P3/test
testP3asm: tests/P3/test.asm ilcg/tree/P3.class
nasm -felf -g -o tests/P3/test.o tests/P3/test.asm
# Sony PS2
ilcg/tree/EECG.class: ilcg/tree/EE.class ilcg/tree/EECG.java ilcg/tree/Walker.class
$(JVC) ilcg/tree/EECG.java
ilcg/tree/EE.java: cpus/EE.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class
$(JAVA) ilcg.Ilcg cpus/EE.ilc ilcg/tree/EE.java EE
cpus/EE.ilc: cpus/EE.m4
m4 <cpus/EE.m4 >cpus/EE.ilc
# pcode
ilcg/tree/PcodeCG.class: ilcg/tree/Pcode.class ilcg/tree/PcodeCG.java ilcg/tree/Walker.class $(TREE)
$(JVC) ilcg/tree/PcodeCG.java
ilcg/tree/Pcode.java: cpus/Pcode.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class
$(JAVA) ilcg.Ilcg cpus/Pcode.ilc ilcg/tree/Pcode.java Pcode
cpus/Pcode.ilc: cpus/pcode.m4
m4 <cpus/pcode.m4 >cpus/Pcode.ilc
# NIOS
ilcg/tree/NIOSCG.class: ilcg/tree/NIOS.class ilcg/tree/NIOSCG.java ilcg/tree/Walker.class $(TREE)
$(JVC) ilcg/tree/NIOSCG.java
ilcg/tree/NIOS.java: cpus/NIOS.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class
$(JAVA) ilcg.Ilcg cpus/NIOS.ilc ilcg/tree/NIOS.java NIOS
cpus/NIOS.ilc: cpus/nios.m4
m4 <cpus/nios.m4 >cpus/NIOS.ilc
# Power PC architecture
ilcg/tree/CELLCG.class: ilcg/tree/PPC.class ilcg/tree/CELLCG.java ilcg/tree/Walker.class $(TREE)
$(JVC) ilcg/tree/CELLCG.java
ilcg/tree/PPCCG.class: ilcg/tree/PPC.class ilcg/tree/PPCCG.java ilcg/tree/Walker.class $(TREE)
$(JVC) ilcg/tree/PPCCG.java
ilcg/tree/PPC.java: cpus/PPC.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class ilcg/tree/Walker.class
$(JAVA) ilcg.Ilcg cpus/PPC.ilc ilcg/tree/PPC.java PPC
cpus/PPC.ilc: cpus/PowerPC.m4 cpus/PPCfp.m4 cpus/PPCint.m4 cpus/PPCNew.m4 cpus/PPCVecfp.m4 cpus/PPCVecInt.m4 PPCmacros.s
# m4 <cpus/PowerPC.m4 >cpus/PPC.ilc
# intel P4 architecture
ilcg/tree/P4CG.java: ilcg/tree/P4CG.hd ilcg/tree/I386gen.tl
cat ilcg/tree/P4CG.hd ilcg/tree/I386gen.tl >ilcg/tree/P4CG.java
ilcg/tree/SSE2CG.java: ilcg/tree/SSE2CG.hd ilcg/tree/I386gen.tl
cat ilcg/tree/SSE2CG.hd ilcg/tree/I386gen.tl >ilcg/tree/SSE2CG.java
ilcg/tree/P4.java: cpus/P4.ilc ilcg/Ilcg.class ilcg/IlcgTreeWalkGenerator.class
$(JAVA) ilcg.Ilcg cpus/P4.ilc ilcg/tree/P4.java P4
cpus/P4.ilc: cpus/P4.m4 cpus/i386base.m4 cpus/ifpu.m4 cpus/mmx.m4 cpus/sse2.m4
m4 <cpus/P4.m4 >cpus/P4.ilc
tests/P4/test:prog tests/test.pas ilcg/tree/P4.class mmpc.jar ilcg/tree/P4CG.class
$(MMPC) tests/test $(OMF) -cpuP4 -otests/P4/test -Atests/P4/test.asm $(PREFIX) $(VERBOSE)
testP4: tests/P4/test
$(TM) tests/P4/test
testP4asm: tests/P4/test.asm ilcg/tree/P4.class
nasm -felf -g -o tests/P4/test.o tests/P4/test.asm
# benchmarks
konv.exe: Konv.pas prog ilcg/tree/PentiumCG.class
time java ilcg.Pascal.PascalCompiler Konv $(OMF) -okonv $(PREFIX) $(VERBOSE)
dconv.exe: dconv.pas prog
java ilcg.Pascal.PascalCompiler dconv $(OMF) -odconv $(PREFIX) -CPU P3
konvtest: konv.exe
konv
konv32test: konv32.exe
konv32
konv32.exe: Konv.pas prog ilcg/tree/IA32CG.class
time java ilcg.Pascal.PascalCompiler Konv $(OMF) -okonv32 $(PREFIX) $(VERBOSE) -cpuIA32
dhry.exe: dhry.pas ilcg/Pascal/PascalCompiler.class ilcg/tree/Pentium.class system.pas macros.asm
java ilcg.Pascal.PascalCompiler dhry $(OMF) -odhry $(PREFIX) $(VERBOSE)
dhry
seraddC: tests/C/seradd.exe
$(TM) tests/C/seradd.exe
vecaddC: tests/C/vecadd.exe
$(TM) tests/C/vecadd.exe
benchtime: bench
bench > benchtime
bench: bench.pas testver
vpc bench -cpuTest
tests/C/vecadd.exe: tests/C/vecadd.cpp
iccvars
icl /S /I "/program files/intel/compiler4.0/include" tests/C/vecadd.cpp
icl /I "/program files/intel/compiler4.0/include" tests/C/vecadd.cpp
tests/C/seradd.exe: tests/C/seradd.c
iccvars
icl tests/C/seradd.c
vecaddia32: tests/Ia32/vecadd.exe
$(TM) tests/Ia32/vecadd.exe
tests/Ia32/vecadd.exe: prog tests/vecadd.pas ilcg/tree/IA32.class ilcg/tree/Ia32CG.class
$(MMPC) tests/vecadd -cpuIA32 -otests/Ia32/vecadd.exe -Atests/Ia32/vecadd.asm $(VERBOSE)
vecaddpent: tests/Pentium/vecadd.exe
$(TM) tests/pentium/vecadd.exe
tests/Pentium/vecadd.exe: prog tests/vecadd.pas ilcg/tree/Pentium.class ilcg/tree/PentiumCG.class
$(JAVA) ilcg.Pascal.PascalCompiler tests/vecadd -cpuPentium -otests/Pentium/vecadd.exe -Atests/Pentium/vecadd.asm $(PREFIX) $(VERBOSE)
vecaddasm: tests/asm/vecadd.exe
$(TM) tests/asm/vecadd.exe
tests/asm/vecadd.exe: tests/asm/vecadd.o
gcc -o tests/asm/vecadd.exe tests/asm/vecadd.o
tests/asm/vecadd.o: tests/asm/vecadd.asm
nasmw -f coff -o tests/asm/vecadd.o tests/asm/vecadd.asm
rtl/ncurses/testn: rtl/ncurses/testn.pas ncurses.pas prog
$(JAVA) ilcg.Pascal.PascalCompiler rtl/ncurses/testn $(OMF) -ortl/ncurses/testn $(PREFIX) $(VERBOSE)
testn:rtl/ncurses/testn
rtl/ncurses/testn
pascalgenerators: psrc/K6.pas psrc/I486.pas psrc/p4.pas
psrc/pascomp/K6.pas: ilcg/Ilcp.class cpus/K6.ilc
java ilcg.Ilcp cpus/K6.ilc K6 psrc/pascomp
ilcg/tree/K6v2.java: ilcg/Ilcg2.class cpus/K6.ilc
java ilcg.Ilcg2 cpus/K6.ilc K6v2 ilcg/tree
ilcg/tree/K6v2CG.class: ilcg/tree/K6v2.class ilcg/tree/Walker2.class
ilcg/tree/Walker2.class: ilcg/tree/Pattern.java ilcg/tree/Walker2.java
psrc/pascomp/i486.pas: ilcg/Ilcp.class cpus/ia32.ilc
java ilcg.Ilcp cpus/ia32.ilc i486 psrc/pascomp
psrc/pascomp/P4.pas: ilcg/Ilcp.class cpus/P4.ilc
java ilcg.Ilcp cpus/P4.ilc P4 psrc/pascomp
# matlab
matlab/y.tab.c: matlab/matlab.y
yacc matlab/matlab.y
matlab/y.tab.h: matlab/matlab.y
yacc -d matlab/matlab.y
matlab/lex.yy.c: matlab/matlab.l matlab/y.tab.h
flex matlab/matlab.l
MATLAB: matlab/lex.yy.c matlab/i486.o
matlab/i486.o: matlab/i486.c matlab/i486.h matlab/rollback.h \
matlab/ilcp.h
gcc matlab/i486.c
matlab/%.c:psrc/%.c
cp $< matlab
matlab/%.h:%.h
mv $< matlab
%.h: psrc/%.pas
p2c -LTurbo $< $*