|
1 | 1 | BUILD_MODE=dev |
2 | | -export BUILD_MODE |
3 | | - |
4 | | -ifeq ($(OS),Windows_NT) |
5 | | - SOEXT=.dll |
6 | | -else |
7 | | - SOEXT=.so |
8 | | -endif |
9 | | - |
10 | | -PROCS=0 PREFIX=install |
| 2 | +PROCS=0 |
11 | 3 | PYTHON=python |
12 | 4 | MAVEN=mvn |
13 | | -NPM_INSTALL_CACHE=true |
14 | | -NPMRC= |
15 | | -BUILD_DIR=/undefined |
16 | | -LKQL_DIR=$(BUILD_DIR)/lkql |
17 | 5 | GPRBUILD=gprbuild -j$(PROCS) -p -XBUILD_MODE=$(BUILD_MODE) |
18 | | -GPRINSTALL=gprinstall --prefix=$(PREFIX) -p -XBUILD_MODE=$(BUILD_MODE) |
19 | | -BUILD_FOR_JIT=false |
20 | | -LKM=$(PYTHON) -m langkit.scripts.lkm |
| 6 | +LKM="$(PYTHON)" -m langkit.scripts.lkm |
21 | 7 | KP_JSON=lkql_checker/share/lkql/kp/kp.json |
| 8 | +ADDITIONAL_LKM_ARGS= |
| 9 | +LKM_ARGS=--build-mode=$(BUILD_MODE) --library-types=relocatable --maven-executable $(MAVEN) -j$(PROCS) $(ADDITIONAL_LKM_ARGS) |
| 10 | +ADDITIONAL_MAVEN_ARGS= |
| 11 | +MAVEN_ARGS=-Dconfig.python="$(PYTHON)" $(ADDITIONAL_MAVEN_ARGS) |
22 | 12 |
|
23 | | -ifeq ($(BUILD_FOR_JIT),true) |
24 | | - MANAGE_ARGS=--build-dir=$(LKQL_DIR) --build-mode=$(BUILD_MODE) \ |
25 | | - --library-types=relocatable |
26 | | -else |
27 | | - MANAGE_ARGS=--build-dir=$(LKQL_DIR) --build-mode=$(BUILD_MODE) \ |
28 | | - --library-types=static |
29 | | -endif |
| 13 | +all: liblkqllang lkql_jit lkql_checker |
30 | 14 |
|
31 | | -ADDITIONAL_MANAGE_ARGS= |
32 | | -MAVEN_ARGS=-Dconfig.npmInstallCache=$(NPM_INSTALL_CACHE) -Dconfig.npmrc=$(NPMRC) -Dconfig.python=$(PYTHON) |
| 15 | +liblkqllang: |
| 16 | + $(LKM) make -c lkql/langkit.yaml \ |
| 17 | + --pass-on="emit railroad diagrams" \ |
| 18 | + --disable-java \ |
| 19 | + $(LKM_ARGS) |
33 | 20 |
|
34 | | -# WARNING: Note that for some reason parallelizing the build still doesn't work |
35 | | -all: lkql gnatcheck build_lkql_native_jit doc |
| 21 | +install_lkql_java_bindings: liblkqllang |
| 22 | + "$(MAVEN)" -f lkql/build/java/ install $(MAVEN_ARGS) |
36 | 23 |
|
37 | | -lkql: build/bin/liblkqllang_parse |
| 24 | +lkql_jit: install_lkql_java_bindings |
| 25 | + "$(MAVEN)" -f lkql_jit/ clean package -P native,$(BUILD_MODE) $(MAVEN_ARGS) |
| 26 | + |
| 27 | +lkql_checker: liblkqllang impacts |
| 28 | + $(GPRBUILD) -P lkql_checker/lkql_checker.gpr -p $(GPR_ARGS) -XBUILD_MODE=$(BUILD_MODE) |
38 | 29 |
|
39 | 30 | doc: |
40 | 31 | cd user_manual && make clean html |
41 | | - cd lkql_checker/doc && make generate html-all |
| 32 | + cd lkql_checker/doc && make generate all |
42 | 33 |
|
43 | 34 | impacts: |
44 | 35 | [ -f "$(KP_JSON)" ] || "$(PYTHON)" "./utils/impact-db_impacts_gen.py" |
45 | 36 |
|
46 | 37 | format: |
47 | 38 | gnatformat -P lkql_checker/lkql_checker.gpr --no-subprojects |
48 | | - $(MAVEN) -f lkql_jit spotless:apply $(MAVEN_ARGS) |
49 | | - |
50 | | -gnatcheck: lkql impacts |
51 | | - gprbuild -P lkql_checker/lkql_checker.gpr -p $(GPR_ARGS) -XBUILD_MODE=$(BUILD_MODE) |
52 | | - |
53 | | -build/bin/liblkqllang_parse: lkql/lkql.lkt |
54 | | - $(LKM) make -c lkql/langkit.yaml \ |
55 | | - --pass-on="emit railroad diagrams" \ |
56 | | - --enable-java \ |
57 | | - --maven-executable $(MAVEN) \ |
58 | | - --build-mode=$(BUILD_MODE) \ |
59 | | - $(ADDITIONAL_MANAGE_ARGS) |
| 39 | + "$(MAVEN)" -f lkql_jit spotless:apply $(MAVEN_ARGS) |
60 | 40 |
|
61 | 41 | test: |
62 | | - testsuite/testsuite.py -Edtmp |
| 42 | + testsuite/testsuite.py -j$(PROCS) -Edtmp |
63 | 43 |
|
64 | | -clean: clean_lkql_jit clean_lkql_checker clean_lkql |
| 44 | +clean: clean_lkql_jit clean_lkql_checker clean_liblkqllang |
65 | 45 |
|
66 | | -clean_lkql: |
| 46 | +clean_liblkqllang: |
67 | 47 | rm lkql/build -rf |
68 | 48 |
|
69 | 49 | clean_lkql_jit: |
70 | | - cd lkql_jit && $(MAVEN) clean |
| 50 | + "$(MAVEN)" -f lkql_jit clean $(MAVEN_ARGS) |
71 | 51 |
|
72 | 52 | clean_lkql_checker: |
73 | 53 | cd lkql_checker && gprclean |
74 | | - [ -f $(KP_JSON) ] && rm $(KP_JSON) |
75 | | - |
76 | | -build_lkql_jit: lkql |
77 | | - $(MAVEN) -f lkql/build/java/ install |
78 | | - $(MAVEN) -f lkql_jit/ clean package $(MAVEN_ARGS) |
79 | | - |
80 | | -build_lkql_native_jit: lkql |
81 | | - $(MAVEN) -f lkql/build/java/ install |
82 | | - $(MAVEN) -f lkql_jit/ clean package -P native,$(BUILD_MODE) $(MAVEN_ARGS) |
83 | | - |
84 | | -.PHONY: lkql_checker |
85 | | - |
86 | | -automated: |
87 | | - rm -rf "$(PREFIX)" |
88 | | - mkdir -p "$(PREFIX)/share" "$(PREFIX)/share/examples" "$(PREFIX)/lib" |
89 | | - $(LKM) make -c lkql/langkit.yaml $(MANAGE_ARGS) $(ADDITIONAL_MANAGE_ARGS) |
90 | | - $(GPRBUILD) -Plkql_checker/lkql_checker.gpr -largs -s |
91 | | - $(GPRINSTALL) --mode=usage -Plkql_checker/lkql_checker.gpr |
92 | | - $(GPRINSTALL) --mode=usage -P$(LKQL_DIR)/mains.gpr |
93 | | - cp -pr lkql_checker/share/lkql "$(PREFIX)/share" |
94 | | - cp -pr lkql_checker/share/examples "$(PREFIX)/share/examples/gnatcheck" |
| 54 | + [ -f "$(KP_JSON)" ] && rm "$(KP_JSON)" |
95 | 55 |
|
96 | | -automated-cov: |
97 | | - rm -rf "$(PREFIX)" "$(BUILD_DIR)" |
98 | | - mkdir -p "$(PREFIX)/share/lkql" "$(LKQL_DIR)" |
99 | | - $(LKM) make -c lkql/langkit.yaml $(MANAGE_ARGS) $(ADDITIONAL_MANAGE_ARGS) --coverage |
100 | | - $(LKM) install -c lkql/langkit.yaml $(MANAGE_ARGS) $(PREFIX) |
101 | | - # Build and install the lkql_checker program. Instrument it first. |
102 | | - # Note that we just copy the sources to the build directory since |
103 | | - # "gnatcov instrument" does not support build tree relocation. |
104 | | - cp -pr lkql_checker "$(BUILD_DIR)" |
105 | | - gnatcov instrument "-P$(BUILD_DIR)/lkql_checker/lkql_checker.gpr" \ |
106 | | - --level=stmt --no-subprojects --dump-trigger=atexit \ |
107 | | - -XBUILD_MODE=$(BUILD_MODE) |
108 | | - $(GPRBUILD) "-P$(BUILD_DIR)/lkql_checker/lkql_checker.gpr" \ |
109 | | - --src-subdirs=gnatcov-instr --implicit-with=gnatcov_rts |
110 | | - $(GPRINSTALL) --mode=dev "-P$(BUILD_DIR)/lkql_checker/lkql_checker.gpr" |
111 | | - cp -pr lkql_checker/share/lkql "$(PREFIX)/share" |
112 | | - # Ship coverage data files for liblkqllang and lkql_checker so that the |
113 | | - # testsuite can use them. |
114 | | - cp -p "$(LKQL_DIR)/obj/instr/sids/"*.sid "$(PREFIX)/lib/liblkqllang.static" |
115 | | - mkdir -p "$(PREFIX)/lib/lkql_checker" |
116 | | - cp -p "$(BUILD_DIR)/lkql_checker/obj/$(BUILD_MODE)/"*.sid \ |
117 | | - "$(PREFIX)/lib/lkql_checker" |
| 56 | +.PHONY: liblkqllang install_lkql_java_bindings lkql_jit gnatcheck doc impacts format test clean_liblkqllang clean_lkql_jit clean_gnatcheck |
0 commit comments