Skip to content

Commit 42be216

Browse files
committed
mk: Refactor platform.mk a bit
1 parent 15c0c35 commit 42be216

File tree

1 file changed

+77
-81
lines changed

1 file changed

+77
-81
lines changed

mk/platform.mk

Lines changed: 77 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@ endef
1919
$(foreach t,$(CFG_TARGET_TRIPLES),$(eval $(call DEF_HOST_VAR,$(t))))
2020
$(foreach t,$(CFG_TARGET_TRIPLES),$(info cfg: host for $(t) is $(HOST_$(t))))
2121

22+
# Ditto for OSTYPE
23+
define DEF_OSTYPE_VAR
24+
OSTYPE_$(1) = $(subst $(firstword $(subst -, ,$(1)))-,,$(1))
25+
endef
26+
$(foreach t,$(CFG_TARGET_TRIPLES),$(eval $(call DEF_OSTYPE_VAR,$(t))))
27+
$(foreach t,$(CFG_TARGET_TRIPLES),$(info cfg: os for $(t) is $(OSTYPE_$(t))))
28+
2229
# FIXME: no-omit-frame-pointer is just so that task_start_wrapper
2330
# has a frame pointer and the stack walker can understand it. Turning off
2431
# frame pointers everywhere is overkill
@@ -33,6 +40,21 @@ CFG_DSYMUTIL := true
3340
# non-Darwin platforms; omitting it causes a full -R copy of lib/
3441
CFG_LIB_DSYM_GLOB=lib$(1)-*.dylib.dSYM
3542

43+
# Hack: not sure how to test if a file exists in make other than this
44+
OS_SUPP = $(patsubst %,--suppressions=%,\
45+
$(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*))
46+
47+
ifneq ($(findstring mingw,$(CFG_OSTYPE)),)
48+
CFG_WINDOWSY := 1
49+
endif
50+
51+
ifdef CFG_DISABLE_OPTIMIZE_CXX
52+
$(info cfg: disabling C++ optimization (CFG_DISABLE_OPTIMIZE_CXX))
53+
CFG_GCCISH_CFLAGS += -O0
54+
else
55+
CFG_GCCISH_CFLAGS += -O2
56+
endif
57+
3658
ifneq ($(findstring freebsd,$(CFG_OSTYPE)),)
3759
CFG_LIB_NAME=lib$(1).so
3860
CFG_LIB_GLOB=lib$(1)-*.so
@@ -112,32 +134,6 @@ ifneq ($(findstring darwin,$(CFG_OSTYPE)),)
112134
CFG_INSTALL_NAME = -Wl,-install_name,@rpath/$(1)
113135
endif
114136

115-
# Hack: not sure how to test if a file exists in make other than this
116-
OS_SUPP = $(patsubst %,--suppressions=%,\
117-
$(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*))
118-
119-
ifneq ($(findstring mingw,$(CFG_OSTYPE)),)
120-
CFG_WINDOWSY := 1
121-
endif
122-
123-
ifdef CFG_DISABLE_OPTIMIZE_CXX
124-
$(info cfg: disabling C++ optimization (CFG_DISABLE_OPTIMIZE_CXX))
125-
CFG_GCCISH_CFLAGS += -O0
126-
else
127-
CFG_GCCISH_CFLAGS += -O2
128-
endif
129-
130-
CFG_TESTLIB=$(CFG_BUILD_DIR)/$(2)/$(strip \
131-
$(if $(findstring stage0,$(1)), \
132-
stage0/$(CFG_LIBDIR), \
133-
$(if $(findstring stage1,$(1)), \
134-
stage1/$(CFG_LIBDIR), \
135-
$(if $(findstring stage2,$(1)), \
136-
stage2/$(CFG_LIBDIR), \
137-
$(if $(findstring stage3,$(1)), \
138-
stage3/$(CFG_LIBDIR), \
139-
)))))/rustc/$(CFG_BUILD_TRIPLE)/$(CFG_LIBDIR)
140-
141137
ifdef CFG_UNIXY
142138
CFG_INFO := $(info cfg: unix-y environment)
143139

@@ -152,25 +148,26 @@ ifdef CFG_UNIXY
152148
CFG_LIBUV_LINK_FLAGS=-lpthread -lkvm
153149
endif
154150

155-
ifdef CFG_ENABLE_MINGW_CROSS
156-
CFG_WINDOWSY := 1
157-
CFG_INFO := $(info cfg: mingw-cross)
158-
CFG_GCCISH_CROSS := i586-mingw32msvc-
159-
ifdef CFG_VALGRIND
160-
CFG_VALGRIND += wine
161-
endif
151+
# FIXME: This is surely super broken
152+
# ifdef CFG_ENABLE_MINGW_CROSS
153+
# CFG_WINDOWSY := 1
154+
# CFG_INFO := $(info cfg: mingw-cross)
155+
# CFG_GCCISH_CROSS := i586-mingw32msvc-
156+
# ifdef CFG_VALGRIND
157+
# CFG_VALGRIND += wine
158+
# endif
162159

163-
CFG_GCCISH_CFLAGS := -march=i586
164-
CFG_GCCISH_PRE_LIB_FLAGS :=
165-
CFG_GCCISH_POST_LIB_FLAGS :=
166-
CFG_GCCISH_DEF_FLAG :=
167-
CFG_GCCISH_LINK_FLAGS := -shared
160+
# CFG_GCCISH_CFLAGS := -march=i586
161+
# CFG_GCCISH_PRE_LIB_FLAGS :=
162+
# CFG_GCCISH_POST_LIB_FLAGS :=
163+
# CFG_GCCISH_DEF_FLAG :=
164+
# CFG_GCCISH_LINK_FLAGS := -shared
168165

169-
ifeq ($(CFG_CPUTYPE), x86_64)
170-
CFG_GCCISH_CFLAGS += -m32
171-
CFG_GCCISH_LINK_FLAGS += -m32
172-
endif
173-
endif
166+
# ifeq ($(CFG_CPUTYPE), x86_64)
167+
# CFG_GCCISH_CFLAGS += -m32
168+
# CFG_GCCISH_LINK_FLAGS += -m32
169+
# endif
170+
# endif
174171
ifdef CFG_VALGRIND
175172
CFG_VALGRIND += --error-exitcode=100 \
176173
--quiet \
@@ -200,6 +197,18 @@ else
200197
CFG_LDPATH :=
201198
CFG_RUN=$(2)
202199
endif
200+
201+
CFG_TESTLIB=$(CFG_BUILD_DIR)/$(2)/$(strip \
202+
$(if $(findstring stage0,$(1)), \
203+
stage0/$(CFG_LIBDIR), \
204+
$(if $(findstring stage1,$(1)), \
205+
stage1/$(CFG_LIBDIR), \
206+
$(if $(findstring stage2,$(1)), \
207+
stage2/$(CFG_LIBDIR), \
208+
$(if $(findstring stage3,$(1)), \
209+
stage3/$(CFG_LIBDIR), \
210+
)))))/rustc/$(CFG_BUILD_TRIPLE)/$(CFG_LIBDIR)
211+
203212
CFG_RUN_TARG=$(call CFG_RUN,$(HLIB$(1)_H_$(CFG_BUILD_TRIPLE)),$(2))
204213
CFG_RUN_TEST=$(call CFG_RUN,$(call CFG_TESTLIB,$(1),$(3)),$(1))
205214
CFG_LIBUV_LINK_FLAGS=-lWs2_32 -lpsapi -liphlpapi
@@ -233,34 +242,13 @@ ifeq ($(CFG_C_COMPILER),clang)
233242
# next to the .o file that lists header deps.
234243
CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d)
235244

236-
define CFG_MAKE_CC
237-
CFG_COMPILE_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \
238-
$$(CFG_GCCISH_CFLAGS) $$(CFG_CLANG_CFLAGS) \
239-
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
240-
$$(CFG_CLANG_CFLAGS_$$(HOST_$(1))) \
241-
$$(CFG_DEPEND_FLAGS) \
242-
-c -o $$(1) $$(2)
243-
CFG_LINK_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \
244-
$$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \
245-
$$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \
246-
$$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \
247-
$$(call CFG_INSTALL_NAME,$$(4))
248-
CFG_COMPILE_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \
249-
$$(CFG_GCCISH_CFLAGS) $$(CFG_CLANG_CFLAGS) \
250-
$$(CFG_GCCISH_CXXFLAGS) \
251-
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
252-
$$(CFG_CLANG_CFLAGS_$$(HOST_$(1))) \
253-
$$(CFG_DEPEND_FLAGS) \
254-
-c -o $$(1) $$(2)
255-
CFG_LINK_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \
256-
$$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \
257-
$$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \
258-
$$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \
259-
$$(call CFG_INSTALL_NAME,$$(4))
245+
CFG_SPECIFIC_CC_CFLAGS = $(CFG_CLANG_CFLAGS)
246+
define MAKE_CLANG_SPECIFIC_CFLAGS
247+
CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(target)) = $(CFG_CLANG_CFLAGS_$$(HOST_$(target)))
260248
endef
261-
262249
$(foreach target,$(CFG_TARGET_TRIPLES), \
263-
$(eval $(call CFG_MAKE_CC,$(target))))
250+
$(eval $(call MAKE_CLANG_SPECIFIC_CFLAGS,$(target))))
251+
264252
else
265253
ifeq ($(CFG_C_COMPILER),gcc)
266254
ifeq ($(origin CC),default)
@@ -279,12 +267,24 @@ ifeq ($(CFG_C_COMPILER),gcc)
279267
# next to the .o file that lists header deps.
280268
CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d)
281269

282-
define CFG_MAKE_CC
270+
CFG_SPECIFIC_CC_CFLAGS = $(CFG_GCC_CFLAGS)
271+
define MAKE_GCC_SPECIFIC_CFLAGS
272+
CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(target)) = $(CFG_GCC_CFLAGS_$$(HOST_$(target)))
273+
endef
274+
$(foreach target,$(CFG_TARGET_TRIPLES), \
275+
$(eval $(call MAKE_GCC_SPECIFIC_CFLAGS,$(target))))
276+
277+
else
278+
CFG_ERR := $(error please try on a system with gcc or clang)
279+
endif
280+
endif
281+
282+
define CFG_MAKE_CC
283283
CFG_COMPILE_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \
284284
$$(CFG_GCCISH_CFLAGS) \
285285
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
286-
$$(CFG_GCC_CFLAGS) \
287-
$$(CFG_GCC_CFLAGS_$$(HOST_$(1))) \
286+
$$(CFG_SPECIFIC_CC_CFLAGS) \
287+
$$(CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(1))) \
288288
$$(CFG_DEPEND_FLAGS) \
289289
-c -o $$(1) $$(2)
290290
CFG_LINK_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \
@@ -296,23 +296,19 @@ ifeq ($(CFG_C_COMPILER),gcc)
296296
$$(CFG_GCCISH_CFLAGS) \
297297
$$(CFG_GCCISH_CXXFLAGS) \
298298
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
299-
$$(CFG_GCC_CFLAGS) \
300-
$$(CFG_GCC_CFLAGS_$$(HOST_$(1))) \
299+
$$(CFG_SPECIFIC_CC_CFLAGS) \
300+
$$(CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(1))) \
301301
$$(CFG_DEPEND_FLAGS) \
302302
-c -o $$(1) $$(2)
303303
CFG_LINK_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \
304304
$$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \
305305
$$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \
306306
$$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \
307307
$$(call CFG_INSTALL_NAME,$$(4))
308-
endef
308+
endef
309309

310-
$(foreach target,$(CFG_TARGET_TRIPLES), \
311-
$(eval $(call CFG_MAKE_CC,$(target))))
312-
else
313-
CFG_ERR := $(error please try on a system with gcc or clang)
314-
endif
315-
endif
310+
$(foreach target,$(CFG_TARGET_TRIPLES), \
311+
$(eval $(call CFG_MAKE_CC,$(target))))
316312

317313
# We're using llvm-mc as our assembler because it supports
318314
# .cfi pseudo-ops on mac

0 commit comments

Comments
 (0)