Skip to content

Commit 31f4b63

Browse files
committed
Update the build system to handle dependency on header files. Closes #2547.
1 parent f8afe10 commit 31f4b63

File tree

3 files changed

+16
-19
lines changed

3 files changed

+16
-19
lines changed

mk/platform.mk

+9-5
Original file line numberDiff line numberDiff line change
@@ -214,14 +214,16 @@ ifeq ($(CFG_C_COMPILER),clang)
214214
endif
215215
CFG_GCCISH_CFLAGS += -Wall -Werror -fno-rtti -g
216216
CFG_GCCISH_LINK_FLAGS += -g
217-
CFG_DEPEND_C = $(CFG_GCCISH_CROSS)$(CXX) $(CFG_GCCISH_CFLAGS) -MT "$(1)" \
218-
-MM $(2)
217+
# These flags will cause the compiler to produce a .d file
218+
# next to the .o file that lists header deps.
219+
CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d)
219220

220221
define CFG_MAKE_CC
221222
CFG_COMPILE_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \
222223
$$(CFG_GCCISH_CFLAGS) $$(CFG_CLANG_CFLAGS) \
223224
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
224225
$$(CFG_CLANG_CFLAGS_$$(HOST_$(1))) \
226+
$$(CFG_DEPEND_FLAGS) \
225227
-c -o $$(1) $$(2)
226228
CFG_LINK_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \
227229
$$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \
@@ -245,15 +247,17 @@ ifeq ($(CFG_C_COMPILER),gcc)
245247
endif
246248
CFG_GCCISH_CFLAGS += -Wall -Werror -fno-rtti -g
247249
CFG_GCCISH_LINK_FLAGS += -g
248-
CFG_DEPEND_C = $(CFG_GCCISH_CROSS)$(CXX) $(CFG_GCCISH_CFLAGS) -MT "$(1)" \
249-
-MM $(2)
250+
# These flags will cause the compiler to produce a .d file
251+
# next to the .o file that lists header deps.
252+
CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d)
250253

251254
define CFG_MAKE_CC
252255
CFG_COMPILE_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \
253256
$$(CFG_GCCISH_CFLAGS) \
254257
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
255258
$$(CFG_GCC_CFLAGS) \
256259
$$(CFG_GCC_CFLAGS_$$(HOST_$(1))) \
260+
$$(CFG_DEPEND_FLAGS) \
257261
-c -o $$(1) $$(2)
258262
CFG_LINK_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \
259263
$$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \
@@ -272,7 +276,7 @@ endif
272276
# We're using llvm-mc as our assembler because it supports
273277
# .cfi pseudo-ops on mac
274278
define CFG_MAKE_ASSEMBLER
275-
CFG_ASSEMBLE_$(1)=$$(CPP) $$(2) | \
279+
CFG_ASSEMBLE_$(1)=$$(CPP) $$(CFG_DEPEND_FLAGS) $$(2) | \
276280
$$(LLVM_MC_$$(CFG_HOST_TRIPLE)) \
277281
-assemble \
278282
-filetype=obj \

mk/rt.mk

+5-14
Original file line numberDiff line numberDiff line change
@@ -79,17 +79,6 @@ RUNTIME_S_$(1) := rt/arch/$$(HOST_$(1))/_context.S \
7979
rt/arch/$$(HOST_$(1))/ccall.S \
8080
rt/arch/$$(HOST_$(1))/record_sp.S
8181

82-
RUNTIME_HDR_$(1) := $$(wildcard \
83-
rt/*.h \
84-
rt/bigint/*.h \
85-
rt/isaac/*.h \
86-
rt/msvc/*.h \
87-
rt/sync/*.h \
88-
rt/uthash/*.h \
89-
rt/util/*.h \
90-
rt/vg/*.h \
91-
rt/arch/$$(HOST_$(1))/*.h)
92-
9382
ifeq ($$(HOST_$(1)), i386)
9483
LIBUV_ARCH_$(1) := ia32
9584
else
@@ -116,14 +105,17 @@ RUNTIME_INCS_$(1) := -I $$(S)src/rt -I $$(S)src/rt/isaac -I $$(S)src/rt/uthash \
116105
-I $$(S)src/libuv/include
117106
RUNTIME_OBJS_$(1) := $$(RUNTIME_CS_$(1):rt/%.cpp=rt/$(1)/%.o) \
118107
$$(RUNTIME_S_$(1):rt/%.S=rt/$(1)/%.o)
108+
RUNTIME_DEP_FILES_$(1) := $$(RUNTIME_OBJS_$(1):%.o=%.d)
109+
-include $$(RUNTIME_DEP_FILES_$(1))
110+
119111
RUNTIME_LIBS_$(1) := $$(LIBUV_LIB_$(1))
120112

121-
rt/$(1)/%.o: rt/%.cpp $$(RUNTIME_HDR_$(1)) $$(MKFILE_DEPS)
113+
rt/$(1)/%.o: rt/%.cpp $$(MKFILE_DEPS)
122114
@$$(call E, compile: $$@)
123115
$$(Q)$$(call CFG_COMPILE_C_$(1), $$@, $$(RUNTIME_INCS_$(1)) \
124116
$$(SNAP_DEFINES)) $$<
125117

126-
rt/$(1)/%.o: rt/%.S $$(RUNTIME_HDR_$(1)) $$(MKFILE_DEPS) \
118+
rt/$(1)/%.o: rt/%.S $$(MKFILE_DEPS) \
127119
$$(LLVM_CONFIG_$$(CFG_HOST_TRIPLE))
128120
@$$(call E, compile: $$@)
129121
$$(Q)$$(call CFG_ASSEMBLE_$(1),$$@,$$<)
@@ -134,7 +126,6 @@ rt/$(1)/arch/$$(HOST_$(1))/libmorestack.a: \
134126
$$(Q)ar rcs $$@ $$<
135127

136128
rt/$(1)/$(CFG_RUNTIME): $$(RUNTIME_OBJS_$(1)) $$(MKFILE_DEPS) \
137-
$$(RUNTIME_HDR_$(1)) \
138129
$$(RUNTIME_DEF_$(1)) \
139130
$$(RUNTIME_LIBS_$(1))
140131
@$$(call E, link: $$@)

mk/rustllvm.mk

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ RUSTLLVM_INCS_$(1) = $$(LLVM_EXTRA_INCDIRS_$(1)) \
2020
-iquote $$(LLVM_INCDIR_$(1)) \
2121
-iquote $$(S)src/rustllvm/include
2222
RUSTLLVM_OBJS_OBJS_$(1) := $$(RUSTLLVM_OBJS_CS_$(1):rustllvm/%.cpp=rustllvm/$(1)/%.o)
23+
RUSTLLVM_DEP_FILES_$(1) := $$(RUSTLLVM_OBJS_OBJS_$(1):%.o=%.d)
24+
-include $$(RUSTLLVM_DEP_FILES_$(1))
2325

2426
rustllvm/$(1)/$(CFG_RUSTLLVM): $$(RUSTLLVM_OBJS_OBJS_$(1)) \
2527
$$(MKFILE_DEPS) $$(RUSTLLVM_DEF_$(1))

0 commit comments

Comments
 (0)