Skip to content

Commit 32172c4

Browse files
authored
Merge pull request #172 from cesanta/no_common
Add mjs_no_common.c
2 parents c0ae692 + 35af732 commit 32172c4

8 files changed

+10106
-856
lines changed

Makefile

+28-25
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
MAKEFLAGS += --warn-undefined-variables
12
SRCPATH = src
23
BUILD_DIR = build
34

@@ -7,12 +8,13 @@ DOCKER_CLANG ?= $(RD) mgos/clang
78

89
include $(SRCPATH)/mjs_sources.mk
910

10-
TOP_SOURCES = $(addprefix $(SRCPATH)/, $(SOURCES))
1111
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))
1415

15-
MFLAGS += -I. -Isrc
16+
CFLAGS_EXTRA ?=
17+
MFLAGS += -I. -Isrc -Isrc/frozen
1618
MFLAGS += -DMJS_MAIN -DMJS_EXPOSE_PRIVATE -DCS_ENABLE_STDIO -DMJS_ENABLE_DEBUG -I../frozen
1719
MFLAGS += $(CFLAGS_EXTRA)
1820
CFLAGS += -lm -std=c99 -Wall -Wextra -pedantic -g $(MFLAGS)
@@ -45,39 +47,46 @@ endif
4547

4648
PROG = $(BUILD_DIR)/mjs
4749

48-
all: $(PROG)
50+
all: mjs.c mjs_no_common.c $(PROG)
4951

5052
TESTUTIL_FILES = $(SRCPATH)/common/cs_dirent.c \
5153
$(SRCPATH)/common/cs_time.c \
5254
$(SRCPATH)/common/test_main.c \
5355
$(SRCPATH)/common/test_util.c
5456

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"
5759
$(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)) > $@
6262

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"
6565
$(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)) > $@
6978

7079
CFLAGS += $(COMMON_CFLAGS)
7180

7281
# NOTE: we compile straight from sources, not from the single amalgamated file,
7382
# 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)
7685

7786
$(BUILD_DIR):
7887
mkdir -p $@
7988

80-
$(BUILD_DIR)/%.o: %.c $(TOP_HEADERS)
89+
$(BUILD_DIR)/%.o: %.c $(TOP_HEADERS) mjs.h
8190
$(CLANG) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
8291

8392
COMMON_TEST_FLAGS = -W -Wall -I. -Isrc -g3 -O0 $(COMMON_CFLAGS) $< $(TESTUTIL_FILES) -DMJS_MEMORY_STATS
@@ -199,12 +208,6 @@ test: $(firstword $(TEST_VARIANTS))
199208
clean:
200209
rm -rf $(BUILD_DIR) *.obj mjs.c mjs.h _CL_*
201210

202-
print_sources:
203-
@echo $(TOP_SOURCES) $(TOP_HEADERS)
204-
205-
print_source_dirs:
206-
@echo $(TOP_SOURCES_DIRS) $(TOP_HEADERS_DIRS)
207-
208211
difftest:
209212
@TMP=`mktemp -t checkout-diff.XXXXXX`; \
210213
git diff >$$TMP ; \

0 commit comments

Comments
 (0)