mirror of
https://github.com/pakt/ropc
synced 2026-06-08 16:36:27 +00:00
85 lines
2.4 KiB
Makefile
85 lines
2.4 KiB
Makefile
BAP_DIR = ./bap-0.4
|
|
|
|
BAP_LIB_DIR = $(BAP_DIR)/ocaml/
|
|
LIBASMIR=$(BAP_DIR)/libasmir/src
|
|
BIGINT=$(BAP_DIR)/bigint-3.12/otherlibs/num
|
|
BATT=$(BAP_DIR)/batteries-1.4.0/_build/src
|
|
OUNIT=$(BAP_DIR)/ounit-1.1.0/_build/src/
|
|
PCRE=$(BAP_DIR)/pcre-ocaml-release-6.2.2/lib
|
|
INC=$(BAP_LIB_DIR) $(PCRE) $(LIBASMIR) $(BATT) $(OUNIT) $(BIGINT)
|
|
INC_PARAMS=$(foreach d, $(INC), -I $d)
|
|
|
|
PACKS = bigarray,str,ocamlgraph,unix,camomile,threads
|
|
BAP = $(BAP_LIB_DIR)/bap.cma
|
|
|
|
OBJS = common.cmo ast.cmo lexer.cmo parser.cmo main.cmo
|
|
|
|
GADGET_OBJS = common.cmo int_utils.cmo gdefs.cmo
|
|
VERIFY_OBJS = common.cmo int_utils.cmo gdefs.cmo
|
|
|
|
OPTS =
|
|
|
|
all: dumper verify gadget ropc
|
|
|
|
ropc: common.cmo lexer.cmo cdefs.cmo analysis.cmo main.cmo
|
|
ocamlfind ocamlc -package extlib -linkpkg -o ropc common.cmo ast.cmo lexer.cmo parser.cmo cdefs.cmo analysis.cmo main.cmo
|
|
|
|
analysis.cmo: ast.cmo analysis.ml
|
|
ocamlc -c analysis.ml
|
|
|
|
cdefs.cmo: ast.cmo cdefs.ml
|
|
ocamlc -c cdefs.ml
|
|
|
|
main.cmo: lexer.cmo parser.cmo analysis.cmo main.ml
|
|
ocamlfind ocamlc -package extlib -c $(OPTS) main.ml
|
|
|
|
gadget: gadget.ml test.o $(GADGET_OBJS) $(BAP)
|
|
ocamlfind ocamlc -g -o gadget -package $(PACKS) -linkpkg -thread $(INC_PARAMS) pcre.cma $(LIBASMIR)/libasmir.a bap.cma $(GADGET_OBJS) gadget.ml
|
|
|
|
verify: verify.ml $(VERIFY_OBJS) $(BAP)
|
|
ocamlfind ocamlc -g -o verify -package $(PACKS) -linkpkg -thread $(INC_PARAMS) pcre.cma bap.cma $(VERIFY_OBJS) verify.ml
|
|
|
|
dumper: dumper.ml $(VERIFY_OBJS) $(BAP)
|
|
ocamlfind ocamlc -g -o dumper -package $(PACKS) -linkpkg -thread $(INC_PARAMS) pcre.cma bap.cma $(VERIFY_OBJS) dumper.ml
|
|
|
|
common.cmo: common.ml
|
|
ocamlc -c $(OPTS) $(INC_PARAMS) common.ml
|
|
|
|
int_utils.cmo: int_utils.ml
|
|
ocamlc -c $(OPTS) $(INC_PARAMS) int_utils.ml
|
|
|
|
gdefs.cmo: gdefs.ml
|
|
ocamlc -c $(OPTS) $(INC_PARAMS) gdefs.ml
|
|
|
|
test.o: test.asm
|
|
nasm -felf test.asm -o test.o
|
|
|
|
lexer.cmo: parser.cmo lexer.mll
|
|
ocamllex lexer.mll
|
|
ocamlc -c $(OPTS) lexer.ml
|
|
|
|
ast.cmo: ast.ml
|
|
ocamlc -c $(OPTS) ast.ml
|
|
|
|
parser.cmo: ast.cmo parser.mly
|
|
ocamlyacc parser.mly
|
|
ocamlc -c $(OPTS) parser.mli
|
|
ocamlc -c $(OPTS) parser.ml
|
|
|
|
asm: test.asm test.c
|
|
nasm -felf test.asm -o asm.o
|
|
gcc asm.o test.c
|
|
|
|
vg: asm
|
|
./gadget a.out candidates.bin
|
|
./verify candidates.bin vg.bin
|
|
./ropc examples-ropl/fib.ropl vg.bin
|
|
|
|
test-all: dumper gadget verify ropc vg
|
|
./a.out compiled.bin
|
|
|
|
clean:
|
|
rm -f *.o *.cmo *.cmi gadget verify a.out dumper ropc *.formula.txt parser.ml lexer.ml parser.mli lexer.mli
|
|
|
|
|