1
+ MAKEFLAGS += --warn-undefined-variables
1
2
SRCPATH = src
2
3
BUILD_DIR = build
3
4
@@ -7,12 +8,13 @@ DOCKER_CLANG ?= $(RD) mgos/clang
7
8
8
9
include $(SRCPATH ) /mjs_sources.mk
9
10
10
- TOP_SOURCES = $(addprefix $(SRCPATH ) /, $(SOURCES ) )
11
11
TOP_HEADERS = $(addprefix $(SRCPATH ) /, $(HEADERS ) )
12
- TOP_SOURCES_DIRS = $(sort $(dir $(TOP_SOURCES ) ) )
13
- TOP_HEADERS_DIRS = $(sort $(dir $(TOP_HEADERS ) ) )
12
+ TOP_MJS_PUBLIC_HEADERS = $(addprefix $(SRCPATH ) /, $(MJS_PUBLIC_HEADERS ) )
13
+ TOP_MJS_SOURCES = $(addprefix $(SRCPATH ) /, $(MJS_SOURCES ) )
14
+ TOP_COMMON_SOURCES = $(addprefix $(SRCPATH ) /, $(COMMON_SOURCES ) )
14
15
15
- MFLAGS += -I. -Isrc
16
+ CFLAGS_EXTRA ?=
17
+ MFLAGS += -I. -Isrc -Isrc/frozen
16
18
MFLAGS += -DMJS_MAIN -DMJS_EXPOSE_PRIVATE -DCS_ENABLE_STDIO -DMJS_ENABLE_DEBUG -I../frozen
17
19
MFLAGS += $(CFLAGS_EXTRA )
18
20
CFLAGS += -lm -std=c99 -Wall -Wextra -pedantic -g $(MFLAGS )
@@ -45,39 +47,46 @@ endif
45
47
46
48
PROG = $(BUILD_DIR ) /mjs
47
49
48
- all : $(PROG )
50
+ all : mjs.c mjs_no_common.c $(PROG )
49
51
50
52
TESTUTIL_FILES = $(SRCPATH ) /common/cs_dirent.c \
51
53
$(SRCPATH ) /common/cs_time.c \
52
54
$(SRCPATH ) /common/test_main.c \
53
55
$(SRCPATH ) /common/test_util.c
54
56
55
- mjs.c : $(TOP_SOURCES ) mjs.h Makefile
56
- @printf " AMALGAMATING mjs.c \n"
57
+ mjs.h : $(TOP_MJS_PUBLIC_HEADERS ) Makefile tools/amalgam.py
58
+ @printf " AMALGAMATING $@ \n"
57
59
$(Q ) (tools/amalgam.py \
58
- --autoinc --exportable-headers -I src -I src/frozen --prefix MJS \
59
- --public-header mjs.h --ignore mjs.h \
60
- --first common/platform.h,common/platforms/platform_windows.h,common/platforms/platform_unix.h,common/platforms/platform_esp_lwip.h \
61
- $(TOP_SOURCES)) > $@
60
+ --autoinc -I src --prefix MJS --strict --license src/mjs_license.h \
61
+ --first common/platform.h $(TOP_MJS_PUBLIC_HEADERS)) > $@
62
62
63
- mjs.h : $(TOP_HEADERS ) $(TOP_SOURCES ) Makefile tools/amalgam.py
64
- @printf " AMALGAMATING mjs.h \n"
63
+ mjs.c : $(TOP_COMMON_SOURCES ) $(TOP_MJS_SOURCES ) mjs.h Makefile
64
+ @printf " AMALGAMATING $@ \n"
65
65
$(Q ) (tools/amalgam.py \
66
- --autoinc --exportable-headers -I src --prefix MJS --strict \
67
- --ignore mjs.h \
68
- --first common/platform.h $(filter %_public.h,$(TOP_HEADERS))) > $@
66
+ --autoinc -I src -I src/frozen --prefix MJS --license src/mjs_license.h \
67
+ --license src/mjs_license.h --public-header mjs.h --autoinc-ignore mjs_*_public.h \
68
+ --first mjs_common_guard_begin.h,common/platform.h,common/platforms/platform_windows.h,common/platforms/platform_unix.h,common/platforms/platform_esp_lwip.h \
69
+ $(TOP_COMMON_SOURCES) $(TOP_MJS_SOURCES)) > $@
70
+
71
+ mjs_no_common.c : $(TOP_MJS_SOURCES ) mjs.h Makefile
72
+ @printf " AMALGAMATING $@ \n"
73
+ $(Q ) (tools/amalgam.py \
74
+ --autoinc -I src -I src/frozen --prefix MJS --license src/mjs_license.h \
75
+ --public-header mjs.h --ignore mjs.h,*common/*,*frozen.[ch] \
76
+ --first mjs_common_guard_begin.h,common/platform.h,common/platforms/platform_windows.h,common/platforms/platform_unix.h,common/platforms/platform_esp_lwip.h \
77
+ $(TOP_MJS_SOURCES)) > $@
69
78
70
79
CFLAGS += $(COMMON_CFLAGS )
71
80
72
81
# NOTE: we compile straight from sources, not from the single amalgamated file,
73
82
# in order to make sure that all sources include the right headers
74
- $(PROG ) : $(TOP_SOURCES ) $(TOP_HEADERS ) $(BUILD_DIR )
75
- $(DOCKER_CLANG ) clang $(CFLAGS ) $(CPPFLAGS ) $(TOP_SOURCES ) -o $(PROG )
83
+ $(PROG ) : $(TOP_MJS_SOURCES ) $( TOP_COMMON_SOURCES ) $(TOP_HEADERS ) $(BUILD_DIR )
84
+ $(DOCKER_CLANG ) clang $(CFLAGS ) $(TOP_MJS_SOURCES ) $(TOP_COMMON_SOURCES ) -o $(PROG )
76
85
77
86
$(BUILD_DIR ) :
78
87
mkdir -p $@
79
88
80
- $(BUILD_DIR ) /% .o : % .c $(TOP_HEADERS )
89
+ $(BUILD_DIR ) /% .o : % .c $(TOP_HEADERS ) mjs.h
81
90
$(CLANG ) $(CFLAGS ) $(CPPFLAGS ) -c -o $@ $<
82
91
83
92
COMMON_TEST_FLAGS = -W -Wall -I. -Isrc -g3 -O0 $(COMMON_CFLAGS ) $< $(TESTUTIL_FILES ) -DMJS_MEMORY_STATS
@@ -199,12 +208,6 @@ test: $(firstword $(TEST_VARIANTS))
199
208
clean :
200
209
rm -rf $(BUILD_DIR ) * .obj mjs.c mjs.h _CL_*
201
210
202
- print_sources :
203
- @echo $(TOP_SOURCES ) $(TOP_HEADERS )
204
-
205
- print_source_dirs :
206
- @echo $(TOP_SOURCES_DIRS ) $(TOP_HEADERS_DIRS )
207
-
208
211
difftest :
209
212
@TMP=` mktemp -t checkout-diff.XXXXXX` ; \
210
213
git diff > $$ TMP ; \
0 commit comments