ICFP 2007 Contest: https://web.archive.org/web/20090301164728/https://save-endo.cs.uu.nl/

Factor out common rust Tup rules into script

+1 -1
.gitignore
···
task/endo.dna
.tup/
-
out/
+
/out/
+10 -8
Tupfile
···
-
RUSTC_FLAGS= --edition=2024 --crate-type bin --emit=link -C opt-level=3 -C embed-bitcode=no --check-cfg 'cfg (docsrs,test)' --check-cfg 'cfg(feature, values())' --out-dir out/bin -C strip=debuginfo -L dependency=out/bin
+
RUSTC_FLAGS = --edition=2024 -C opt-level=3 -C embed-bitcode=no -C strip=debuginfo --emit=link
-
: dna2rna/src/*.rs |> rustc --crate-name dna2rna dna2rna/src/main.rs $(RUSTC_FLAGS) |> out/bin/dna2rna
-
: rna2bmp/src/*.rs |> rustc --crate-name rna2bmp rna2bmp/src/main.rs $(RUSTC_FLAGS) |> out/bin/rna2bmp
-
: asm2dna/src/*.rs |> rustc --crate-name asm2dna asm2dna/src/main.rs $(RUSTC_FLAGS) |> out/bin/asm2dna
+
run python3 generate_crate_rule.py lib dna_parsing
+
run python3 generate_crate_rule.py bin dna2rna dna_parsing
+
run python3 generate_crate_rule.py bin disassembler dna_parsing
+
run python3 generate_crate_rule.py bin rna2bmp
+
run python3 generate_crate_rule.py bin asm2dna
-
: foreach asm/*.asm | out/bin/asm2dna |> ./out/bin/asm2dna %f out/dna/%B.dna |> out/dna/%B.dna
+
: foreach asm/*.asm | out/bin/asm2dna |> ./out/bin/asm2dna %f %o |> out/dna/%B.dna
-
: foreach out/dna/*.dna | out/bin/dna2rna |> ./out/bin/dna2rna %f task/endo.dna out/rna/%B.rna |> out/rna/%B.rna
+
: foreach out/dna/*.dna | out/bin/dna2rna |> ./out/bin/dna2rna %f task/endo.dna %o |> out/rna/%B.rna
-
: foreach out/rna/*.rna | out/bin/rna2bmp |> ./out/bin/rna2bmp %f out/bmp/%B.bmp |> out/bmp/%B.bmp
+
: foreach out/rna/*.rna | out/bin/rna2bmp |> ./out/bin/rna2bmp %f %o |> out/bmp/%B.bmp
-
: foreach out/bmp/*.bmp |> convert %f out/png/%B.png |> out/png/%B.png
+
: foreach out/bmp/*.bmp |> convert %f %o |> out/png/%B.png
+20
generate_crate_rule.py
···
+
import sys
+
+
# 'lib' or 'bin'
+
crate_type = sys.argv[1]
+
crate_name = sys.argv[2]
+
if crate_type == "bin":
+
input_rs = f"{crate_name}/src/main.rs"
+
outfile = f"out/bin/{crate_name}"
+
else:
+
input_rs = f"{crate_name}/src/lib.rs"
+
outfile = f"out/lib/lib{crate_name}.rlib"
+
+
dep_crates = sys.argv[3:]
+
dep_inputs = " ".join([f"out/lib/lib{dep}.rlib" for dep in dep_crates])
+
externs = " ".join([f"--extern {dep}=out/lib/lib{dep}.rlib" for dep in dep_crates])
+
+
flags = "--edition=2024 -C opt-level=3 -C embed-bitcode=no -C strip=debuginfo --emit=link"
+
+
inputs = f"{crate_name}/src/*.rs"
+
print(f": {crate_name}/src/*.rs {dep_inputs} |> rustc --crate-name {crate_name} --crate-type={crate_type} {input_rs} -o %o {externs} {flags} |> {outfile}")