mk: Refactor platform.mk a bit
This commit is contained in:
parent
15c0c35352
commit
42be216848
158
mk/platform.mk
158
mk/platform.mk
@ -19,6 +19,13 @@ endef
|
|||||||
$(foreach t,$(CFG_TARGET_TRIPLES),$(eval $(call DEF_HOST_VAR,$(t))))
|
$(foreach t,$(CFG_TARGET_TRIPLES),$(eval $(call DEF_HOST_VAR,$(t))))
|
||||||
$(foreach t,$(CFG_TARGET_TRIPLES),$(info cfg: host for $(t) is $(HOST_$(t))))
|
$(foreach t,$(CFG_TARGET_TRIPLES),$(info cfg: host for $(t) is $(HOST_$(t))))
|
||||||
|
|
||||||
|
# Ditto for OSTYPE
|
||||||
|
define DEF_OSTYPE_VAR
|
||||||
|
OSTYPE_$(1) = $(subst $(firstword $(subst -, ,$(1)))-,,$(1))
|
||||||
|
endef
|
||||||
|
$(foreach t,$(CFG_TARGET_TRIPLES),$(eval $(call DEF_OSTYPE_VAR,$(t))))
|
||||||
|
$(foreach t,$(CFG_TARGET_TRIPLES),$(info cfg: os for $(t) is $(OSTYPE_$(t))))
|
||||||
|
|
||||||
# FIXME: no-omit-frame-pointer is just so that task_start_wrapper
|
# FIXME: no-omit-frame-pointer is just so that task_start_wrapper
|
||||||
# has a frame pointer and the stack walker can understand it. Turning off
|
# has a frame pointer and the stack walker can understand it. Turning off
|
||||||
# frame pointers everywhere is overkill
|
# frame pointers everywhere is overkill
|
||||||
@ -33,6 +40,21 @@ CFG_DSYMUTIL := true
|
|||||||
# non-Darwin platforms; omitting it causes a full -R copy of lib/
|
# non-Darwin platforms; omitting it causes a full -R copy of lib/
|
||||||
CFG_LIB_DSYM_GLOB=lib$(1)-*.dylib.dSYM
|
CFG_LIB_DSYM_GLOB=lib$(1)-*.dylib.dSYM
|
||||||
|
|
||||||
|
# Hack: not sure how to test if a file exists in make other than this
|
||||||
|
OS_SUPP = $(patsubst %,--suppressions=%,\
|
||||||
|
$(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*))
|
||||||
|
|
||||||
|
ifneq ($(findstring mingw,$(CFG_OSTYPE)),)
|
||||||
|
CFG_WINDOWSY := 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef CFG_DISABLE_OPTIMIZE_CXX
|
||||||
|
$(info cfg: disabling C++ optimization (CFG_DISABLE_OPTIMIZE_CXX))
|
||||||
|
CFG_GCCISH_CFLAGS += -O0
|
||||||
|
else
|
||||||
|
CFG_GCCISH_CFLAGS += -O2
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($(findstring freebsd,$(CFG_OSTYPE)),)
|
ifneq ($(findstring freebsd,$(CFG_OSTYPE)),)
|
||||||
CFG_LIB_NAME=lib$(1).so
|
CFG_LIB_NAME=lib$(1).so
|
||||||
CFG_LIB_GLOB=lib$(1)-*.so
|
CFG_LIB_GLOB=lib$(1)-*.so
|
||||||
@ -112,32 +134,6 @@ ifneq ($(findstring darwin,$(CFG_OSTYPE)),)
|
|||||||
CFG_INSTALL_NAME = -Wl,-install_name,@rpath/$(1)
|
CFG_INSTALL_NAME = -Wl,-install_name,@rpath/$(1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Hack: not sure how to test if a file exists in make other than this
|
|
||||||
OS_SUPP = $(patsubst %,--suppressions=%,\
|
|
||||||
$(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*))
|
|
||||||
|
|
||||||
ifneq ($(findstring mingw,$(CFG_OSTYPE)),)
|
|
||||||
CFG_WINDOWSY := 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef CFG_DISABLE_OPTIMIZE_CXX
|
|
||||||
$(info cfg: disabling C++ optimization (CFG_DISABLE_OPTIMIZE_CXX))
|
|
||||||
CFG_GCCISH_CFLAGS += -O0
|
|
||||||
else
|
|
||||||
CFG_GCCISH_CFLAGS += -O2
|
|
||||||
endif
|
|
||||||
|
|
||||||
CFG_TESTLIB=$(CFG_BUILD_DIR)/$(2)/$(strip \
|
|
||||||
$(if $(findstring stage0,$(1)), \
|
|
||||||
stage0/$(CFG_LIBDIR), \
|
|
||||||
$(if $(findstring stage1,$(1)), \
|
|
||||||
stage1/$(CFG_LIBDIR), \
|
|
||||||
$(if $(findstring stage2,$(1)), \
|
|
||||||
stage2/$(CFG_LIBDIR), \
|
|
||||||
$(if $(findstring stage3,$(1)), \
|
|
||||||
stage3/$(CFG_LIBDIR), \
|
|
||||||
)))))/rustc/$(CFG_BUILD_TRIPLE)/$(CFG_LIBDIR)
|
|
||||||
|
|
||||||
ifdef CFG_UNIXY
|
ifdef CFG_UNIXY
|
||||||
CFG_INFO := $(info cfg: unix-y environment)
|
CFG_INFO := $(info cfg: unix-y environment)
|
||||||
|
|
||||||
@ -152,25 +148,26 @@ ifdef CFG_UNIXY
|
|||||||
CFG_LIBUV_LINK_FLAGS=-lpthread -lkvm
|
CFG_LIBUV_LINK_FLAGS=-lpthread -lkvm
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CFG_ENABLE_MINGW_CROSS
|
# FIXME: This is surely super broken
|
||||||
CFG_WINDOWSY := 1
|
# ifdef CFG_ENABLE_MINGW_CROSS
|
||||||
CFG_INFO := $(info cfg: mingw-cross)
|
# CFG_WINDOWSY := 1
|
||||||
CFG_GCCISH_CROSS := i586-mingw32msvc-
|
# CFG_INFO := $(info cfg: mingw-cross)
|
||||||
ifdef CFG_VALGRIND
|
# CFG_GCCISH_CROSS := i586-mingw32msvc-
|
||||||
CFG_VALGRIND += wine
|
# ifdef CFG_VALGRIND
|
||||||
endif
|
# CFG_VALGRIND += wine
|
||||||
|
# endif
|
||||||
|
|
||||||
CFG_GCCISH_CFLAGS := -march=i586
|
# CFG_GCCISH_CFLAGS := -march=i586
|
||||||
CFG_GCCISH_PRE_LIB_FLAGS :=
|
# CFG_GCCISH_PRE_LIB_FLAGS :=
|
||||||
CFG_GCCISH_POST_LIB_FLAGS :=
|
# CFG_GCCISH_POST_LIB_FLAGS :=
|
||||||
CFG_GCCISH_DEF_FLAG :=
|
# CFG_GCCISH_DEF_FLAG :=
|
||||||
CFG_GCCISH_LINK_FLAGS := -shared
|
# CFG_GCCISH_LINK_FLAGS := -shared
|
||||||
|
|
||||||
ifeq ($(CFG_CPUTYPE), x86_64)
|
# ifeq ($(CFG_CPUTYPE), x86_64)
|
||||||
CFG_GCCISH_CFLAGS += -m32
|
# CFG_GCCISH_CFLAGS += -m32
|
||||||
CFG_GCCISH_LINK_FLAGS += -m32
|
# CFG_GCCISH_LINK_FLAGS += -m32
|
||||||
endif
|
# endif
|
||||||
endif
|
# endif
|
||||||
ifdef CFG_VALGRIND
|
ifdef CFG_VALGRIND
|
||||||
CFG_VALGRIND += --error-exitcode=100 \
|
CFG_VALGRIND += --error-exitcode=100 \
|
||||||
--quiet \
|
--quiet \
|
||||||
@ -200,6 +197,18 @@ else
|
|||||||
CFG_LDPATH :=
|
CFG_LDPATH :=
|
||||||
CFG_RUN=$(2)
|
CFG_RUN=$(2)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
CFG_TESTLIB=$(CFG_BUILD_DIR)/$(2)/$(strip \
|
||||||
|
$(if $(findstring stage0,$(1)), \
|
||||||
|
stage0/$(CFG_LIBDIR), \
|
||||||
|
$(if $(findstring stage1,$(1)), \
|
||||||
|
stage1/$(CFG_LIBDIR), \
|
||||||
|
$(if $(findstring stage2,$(1)), \
|
||||||
|
stage2/$(CFG_LIBDIR), \
|
||||||
|
$(if $(findstring stage3,$(1)), \
|
||||||
|
stage3/$(CFG_LIBDIR), \
|
||||||
|
)))))/rustc/$(CFG_BUILD_TRIPLE)/$(CFG_LIBDIR)
|
||||||
|
|
||||||
CFG_RUN_TARG=$(call CFG_RUN,$(HLIB$(1)_H_$(CFG_BUILD_TRIPLE)),$(2))
|
CFG_RUN_TARG=$(call CFG_RUN,$(HLIB$(1)_H_$(CFG_BUILD_TRIPLE)),$(2))
|
||||||
CFG_RUN_TEST=$(call CFG_RUN,$(call CFG_TESTLIB,$(1),$(3)),$(1))
|
CFG_RUN_TEST=$(call CFG_RUN,$(call CFG_TESTLIB,$(1),$(3)),$(1))
|
||||||
CFG_LIBUV_LINK_FLAGS=-lWs2_32 -lpsapi -liphlpapi
|
CFG_LIBUV_LINK_FLAGS=-lWs2_32 -lpsapi -liphlpapi
|
||||||
@ -233,34 +242,13 @@ ifeq ($(CFG_C_COMPILER),clang)
|
|||||||
# next to the .o file that lists header deps.
|
# next to the .o file that lists header deps.
|
||||||
CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d)
|
CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d)
|
||||||
|
|
||||||
define CFG_MAKE_CC
|
CFG_SPECIFIC_CC_CFLAGS = $(CFG_CLANG_CFLAGS)
|
||||||
CFG_COMPILE_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \
|
define MAKE_CLANG_SPECIFIC_CFLAGS
|
||||||
$$(CFG_GCCISH_CFLAGS) $$(CFG_CLANG_CFLAGS) \
|
CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(target)) = $(CFG_CLANG_CFLAGS_$$(HOST_$(target)))
|
||||||
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
|
|
||||||
$$(CFG_CLANG_CFLAGS_$$(HOST_$(1))) \
|
|
||||||
$$(CFG_DEPEND_FLAGS) \
|
|
||||||
-c -o $$(1) $$(2)
|
|
||||||
CFG_LINK_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \
|
|
||||||
$$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \
|
|
||||||
$$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \
|
|
||||||
$$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \
|
|
||||||
$$(call CFG_INSTALL_NAME,$$(4))
|
|
||||||
CFG_COMPILE_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \
|
|
||||||
$$(CFG_GCCISH_CFLAGS) $$(CFG_CLANG_CFLAGS) \
|
|
||||||
$$(CFG_GCCISH_CXXFLAGS) \
|
|
||||||
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
|
|
||||||
$$(CFG_CLANG_CFLAGS_$$(HOST_$(1))) \
|
|
||||||
$$(CFG_DEPEND_FLAGS) \
|
|
||||||
-c -o $$(1) $$(2)
|
|
||||||
CFG_LINK_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \
|
|
||||||
$$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \
|
|
||||||
$$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \
|
|
||||||
$$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \
|
|
||||||
$$(call CFG_INSTALL_NAME,$$(4))
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(foreach target,$(CFG_TARGET_TRIPLES), \
|
$(foreach target,$(CFG_TARGET_TRIPLES), \
|
||||||
$(eval $(call CFG_MAKE_CC,$(target))))
|
$(eval $(call MAKE_CLANG_SPECIFIC_CFLAGS,$(target))))
|
||||||
|
|
||||||
else
|
else
|
||||||
ifeq ($(CFG_C_COMPILER),gcc)
|
ifeq ($(CFG_C_COMPILER),gcc)
|
||||||
ifeq ($(origin CC),default)
|
ifeq ($(origin CC),default)
|
||||||
@ -279,12 +267,24 @@ ifeq ($(CFG_C_COMPILER),gcc)
|
|||||||
# next to the .o file that lists header deps.
|
# next to the .o file that lists header deps.
|
||||||
CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d)
|
CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d)
|
||||||
|
|
||||||
define CFG_MAKE_CC
|
CFG_SPECIFIC_CC_CFLAGS = $(CFG_GCC_CFLAGS)
|
||||||
|
define MAKE_GCC_SPECIFIC_CFLAGS
|
||||||
|
CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(target)) = $(CFG_GCC_CFLAGS_$$(HOST_$(target)))
|
||||||
|
endef
|
||||||
|
$(foreach target,$(CFG_TARGET_TRIPLES), \
|
||||||
|
$(eval $(call MAKE_GCC_SPECIFIC_CFLAGS,$(target))))
|
||||||
|
|
||||||
|
else
|
||||||
|
CFG_ERR := $(error please try on a system with gcc or clang)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
define CFG_MAKE_CC
|
||||||
CFG_COMPILE_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \
|
CFG_COMPILE_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \
|
||||||
$$(CFG_GCCISH_CFLAGS) \
|
$$(CFG_GCCISH_CFLAGS) \
|
||||||
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
|
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
|
||||||
$$(CFG_GCC_CFLAGS) \
|
$$(CFG_SPECIFIC_CC_CFLAGS) \
|
||||||
$$(CFG_GCC_CFLAGS_$$(HOST_$(1))) \
|
$$(CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(1))) \
|
||||||
$$(CFG_DEPEND_FLAGS) \
|
$$(CFG_DEPEND_FLAGS) \
|
||||||
-c -o $$(1) $$(2)
|
-c -o $$(1) $$(2)
|
||||||
CFG_LINK_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \
|
CFG_LINK_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \
|
||||||
@ -296,8 +296,8 @@ ifeq ($(CFG_C_COMPILER),gcc)
|
|||||||
$$(CFG_GCCISH_CFLAGS) \
|
$$(CFG_GCCISH_CFLAGS) \
|
||||||
$$(CFG_GCCISH_CXXFLAGS) \
|
$$(CFG_GCCISH_CXXFLAGS) \
|
||||||
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
|
$$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \
|
||||||
$$(CFG_GCC_CFLAGS) \
|
$$(CFG_SPECIFIC_CC_CFLAGS) \
|
||||||
$$(CFG_GCC_CFLAGS_$$(HOST_$(1))) \
|
$$(CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(1))) \
|
||||||
$$(CFG_DEPEND_FLAGS) \
|
$$(CFG_DEPEND_FLAGS) \
|
||||||
-c -o $$(1) $$(2)
|
-c -o $$(1) $$(2)
|
||||||
CFG_LINK_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \
|
CFG_LINK_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \
|
||||||
@ -305,14 +305,10 @@ ifeq ($(CFG_C_COMPILER),gcc)
|
|||||||
$$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \
|
$$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \
|
||||||
$$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \
|
$$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \
|
||||||
$$(call CFG_INSTALL_NAME,$$(4))
|
$$(call CFG_INSTALL_NAME,$$(4))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(foreach target,$(CFG_TARGET_TRIPLES), \
|
$(foreach target,$(CFG_TARGET_TRIPLES), \
|
||||||
$(eval $(call CFG_MAKE_CC,$(target))))
|
$(eval $(call CFG_MAKE_CC,$(target))))
|
||||||
else
|
|
||||||
CFG_ERR := $(error please try on a system with gcc or clang)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# We're using llvm-mc as our assembler because it supports
|
# We're using llvm-mc as our assembler because it supports
|
||||||
# .cfi pseudo-ops on mac
|
# .cfi pseudo-ops on mac
|
||||||
|
Loading…
Reference in New Issue
Block a user