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_FREESTANDING_TARGET=recipes/core/relibc/target/$(TARGET)/$(HOST_TARGET)
|
||||||
RELIBC_TARGET=recipes/core/relibc/target/$(TARGET)
|
RELIBC_TARGET=recipes/core/relibc/target/$(TARGET)
|
||||||
LLVM_TARGET=recipes/dev/llvm21/target/$(HOST_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)
|
RUST_TARGET=recipes/dev/rust/target/$(HOST_TARGET)/$(TARGET)
|
||||||
CLANG_TARGET=recipes/dev/clang21/target/$(HOST_TARGET)/$(TARGET)
|
CLANG_TARGET=recipes/dev/clang21/target/$(HOST_TARGET)/$(TARGET)
|
||||||
LLD_TARGET=recipes/dev/lld21/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
|
@#TODO: generates wrong lib path for libtool
|
||||||
rm -f "$@.partial"/$(GNU_TARGET)/lib/libstdc++.la
|
rm -f "$@.partial"/$(GNU_TARGET)/lib/libstdc++.la
|
||||||
rm -f "$@.partial"/$(GNU_TARGET)/lib/libsupc++.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
|
# hosted libstdcxx
|
||||||
export PATH="$(ROOT)/$@.partial/bin:$$PATH" \
|
export PATH="$(ROOT)/$@.partial/bin:$$PATH" \
|
||||||
ACLOCAL_PATH="$(LIBTOOL_PATH)/share/aclocal:$$ACLOCAL_PATH" && \
|
ACLOCAL_PATH="$(LIBTOOL_PATH)/share/aclocal:$$ACLOCAL_PATH" && \
|
||||||
@ -431,7 +434,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# BUILD CLANG ---------------------------------------------------
|
# 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)
|
ifeq ($(PODMAN_BUILD),1)
|
||||||
$(PODMAN_RUN) make $@
|
$(PODMAN_RUN) make $@
|
||||||
else
|
else
|
||||||
@ -446,9 +449,15 @@ else
|
|||||||
cp -r "$(CLANG_TARGET)/stage/usr/". "$@.partial"
|
cp -r "$(CLANG_TARGET)/stage/usr/". "$@.partial"
|
||||||
cp -r "$(LLD_TARGET)/stage/usr/". "$@.partial"
|
cp -r "$(LLD_TARGET)/stage/usr/". "$@.partial"
|
||||||
rm -rf "$@.partial/lib/"*.a
|
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" "$@"
|
mv "$@.partial" "$@"
|
||||||
# no longer needed, delete build files to save disk space
|
# 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
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@ -34,6 +34,7 @@ COOKBOOK_CMAKE_FLAGS+=(
|
|||||||
-DLLVM_ENABLE_LTO=Off
|
-DLLVM_ENABLE_LTO=Off
|
||||||
-DLLVM_ENABLE_RTTI=On
|
-DLLVM_ENABLE_RTTI=On
|
||||||
-DLLVM_ENABLE_THREADS=On
|
-DLLVM_ENABLE_THREADS=On
|
||||||
|
-DLLVM_INCLUDE_DOCS=Off
|
||||||
-DLLVM_INCLUDE_EXAMPLES=Off
|
-DLLVM_INCLUDE_EXAMPLES=Off
|
||||||
-DLLVM_INCLUDE_TESTS=Off
|
-DLLVM_INCLUDE_TESTS=Off
|
||||||
-DLLVM_OPTIMIZED_TABLEGEN=On
|
-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_LTO=Off
|
||||||
-DLLVM_ENABLE_RTTI=On
|
-DLLVM_ENABLE_RTTI=On
|
||||||
-DLLVM_ENABLE_THREADS=On
|
-DLLVM_ENABLE_THREADS=On
|
||||||
|
-DLLVM_INCLUDE_DOCS=Off
|
||||||
-DLLVM_INCLUDE_EXAMPLES=Off
|
-DLLVM_INCLUDE_EXAMPLES=Off
|
||||||
-DLLVM_INCLUDE_TESTS=Off
|
-DLLVM_INCLUDE_TESTS=Off
|
||||||
-DLLVM_OPTIMIZED_TABLEGEN=On
|
-DLLVM_OPTIMIZED_TABLEGEN=On
|
||||||
|
|||||||
@ -4,4 +4,5 @@ dependencies = [
|
|||||||
"llvm21",
|
"llvm21",
|
||||||
"llvm21.runtime",
|
"llvm21.runtime",
|
||||||
"lld21",
|
"lld21",
|
||||||
|
"llvm-rt21",
|
||||||
]
|
]
|
||||||
|
|||||||
@ -259,6 +259,15 @@ set(CMAKE_C_COMPILER clang)
|
|||||||
set(CMAKE_NM llvm-nm)
|
set(CMAKE_NM llvm-nm)
|
||||||
set(CMAKE_RANLIB llvm-ranlib)
|
set(CMAKE_RANLIB llvm-ranlib)
|
||||||
EOF
|
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
|
fi
|
||||||
cat >> $file <<EOF
|
cat >> $file <<EOF
|
||||||
set(CMAKE_FIND_ROOT_PATH ${sysroot})
|
set(CMAKE_FIND_ROOT_PATH ${sysroot})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user