mk: Fix building compiler-rt on MSVC
It looks like compiler-rt has a cmake build sytem inside its source, but I have been unable to figure out how to use it and actually build the right library. For now this commit hard-wires MSVC-targeting builds of libcompiler-rt to continue using `make` as the primary bulid system, but some frobbing of the flags are necessary to ensure that the right compiler is used.
This commit is contained in:
parent
ee64bab76c
commit
64412a49be
24
mk/rt.mk
24
mk/rt.mk
|
@ -226,18 +226,32 @@ COMPRT_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),compiler-rt)
|
||||||
COMPRT_LIB_$(1) := $$(RT_OUTPUT_DIR_$(1))/$$(COMPRT_NAME_$(1))
|
COMPRT_LIB_$(1) := $$(RT_OUTPUT_DIR_$(1))/$$(COMPRT_NAME_$(1))
|
||||||
COMPRT_BUILD_DIR_$(1) := $$(RT_OUTPUT_DIR_$(1))/compiler-rt
|
COMPRT_BUILD_DIR_$(1) := $$(RT_OUTPUT_DIR_$(1))/compiler-rt
|
||||||
|
|
||||||
|
# Note that on MSVC-targeting builds we hardwire CC/AR to gcc/ar even though
|
||||||
|
# we're targeting MSVC. This is because although compiler-rt has a CMake build
|
||||||
|
# config I can't actually figure out how to use it, so I'm not sure how to use
|
||||||
|
# cl.exe to build the objects. Additionally, the compiler-rt library when built
|
||||||
|
# with gcc has the same ABI as cl.exe, so they're largely compatible
|
||||||
|
COMPRT_CC_$(1) := $$(CC_$(1))
|
||||||
|
COMPRT_AR_$(1) := $$(AR_$(1))
|
||||||
|
COMPRT_CFLAGS_$(1) := $$(CFG_GCCISH_CFLAGS_$(1))
|
||||||
|
ifeq ($$(findstring msvc,$(1)),msvc)
|
||||||
|
COMPRT_CC_$(1) := gcc
|
||||||
|
COMPRT_AR_$(1) := ar
|
||||||
|
COMPRT_CFLAGS_$(1) := $$(CFG_GCCISH_CFLAGS_$(1)) -m64
|
||||||
|
endif
|
||||||
|
|
||||||
$$(COMPRT_LIB_$(1)): $$(COMPRT_DEPS) $$(MKFILE_DEPS)
|
$$(COMPRT_LIB_$(1)): $$(COMPRT_DEPS) $$(MKFILE_DEPS)
|
||||||
@$$(call E, make: compiler-rt)
|
@$$(call E, make: compiler-rt)
|
||||||
$$(Q)$$(MAKE) -C "$(S)src/compiler-rt" \
|
$$(Q)$$(MAKE) -C "$(S)src/compiler-rt" \
|
||||||
ProjSrcRoot="$(S)src/compiler-rt" \
|
ProjSrcRoot="$(S)src/compiler-rt" \
|
||||||
ProjObjRoot="$$(abspath $$(COMPRT_BUILD_DIR_$(1)))" \
|
ProjObjRoot="$$(abspath $$(COMPRT_BUILD_DIR_$(1)))" \
|
||||||
CC="$$(CC_$(1))" \
|
CC='$$(COMPRT_CC_$(1))' \
|
||||||
AR="$$(AR_$(1))" \
|
AR='$$(COMPRT_AR_$(1))' \
|
||||||
RANLIB="$$(AR_$(1)) s" \
|
RANLIB='$$(COMPRT_AR_$(1)) s' \
|
||||||
CFLAGS="$$(CFG_GCCISH_CFLAGS_$(1))" \
|
CFLAGS="$$(COMPRT_CFLAGS_$(1))" \
|
||||||
TargetTriple=$(1) \
|
TargetTriple=$(1) \
|
||||||
triple-builtins
|
triple-builtins
|
||||||
$$(Q)cp $$(COMPRT_BUILD_DIR_$(1))/triple/builtins/libcompiler_rt.a $$(COMPRT_LIB_$(1))
|
$$(Q)cp $$(COMPRT_BUILD_DIR_$(1))/triple/builtins/libcompiler_rt.a $$@
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# libbacktrace
|
# libbacktrace
|
||||||
|
|
Loading…
Reference in New Issue