diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 70642dfa4..000000000 --- a/.gitmodules +++ /dev/null @@ -1,5 +0,0 @@ -[submodule "rust"] - path = rust - url = https://gitlab.redox-os.org/redox-os/rust.git - branch = redox-2025-10-03 - update = none diff --git a/Cargo.lock b/Cargo.lock index 3bea31f74..9b1d895bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -985,8 +985,8 @@ dependencies = [ [[package]] name = "redoxer" -version = "0.2.61" -source = "git+https://gitlab.redox-os.org/redox-os/redoxer.git#4cbd0fce38d19427c8619dd67f1d94f899100683" +version = "0.2.62" +source = "git+https://gitlab.redox-os.org/redox-os/redoxer.git#3a5882bf173f72a9d4e679679919e24e4f103c6f" dependencies = [ "anyhow", "dirs", diff --git a/mk/config.mk b/mk/config.mk index a1a72a31b..9d0373ca4 100644 --- a/mk/config.mk +++ b/mk/config.mk @@ -56,6 +56,7 @@ CONTAINERFILE?=podman/redox-base-containerfile # Per host variables NPROC=nproc SED=sed +FIND=find ifneq ($(PODMAN_BUILD),1) FSTOOLS_IN_PODMAN=0 @@ -106,9 +107,11 @@ ifeq ($(UNAME),Darwin) FUMOUNT=umount NPROC=sysctl -n hw.ncpu SED=gsed + FIND=gfind VB_AUDIO=coreaudio VBM=/Applications/VirtualBox.app/Contents/MacOS/VBoxManage else ifeq ($(UNAME),FreeBSD) + FIND=gfind FUMOUNT=sudo umount VB_AUDIO=pulse # To check, will probably be OSS on most setups VBM=VBoxManage @@ -172,7 +175,7 @@ endif REPO_TAG=$(BUILD)/repo.tag FSTOOLS_TAG=build/fstools.tag -export BOARD +export BOARD FIND ifeq ($(SCCACHE_BUILD),1) export CC_WRAPPER:=sccache diff --git a/mk/prefix.mk b/mk/prefix.mk index 625cbcf87..b0c81d857 100644 --- a/mk/prefix.mk +++ b/mk/prefix.mk @@ -10,6 +10,8 @@ GCC_TARGET=recipes/dev/gcc13/target/$(HOST_TARGET)/$(TARGET) 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) +RUST_TARGET=recipes/dev/rust/target/$(HOST_TARGET)/$(TARGET) # official RISC-V support introduced in newer version UPSTREAM_RUSTC_VERSION=2025-11-15 @@ -21,13 +23,6 @@ PREFIX_CONFIG=CI=1 COOKBOOK_CLEAN_BUILD=true COOKBOOK_CLEAN_TARGET=false COOKBOO prefix: $(PREFIX)/sysroot -PREFIX_STRIP=\ - mkdir -p bin libexec "$(TARGET)/bin" && \ - find bin libexec "$(TARGET)/bin" "$(TARGET)/lib" \ - -type f \ - -exec strip --strip-unneeded {} ';' \ - 2> /dev/null - # Remove prefix builds but retain downloaded binaries prefix_clean: rm -rf $(PREFIX)/sysroot $(PREFIX)/*-install @@ -39,16 +34,17 @@ static_clean: | $(FSTOOLS_TAG) $(MAKE) c.bash,luajit,gettext,openssl1,pcre2,sdl1,zstd,zlib,bzip2,xz $(MAKE) c.expat,freetype,libffi,libiconv,libjpeg,liborbital,libpng,libxml2,ncurses,ncursesw -$(PREFIX)/relibc-install: $(PREFIX)/rust-install | $(FSTOOLS_TAG) $(CONTAINER_TAG) +$(PREFIX)/relibc-install: $(PREFIX)/rust-install $(PREFIX)/gcc-install | $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding relibc-install\033[0m" rm -rf "$@.partial" "$@" - cp -r "$(PREFIX)/rust-install" "$@.partial" - rm -rf "$@.partial/$(TARGET)/include/"* - cp -r "$(PREFIX)/rust-install/$(GNU_TARGET)/include/c++" "$@.partial/$(GNU_TARGET)/include/c++" - cp -r "$(PREFIX)/rust-install/lib/rustlib/$(HOST_TARGET)/lib/" "$@.partial/lib/rustlib/$(HOST_TARGET)/" + mkdir "$@.partial" + cp -r "$(PREFIX)/gcc-install/". "$@.partial" + cp -r "$(PREFIX)/rust-install/". "$@.partial" + rm -rf "$@.partial/$(GNU_TARGET)/include/"* + cp -r "$(PREFIX)/gcc-install/$(GNU_TARGET)/include/c++" "$@.partial/$(GNU_TARGET)/include/c++" export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \ export CARGO="env -u CARGO cargo" $(PREFIX_CONFIG) && \ ./target/release/repo cook relibc @@ -65,7 +61,65 @@ $(PREFIX)/relibc-install.tar.gz: $(PREFIX)/relibc-install --directory="$<" \ . -# TODO: move this behind PREFIX_BINARY=0 when compiled prefix has it + +$(PREFIX)/sysroot: $(PREFIX)/relibc-install $(CONTAINER_TAG) +ifeq ($(PODMAN_BUILD),1) + $(PODMAN_RUN) make $@ +else + rm -rf "$@" + cp -r "$(PREFIX)/relibc-install/" "$@" +# adapt path for libtoolize + sed 's|/usr/share|$(ROOT)/$@/share|g' "$@/bin/libtoolize.orig" > "$@/bin/libtoolize" + chmod 0755 "$@/bin/libtoolize" + touch "$@" +endif + +# PREFIX_BINARY --------------------------------------------------- +ifeq ($(PREFIX_BINARY),1) + +$(PREFIX)/rust-install.tar.gz: | $(CONTAINER_TAG) +ifeq ($(PODMAN_BUILD),1) + $(PODMAN_RUN) make $@ +else + mkdir -p "$(@D)" + wget -O $@.partial "https://static.redox-os.org/toolchain/$(HOST_TARGET)/$(TARGET)/rust-install.tar.gz" + mv $@.partial $@ +endif + +$(PREFIX)/gcc-install.tar.gz: | $(CONTAINER_TAG) +ifeq ($(PODMAN_BUILD),1) + $(PODMAN_RUN) make $@ +else + mkdir -p "$(@D)" + wget -O $@.partial "https://static.redox-os.org/toolchain/$(HOST_TARGET)/$(TARGET)/gcc-install.tar.gz" + mv $@.partial $@ +endif + +$(PREFIX)/gcc-install: $(PREFIX)/gcc-install.tar.gz $(CONTAINER_TAG) +ifeq ($(PODMAN_BUILD),1) + $(PODMAN_RUN) make $@ +else + rm -rf "$@.partial" "$@" + mkdir -p "$@.partial" + tar --extract --file "$<" --directory "$@.partial" --no-same-owner --strip-components=1 + touch "$@.partial" + mv "$@.partial" "$@" +endif + +$(PREFIX)/rust-install: $(PREFIX)/rust-install.tar.gz $(CONTAINER_TAG) +ifeq ($(PODMAN_BUILD),1) + $(PODMAN_RUN) make $@ +else + rm -rf "$@.partial" "$@" + mkdir -p "$@.partial" + tar --extract --file "$<" --directory "$@.partial" --no-same-owner --strip-components=1 + touch "$@.partial" + mv "$@.partial" "$@" +endif + +else + +# BUILD GCC --------------------------------------------------- $(PREFIX)/libtool-install: | $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ @@ -84,46 +138,6 @@ else mv "$@.partial" "$@" endif -$(PREFIX)/sysroot: $(PREFIX)/relibc-install $(PREFIX)/libtool-install $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - rm -rf "$@" - cp -r "$(PREFIX)/relibc-install/" "$@" - cp -r "$(PREFIX)/libtool-install/". "$@" -# adapt path for libtoolize - sed 's|/usr/share|$(ROOT)/$@/share|g' "$@/bin/libtoolize.orig" > "$@/bin/libtoolize" - chmod 0755 "$@/bin/libtoolize" - touch "$@" -endif - -# PREFIX_BINARY --------------------------------------------------- -ifeq ($(PREFIX_BINARY),1) - -$(PREFIX)/rust-install.tar.gz: | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - #TODO: figure out why rust-install.tar.gz is missing /lib/rustlib/$(HOST_TARGET)/lib - wget -O $@.partial "https://static.redox-os.org/toolchain/$(HOST_TARGET)/$(TARGET)/relibc-install.tar.gz" - mv $@.partial $@ -endif - -$(PREFIX)/rust-install: $(PREFIX)/rust-install.tar.gz $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - rm -rf "$@.partial" "$@" - mkdir -p "$@.partial" - tar --extract --file "$<" --directory "$@.partial" --no-same-owner --strip-components=1 - touch "$@.partial" - mv "$@.partial" "$@" -endif - -else - -# BUILD GCC --------------------------------------------------- $(PREFIX)/binutils-install: | $(PREFIX)/libtool-install $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ @@ -175,7 +189,7 @@ else mv "$@.partial" "$@" endif -$(PREFIX)/gcc-install: $(PREFIX)/relibc-freestanding-install $(PREFIX)/libtool-install | $(FSTOOLS_TAG) $(CONTAINER_TAG) +$(PREFIX)/gcc-install: $(PREFIX)/relibc-freestanding-install | $(PREFIX)/libtool-install $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @@ -289,14 +303,13 @@ else mv $@.partial $@ endif -$(PREFIX)/rust-install: $(PREFIX)/gcc-install $(PREFIX)/rustc-install.tar.xz $(PREFIX)/cargo-install.tar.xz $(PREFIX)/rust-std-host-install.tar.xz $(PREFIX)/rust-std-target-install.tar.xz $(PREFIX)/rust-src-install.tar.xz +$(PREFIX)/rust-install: $(PREFIX)/rustc-install.tar.xz $(PREFIX)/cargo-install.tar.xz $(PREFIX)/rust-std-host-install.tar.xz $(PREFIX)/rust-std-target-install.tar.xz $(PREFIX)/rust-src-install.tar.xz ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding rust-install\033[0m" rm -rf "$@.partial" "$@" mkdir -p "$@.partial" - cp -r "$(PREFIX)/gcc-install/". "$@.partial" tar --extract --file "$(PREFIX)/rustc-install.tar.xz" -C "$@.partial" rustc-nightly-$(HOST_TARGET)/rustc/ --strip-components=2 tar --extract --file "$(PREFIX)/cargo-install.tar.xz" --directory "$@.partial" cargo-nightly-$(HOST_TARGET)/cargo/ --strip-components=2 tar --extract --file "$(PREFIX)/rust-std-host-install.tar.xz" --directory "$@.partial" rust-std-nightly-$(HOST_TARGET)/rust-std-$(HOST_TARGET)/ --strip-components=2 @@ -312,42 +325,21 @@ endif # BUILD RUST --------------------------------------------------- else -$(ROOT)/rust/configure: - git submodule sync --recursive - git submodule update --progress --init --recursive --checkout rust - -$(PREFIX)/rust-install: $(ROOT)/rust/configure | $(PREFIX)/gcc-install $(PREFIX)/relibc-freestanding-install $(CONTAINER_TAG) +$(PREFIX)/rust-install: | $(PREFIX)/libtool-install $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding rust-install\033[0m" - rm -rf "$(PREFIX)/rust-build" "$@.partial" "$@" - mkdir -p "$(PREFIX)/rust-build" - cp -r "$(PREFIX)/gcc-install" "$@.partial" - cp -r "$(PREFIX)/relibc-freestanding-install/$(GNU_TARGET)" "$@.partial" - cd "$(PREFIX)/rust-build" && \ - export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \ - "$<" \ - --prefix="/" \ - --disable-docs \ - --disable-download-ci-llvm \ - --enable-cargo-native-static \ - --enable-dist-src \ - --enable-extended \ - --enable-lld \ - --enable-llvm-static-stdcpp \ - --tools=cargo,src \ - --target="$(HOST_TARGET),$(TARGET)" \ - && \ - $(MAKE) -j `$(NPROC)` && \ - rm -rf $(ROOT)/$@.partial/lib/rustlib/{components,install.log,rust-installer-version,uninstall.sh,manifest-*} "$(ROOT)/$@.partial/share/doc/rust" && \ - $(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial" - rm -rf "$(PREFIX)/rust-build" - mkdir -p "$@.partial/lib/rustlib/$(HOST_TARGET)/bin" - mkdir -p "$@.partial/lib/rustlib/$(HOST_TARGET)/lib" - cd "$@.partial" && find . -name *.old -exec rm {} ';' && $(PREFIX_STRIP) - touch "$@.partial" + rm -rf "$@.partial" "$@" + export PATH="$(ROOT)/$(PREFIX)/libtool-install/bin:$$PATH" \ + $(PREFIX_CONFIG) COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) && \ + ./target/release/repo cook host:llvm21 host:rust + cp -r "$(RUST_TARGET)/stage/usr/". "$@.partial" + cp -r "$(LLVM_TARGET)/stage/usr/". "$@.partial" mv "$@.partial" "$@" +# TODO: Cache from RUST_TARGET and LLVM_TARGET is currently not cleared. +# TIP: If you're developing std for rust, remove COOKBOOK_CLEAN_BUILD=true +# at the top of this file so your next rust build reuses the build cache endif endif diff --git a/mk/repo.mk b/mk/repo.mk index 1e45dfe84..8c9b6a727 100644 --- a/mk/repo.mk +++ b/mk/repo.mk @@ -86,7 +86,7 @@ else endif # Show what to cook -rt.%: prefix $(FSTOOLS_TAG) FORCE +rt.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @@ -122,7 +122,7 @@ pp.%: $(FSTOOLS_TAG) FORCE $(MAKE) p.$*,--with-package-deps # Show what to push -pt.%: prefix $(FSTOOLS_TAG) FORCE +pt.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else diff --git a/recipes/dev/clang21/recipe.toml b/recipes/dev/clang21/recipe.toml index 47fd8409a..3aa91f19c 100644 --- a/recipes/dev/clang21/recipe.toml +++ b/recipes/dev/clang21/recipe.toml @@ -43,7 +43,6 @@ COOKBOOK_CMAKE_FLAGS+=( -DLLVM_INCLUDE_TESTS=Off -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH=$ARCH - -DLLVM_TARGETS_TO_BUILD="X86;AArch64" -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin -DUNIX=1 diff --git a/recipes/dev/lld21/recipe.toml b/recipes/dev/lld21/recipe.toml index 11cc7dceb..1fa2cf5ac 100644 --- a/recipes/dev/lld21/recipe.toml +++ b/recipes/dev/lld21/recipe.toml @@ -40,7 +40,6 @@ COOKBOOK_CMAKE_FLAGS+=( -DLLVM_INCLUDE_TESTS=Off -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH=$ARCH - -DLLVM_TARGETS_TO_BUILD="X86;AArch64" -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin -DUNIX=1 diff --git a/recipes/dev/llvm21/recipe.toml b/recipes/dev/llvm21/recipe.toml index 6d618fc21..6b87a1b42 100644 --- a/recipes/dev/llvm21/recipe.toml +++ b/recipes/dev/llvm21/recipe.toml @@ -18,6 +18,16 @@ script = """ DYNAMIC_INIT ARCH="$(echo "${TARGET}" | cut -d - -f1)" +case "${ARCH}" in + x86 | x86_64) LLVM_TARGETS_TO_BUILD="X86";; + aarch64) LLVM_TARGETS_TO_BUILD="AArch64";; + riscv64gc) LLVM_TARGETS_TO_BUILD="RISCV";; +esac + +if [ "${COOKBOOK_HOST_SYSROOT}" = "/usr" ]; then + LLVM_TARGETS_TO_BUILD="X86;AArch64;RISCV" +fi + # This just build the LLVM library and tools just enough for Rust, to build the rest of LLVM see # https://github.com/llvm/llvm-zorg/blob/main/zorg/buildbot/builders/annotated/standalone-build.sh @@ -28,6 +38,7 @@ COOKBOOK_CMAKE_FLAGS+=( -DLLVM_INSTALL_UTILS=On -DLLVM_TOOL_LLVM_COV_BUILD=On -DLLVM_TOOL_LLVM_PROFDATA_BUILD=On + -DLLVM_TARGETS_TO_BUILD="$LLVM_TARGETS_TO_BUILD" # the rest of options that shared to clang -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath "${COOKBOOK_RECIPE}/native.cmake")" @@ -43,14 +54,11 @@ COOKBOOK_CMAKE_FLAGS+=( -DLLVM_INCLUDE_TESTS=Off -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH=$ARCH - -DLLVM_TARGETS_TO_BUILD="X86;AArch64" -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin -DUNIX=1 ) -# Native tablegen build fails with too many jobs, limit to 16 -COOKBOOK_MAKE_JOBS="$(( ${COOKBOOK_MAKE_JOBS} > 16 ? 16 : ${COOKBOOK_MAKE_JOBS} ))" COOKBOOK_SOURCE="$COOKBOOK_SOURCE/llvm" cookbook_cmake """ diff --git a/recipes/dev/rust/config-bootstrap.toml b/recipes/dev/rust/config-bootstrap.toml new file mode 100644 index 000000000..08aa9408e --- /dev/null +++ b/recipes/dev/rust/config-bootstrap.toml @@ -0,0 +1,29 @@ +[llvm] +download-ci-llvm = false +static-libstdcpp = false +# shared with lld +link-shared = true + +[build] +host = ["TARGET"] +target = ["TARGET", "i586-unknown-redox", "x86_64-unknown-redox", "aarch64-unknown-redox", "riscv64gc-unknown-redox"] +cargo-native-static = true +submodules = false +docs = false +tools = ["cargo", "clippy", "rustfmt", "src"] +extended = true +verbose = 1 + +[install] +prefix = "install" +sysconfdir = "etc" + +[rust] +backtrace = false +codegen-tests = false + +[target.aarch64-unknown-linux-gnu] +llvm-config = "COOKBOOK_TOOLCHAIN/bin/llvm-config" + +[target.x86_64-unknown-linux-gnu] +llvm-config = "COOKBOOK_TOOLCHAIN/bin/llvm-config" diff --git a/recipes/dev/rust/recipe.toml b/recipes/dev/rust/recipe.toml index 81b4152e5..16e406ebe 100644 --- a/recipes/dev/rust/recipe.toml +++ b/recipes/dev/rust/recipe.toml @@ -9,17 +9,26 @@ dependencies = [ "llvm21", "zlib", "curl", - "openssl1", + "openssl3", ] dev-dependencies = [ "llvm21.dev", "llvm21.runtime", + "lld21", "host:llvm21", "host:llvm21.dev", "host:llvm21.runtime", ] script = """ +if [ "${COOKBOOK_HOST_SYSROOT}" = "/usr" ]; then + +cat ${COOKBOOK_RECIPE}/config-bootstrap.toml > config.toml +sed -i "s|TARGET|${TARGET}|g" config.toml +sed -i "s|COOKBOOK_TOOLCHAIN|${COOKBOOK_TOOLCHAIN}|g" config.toml + +else + DYNAMIC_INIT # Linker flags for stage2 compiler (host -> target) export LDFLAGS_x86_64_unknown_redox="${LDFLAGS}" # LLVM @@ -36,13 +45,15 @@ export RUSTFLAGS_BOOTSTRAP="\ export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="${RUSTFLAGS_BOOTSTRAP}" export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS="${RUSTFLAGS_BOOTSTRAP}" -# Don't poison the stage1 compiler (host -> host) -unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP - cat ${COOKBOOK_RECIPE}/config.toml > config.toml sed -i "s|COOKBOOK_SYSROOT|${COOKBOOK_SYSROOT}|g" config.toml sed -i "s|COOKBOOK_TOOLCHAIN|${COOKBOOK_TOOLCHAIN}|g" config.toml +fi + +# Don't poison the stage1 compiler (host -> host) +unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS CARGO_ENCODED_RUSTFLAGS STRIP + python3 "${COOKBOOK_SOURCE}/x.py" install \ --config config.toml \ --jobs ${COOKBOOK_MAKE_JOBS} @@ -50,6 +61,18 @@ python3 "${COOKBOOK_SOURCE}/x.py" install \ mkdir -p "${COOKBOOK_STAGE}"/usr rsync -av --delete "${COOKBOOK_BUILD}"/install/* "${COOKBOOK_STAGE}"/usr/ rm -rf "${COOKBOOK_STAGE}"/usr/lib/rustlib/*.log + +# workaround for rust.lld, needed by e.g. compiling bootloader +# https://github.com/rust-lang/rust/issues/143076#issuecomment-3011710678 +LLD_DIR="${COOKBOOK_STAGE}/usr/lib/rustlib/$TARGET/bin" +mkdir -p $LLD_DIR/gcc-ld +cp ${COOKBOOK_SYSROOT}/usr/bin/lld $LLD_DIR/rust-lld +ln -s rust-lld $LLD_DIR/wasm-component-ld +ln -s ../rust-lld $LLD_DIR/gcc-ld/ld.lld +ln -s ../rust-lld $LLD_DIR/gcc-ld/ld64.lld +ln -s ../rust-lld $LLD_DIR/gcc-ld/lld-link +ln -s ../rust-lld $LLD_DIR/gcc-ld/wasm-ld +ln -s ../../../libLLVM.so.21.1 $LLD_DIR/../lib/libLLVM.so.21.1 """ [[optional-packages]] diff --git a/recipes/web/netsurf/recipe.toml b/recipes/web/netsurf/recipe.toml index 2ad9bf01a..64157b066 100644 --- a/recipes/web/netsurf/recipe.toml +++ b/recipes/web/netsurf/recipe.toml @@ -33,7 +33,7 @@ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ COOKBOOK_MAKE_JOBS="$(( ${COOKBOOK_MAKE_JOBS} > 8 ? 8 : ${COOKBOOK_MAKE_JOBS} ))" export TARGET="framebuffer" -export CFLAGS="${CFLAGS} -I${PWD}/inst-${TARGET}/include" +export CFLAGS="${CFLAGS} ${CPPFLAGS} -I${PWD}/inst-${TARGET}/include" export LDFLAGS="${LDFLAGS} -L${COOKBOOK_SYSROOT}/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition -Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" # nghttp2 is not linked for some reason export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" diff --git a/rust b/rust deleted file mode 160000 index 17efb220e..000000000 --- a/rust +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 17efb220ec74a1bb36dfcc266ab86b3761e406b5 diff --git a/src/cook/script.rs b/src/cook/script.rs index 66ffbf962..9cf21e9d3 100644 --- a/src/cook/script.rs +++ b/src/cook/script.rs @@ -94,8 +94,7 @@ export CARGO_TARGET_DIR="${COOKBOOK_BUILD}/target" # This adds the sysroot includes for most C compilation #TODO: check paths for spaces! -export CFLAGS="-I${COOKBOOK_SYSROOT}/include" -export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" +export CPPFLAGS="$CPPFLAGS -I${COOKBOOK_SYSROOT}/include" # This adds the sysroot libraries and compiles binaries statically for most C compilation #TODO: check paths for spaces! @@ -121,7 +120,6 @@ then install_flags=--debug build_flags= build_type=debug - export CFLAGS="${CFLAGS} -g" export CPPFLAGS="${CPPFLAGS} -g" fi @@ -229,6 +227,12 @@ set(CMAKE_SYSTEM_NAME ${SYSTEM_NAME}) set(CMAKE_SYSTEM_PROCESSOR ${arch}) EOF + if [ "$target" = "$TARGET" ] + then + echo "set(CMAKE_C_FLAGS \"${CFLAGS} ${CPPFLAGS}\")" >> $file + echo "set(CMAKE_CXX_FLAGS \"${CFLAGS} ${CPPFLAGS}\")" >> $file + fi + if [ -n "${CC_WRAPPER}" ] then echo "set(CMAKE_C_COMPILER_LAUNCHER ${CC_WRAPPER})" >> $file @@ -291,9 +295,9 @@ function cookbook_meson { echo "[properties]" >> cross_file.txt echo "needs_exe_wrapper = true" >> cross_file.txt echo "sys_root = '${COOKBOOK_SYSROOT}'" >> cross_file.txt - echo "c_args = [$(printf "'%s', " $CFLAGS | sed 's/, $//')]" >> cross_file.txt - echo "cpp_args = [$(printf "'%s', " $CPPFLAGS | sed 's/, $//')]" >> cross_file.txt - echo "c_link_args = [$(printf "'%s', " $LDFLAGS | sed 's/, $//')]" >> cross_file.txt + echo "c_args = [$(printf "'%s', " "$CFLAGS $CPPFLAGS" | sed 's/, $//')]" >> cross_file.txt + echo "cpp_args = [$(printf "'%s', " "$CXXFLAGS $CPPFLAGS" | sed 's/, $//')]" >> cross_file.txt + echo "c_link_args = [$(printf "'%s', " "$LDFLAGS" | sed 's/, $//')]" >> cross_file.txt unset AR unset AS