Skip to content

Commit

Permalink
convert gen-cat.pl to nqp and use it
Browse files Browse the repository at this point in the history
  • Loading branch information
perlpilot committed Jul 30, 2014
1 parent 11e1937 commit 397b4e4
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 21 deletions.
14 changes: 7 additions & 7 deletions tools/build/Makefile-JVM.in
Expand Up @@ -2,7 +2,7 @@ JAVA = java
JAVAC = javac
JAR = jar
J_NQP = @j_nqp@
J_GEN_CAT = tools/build/gen-cat.pl jvm
J_GEN_CAT = tools/build/gen-cat.nqp jvm

NQP_PREFIX = @nqp_prefix@

Expand Down Expand Up @@ -223,7 +223,7 @@ $(RUNTIME_JAR): $(RUNTIME_JAVAS)
$(JAR) cf0 rakudo-runtime.jar -C bin/ .

$(PERL6_ML_JAR): src/Perl6/ModuleLoader.nqp src/vm/jvm/ModuleLoaderVMConfig.nqp src/vm/jvm/Perl6/JavaModuleLoader.nqp
$(PERL) $(J_GEN_CAT) src/vm/jvm/ModuleLoaderVMConfig.nqp src/Perl6/ModuleLoader.nqp src/vm/jvm/Perl6/JavaModuleLoader.nqp > $(J_BUILD_DIR)/ModuleLoader.nqp
$(J_NQP) $(J_GEN_CAT) src/vm/jvm/ModuleLoaderVMConfig.nqp src/Perl6/ModuleLoader.nqp src/vm/jvm/Perl6/JavaModuleLoader.nqp > $(J_BUILD_DIR)/ModuleLoader.nqp
$(J_NQP) --target=jar --output=$(PERL6_ML_JAR) --encoding=utf8 \
$(J_BUILD_DIR)/ModuleLoader.nqp

Expand Down Expand Up @@ -257,22 +257,22 @@ $(PERL6_C_JAR): src/Perl6/Compiler.nqp $(PERL6_O_JAR)

$(PERL6_JAR): src/main.nqp $(RUNTIME_JAR) $(PERL6_G_JAR) $(PERL6_A_JAR) $(PERL6_C_JAR) $(PERL6_P_JAR)
$(PERL) tools/build/gen-version.pl > $(J_BUILD_DIR)/main-version.nqp
$(PERL) $(J_GEN_CAT) src/main.nqp $(J_BUILD_DIR)/main-version.nqp > $(J_BUILD_DIR)/main.nqp
$(J_NQP) $(J_GEN_CAT) src/main.nqp $(J_BUILD_DIR)/main-version.nqp > $(J_BUILD_DIR)/main.nqp
$(J_NQP) --target=jar --javaclass=perl6 --output=$(PERL6_JAR) \
$(J_BUILD_DIR)/main.nqp

$(PERL6_M_JAR): $(J_METAMODEL_SOURCES) $(PERL6_OPS_JAR)
$(PERL) $(J_GEN_CAT) $(J_METAMODEL_SOURCES) > $(J_BUILD_DIR)/Metamodel.nqp
$(J_NQP) $(J_GEN_CAT) $(J_METAMODEL_SOURCES) > $(J_BUILD_DIR)/Metamodel.nqp
$(J_NQP) --target=jar --output=$(PERL6_M_JAR) --encoding=utf8 \
$(J_BUILD_DIR)/Metamodel.nqp

$(PERL6_B_JAR): $(BOOTSTRAP_SOURCES) $(PERL6_M_JAR)
$(PERL) $(J_GEN_CAT) $(BOOTSTRAP_SOURCES) > $(J_BUILD_DIR)/BOOTSTRAP.nqp
$(J_NQP) $(J_GEN_CAT) $(BOOTSTRAP_SOURCES) > $(J_BUILD_DIR)/BOOTSTRAP.nqp
$(PERL) tools/build/nqp-jvm-rr.pl $(J_NQP) --target=jar \
--output=$(PERL6_B_JAR) --encoding=utf8 $(J_BUILD_DIR)/BOOTSTRAP.nqp

$(SETTING_JAR): $(PERL6_JAR) $(PERL6_B_JAR) $(J_CORE_SOURCES)
$(PERL) $(J_GEN_CAT) $(J_CORE_SOURCES) > $(J_BUILD_DIR)/CORE.setting
$(J_NQP) $(J_GEN_CAT) $(J_CORE_SOURCES) > $(J_BUILD_DIR)/CORE.setting
@echo "The following step can take a long time, please be patient."
$(J_RUN_PERL6) --setting=NULL --ll-exception --optimize=3 --target=jar --stagestats --output=$(SETTING_JAR) $(J_BUILD_DIR)/CORE.setting

Expand All @@ -284,7 +284,7 @@ j-runner-default: j-all
$(CHMOD) 755 perl6$(J_BAT)

$(PERL6_DEBUG_JAR): src/perl6-debug.nqp $(PERL6_JAR)
$(PERL) $(J_GEN_CAT) src/perl6-debug.nqp $(J_BUILD_DIR)/main-version.nqp > $(J_BUILD_DIR)/j-perl6-debug.nqp
$(J_NQP) $(J_GEN_CAT) src/perl6-debug.nqp $(J_BUILD_DIR)/main-version.nqp > $(J_BUILD_DIR)/j-perl6-debug.nqp
$(J_NQP) --target=jar --javaclass=perl6-debug --output=$(PERL6_DEBUG_JAR) \
$(J_BUILD_DIR)/j-perl6-debug.nqp

Expand Down
14 changes: 7 additions & 7 deletions tools/build/Makefile-Moar.in
Expand Up @@ -3,7 +3,7 @@ M_LD = @moar::ld@
M_CFLAGS = @moar::cflags@ @moar::ccmiscflags@ @moar::ccoptiflags@ @moar::ccwarnflags@
M_LDFLAGS = @moar::ldflags@ @moar::ldmiscflags@ @moar::ldoptiflags@ @moar::ldlibs@

M_GEN_CAT = tools/build/gen-cat.pl moar
M_GEN_CAT = tools/build/gen-cat.nqp moar

MOAR = $(PREFIX)@slash@bin@slash@moar@exe@
M_NQP = $(PREFIX)@slash@bin@slash@nqp-m@runner_suffix@
Expand Down Expand Up @@ -233,7 +233,7 @@ $(M_PERL6_OPS_DLL): $(M_PERL6_OPS_SRC) $(M_PERL6_CONT_SRC) Makefile
$(M_LD) @moar::ldswitch@ @moar::ldshared@ $(M_LDFLAGS) @moar::ldout@$(M_PERL6_OPS_DLL) $(M_PERL6_OPS_OBJ) $(M_PERL6_CONT_OBJ) @moarimplib@

$(PERL6_ML_MOAR): src/Perl6/ModuleLoader.nqp src/vm/moar/ModuleLoaderVMConfig.nqp
$(PERL) $(M_GEN_CAT) src/vm/moar/ModuleLoaderVMConfig.nqp src/Perl6/ModuleLoader.nqp > src/gen/m-ModuleLoader.nqp
$(M_NQP) $(M_GEN_CAT) src/vm/moar/ModuleLoaderVMConfig.nqp src/Perl6/ModuleLoader.nqp > src/gen/m-ModuleLoader.nqp
$(M_NQP) --target=mbc --output=$(PERL6_ML_MOAR) --encoding=utf8 \
src/gen/m-ModuleLoader.nqp

Expand Down Expand Up @@ -267,22 +267,22 @@ $(PERL6_C_MOAR): src/Perl6/Compiler.nqp $(PERL6_O_MOAR)

$(PERL6_MOAR): src/main.nqp $(PERL6_G_MOAR) $(PERL6_A_MOAR) $(PERL6_C_MOAR) $(PERL6_P_MOAR)
$(PERL) tools/build/gen-version.pl > src/gen/main-version.nqp
$(PERL) $(M_GEN_CAT) src/main.nqp src/gen/main-version.nqp > src/gen/m-main.nqp
$(M_NQP) $(M_GEN_CAT) src/main.nqp src/gen/main-version.nqp > src/gen/m-main.nqp
$(M_NQP) --target=mbc --output=$(PERL6_MOAR) \
--vmlibs=$(M_PERL6_OPS_DLL)=Rakudo_ops_init src/gen/m-main.nqp

$(PERL6_M_MOAR): $(M_METAMODEL_SOURCES) $(PERL6_OPS_MOAR)
$(PERL) $(M_GEN_CAT) $(M_METAMODEL_SOURCES) > src/gen/m-Metamodel.nqp
$(M_NQP) $(M_GEN_CAT) $(M_METAMODEL_SOURCES) > src/gen/m-Metamodel.nqp
$(M_NQP) --target=mbc --output=$(PERL6_M_MOAR) --encoding=utf8 \
src/gen/m-Metamodel.nqp

$(PERL6_B_MOAR): $(BOOTSTRAP_SOURCES) $(PERL6_M_MOAR)
$(PERL) $(M_GEN_CAT) $(BOOTSTRAP_SOURCES) > src/gen/m-BOOTSTRAP.nqp
$(M_NQP) $(M_GEN_CAT) $(BOOTSTRAP_SOURCES) > src/gen/m-BOOTSTRAP.nqp
$(M_NQP) --target=mbc --output=$(PERL6_B_MOAR) --encoding=utf8 \
--vmlibs=$(M_PERL6_OPS_DLL)=Rakudo_ops_init src/gen/m-BOOTSTRAP.nqp

$(SETTING_MOAR): $(PERL6_MOAR) $(PERL6_B_MOAR) $(M_CORE_SOURCES)
$(PERL) $(M_GEN_CAT) $(M_CORE_SOURCES) > src/gen/m-CORE.setting
$(M_NQP) $(M_GEN_CAT) $(M_CORE_SOURCES) > src/gen/m-CORE.setting
@echo "The following step can take a long time, please be patient."
$(M_RUN_PERL6) --setting=NULL --ll-exception --optimize=3 --target=mbc --stagestats --output=$(SETTING_MOAR) src/gen/m-CORE.setting

Expand All @@ -296,7 +296,7 @@ m-runner-default: $(M_RUNNER)
$(CP) $(M_RUNNER) perl6@runner_suffix@

$(PERL6_DEBUG_MOAR): src/perl6-debug.nqp $(PERL6_MOAR)
$(PERL) $(M_GEN_CAT) src/perl6-debug.nqp src/gen/main-version.nqp > src/gen/m-perl6-debug.nqp
$(M_NQP) $(M_GEN_CAT) src/perl6-debug.nqp src/gen/main-version.nqp > src/gen/m-perl6-debug.nqp
$(M_NQP) --target=mbc --output=$(PERL6_DEBUG_MOAR) \
--vmlibs=$(M_PERL6_OPS_DLL)=Rakudo_ops_init src/gen/m-perl6-debug.nqp

Expand Down
14 changes: 7 additions & 7 deletions tools/build/Makefile-Parrot.in
Expand Up @@ -33,7 +33,7 @@ PARROT_PERL_LIB = $(PARROT_TOOLS_DIR)/lib
OPS2C = $(PARROT_BIN_DIR)/ops2c$(EXE)
CINCLUDES = -I$(PARROT_INCLUDE_DIR) -I$(PARROT_INCLUDE_DIR)/pmc
LINKARGS = $(P_LDFLAGS) $(P_LD_LOAD_FLAGS) $(LIBPARROT) @libs@ @icu_shared@
P_GEN_CAT = tools/build/gen-cat.pl parrot
P_GEN_CAT = tools/build/gen-cat.nqp parrot
P_BUILD_DIR = gen/parrot

# rakudo directories
Expand Down Expand Up @@ -366,13 +366,13 @@ $(PERL6_DEBUG_EXE): $(PERL6_DEBUG_PBC)
# the complete compiler
$(PERL6_PBC): $(PERL6_G_PBC) $(PERL6_A_PBC) $(PERL6_C_PBC) $(PERL6_P_PBC) src/main.nqp
$(PERL) tools/build/gen-version.pl > $(P_BUILD_DIR)/main-version.nqp
$(PERL) $(P_GEN_CAT) src/main.nqp $(P_BUILD_DIR)/main-version.nqp > $(P_BUILD_DIR)/main.nqp
$(NQP_EXE) $(P_GEN_CAT) src/main.nqp $(P_BUILD_DIR)/main-version.nqp > $(P_BUILD_DIR)/main.nqp
$(NQP_EXE) --vmlibs=perl6_ops --target=pir --output=src/gen/perl6.pir \
$(P_BUILD_DIR)/main.nqp
$(PARROT) $(PARROT_ARGS) -o $(PERL6_PBC) src/gen/perl6.pir

$(PERL6_ML_PBC): $(NQP_EXE) $(DYNEXT_DYNOPS) src/Perl6/ModuleLoader.nqp src/vm/parrot/ModuleLoaderVMConfig.nqp
$(PERL) $(P_GEN_CAT) src/vm/parrot/ModuleLoaderVMConfig.nqp src/Perl6/ModuleLoader.nqp > $(P_BUILD_DIR)/ModuleLoader.nqp
$(NQP_EXE) $(P_GEN_CAT) src/vm/parrot/ModuleLoaderVMConfig.nqp src/Perl6/ModuleLoader.nqp > $(P_BUILD_DIR)/ModuleLoader.nqp
$(NQP_EXE) --target=pir --output=$(PERL6_ML) --encoding=utf8 \
$(P_BUILD_DIR)/ModuleLoader.nqp
$(PARROT) $(PARROT_ARGS) -o $(PERL6_ML_PBC) $(PERL6_ML)
Expand Down Expand Up @@ -413,19 +413,19 @@ $(PERL6_C_PBC): $(NQP_EXE) $(DYNEXT_DYNOPS) $(PERL6_O_PBC) src/Perl6/Compiler.nq
$(PARROT) $(PARROT_ARGS) -o $(PERL6_C_PBC) $(PERL6_C)

$(PERL6_M_PBC): $(NQP_EXE) $(DYNEXT_DYNOPS) $(P_METAMODEL_SOURCES) $(PERL6_OPS_PBC)
$(PERL) $(P_GEN_CAT) $(P_METAMODEL_SOURCES) > $(P_BUILD_DIR)/Metamodel.nqp
$(NQP_EXE) $(P_GEN_CAT) $(P_METAMODEL_SOURCES) > $(P_BUILD_DIR)/Metamodel.nqp
$(NQP_EXE) --target=pir --output=$(PERL6_M) --encoding=utf8 \
--vmlibs=perl6_ops $(P_BUILD_DIR)/Metamodel.nqp
$(PARROT) $(PARROT_ARGS) -o $(PERL6_M_PBC) $(PERL6_M)

$(PERL6_B_PBC): $(NQP_EXE) $(DYNEXT_DYNOPS) $(PERL6_M_PBC) $(BOOTSTRAP_SOURCES)
$(PERL) $(P_GEN_CAT) $(BOOTSTRAP_SOURCES) > $(P_BUILD_DIR)/BOOTSTRAP.nqp
$(NQP_EXE) $(P_GEN_CAT) $(BOOTSTRAP_SOURCES) > $(P_BUILD_DIR)/BOOTSTRAP.nqp
$(NQP_EXE) --target=pir --output=$(PERL6_B) --encoding=utf8 \
--vmlibs=perl6_ops $(P_BUILD_DIR)/BOOTSTRAP.nqp
$(PARROT) $(PARROT_ARGS) -o $(PERL6_B_PBC) $(PERL6_B)

$(SETTING_PBC): $(PERL6_B_PBC) $(PERL6_EXE) $(P_CORE_SOURCES)
$(PERL) $(P_GEN_CAT) $(P_CORE_SOURCES) > $(P_BUILD_DIR)/CORE.setting
$(NQP_EXE) $(P_GEN_CAT) $(P_CORE_SOURCES) > $(P_BUILD_DIR)/CORE.setting
@echo "The following step can take a long time, please be patient."
./$(PERL6_EXE) --setting=NULL --ll-exception --optimize=3 --target=pir --stagestats --output=$(SETTING_PIR) $(P_BUILD_DIR)/CORE.setting
$(PARROT) $(PARROT_ARGS) -o $(SETTING_PBC) $(SETTING_PIR)
Expand All @@ -435,7 +435,7 @@ $(R_SETTING_PBC): $(PERL6_B_PBC) $(PERL6_EXE) $(SETTING_PBC) $(R_SETTING_SRC)
$(PARROT) $(PARROT_ARGS) -o $(R_SETTING_PBC) $(R_SETTING_PIR)

$(PERL6_DEBUG_PBC): $(PERL6_PBC) src/perl6-debug.nqp
$(PERL) $(P_GEN_CAT) src/perl6-debug.nqp $(P_BUILD_DIR)/main-version.nqp > $(P_BUILD_DIR)/p-perl6-debug.nqp
$(NQP_EXE) $(P_GEN_CAT) src/perl6-debug.nqp $(P_BUILD_DIR)/main-version.nqp > $(P_BUILD_DIR)/p-perl6-debug.nqp
$(NQP_EXE) --vmlibs=perl6_ops --target=pir --output=src/gen/perl6-debug.pir \
$(P_BUILD_DIR)/p-perl6-debug.nqp
$(PARROT) $(PARROT_ARGS) -o $(PERL6_DEBUG_PBC) src/gen/perl6-debug.pir
Expand Down
32 changes: 32 additions & 0 deletions tools/build/gen-cat.nqp
@@ -0,0 +1,32 @@
#!/usr/bin/env nqp
# Copyright (C) 2014, The Perl Foundation


sub MAIN(*@ARGS) {
my $program := @ARGS.shift;
my $backend := @ARGS.shift;
say("# This file automatically generated by $program\n");
for @ARGS -> $file {
say("# From $file\n");
my $fh := open($file, :r);
my $in_cond := 0;
my $in_omit := 0;
while nqp::readlinefh($fh) -> $_ {
if my $x := $_ ~~ / ^ '#?if' \s+ ('!')? \s* (\w+) \s* $ / {
nqp::die("Nested conditionals not supported") if $in_cond;
$in_cond := 1;
$in_omit := $x[0] && $x[1] eq $backend || !$x[0] && $x[1] ne $backend;
} elsif $_ ~~ /^ '#?endif' / {
$in_cond := 0;
$in_omit := 0;
} elsif !$in_omit {
print($_) unless $_ ~~ /^ '# ' \w /;
}
}
close($fh);
}
say("\n# vim: set ft=perl6 nomodifiable :");
}


# vim: set ft=perl6 :

0 comments on commit 397b4e4

Please sign in to comment.