summaryrefslogtreecommitdiff
path: root/src/Makefile
blob: 39fc6acf29da28080b791a0d514f4d24074e49f2 (plain)
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
.PHONY: all sail test clean doc lib power test_power test_idempotence

all: sail lib doc

full: sail lib power doc test

sail:
	ocamlbuild sail.native sail_lib.cma sail_lib.cmxa

interpreter: 
	ocamlbuild lem_interp/extract.cmxa
	ocamlbuild lem_interp/extract.cma

elf:
	ocamlbuild -use-ocamlfind -pkgs batteries,uint,unix,zarith src_elf/main_elf.native
	ocamlbuild -use-ocamlfind -pkgs batteries,uint,unix,zarith src_elf/abis/power64/abi_power64.cmxa
	ocamlbuild -use-ocamlfind -pkgs batteries,uint,unix,zarith src_elf/abis/power64/abi_power64.cma
	ocamlbuild -use-ocamlfind -pkgs batteries,uint,unix,zarith src_elf/abis/aarch64/abi_aarch64_le.cmxa
	ocamlbuild -use-ocamlfind -pkgs batteries,uint,unix,zarith src_elf/abis/aarch64/abi_aarch64_le.cma

test: sail interpreter
	ocamlbuild test/run_tests.native
	./run_tests.native

LEM = ~/bitbucket/lem/lem
LEMLIBOCAML = ~/bitbucket/lem/ocaml-lib/

ELFDIR= ../../../bitbucket/linksem

get_elf:
	-chmod u+w src_elf/*.ml*
	-chmod u+w src_elf/abis/*.ml*	
	-chmod u+w src_elf/abis/amd64/*.ml*
	-chmod u+w src_elf/abis/power64/*.ml*
	-chmod u+w src_elf/abis/aarch64/*.ml*
	-chmod u+w src_elf/abis/x86/*.ml*
	-chmod u+w src_elf/abis/mips64/*.ml*
	-chmod u+w src_elf/adaptors/*.ml*
	-chmod u+w src_elf/gnu_extensions/*.ml*
	rm -rf src_elf/*.ml*
	rm -rf src_elf/abis/*.ml*
	rm -rf src_elf/abis/amd64/*.ml*
	rm -rf src_elf/abis/power64/*.ml*
	rm -rf src_elf/abis/aarch64/*.ml*
	rm -rf src_elf/abis/x86/*.ml*
	rm -rf src_elf/abis/mips64/*.ml*
	rm -rf src_elf/adaptors/*.ml*
	rm -rf src_elf/gnu_extensions/*.ml*
	$(MAKE) -C $(ELFDIR)/src clean
	$(MAKE) -C $(ELFDIR)/src lem-all-ocaml
	mkdir -p src_elf/{abis,adaptors,gnu_extensions}
	mkdir -p src_elf/abis/{aarch64,amd64,power64,x86,mips64}
	cp -a $(ELFDIR)/src/*.ml src_elf
	cp -a $(ELFDIR)/src/abis/*.ml src_elf/abis
	cp -a $(ELFDIR)/src/abis/amd64/*.ml src_elf/abis/amd64
	cp -a $(ELFDIR)/src/abis/power64/*.ml src_elf/abis/power64
	cp -a $(ELFDIR)/src/abis/aarch64/*.ml src_elf/abis/aarch64
	cp -a $(ELFDIR)/src/abis/x86/*.ml src_elf/abis/x86
	cp -a $(ELFDIR)/src/abis/mips64/*.ml src_elf/abis/mips64
	cp -a $(ELFDIR)/src/adaptors/*.ml src_elf/adaptors
	cp -a $(ELFDIR)/src/gnu_extensions/*.ml* src_elf/gnu_extensions
	chmod ugo-w src_elf/*.ml*
	chmod ugo-w src_elf/abis/*.ml*
	chmod ugo-w src_elf/abis/amd64/*.ml*
	chmod ugo-w src_elf/abis/power64/*.ml*
	chmod ugo-w src_elf/abis/aarch64/*.ml*
	chmod ugo-w src_elf/abis/x86/*.ml*
	chmod ugo-w src_elf/abis/mips64/*.ml*
	chmod ugo-w src_elf/adaptors/*.ml*
	chmod ugo-w src_elf/gnu_extensions/*.ml*


power: sail interpreter elf
	mkdir -p _build/test
	cp -p test/* _build/test/
	cd _build/test ;\
	../../sail.native -lem_ast power.sail ;\
	$(LEM) -ocaml -only_changed_output -lib ../lem_interp/ power.lem;\
	env OCAMLRUNPARAM=l=100M ocamlfind ocamlopt -package num -package bitstring -package batteries -package uint -I $(LEMLIBOCAML) -I ../lem_interp/ -I ../elf_model/ -linkpkg $(LEMLIBOCAML)extract.cmxa ../pprint/src/PPrintLib.cmxa ../lem_interp/extract.cmxa elf_extract.cmxa power.ml run_power.ml -o run_power.native
	ln -fs _build/test/run_power.native run_power.native

mips.lem: ../mips/mips.sail sail
	./sail.native -lem_ast $<

%.ml: %.lem
	$(LEM) -ocaml -only_changed_output -lib lem_interp/ $<

run_mips.native: mips.ml ../mips/mips_extras.ml interpreter
	env OCAMLRUNPARAM=l=100M ocamlfind ocamlopt -package zarith -package num -package batteries -package uint -I $(LEMLIBOCAML) -I _build/lem_interp/ -I $(ELFDIR)/src  -I $(ELFDIR)/src/adaptors -I $(ELFDIR)/src/abis/mips64 -I ../mips -linkpkg $(LEMLIBOCAML)extract.cmxa $(ELFDIR)/src/linksem.cmxa _build/pprint/src/PPrintLib.cmxa _build/lem_interp/extract.cmxa mips.ml ../mips/mips_extras.ml lem_interp/run_with_elf.ml  -o run_mips.native

#	env OCAMLRUNPARAM=l=100M ocamlfind ocamlopt -package num -package bitstring -package batteries -package uint -I $(LEMLIBOCAML) -I ../lem_interp/ -I ../elf_model/ -linkpkg $(LEMLIBOCAML)extract.cmxa ../pprint/src/PPrintLib.cmxa ../lem_interp/extract.cmxa elf_extract.cmxa power.ml run_power.ml -o run_power.native
mips: sail interpreter elf
	mkdir -p _build/test
	cp -p test/* _build/test/
	cd _build/test ;\
	../../sail.native -lem_ast mips.sail ;\
	$(LEM) -ocaml -only_changed_output -lib ../lem_interp/ power.lem;\
	ln -fs _build/test/run_power.native run_power.native

test_power: power
	./run_power.native --file ../../../rsem/idl/power/binary/main.bin

test_power_interactive: power
	./run_power.native --interactive --file ../../../rsem/idl/power/binary/main.bin

test_power_interactive_srcs:
	ebig ~/rsem/idl/power/generated/power.sail ../../../rsem/idl/power/binary/hello.c  ../../../rsem/idl/power/binary/hello.s 

# or test/power.sail for cut-down one


test_idempotence: sail
	@cd test; for file in *.sail; do \
		./idempotence.sh $$file; echo ;\
	done

clean:
	-ocamlbuild -clean
	-rm -rf _build *.native
	-rm -rf html-doc
	-rm -rf tex-doc
	-rm -rf lem lib
	-rm -rf sail.docdir

doc:
	ocamlbuild sail.docdir/index.html

lib:
	ocamlbuild pretty_print.cmxa pretty_print.cma