Merge branch 'libcxx-fix' into 'master'

Fixes to building libcxx

See merge request redox-os/redox!2324
This commit is contained in:
Jeremy Soller 2026-09-02 07:43:20 -06:00
commit 14ae5b8807
3 changed files with 13 additions and 8 deletions

View File

@ -34,7 +34,7 @@ UPSTREAM_RUSTC_VERSION=2026-05-24
export PREFIX_RUSTFLAGS=-L $(ROOT)/$(PREFIX_INSTALL)/$(TARGET)/lib
export RUSTUP_TOOLCHAIN=$(ROOT)/$(PREFIX_INSTALL)
export REDOXER_TOOLCHAIN=$(RUSTUP_TOOLCHAIN)
PREFIX_CONFIG=CI=1 COOKBOOK_CLEAN_BUILD=true COOKBOOK_CLEAN_TARGET=false COOKBOOK_VERBOSE=true COOKBOOK_NONSTOP=false
PREFIX_CONFIG=CI=1 REDOXER_USE_CLANG=0 COOKBOOK_CLEAN_BUILD=true COOKBOOK_CLEAN_TARGET=false COOKBOOK_VERBOSE=true COOKBOOK_NONSTOP=false
prefix: $(PREFIX)/sysroot
@ -404,8 +404,8 @@ ifeq ($(PODMAN_BUILD),1)
else
@echo "\033[1;36;49mBuilding wasip1-libc-install\033[0m"
rm -rf "$@.partial" "$@"
export REDOXER_TOOLCHAIN=$(ROOT)/$(PREFIX)/clang-install REDOXER_USE_CLANG=1 PATH="$(ROOT)/$(PREFIX)/clang-install/bin:$$PATH" \
$(PREFIX_CONFIG) COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=wasm32-wasip1 COOKBOOK_CROSS_GNU_TARGET=wasm32-wasip1 && \
export REDOXER_TOOLCHAIN=$(ROOT)/$(PREFIX)/clang-install $(PREFIX_CONFIG) PATH="$(ROOT)/$(PREFIX)/clang-install/bin:$$PATH" \
REDOXER_USE_CLANG=1 COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=wasm32-wasip1 COOKBOOK_CROSS_GNU_TARGET=wasm32-wasip1 && \
$(REPO_BIN) cook host:wasi-libc
cp -r "$(WASIP1_LIBC_TARGET)/stage/usr/". "$@.partial"
mkdir -p "$@.partial/share/wasi-sysroot"
@ -434,7 +434,7 @@ endif
endif
# BUILD CLANG ---------------------------------------------------
$(PREFIX)/clang-install: | $(PREFIX)/relibc-freestanding-install $(FSTOOLS_TAG) $(CONTAINER_TAG)
$(PREFIX)/clang-install: | $(PREFIX)/gcc-install $(FSTOOLS_TAG) $(CONTAINER_TAG)
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) make $@
else
@ -449,8 +449,9 @@ 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) \
echo "--sysroot=$(ROOT)/$(PREFIX)/gcc-install" > "$@.partial/bin/$(GNU_TARGET).cfg"
ln -s clang-21 "$@.partial/bin/$(TARGET)-clang"
export PATH="$(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"

View File

@ -18,10 +18,14 @@ COOKBOOK_CMAKE_FLAGS+=(
-DCOMPILER_RT_BUILD_SANITIZERS=OFF
-DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
-DLIBCXX_USE_COMPILER_RT=ON
-DLIBCXX_ENABLE_SHARED=OFF
-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
-DLIBCXXABI_USE_COMPILER_RT=ON
-DLIBCXXABI_ENABLE_SHARED=OFF
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF # TODO: libunwind need link.h
-DCOMPILER_RT_INSTALL_PATH="/usr/lib/clang/21"
# the shared options from llvm

View File

@ -243,7 +243,7 @@ function generate_cookbook_cmake_file {
SYSTEM_NAME="UnixPaths"
fi
if [ -z "${REDOXER_USE_CLANG}" ]; then
if [[ "$REDOXER_USE_CLANG" != "1" && "$REDOXER_USE_CLANG" != "true" ]]; then
cat > $file <<EOF
set(CMAKE_AR ${gcc_prefix}gcc-ar)
set(CMAKE_CXX_COMPILER ${gcc_prefix}g++)