Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #12 from gerdr/newmakefile
New Makefile with mostly atomic rules suitable for parallel make
  • Loading branch information
jnthn committed Feb 4, 2013
2 parents c50cd3c + 5cd217a commit cd0e5d1
Showing 1 changed file with 47 additions and 38 deletions.
85 changes: 47 additions & 38 deletions Makefile
@@ -1,51 +1,30 @@
NQP=nqp
PARROT=parrot
JAVAC=javac
PERL=perl
PROVE=prove
NQP = nqp
PARROT = parrot
JAVAC = javac
PERL = perl
PROVE = prove

JAVAS=src/org/perl6/nqp/jast2bc/*.java \
src/org/perl6/nqp/runtime/*.java \
src/org/perl6/nqp/sixmodel/*.java \
src/org/perl6/nqp/sixmodel/reprs/*.java
NQPLIBS = NQPCOREJVM.setting.class nqp-mo.class ModuleLoader.class
NQPLIBPIRS = NQPCOREJVM.setting.pir nqp-mo.pir
CROSSPBCS = JASTNodes.pbc QASTJASTCompiler.pbc helper.pbc

all: crosscomp nqplibs
JAVAS = src/org/perl6/nqp/jast2bc/*.java \
src/org/perl6/nqp/runtime/*.java \
src/org/perl6/nqp/sixmodel/*.java \
src/org/perl6/nqp/sixmodel/reprs/*.java

crosscomp: jast helper.pbc bin
COMPILE = $(NQP) --target=pir --output=$@
PRECOMPILE = $(NQP) --target=pir --setting=NULL --stable-sc --output=$@
CROSSCOMPILE = $(NQP) nqp-jvm-cc.nqp --setting=NULL --target=classfile --output=$@

jast: JASTNodes.pbc QASTJASTCompiler.pbc
.SUFFIXES: .pir .pbc

JASTNodes.pbc: lib/JAST/Nodes.nqp
$(NQP) --target=pir --output=JASTNodes.pir lib/JAST/Nodes.nqp
$(PARROT) -o JASTNodes.pbc JASTNodes.pir

QASTJASTCompiler.pbc: JASTNodes.pbc lib/QAST/JASTCompiler.nqp
$(NQP) --target=pir --output=QASTJASTCompiler.pir lib/QAST/JASTCompiler.nqp
$(PARROT) -o QASTJASTCompiler.pbc QASTJASTCompiler.pir

helper.pbc: t/helper.nqp QASTJASTCompiler.pbc
$(NQP) --target=pir --output=helper.pir t/helper.nqp
$(PARROT) -o helper.pbc helper.pir
all: $(NQPLIBS)

bin: $(JAVAS)
$(PERL) -MExtUtils::Command -e mkpath bin
$(JAVAC) -source 1.7 -cp 3rdparty/bcel/bcel-5.2.jar -d bin $(JAVAS)

nqplibs: nqp-mo.class ModuleLoader.class NQPCOREJVM.setting.class

nqp-mo.class: crosscomp nqp-src/nqp-mo.pm
$(NQP) --setting=NULL --target=pir --output=nqp-mo.pir --stable-sc nqp-src/nqp-mo.pm
$(PARROT) -o nqp-mo.pbc nqp-mo.pir
$(NQP) nqp-jvm-cc.nqp --setting=NULL --target=classfile --output=nqp-mo.class nqp-src/nqp-mo.pm

ModuleLoader.class: crosscomp nqp-src/ModuleLoader.pm
$(NQP) nqp-jvm-cc.nqp --setting=NULL --target=classfile --output=ModuleLoader.class nqp-src/ModuleLoader.pm

NQPCOREJVM.setting.class: crosscomp nqp-src/NQPCORE.setting
$(NQP) --setting=NULL --target=pir --output=NQPCOREJVM.setting.pir --stable-sc nqp-src/NQPCORE.setting
$(PARROT) -o NQPCOREJVM.setting.pbc NQPCOREJVM.setting.pir
$(NQP) nqp-jvm-cc.nqp --setting=NULL --target=classfile --output=NQPCOREJVM.setting.class nqp-src/NQPCORE.setting

test: all
$(PROVE) --exec=$(NQP) t/jast/*.t t/qast/*.t

Expand All @@ -54,3 +33,33 @@ nqptest: all

clean:
$(PERL) -MExtUtils::Command -e rm_rf bin *.pir *.pbc *.class *.dump

$(NQPLIBS): bin nqp-jvm-cc.nqp $(CROSSPBCS)
$(NQPLIBPIRS): $(CROSSPBCS)

.pir.pbc:
$(PARROT) -o $@ $*.pir

JASTNodes.pir: lib/JAST/Nodes.nqp
$(COMPILE) lib/JAST/Nodes.nqp

QASTJASTCompiler.pir: lib/QAST/JASTCompiler.nqp JASTNodes.pbc
$(COMPILE) lib/QAST/JASTCompiler.nqp

helper.pir: t/helper.nqp QASTJASTCompiler.pbc
$(COMPILE) t/helper.nqp

nqp-mo.pir: nqp-src/nqp-mo.pm
$(PRECOMPILE) nqp-src/nqp-mo.pm

NQPCOREJVM.setting.pir: nqp-src/NQPCORE.setting nqp-mo.pbc
$(PRECOMPILE) nqp-src/NQPCORE.setting

nqp-mo.class: nqp-src/nqp-mo.pm nqp-mo.pbc
$(CROSSCOMPILE) nqp-src/nqp-mo.pm

ModuleLoader.class: nqp-src/ModuleLoader.pm
$(CROSSCOMPILE) nqp-src/ModuleLoader.pm

NQPCOREJVM.setting.class: nqp-src/NQPCORE.setting NQPCOREJVM.setting.pbc
$(CROSSCOMPILE) nqp-src/NQPCORE.setting

0 comments on commit cd0e5d1

Please sign in to comment.