mirror of
https://gitlab.redox-os.org/redox-os/redox.git
synced 2026-11-05 04:06:38 +08:00
Port clang compiler-rt and libcxx
This commit is contained in:
parent
6f5aae29b3
commit
a417d3484c
13
mk/prefix.mk
13
mk/prefix.mk
@ -12,6 +12,7 @@ LIBSTDCXX_TARGET=recipes/libs/libstdcxx-v3/target/$(TARGET)/$(HOST_TARGET)
|
||||
RELIBC_FREESTANDING_TARGET=recipes/core/relibc/target/$(TARGET)/$(HOST_TARGET)
|
||||
RELIBC_TARGET=recipes/core/relibc/target/$(TARGET)
|
||||
LLVM_TARGET=recipes/dev/llvm21/target/$(HOST_TARGET)/$(TARGET)
|
||||
LLVM_RT_TARGET=recipes/dev/llvm-rt21/target/$(TARGET)/$(HOST_TARGET)
|
||||
RUST_TARGET=recipes/dev/rust/target/$(HOST_TARGET)/$(TARGET)
|
||||
CLANG_TARGET=recipes/dev/clang21/target/$(HOST_TARGET)/$(TARGET)
|
||||
LLD_TARGET=recipes/dev/lld21/target/$(HOST_TARGET)/$(TARGET)
|
||||
@ -305,6 +306,8 @@ else
|
||||
@#TODO: generates wrong lib path for libtool
|
||||
rm -f "$@.partial"/$(GNU_TARGET)/lib/libstdc++.la
|
||||
rm -f "$@.partial"/$(GNU_TARGET)/lib/libsupc++.la
|
||||
@#TODO: Needed by clang, yet not emitted
|
||||
ln -s crtbegin.o "$@.partial"/lib/gcc/$(GNU_TARGET)/13.2.0/crtbeginT.o
|
||||
# hosted libstdcxx
|
||||
export PATH="$(ROOT)/$@.partial/bin:$$PATH" \
|
||||
ACLOCAL_PATH="$(LIBTOOL_PATH)/share/aclocal:$$ACLOCAL_PATH" && \
|
||||
@ -431,7 +434,7 @@ endif
|
||||
endif
|
||||
|
||||
# BUILD CLANG ---------------------------------------------------
|
||||
$(PREFIX)/clang-install: | $(PREFIX)/gcc-install $(FSTOOLS_TAG) $(CONTAINER_TAG)
|
||||
$(PREFIX)/clang-install: | $(PREFIX)/relibc-freestanding-install $(FSTOOLS_TAG) $(CONTAINER_TAG)
|
||||
ifeq ($(PODMAN_BUILD),1)
|
||||
$(PODMAN_RUN) make $@
|
||||
else
|
||||
@ -446,9 +449,15 @@ else
|
||||
cp -r "$(CLANG_TARGET)/stage/usr/". "$@.partial"
|
||||
cp -r "$(LLD_TARGET)/stage/usr/". "$@.partial"
|
||||
rm -rf "$@.partial/lib/"*.a
|
||||
echo "--sysroot=$(ROOT)/$(PREFIX)/relibc-freestanding-install" > "$@.partial/bin/$(GNU_TARGET).cfg"
|
||||
export PATH="$(LIBTOOL_PATH)/bin:$(ROOT)/$@.partial/bin:$$PATH" $(PREFIX_CONFIG) \
|
||||
COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(HOST_TARGET) REDOXER_USE_CLANG=1 && \
|
||||
$(REPO_BIN) cook llvm-rt21
|
||||
cp -r "$(LLVM_RT_TARGET)/stage/usr/". "$@.partial"
|
||||
echo "--sysroot=../$(GNU_TARGET)" > "$@.partial/bin/$(GNU_TARGET).cfg"
|
||||
mv "$@.partial" "$@"
|
||||
# no longer needed, delete build files to save disk space
|
||||
rm -rf $(CLANG_TARGET) $(LLD_TARGET)
|
||||
rm -rf $(CLANG_TARGET) $(LLD_TARGET) $(LLVM_RT_TARGET)
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
@ -34,6 +34,7 @@ COOKBOOK_CMAKE_FLAGS+=(
|
||||
-DLLVM_ENABLE_LTO=Off
|
||||
-DLLVM_ENABLE_RTTI=On
|
||||
-DLLVM_ENABLE_THREADS=On
|
||||
-DLLVM_INCLUDE_DOCS=Off
|
||||
-DLLVM_INCLUDE_EXAMPLES=Off
|
||||
-DLLVM_INCLUDE_TESTS=Off
|
||||
-DLLVM_OPTIMIZED_TABLEGEN=On
|
||||
|
||||
43
recipes/dev/llvm-rt21/recipe.toml
Normal file
43
recipes/dev/llvm-rt21/recipe.toml
Normal file
@ -0,0 +1,43 @@
|
||||
[source]
|
||||
same_as = "../llvm21"
|
||||
|
||||
[build]
|
||||
template = "custom"
|
||||
script = """
|
||||
DYNAMIC_INIT
|
||||
|
||||
generate_cookbook_cmake_file "$COOKBOOK_HOST_TARGET" "" "$COOKBOOK_TOOLCHAIN" native.cmake
|
||||
|
||||
COOKBOOK_CMAKE_FLAGS+=(
|
||||
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi"
|
||||
-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY
|
||||
-DCOMPILER_RT_BUILD_ORC=OFF
|
||||
-DCOMPILER_RT_BUILD_XRAY=OFF
|
||||
-DCOMPILER_RT_BUILD_MEMPROF=OFF
|
||||
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF
|
||||
-DCOMPILER_RT_BUILD_SANITIZERS=OFF
|
||||
-DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON
|
||||
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
|
||||
-DLIBCXX_ENABLE_LOCALIZATION=OFF # TODO: *_l functions
|
||||
-DLIBCXX_ENABLE_FILESYSTEM=OFF # TODO: fstream require locales
|
||||
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF # TODO: libunwind need link.h
|
||||
-DLIBCXX_ENABLE_WIDE_CHARACTERS=OFF # TODO: wsctof, wsctold
|
||||
-DCOMPILER_RT_INSTALL_PATH="/usr/lib/clang/21"
|
||||
|
||||
# the shared options from llvm
|
||||
-DCMAKE_CXX_FLAGS="--std=gnu++11"
|
||||
-DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}"
|
||||
-DLLVM_INCLUDE_DOCS=Off
|
||||
-DLLVM_INCLUDE_EXAMPLES=Off
|
||||
-DLLVM_INCLUDE_TESTS=Off
|
||||
-DUNIX=1
|
||||
)
|
||||
|
||||
COOKBOOK_SOURCE="$COOKBOOK_SOURCE/runtimes"
|
||||
|
||||
COOKBOOK_CMAKE_FLAGS+=(
|
||||
-DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath native.cmake)"
|
||||
)
|
||||
cookbook_cmake
|
||||
|
||||
"""
|
||||
@ -63,6 +63,7 @@ COOKBOOK_CMAKE_FLAGS+=(
|
||||
-DLLVM_ENABLE_LTO=Off
|
||||
-DLLVM_ENABLE_RTTI=On
|
||||
-DLLVM_ENABLE_THREADS=On
|
||||
-DLLVM_INCLUDE_DOCS=Off
|
||||
-DLLVM_INCLUDE_EXAMPLES=Off
|
||||
-DLLVM_INCLUDE_TESTS=Off
|
||||
-DLLVM_OPTIMIZED_TABLEGEN=On
|
||||
|
||||
@ -4,4 +4,5 @@ dependencies = [
|
||||
"llvm21",
|
||||
"llvm21.runtime",
|
||||
"lld21",
|
||||
"llvm-rt21",
|
||||
]
|
||||
|
||||
@ -259,6 +259,15 @@ set(CMAKE_C_COMPILER clang)
|
||||
set(CMAKE_NM llvm-nm)
|
||||
set(CMAKE_RANLIB llvm-ranlib)
|
||||
EOF
|
||||
|
||||
if [ "$target" != "$COOKBOOK_HOST_TARGET" ]; then
|
||||
cat >> $file <<EOF
|
||||
set(CMAKE_C_COMPILER_TARGET ${target})
|
||||
set(CMAKE_CXX_COMPILER_TARGET ${target})
|
||||
set(CMAKE_ASM_COMPILER_TARGET ${target})
|
||||
EOF
|
||||
fi
|
||||
|
||||
fi
|
||||
cat >> $file <<EOF
|
||||
set(CMAKE_FIND_ROOT_PATH ${sysroot})
|
||||
|
||||
Loading…
Reference in New Issue
Block a user