-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
66 lines (47 loc) · 2.08 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
# -------------------------------
# Docker part
ARG := $(word 2, $(MAKECMDGOALS))
PROG := $(word 2, $(MAKECMDGOALS))
$(eval $(PROG):;@:)
docker_setup:
docker volume create katana
docker-compose build katana --parallel
docker_up:
docker-compose up -d
@echo 'Running docker Image, Port 3000 Exposed'
docker_down:
docker-compose down
docker_logs:
docker-compose logs -f $(ARG)
docker_run:
docker run --rm -it turbo_katana_katana:latest
katana:
@echo ">>> Running Turbo Katana v1.0.1.b"
@echo ">>> Target" $(PROG)
dune exec compilc $(PROG) | interprete/interp
# -------------------------------
# Other Part
LIB_SRCS := ast.ml optmanip.ml env.ml astmanip.ml addrs.ml contextual.ml util.ml vtable.ml compil.ml
BUILD_DIR := _build
LIB_CMXS := $(LIB_SRCS:.ml=.cmx)
LIB_OBJS := $(LIB_SRCS:.ml=.o)
LIB_FILES := $(LIB_SRCS:%=lib/%)
all: $(BUILD_DIR)/compilc.exe
$(BUILD_DIR)/compilc.exe: $(BUILD_DIR)/parser.mli $(BUILD_DIR)/parserMessages.ml $(BUILD_DIR)/lexer.ml bin/main.ml $(LIB_FILES)
cp $(LIB_FILES) $(BUILD_DIR)
cp bin/main.ml $(BUILD_DIR)
cd $(BUILD_DIR) && ocamlfind ocamlopt -package menhirLib -c ast.ml parser.mli
cd $(BUILD_DIR) && ocamlfind ocamlopt -package menhirLib -for-pack Libcompil -c $(LIB_SRCS) parser.ml parserMessages.ml lexer.ml
cd $(BUILD_DIR) && ocamlfind ocamlopt -pack -o libcompil.cmx $(LIB_CMXS) parser.cmx parserMessages.cmx lexer.cmx
cd $(BUILD_DIR) && ocamlfind ocamlopt -package menhirLib -a -o libcompil.cmxa libcompil.cmx
cd $(BUILD_DIR) && ocamlfind ocamlopt -package menhirLib -c main.ml
cd $(BUILD_DIR) && ocamlfind ocamlopt -package menhirLib -o compilc.exe menhirLib.cmxa libcompil.cmxa main.cmx
$(BUILD_DIR)/lexer.ml: lib/lexer.mll $(BUILD_DIR)/parser.mli lib/ast.ml
ocamllex lib/lexer.mll -o $(BUILD_DIR)/lexer.ml
$(BUILD_DIR)/parser.mli: lib/parser.mly lib/ast.ml
cd $(BUILD_DIR) && menhir --dump --explain --table ../lib/parser.mly -b parser
$(BUILD_DIR)/parserMessages.ml: lib/parser.messages lib/parser.mly
menhir lib/parser.mly --compile-errors lib/parser.messages > $(BUILD_DIR)/parserMessages.ml
clean:
rm -rf $(BUILD_DIR)
mkdir $(BUILD_DIR)