-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
80 lines (54 loc) · 3.92 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
SHELL := /bin/bash
.PHONY: default genarm genarm-lite archive archive-lite all tests clean realclean deepclean
default: all
ASL_PARSER = ./submodules/arm-asl-parser
PARSED = ./data/parsed
HS_SOURCES := $(shell find ./lib ./exe -name '*.hs' -not -path '*/\.*' -not -name 'Normalize.hs' -not -name 'ExprTree.hs') $(shell find . -name '*.cabal')
cabal.project: cabal.project.newbuild
cp $< $@
.PRECIOUS: ${PARSED}/%.sexpr ./data/%.asl ${ASL_PARSER}/asl/%.asl ${ASL_PARSER}/asl-parsed/%.sexpr
${PARSED}/%.sexpr: ${ASL_PARSER}/asl-parsed/%.sexpr ./data/%.asl
cp $< $@
${PARSED}/extra_defs.sexpr: ./data/extra_defs.asl
cd ${ASL_PARSER}/asl-parser-java && \
./gradlew -q run --args="defs $(abspath $<)" > $(abspath $@) && \
[[ -s $(abspath $@) ]] || (rm -f $(abspath $@) && exit 1)
${ASL_PARSER}/asl/%.asl: ./data/%.asl
mkdir -p ${ASL_PARSER}/asl
cp $< $@
${ASL_PARSER}/asl-parsed/%.sexpr: ${ASL_PARSER}/asl/%.asl
$(MAKE) --directory=${ASL_PARSER} ./asl-parsed/$(@F)
SPEC_FILES = arm_defs.sexpr arm_instrs.sexpr support.sexpr arm_regs.sexpr extra_defs.sexpr
SOURCE_FILES = $(SPEC_FILES:%.sexpr=${PARSED}/%.sexpr)
./output/instructions.what4 ./output/functions.what4 &:: ${SOURCE_FILES} ${HS_SOURCES}
cabal v2-build --builddir=asl-build dismantle-arm-xml -f -asl-lite
cabal v2-run --builddir=asl-build asl-translator-exec -f -asl-lite -- --output-functions="./output/functions.what4" --output-instructions="./output/instructions.what4" --output-global-sigs="./output/global_sigs.txt" --asl-spec="${PARSED}/" --parallel
./output/instructions-lite.what4 ./output/functions-lite.what4 &:: ${SOURCE_FILES} ${HS_SOURCES}
cabal v2-build --builddir=asl-lite-build dismantle-arm-xml -f asl-lite
cabal v2-run --builddir=asl-lite-build asl-translator-exec -f asl-lite -- --output-functions="./output/functions-lite.what4" --output-instructions="./output/instructions-lite.what4" --output-global-sigs="./output/global_sigs.txt" --asl-spec="${PARSED}/" --parallel
./output/instructions-norm.what4 ./output/functions-norm.what4 &:: ./output/instructions.what4 ./output/functions.what4 ./lib/Language/ASL/Formulas/Normalize.hs
cabal v2-build --builddir=asl-build dismantle-arm-xml -f -asl-lite
cabal v2-run --builddir=asl-build asl-translator-exec -f -asl-lite -- --output-norm-functions="./output/functions-norm.what4" --output-norm-instructions="./output/instructions-norm.what4" --output-instructions="./output/instructions.what4" --output-functions="./output/functions.what4" --output-global-sigs="./output/global_sigs.txt" --normalize-mode=all
./output/instructions-norm-lite.what4 ./output/functions-norm-lite.what4 &:: ./output/instructions-lite.what4 ./output/functions-lite.what4 ./lib/Language/ASL/Formulas/Normalize.hs
cabal v2-build --builddir=asl-lite-build dismantle-arm-xml -f asl-lite
cabal v2-run --builddir=asl-lite-build asl-translator-exec -f asl-lite -- --output-norm-functions="./output/functions-norm-lite.what4" --output-norm-instructions="./output/instructions-norm-lite.what4" --output-instructions="./output/instructions-lite.what4" --output-functions="./output/functions-lite.what4" --output-global-sigs="./output/global_sigs.txt" --normalize-mode=all
./archived/%.what4.gz: ./output/%.what4
gzip --best --stdout $< > $@
genarm: ./output/instructions-norm.what4 ./output/functions-norm.what4
genarm-lite: ./output/instructions-norm-lite.what4 ./output/functions-norm-lite.what4
archive: ./archived/instructions-norm.what4.gz ./archived/functions-norm.what4.gz
archive-lite: ./archived/instructions-norm-lite.what4.gz ./archived/functions-norm-lite.what4.gz
all:
cabal v2-build asl-translator
tests:
rm -f ./archived/formulas.what4.gz
rm -f ./output/formulas.what4
cabal v2-test asl-translator-genarm-test
cabal v2-test asl-translator-formula-test
clean:
rm -f ./output/*.what4
realclean: clean
mv ./data/extra_defs.asl . ; rm -rf ./data/*.asl ; mv ./extra_defs.asl ./data/
rm -f ./data/Parsed/*
deepclean: realclean
$(MAKE) --directory=${ASL_PARSER} realclean