From ad12b8119e7726cbaf10f9d25e9c4d692cefd9f9 Mon Sep 17 00:00:00 2001 From: "Jesse L. Zamora" Date: Wed, 9 Apr 2025 06:49:37 -0400 Subject: [PATCH 01/25] Remove libstdc++ patch, instead just clear CXX_OVERLAY flags --- build-swift-stdlib.sh | 1 + fetch-sources.sh | 1 - ...ift-fix-find-libstdc++-for-cxx-interop.patch | 17 ----------------- 3 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 patches/0001-Swift-fix-find-libstdc++-for-cxx-interop.patch diff --git a/build-swift-stdlib.sh b/build-swift-stdlib.sh index c7eb730..44779fc 100755 --- a/build-swift-stdlib.sh +++ b/build-swift-stdlib.sh @@ -39,6 +39,7 @@ cmake -S $SWIFT_SRCDIR -B $SWIFT_BUILDDIR -G Ninja \ -DSWIFT_HOST_VARIANT_ARCH=$SWIFT_TARGET_ARCH \ -DSWIFT_SDKS=LINUX \ -DSWIFT_SDK_LINUX_ARCH_${SWIFT_TARGET_ARCH}_PATH=${STAGING_DIR} \ + -DSWIFT_SDK_LINUX_CXX_OVERLAY_SWIFT_COMPILE_FLAGS="" \ -DZLIB_LIBRARY=${STAGING_DIR}/usr/lib/libz.so \ -DZLIB_INCLUDE_DIR=${STAGING_DIR}/usr/include \ -DSWIFT_PATH_TO_LIBDISPATCH_SOURCE=${LIBDISPATCH_SRCDIR} \ diff --git a/fetch-sources.sh b/fetch-sources.sh index 9de128c..ffc85c5 100755 --- a/fetch-sources.sh +++ b/fetch-sources.sh @@ -65,7 +65,6 @@ fi # Apply patches echo "Apply CXX interop patch" -patch -d . -p1 <$SRC_ROOT/patches/0001-Swift-fix-find-libstdc++-for-cxx-interop.patch patch -d . -p1 <$SRC_ROOT/patches/0002-Add-arm-to-float16support-for-missing-symbol.patch if [[ $SWIFT_VERSION == *"5.9"* ]] || [[ $SWIFT_VERSION == *"5.10-"* ]]; then diff --git a/patches/0001-Swift-fix-find-libstdc++-for-cxx-interop.patch b/patches/0001-Swift-fix-find-libstdc++-for-cxx-interop.patch deleted file mode 100644 index e233463..0000000 --- a/patches/0001-Swift-fix-find-libstdc++-for-cxx-interop.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/cmake/modules/SwiftConfigureSDK.cmake b/cmake/modules/SwiftConfigureSDK.cmake -index 2d4f798bb11..020215b689e 100644 ---- a/cmake/modules/SwiftConfigureSDK.cmake -+++ b/cmake/modules/SwiftConfigureSDK.cmake -@@ -321,9 +321,9 @@ macro(configure_sdk_unix name architectures) - # but add_swift_target_library does not allow passing different values - # depending on the architecture, so having a single value is the only - # possibility right now. -- set(SWIFT_SDK_${prefix}_CXX_OVERLAY_SWIFT_COMPILE_FLAGS -- -Xcc --gcc-toolchain=/usr -- CACHE STRING "Extra flags for compiling the C++ overlay") -+ set(SWIFT_SDK_${prefix}_CXX_OVERLAY_SWIFT_COMPILE_FLAGS -+ -Xcc --gcc-toolchain=${CMAKE_SYSROOT}/usr -+ CACHE STRING "Extra flags for compiling the C++ overlay") - - set(_default_threading_package "pthreads") - if("${prefix}" STREQUAL "LINUX") From 22c0cf018cf770964d5104b729d8b649fbe53e08 Mon Sep 17 00:00:00 2001 From: "Jesse L. Zamora" Date: Sun, 6 Apr 2025 22:17:27 -0400 Subject: [PATCH 02/25] Fix typo in ./build-sysroot.sh invocation --- fetch-binaries.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fetch-binaries.sh b/fetch-binaries.sh index 03206d7..d12ca68 100755 --- a/fetch-binaries.sh +++ b/fetch-binaries.sh @@ -34,7 +34,7 @@ if [[ -d "$STAGING_DIR/usr/lib" ]]; then echo "Use existing Sysroot" else # Build Debian 12 sysroot - ./build-sysroot.sh debian:bookworm + ./build-sysroot.sh debian bookworm fi if [[ $OSTYPE == 'darwin'* ]]; then From 82a337893142608571661d6ecdcb1ad8ef84b15d Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Wed, 9 Apr 2025 17:27:35 +0200 Subject: [PATCH 03/25] add back arch --- fetch-binaries.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fetch-binaries.sh b/fetch-binaries.sh index d12ca68..e2da3f2 100755 --- a/fetch-binaries.sh +++ b/fetch-binaries.sh @@ -34,7 +34,7 @@ if [[ -d "$STAGING_DIR/usr/lib" ]]; then echo "Use existing Sysroot" else # Build Debian 12 sysroot - ./build-sysroot.sh debian bookworm + TARGET_ARCH=$DEBIAN_TARGET_ARCH ./build-sysroot.sh debian bookworm fi if [[ $OSTYPE == 'darwin'* ]]; then From 426402e0c924843f51e844c09460b354ab00b809 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Fri, 11 Apr 2025 21:13:57 +0200 Subject: [PATCH 04/25] unset armv7 target arch --- swift-define | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift-define b/swift-define index 6a1e35a..b4cd568 100644 --- a/swift-define +++ b/swift-define @@ -1,6 +1,6 @@ # Version SWIFT_VERSION=${SWIFT_VERSION:=swift-6.1-RELEASE} -SWIFT_TARGET_ARCH=${SWIFT_TARGET_ARCH:=armv7} +#SWIFT_TARGET_ARCH=${SWIFT_TARGET_ARCH:=armv7} case ${SWIFT_TARGET_ARCH} in armv6) From 34b0e48ac6e561feb963b0487b9f03d613ed2111 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Fri, 11 Apr 2025 21:14:48 +0200 Subject: [PATCH 05/25] comment fetch sources --- build.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.sh b/build.sh index 9ea9d23..028e652 100755 --- a/build.sh +++ b/build.sh @@ -8,10 +8,10 @@ if [[ $OSTYPE == 'darwin'* ]]; then fi # Fetch and patch sources -if [ -z $SKIP_FETCH_SOURCES ]; then - ./fetch-sources.sh -fi -./fetch-binaries.sh +#if [ -z $SKIP_FETCH_SOURCES ]; then +# ./fetch-sources.sh +#fi +#./fetch-binaries.sh # Generate Xcode toolchain if [[ $OSTYPE == 'darwin'* && ! -d "$XCTOOLCHAIN" ]]; then From 8c13c08f8e18ba36325c34c3323bcdb4bb77baa2 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sat, 12 Apr 2025 10:02:58 +0200 Subject: [PATCH 06/25] fix static build flag --- build.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/build.sh b/build.sh index 028e652..d9249e9 100755 --- a/build.sh +++ b/build.sh @@ -52,11 +52,7 @@ fi # Archive ./build-tar.sh -# Cross compile test package +#export STATIC_SWIFT_STDLIB=1 ./generate-swiftpm-toolchain.sh ./build-swift-hello.sh -# Cross compile test package with --static-swift-stdlib -export STATIC_SWIFT_STDLIB=1 -./generate-swiftpm-toolchain.sh -./build-swift-hello.sh From a74a99486cf40c45b56e06e1beb629453b131809 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sat, 12 Apr 2025 10:04:53 +0200 Subject: [PATCH 07/25] fetch sources depth 1 --- fetch-sources.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fetch-sources.sh b/fetch-sources.sh index ffc85c5..f47e3c7 100755 --- a/fetch-sources.sh +++ b/fetch-sources.sh @@ -15,7 +15,7 @@ if [[ -d "$SWIFT_SRCDIR" ]]; then git stash else echo "Checkout Swift" - git clone https://github.com/apple/swift.git + git clone https://github.com/swiftlang/swift.git --depth 1 cd $SWIFT_SRCDIR fi From 168566275759fb32ab32be18ff953599c87537a3 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sat, 12 Apr 2025 19:06:04 +0200 Subject: [PATCH 08/25] use poky linux and poky sysroot --- swift-define | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/swift-define b/swift-define index b4cd568..e9369a9 100644 --- a/swift-define +++ b/swift-define @@ -20,7 +20,7 @@ case ${SWIFT_TARGET_ARCH} in aarch64) CMAKE_TARGET_ARCH="aarch64" DEBIAN_TARGET_ARCH=arm64 - SWIFT_TARGET_NAME=${SWIFT_TARGET_ARCH}-unknown-linux-gnu + SWIFT_TARGET_NAME=${SWIFT_TARGET_ARCH}-poky-linux ;; *) echo "Unsupported architecture $SWIFT_TARGET_ARCH!" @@ -36,7 +36,7 @@ fi SRC_ROOT="${SRC_ROOT:=$(pwd)}" XCTOOLCHAIN="${XCTOOLCHAIN:=$SRC_ROOT/build/$SWIFT_VERSION-armv7-debian12.xctoolchain}" XCTOOLCHAIN_SDK="${XCTOOLCHAIN_SDK:=/tmp/cross-toolchain/debian-bookworm.sdk}" -STAGING_DIR="${STAGING_DIR:=$SRC_ROOT/sysroot-debian-bookworm-$DEBIAN_TARGET_ARCH}" +STAGING_DIR="${STAGING_DIR:=$SRC_ROOT/sysroot-imx8}" if [[ $OSTYPE == 'darwin'* ]]; then SWIFT_NATIVE_PATH="${SWIFT_NATIVE_PATH:=$XCTOOLCHAIN/usr/bin}" else From f02cfa52479f19d9750e13d073709e5e7e2b7fed Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sat, 12 Apr 2025 19:06:27 +0200 Subject: [PATCH 09/25] flag trials --- build-llvm.sh | 2 +- build-swift-stdlib.sh | 9 ++++++++- swift-define | 11 ++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/build-llvm.sh b/build-llvm.sh index 49346c4..cb56c68 100755 --- a/build-llvm.sh +++ b/build-llvm.sh @@ -13,4 +13,4 @@ cmake -S $LLVM_SRCDIR/llvm -B $LLVM_BUILDDIR -G Ninja \ -DCMAKE_CXX_COMPILER=$SWIFT_NATIVE_PATH/clang++ \ -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" \ -DLLVM_ENABLE_PROJECTS="llvm" \ - -DCMAKE_BUILD_TYPE=Release + -DCMAKE_BUILD_TYPE=Release --fresh diff --git a/build-swift-stdlib.sh b/build-swift-stdlib.sh index 44779fc..a252034 100755 --- a/build-swift-stdlib.sh +++ b/build-swift-stdlib.sh @@ -63,7 +63,14 @@ cmake -S $SWIFT_SRCDIR -B $SWIFT_BUILDDIR -G Ninja \ -DCMAKE_Swift_FLAGS_DEBUG="" \ -DCMAKE_Swift_FLAGS_RELEASE="" \ -DCMAKE_Swift_FLAGS_RELWITHDEBINFO="" \ - -DCMAKE_OSX_SYSROOT="" + -DCMAKE_OSX_SYSROOT="" \ + -DCMAKE_EXE_LINKER_FLAGS="-L/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/" \ + -DCMAKE_C_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ + -DCMAKE_C_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" \ + -DCMAKE_CXX_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ + -DCMAKE_CXX_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" + -DCMAKE_Swift_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ + -DCMAKE_Swift_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" \ echo "Build Swift StdLib" (cd $SWIFT_BUILDDIR && ninja) diff --git a/swift-define b/swift-define index e9369a9..655a785 100644 --- a/swift-define +++ b/swift-define @@ -79,13 +79,14 @@ INSTALL_PREFIX=$SRC_ROOT/build/swift-install/usr INSTALL_TAR=${INSTALL_TAR:=$SRC_ROOT/build/$SWIFT_VERSION-$SWIFT_TARGET_ARCH.tar.gz} PREBUILT_XCTOOLCHAIN=$SRC_ROOT/downloads/${SWIFT_VERSION}-osx.pkg +EXTRA_YOCTO_FLAGS="-L/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0 -v" # Compilation flags -RUNTIME_FLAGS="-w -fuse-ld=lld --sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS}" -LINK_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS}" -ASM_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME}" +RUNTIME_FLAGS="-w -fuse-ld=lld --sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS} ${EXTRA_YOCTO_FLAGS}" +LINK_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS} ${EXTRA_YOCTO_FLAGS}" +ASM_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_YOCTO_FLAGS}" -SWIFTC_FLAGS="-target ${SWIFT_TARGET_NAME} \ +SWIFTC_FLAGS="-target ${SWIFT_TARGET_NAME} ${EXTRA_YOCTO_FLAGS} \ -use-ld=lld \ -sdk ${STAGING_DIR} \ --resource-dir ${SWIFT_BUILDDIR}/lib/swift \ +-resource-dir ${SWIFT_BUILDDIR}/lib/swift \ " From d17d09cd1fe908afc990094257303483c9125c4d Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sat, 12 Apr 2025 20:13:37 +0200 Subject: [PATCH 10/25] add back gcc install dir --- build-swift-stdlib.sh | 9 +-------- swift-define | 12 ++++++++---- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/build-swift-stdlib.sh b/build-swift-stdlib.sh index a252034..44779fc 100755 --- a/build-swift-stdlib.sh +++ b/build-swift-stdlib.sh @@ -63,14 +63,7 @@ cmake -S $SWIFT_SRCDIR -B $SWIFT_BUILDDIR -G Ninja \ -DCMAKE_Swift_FLAGS_DEBUG="" \ -DCMAKE_Swift_FLAGS_RELEASE="" \ -DCMAKE_Swift_FLAGS_RELWITHDEBINFO="" \ - -DCMAKE_OSX_SYSROOT="" \ - -DCMAKE_EXE_LINKER_FLAGS="-L/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/" \ - -DCMAKE_C_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ - -DCMAKE_C_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" \ - -DCMAKE_CXX_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ - -DCMAKE_CXX_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" - -DCMAKE_Swift_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ - -DCMAKE_Swift_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" \ + -DCMAKE_OSX_SYSROOT="" echo "Build Swift StdLib" (cd $SWIFT_BUILDDIR && ninja) diff --git a/swift-define b/swift-define index 655a785..1ee5610 100644 --- a/swift-define +++ b/swift-define @@ -47,6 +47,11 @@ SWIFTPM_CONFIGURATION="${SWIFTPM_CONFIGURATION:=release}" SWIFT_PACKAGE_SRCDIR="${SWIFT_PACKAGE_SRCDIR:=$SRC_ROOT/swift-hello}" SWIFT_PACKAGE_BUILDDIR="${SWIFT_PACKAGE_BUILDDIR:=$SWIFT_PACKAGE_SRCDIR/.build}" CROSS_TOOLCHAIN_FILE="${CROSS_TOOLCHAIN_FILE:=$SRC_ROOT/build/build-toolchain-${SWIFT_TARGET_ARCH}.cmake}" +if [ -d ${STAGING_DIR} ]; then + GCC_INSTALL_DIR=$(dirname $(find ${STAGING_DIR} -name crtbegin.o)) +else + GCC_INSTALL_DIR=${STAGING_DIR} +fi # Build Paths LLVM_SRCDIR=$SRC_ROOT/downloads/llvm-project @@ -79,11 +84,10 @@ INSTALL_PREFIX=$SRC_ROOT/build/swift-install/usr INSTALL_TAR=${INSTALL_TAR:=$SRC_ROOT/build/$SWIFT_VERSION-$SWIFT_TARGET_ARCH.tar.gz} PREBUILT_XCTOOLCHAIN=$SRC_ROOT/downloads/${SWIFT_VERSION}-osx.pkg -EXTRA_YOCTO_FLAGS="-L/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0 -v" # Compilation flags -RUNTIME_FLAGS="-w -fuse-ld=lld --sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS} ${EXTRA_YOCTO_FLAGS}" -LINK_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS} ${EXTRA_YOCTO_FLAGS}" -ASM_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_YOCTO_FLAGS}" +RUNTIME_FLAGS="-w -fuse-ld=lld --sysroot=${STAGING_DIR} --gcc-install-dir=${GCC_INSTALL_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS}" +LINK_FLAGS="--sysroot=${STAGING_DIR} --gcc-install-dir=${GCC_INSTALL_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS}" +ASM_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME}" SWIFTC_FLAGS="-target ${SWIFT_TARGET_NAME} ${EXTRA_YOCTO_FLAGS} \ -use-ld=lld \ From 67129a940ec1ed06848eed1b98e5a07c2d18e1b4 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sun, 13 Apr 2025 10:13:40 +0200 Subject: [PATCH 11/25] add example toolchain file by https://github.com/vpetrigo/arm-cmake-toolchains/blob/master/clang-arm-gcc-toolchain.cmake --- clang-arm-gcc-toolchain.cmake | 67 +++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 clang-arm-gcc-toolchain.cmake diff --git a/clang-arm-gcc-toolchain.cmake b/clang-arm-gcc-toolchain.cmake new file mode 100644 index 0000000..7682ec4 --- /dev/null +++ b/clang-arm-gcc-toolchain.cmake @@ -0,0 +1,67 @@ +set(CMAKE_SYSTEM_NAME Generic-ELF) +set(CMAKE_SYSTEM_PROCESSOR ARM) + +set(TOOLCHAIN_PREFIX arm-none-eabi-) +set(TOOLCHAIN_TRIPLE arm-none-eabi) +find_program(BINUTILS_PATH ${TOOLCHAIN_PREFIX}gcc NO_CACHE) + +if (NOT BINUTILS_PATH) + message(FATAL_ERROR "ARM GCC toolchain not found") +endif () + +get_filename_component(ARM_TOOLCHAIN_DIR ${BINUTILS_PATH} DIRECTORY) +set(ARM_GCC_C_COMPILER ${TOOLCHAIN_PREFIX}gcc) +execute_process(COMMAND ${ARM_GCC_C_COMPILER} -print-sysroot + OUTPUT_VARIABLE ARM_GCC_SYSROOT OUTPUT_STRIP_TRAILING_WHITESPACE) +# get GNU ARM GCC version +execute_process(COMMAND ${ARM_GCC_C_COMPILER} --version + OUTPUT_VARIABLE ARM_GCC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) +string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" ARM_GCC_VERSION ${ARM_GCC_VERSION}) +# set compiler triple +set(triple ${TOOLCHAIN_TRIPLE}) +set(CMAKE_ASM_COMPILER clang) +set(CMAKE_ASM_COMPILER_TARGET ${triple}) +set(CMAKE_C_COMPILER clang) +set(CMAKE_C_COMPILER_TARGET ${triple}) +set(CMAKE_CXX_COMPILER clang++) +set(CMAKE_CXX_COMPILER_TARGET ${triple}) + +set(CMAKE_C_FLAGS_INIT " -B${ARM_TOOLCHAIN_DIR}") +set(CMAKE_CXX_FLAGS_INIT " -B${ARM_TOOLCHAIN_DIR} ") +# Without that flag CMake is not able to pass test compilation check +if (${CMAKE_VERSION} VERSION_EQUAL "3.6.0" OR ${CMAKE_VERSION} VERSION_GREATER "3.6") + set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) +else () + set(CMAKE_EXE_LINKER_FLAGS_INIT "-nostdlib") +endif () + +set(CMAKE_OBJCOPY llvm-objcopy CACHE INTERNAL "objcopy tool") +set(CMAKE_SIZE_UTIL llvm-size CACHE INTERNAL "size tool") +# Default C compiler flags +set(CMAKE_C_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG") +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS_RELEASE_INIT "-O3 -Wall") +set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS_MINSIZEREL_INIT "-Oz -Wall") +set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall") +set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) +# Default C++ compiler flags +set(TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG "") +string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${ARM_GCC_SYSROOT}/include/c++/${ARM_GCC_VERSION}") +string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${ARM_GCC_SYSROOT}/include/c++/${ARM_GCC_VERSION}/arm-none-eabi") +string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${ARM_GCC_SYSROOT}/include/c++/${ARM_GCC_VERSION}/backward") +set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Oz -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) + +set(CMAKE_SYSROOT ${ARM_GCC_SYSROOT}) +set(CMAKE_FIND_ROOT_PATH ${ARM_GCC_SYSROOT}) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) From c8aeb273a0b6a7d14935fa466fd67cdcab5a7bd4 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sun, 13 Apr 2025 10:17:34 +0200 Subject: [PATCH 12/25] change order in toolchain file so it makes more sense --- create-cmake-toolchain.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/create-cmake-toolchain.sh b/create-cmake-toolchain.sh index 88ba77d..a98d709 100755 --- a/create-cmake-toolchain.sh +++ b/create-cmake-toolchain.sh @@ -3,11 +3,11 @@ set -e source swift-define cat < $CROSS_TOOLCHAIN_FILE -set(CMAKE_C_COMPILER_TARGET ${SWIFT_TARGET_NAME}) -set(CMAKE_CXX_COMPILER_TARGET ${SWIFT_TARGET_NAME}) -set(CMAKE_SYSROOT ${STAGING_DIR}) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_TARGET_ARCH}) +set(CMAKE_SYSROOT ${STAGING_DIR}) +set(CMAKE_C_COMPILER_TARGET ${SWIFT_TARGET_NAME}) +set(CMAKE_CXX_COMPILER_TARGET ${SWIFT_TARGET_NAME}) set(CMAKE_Swift_COMPILER_TARGET ${SWIFT_TARGET_NAME}) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) EOT From 0d79d78308e8f552ebba4fff8db4a62166804603 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sun, 13 Apr 2025 10:19:05 +0200 Subject: [PATCH 13/25] remove unneeded --- clang-arm-gcc-toolchain.cmake | 2 -- 1 file changed, 2 deletions(-) diff --git a/clang-arm-gcc-toolchain.cmake b/clang-arm-gcc-toolchain.cmake index 7682ec4..9949d5f 100644 --- a/clang-arm-gcc-toolchain.cmake +++ b/clang-arm-gcc-toolchain.cmake @@ -1,5 +1,3 @@ -set(CMAKE_SYSTEM_NAME Generic-ELF) -set(CMAKE_SYSTEM_PROCESSOR ARM) set(TOOLCHAIN_PREFIX arm-none-eabi-) set(TOOLCHAIN_TRIPLE arm-none-eabi) From d27def1562d17a701abd233d3752a7aa89a6ad0f Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sun, 13 Apr 2025 10:20:06 +0200 Subject: [PATCH 14/25] remove more unneeded --- clang-arm-gcc-toolchain.cmake | 3 --- 1 file changed, 3 deletions(-) diff --git a/clang-arm-gcc-toolchain.cmake b/clang-arm-gcc-toolchain.cmake index 9949d5f..30cdbd5 100644 --- a/clang-arm-gcc-toolchain.cmake +++ b/clang-arm-gcc-toolchain.cmake @@ -17,11 +17,8 @@ execute_process(COMMAND ${ARM_GCC_C_COMPILER} --version string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" ARM_GCC_VERSION ${ARM_GCC_VERSION}) # set compiler triple set(triple ${TOOLCHAIN_TRIPLE}) -set(CMAKE_ASM_COMPILER clang) set(CMAKE_ASM_COMPILER_TARGET ${triple}) -set(CMAKE_C_COMPILER clang) set(CMAKE_C_COMPILER_TARGET ${triple}) -set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_COMPILER_TARGET ${triple}) set(CMAKE_C_FLAGS_INIT " -B${ARM_TOOLCHAIN_DIR}") From b9518eb97d7e32f95eb1bddba3ef3be9e77bbb9d Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sun, 13 Apr 2025 10:45:47 +0200 Subject: [PATCH 15/25] change order once again --- create-cmake-toolchain.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create-cmake-toolchain.sh b/create-cmake-toolchain.sh index a98d709..0a476d9 100755 --- a/create-cmake-toolchain.sh +++ b/create-cmake-toolchain.sh @@ -6,8 +6,8 @@ cat < $CROSS_TOOLCHAIN_FILE set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_TARGET_ARCH}) set(CMAKE_SYSROOT ${STAGING_DIR}) +set(CMAKE_Swift_COMPILER_TARGET ${SWIFT_TARGET_NAME}) set(CMAKE_C_COMPILER_TARGET ${SWIFT_TARGET_NAME}) set(CMAKE_CXX_COMPILER_TARGET ${SWIFT_TARGET_NAME}) -set(CMAKE_Swift_COMPILER_TARGET ${SWIFT_TARGET_NAME}) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) EOT From 962412fcf6e3e444ae2dd18cccb1b8921f1a395b Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sun, 13 Apr 2025 10:47:26 +0200 Subject: [PATCH 16/25] add toolchain file, mostly from: https://github.com/vpetrigo/arm-cmake-toolchains/blob/master/clang-arm-gcc-toolchain.cmake --- create-cmake-toolchain.sh | 65 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 3 deletions(-) diff --git a/create-cmake-toolchain.sh b/create-cmake-toolchain.sh index 0a476d9..6deca2e 100755 --- a/create-cmake-toolchain.sh +++ b/create-cmake-toolchain.sh @@ -7,7 +7,66 @@ set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_TARGET_ARCH}) set(CMAKE_SYSROOT ${STAGING_DIR}) set(CMAKE_Swift_COMPILER_TARGET ${SWIFT_TARGET_NAME}) -set(CMAKE_C_COMPILER_TARGET ${SWIFT_TARGET_NAME}) -set(CMAKE_CXX_COMPILER_TARGET ${SWIFT_TARGET_NAME}) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + +set(TOOLCHAIN_PREFIX arm-none-eabi-) +set(TOOLCHAIN_TRIPLE arm-none-eabi) +find_program(BINUTILS_PATH ${TOOLCHAIN_PREFIX}gcc NO_CACHE) + +if (NOT BINUTILS_PATH) + message(FATAL_ERROR "ARM GCC toolchain not found") +endif () + +get_filename_component(ARM_TOOLCHAIN_DIR ${BINUTILS_PATH} DIRECTORY) +set(ARM_GCC_C_COMPILER ${TOOLCHAIN_PREFIX}gcc) +execute_process(COMMAND ${ARM_GCC_C_COMPILER} -print-sysroot + OUTPUT_VARIABLE ARM_GCC_SYSROOT OUTPUT_STRIP_TRAILING_WHITESPACE) +# get GNU ARM GCC version +execute_process(COMMAND ${ARM_GCC_C_COMPILER} --version + OUTPUT_VARIABLE ARM_GCC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) +string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" ARM_GCC_VERSION ${ARM_GCC_VERSION}) +# set compiler triple +set(triple ${TOOLCHAIN_TRIPLE}) +set(CMAKE_ASM_COMPILER_TARGET ${triple}) +set(CMAKE_C_COMPILER_TARGET ${triple}) +set(CMAKE_CXX_COMPILER_TARGET ${triple}) + +set(CMAKE_C_FLAGS_INIT " -B${ARM_TOOLCHAIN_DIR}") +set(CMAKE_CXX_FLAGS_INIT " -B${ARM_TOOLCHAIN_DIR} ") +# Without that flag CMake is not able to pass test compilation check +if (${CMAKE_VERSION} VERSION_EQUAL "3.6.0" OR ${CMAKE_VERSION} VERSION_GREATER "3.6") + set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) +else () + set(CMAKE_EXE_LINKER_FLAGS_INIT "-nostdlib") +endif () + +set(CMAKE_OBJCOPY llvm-objcopy CACHE INTERNAL "objcopy tool") +set(CMAKE_SIZE_UTIL llvm-size CACHE INTERNAL "size tool") +# Default C compiler flags +set(CMAKE_C_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG") +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS_RELEASE_INIT "-O3 -Wall") +set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS_MINSIZEREL_INIT "-Oz -Wall") +set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall") +set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) +# Default C++ compiler flags +set(TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG "") +string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${ARM_GCC_SYSROOT}/include/c++/${ARM_GCC_VERSION}") +string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${ARM_GCC_SYSROOT}/include/c++/${ARM_GCC_VERSION}/arm-none-eabi") +string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${ARM_GCC_SYSROOT}/include/c++/${ARM_GCC_VERSION}/backward") +set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Oz -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) + +set(CMAKE_SYSROOT ${ARM_GCC_SYSROOT}) +set(CMAKE_FIND_ROOT_PATH ${ARM_GCC_SYSROOT}) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) EOT From eda78664519ea5e0ca14bd47b5f4b6d3ca85c3cd Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sun, 13 Apr 2025 10:49:10 +0200 Subject: [PATCH 17/25] change generic to what I have --- create-cmake-toolchain.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/create-cmake-toolchain.sh b/create-cmake-toolchain.sh index 6deca2e..c370a51 100755 --- a/create-cmake-toolchain.sh +++ b/create-cmake-toolchain.sh @@ -8,8 +8,8 @@ set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_TARGET_ARCH}) set(CMAKE_SYSROOT ${STAGING_DIR}) set(CMAKE_Swift_COMPILER_TARGET ${SWIFT_TARGET_NAME}) -set(TOOLCHAIN_PREFIX arm-none-eabi-) -set(TOOLCHAIN_TRIPLE arm-none-eabi) +set(TOOLCHAIN_PREFIX ${SWIFT_TARGET_NAME}-) +set(TOOLCHAIN_TRIPLE ${SWIFT_TARGET_NAME}) find_program(BINUTILS_PATH ${TOOLCHAIN_PREFIX}gcc NO_CACHE) if (NOT BINUTILS_PATH) From 3b4f812a04fd8fa40fc9b154cde899b08e73b485 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sun, 13 Apr 2025 10:52:05 +0200 Subject: [PATCH 18/25] Revert "add back gcc install dir" This reverts commit d17d09cd1fe908afc990094257303483c9125c4d. --- build-swift-stdlib.sh | 9 ++++++++- swift-define | 12 ++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/build-swift-stdlib.sh b/build-swift-stdlib.sh index 44779fc..a252034 100755 --- a/build-swift-stdlib.sh +++ b/build-swift-stdlib.sh @@ -63,7 +63,14 @@ cmake -S $SWIFT_SRCDIR -B $SWIFT_BUILDDIR -G Ninja \ -DCMAKE_Swift_FLAGS_DEBUG="" \ -DCMAKE_Swift_FLAGS_RELEASE="" \ -DCMAKE_Swift_FLAGS_RELWITHDEBINFO="" \ - -DCMAKE_OSX_SYSROOT="" + -DCMAKE_OSX_SYSROOT="" \ + -DCMAKE_EXE_LINKER_FLAGS="-L/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/" \ + -DCMAKE_C_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ + -DCMAKE_C_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" \ + -DCMAKE_CXX_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ + -DCMAKE_CXX_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" + -DCMAKE_Swift_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ + -DCMAKE_Swift_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" \ echo "Build Swift StdLib" (cd $SWIFT_BUILDDIR && ninja) diff --git a/swift-define b/swift-define index 1ee5610..655a785 100644 --- a/swift-define +++ b/swift-define @@ -47,11 +47,6 @@ SWIFTPM_CONFIGURATION="${SWIFTPM_CONFIGURATION:=release}" SWIFT_PACKAGE_SRCDIR="${SWIFT_PACKAGE_SRCDIR:=$SRC_ROOT/swift-hello}" SWIFT_PACKAGE_BUILDDIR="${SWIFT_PACKAGE_BUILDDIR:=$SWIFT_PACKAGE_SRCDIR/.build}" CROSS_TOOLCHAIN_FILE="${CROSS_TOOLCHAIN_FILE:=$SRC_ROOT/build/build-toolchain-${SWIFT_TARGET_ARCH}.cmake}" -if [ -d ${STAGING_DIR} ]; then - GCC_INSTALL_DIR=$(dirname $(find ${STAGING_DIR} -name crtbegin.o)) -else - GCC_INSTALL_DIR=${STAGING_DIR} -fi # Build Paths LLVM_SRCDIR=$SRC_ROOT/downloads/llvm-project @@ -84,10 +79,11 @@ INSTALL_PREFIX=$SRC_ROOT/build/swift-install/usr INSTALL_TAR=${INSTALL_TAR:=$SRC_ROOT/build/$SWIFT_VERSION-$SWIFT_TARGET_ARCH.tar.gz} PREBUILT_XCTOOLCHAIN=$SRC_ROOT/downloads/${SWIFT_VERSION}-osx.pkg +EXTRA_YOCTO_FLAGS="-L/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0 -v" # Compilation flags -RUNTIME_FLAGS="-w -fuse-ld=lld --sysroot=${STAGING_DIR} --gcc-install-dir=${GCC_INSTALL_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS}" -LINK_FLAGS="--sysroot=${STAGING_DIR} --gcc-install-dir=${GCC_INSTALL_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS}" -ASM_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME}" +RUNTIME_FLAGS="-w -fuse-ld=lld --sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS} ${EXTRA_YOCTO_FLAGS}" +LINK_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS} ${EXTRA_YOCTO_FLAGS}" +ASM_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_YOCTO_FLAGS}" SWIFTC_FLAGS="-target ${SWIFT_TARGET_NAME} ${EXTRA_YOCTO_FLAGS} \ -use-ld=lld \ From a7c8ddce453475dce6d623f219d1554bdc1eed0b Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Sun, 13 Apr 2025 12:03:14 +0200 Subject: [PATCH 19/25] Reapply "add back gcc install dir" This reverts commit 3b4f812a04fd8fa40fc9b154cde899b08e73b485. --- build-swift-stdlib.sh | 9 +-------- swift-define | 12 ++++++++---- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/build-swift-stdlib.sh b/build-swift-stdlib.sh index a252034..44779fc 100755 --- a/build-swift-stdlib.sh +++ b/build-swift-stdlib.sh @@ -63,14 +63,7 @@ cmake -S $SWIFT_SRCDIR -B $SWIFT_BUILDDIR -G Ninja \ -DCMAKE_Swift_FLAGS_DEBUG="" \ -DCMAKE_Swift_FLAGS_RELEASE="" \ -DCMAKE_Swift_FLAGS_RELWITHDEBINFO="" \ - -DCMAKE_OSX_SYSROOT="" \ - -DCMAKE_EXE_LINKER_FLAGS="-L/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/" \ - -DCMAKE_C_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ - -DCMAKE_C_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" \ - -DCMAKE_CXX_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ - -DCMAKE_CXX_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" - -DCMAKE_Swift_STARTUP_OBJECTS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtbeginS.o" \ - -DCMAKE_Swift_END_OF_STATIC_LIBS="/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0/crtendS.o" \ + -DCMAKE_OSX_SYSROOT="" echo "Build Swift StdLib" (cd $SWIFT_BUILDDIR && ninja) diff --git a/swift-define b/swift-define index 655a785..1ee5610 100644 --- a/swift-define +++ b/swift-define @@ -47,6 +47,11 @@ SWIFTPM_CONFIGURATION="${SWIFTPM_CONFIGURATION:=release}" SWIFT_PACKAGE_SRCDIR="${SWIFT_PACKAGE_SRCDIR:=$SRC_ROOT/swift-hello}" SWIFT_PACKAGE_BUILDDIR="${SWIFT_PACKAGE_BUILDDIR:=$SWIFT_PACKAGE_SRCDIR/.build}" CROSS_TOOLCHAIN_FILE="${CROSS_TOOLCHAIN_FILE:=$SRC_ROOT/build/build-toolchain-${SWIFT_TARGET_ARCH}.cmake}" +if [ -d ${STAGING_DIR} ]; then + GCC_INSTALL_DIR=$(dirname $(find ${STAGING_DIR} -name crtbegin.o)) +else + GCC_INSTALL_DIR=${STAGING_DIR} +fi # Build Paths LLVM_SRCDIR=$SRC_ROOT/downloads/llvm-project @@ -79,11 +84,10 @@ INSTALL_PREFIX=$SRC_ROOT/build/swift-install/usr INSTALL_TAR=${INSTALL_TAR:=$SRC_ROOT/build/$SWIFT_VERSION-$SWIFT_TARGET_ARCH.tar.gz} PREBUILT_XCTOOLCHAIN=$SRC_ROOT/downloads/${SWIFT_VERSION}-osx.pkg -EXTRA_YOCTO_FLAGS="-L/opt/swift-armv7/sysroot-imx8/lib/aarch64-poky-linux/13.3.0 -v" # Compilation flags -RUNTIME_FLAGS="-w -fuse-ld=lld --sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS} ${EXTRA_YOCTO_FLAGS}" -LINK_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS} ${EXTRA_YOCTO_FLAGS}" -ASM_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_YOCTO_FLAGS}" +RUNTIME_FLAGS="-w -fuse-ld=lld --sysroot=${STAGING_DIR} --gcc-install-dir=${GCC_INSTALL_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS}" +LINK_FLAGS="--sysroot=${STAGING_DIR} --gcc-install-dir=${GCC_INSTALL_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS}" +ASM_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME}" SWIFTC_FLAGS="-target ${SWIFT_TARGET_NAME} ${EXTRA_YOCTO_FLAGS} \ -use-ld=lld \ From 21a051c99e5fdbc9ed69da12577e07a02230b2ef Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Mon, 14 Apr 2025 18:31:29 +0200 Subject: [PATCH 20/25] add extra yocto flags --- create-cmake-toolchain.sh | 87 +++++++++++++++++---------------------- swift-define | 9 ++-- 2 files changed, 43 insertions(+), 53 deletions(-) diff --git a/create-cmake-toolchain.sh b/create-cmake-toolchain.sh index c370a51..01a8899 100755 --- a/create-cmake-toolchain.sh +++ b/create-cmake-toolchain.sh @@ -8,65 +8,52 @@ set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_TARGET_ARCH}) set(CMAKE_SYSROOT ${STAGING_DIR}) set(CMAKE_Swift_COMPILER_TARGET ${SWIFT_TARGET_NAME}) -set(TOOLCHAIN_PREFIX ${SWIFT_TARGET_NAME}-) -set(TOOLCHAIN_TRIPLE ${SWIFT_TARGET_NAME}) -find_program(BINUTILS_PATH ${TOOLCHAIN_PREFIX}gcc NO_CACHE) +find_program(BINUTILS_PATH ${SWIFT_TARGET_NAME_PREFIX}gcc NO_CACHE) if (NOT BINUTILS_PATH) message(FATAL_ERROR "ARM GCC toolchain not found") endif () -get_filename_component(ARM_TOOLCHAIN_DIR ${BINUTILS_PATH} DIRECTORY) -set(ARM_GCC_C_COMPILER ${TOOLCHAIN_PREFIX}gcc) -execute_process(COMMAND ${ARM_GCC_C_COMPILER} -print-sysroot - OUTPUT_VARIABLE ARM_GCC_SYSROOT OUTPUT_STRIP_TRAILING_WHITESPACE) -# get GNU ARM GCC version -execute_process(COMMAND ${ARM_GCC_C_COMPILER} --version - OUTPUT_VARIABLE ARM_GCC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) -string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" ARM_GCC_VERSION ${ARM_GCC_VERSION}) # set compiler triple -set(triple ${TOOLCHAIN_TRIPLE}) -set(CMAKE_ASM_COMPILER_TARGET ${triple}) -set(CMAKE_C_COMPILER_TARGET ${triple}) -set(CMAKE_CXX_COMPILER_TARGET ${triple}) +set(CMAKE_ASM_COMPILER_TARGET ${SWIFT_TARGET_NAME}) +set(CMAKE_C_COMPILER_TARGET ${SWIFT_TARGET_NAME}) +set(CMAKE_CXX_COMPILER_TARGET ${SWIFT_TARGET_NAME}) -set(CMAKE_C_FLAGS_INIT " -B${ARM_TOOLCHAIN_DIR}") -set(CMAKE_CXX_FLAGS_INIT " -B${ARM_TOOLCHAIN_DIR} ") +set(CMAKE_C_FLAGS_INIT CACHE " -B${STAGING_DIR}/bin " FORCE) +set(CMAKE_CXX_FLAGS_INIT " -B${STAGING_DIR}/bin ") # Without that flag CMake is not able to pass test compilation check -if (${CMAKE_VERSION} VERSION_EQUAL "3.6.0" OR ${CMAKE_VERSION} VERSION_GREATER "3.6") - set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) -else () - set(CMAKE_EXE_LINKER_FLAGS_INIT "-nostdlib") -endif () +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) + +#set(CMAKE_OBJCOPY llvm-objcopy CACHE INTERNAL "objcopy tool") +#set(CMAKE_SIZE_UTIL llvm-size CACHE INTERNAL "size tool") +## Default C compiler flags +#set(CMAKE_C_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG") +#set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) +#set(CMAKE_C_FLAGS_RELEASE_INIT "-O3 -Wall") +#set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) +#set(CMAKE_C_FLAGS_MINSIZEREL_INIT "-Oz -Wall") +#set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) +#set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall") +#set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) +## Default C++ compiler flags +#set(TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG "") +#string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${STAGING_DIR}/usr/include/c++/13.3.0") +#string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${STAGING_DIR}/usr/include/c++/13.3.0/${SWIFT_TARGET_NAME}") +#string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${STAGING_DIR}/usr/include/c++/13.3.0/backward") +#set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +#set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) +#set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +#set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) +#set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Oz -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +#set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) +#set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +#set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) -set(CMAKE_OBJCOPY llvm-objcopy CACHE INTERNAL "objcopy tool") -set(CMAKE_SIZE_UTIL llvm-size CACHE INTERNAL "size tool") -# Default C compiler flags -set(CMAKE_C_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG") -set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) -set(CMAKE_C_FLAGS_RELEASE_INIT "-O3 -Wall") -set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) -set(CMAKE_C_FLAGS_MINSIZEREL_INIT "-Oz -Wall") -set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) -set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall") -set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) -# Default C++ compiler flags -set(TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG "") -string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${ARM_GCC_SYSROOT}/include/c++/${ARM_GCC_VERSION}") -string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${ARM_GCC_SYSROOT}/include/c++/${ARM_GCC_VERSION}/arm-none-eabi") -string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${ARM_GCC_SYSROOT}/include/c++/${ARM_GCC_VERSION}/backward") -set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) -set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) -set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Oz -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") -set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) +set(CMAKE_FIND_ROOT_PATH ${STAGING_DIR}) +#set(CMAKE_FIND_ROOT_PATH ${STAGING_DIR}/usr/bin) -set(CMAKE_SYSROOT ${ARM_GCC_SYSROOT}) -set(CMAKE_FIND_ROOT_PATH ${ARM_GCC_SYSROOT}) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) EOT diff --git a/swift-define b/swift-define index 1ee5610..4717b3c 100644 --- a/swift-define +++ b/swift-define @@ -21,6 +21,7 @@ case ${SWIFT_TARGET_ARCH} in CMAKE_TARGET_ARCH="aarch64" DEBIAN_TARGET_ARCH=arm64 SWIFT_TARGET_NAME=${SWIFT_TARGET_ARCH}-poky-linux + SWIFT_TARGET_NAME_PREFIX=${SWIFT_TARGET_ARCH}-poky-linux- ;; *) echo "Unsupported architecture $SWIFT_TARGET_ARCH!" @@ -84,10 +85,12 @@ INSTALL_PREFIX=$SRC_ROOT/build/swift-install/usr INSTALL_TAR=${INSTALL_TAR:=$SRC_ROOT/build/$SWIFT_VERSION-$SWIFT_TARGET_ARCH.tar.gz} PREBUILT_XCTOOLCHAIN=$SRC_ROOT/downloads/${SWIFT_VERSION}-osx.pkg +EXTRA_YOCTO_FLAGS="-I${STAGING_DIR}/usr/include/c++/13.3.0 -I${STAGING_DIR}/usr/include/c++/13.3.0/${SWIFT_TARGET_NAME}" + # Compilation flags -RUNTIME_FLAGS="-w -fuse-ld=lld --sysroot=${STAGING_DIR} --gcc-install-dir=${GCC_INSTALL_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS}" -LINK_FLAGS="--sysroot=${STAGING_DIR} --gcc-install-dir=${GCC_INSTALL_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS}" -ASM_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME}" +RUNTIME_FLAGS="-w -fuse-ld=lld --sysroot=${STAGING_DIR} --gcc-install-dir=${GCC_INSTALL_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS} ${EXTRA_YOCTO_FLAGS}" +LINK_FLAGS="--sysroot=${STAGING_DIR} --gcc-install-dir=${GCC_INSTALL_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_FLAGS} ${EXTRA_YOCTO_FLAGS}" +ASM_FLAGS="--sysroot=${STAGING_DIR} -target ${SWIFT_TARGET_NAME} ${EXTRA_YOCTO_FLAGS}" SWIFTC_FLAGS="-target ${SWIFT_TARGET_NAME} ${EXTRA_YOCTO_FLAGS} \ -use-ld=lld \ From 028a4a35a3a5077cfd8fe805d85ab321b7c088f6 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Mon, 14 Apr 2025 18:53:53 +0200 Subject: [PATCH 21/25] add libxml dir --- build-swift-stdlib.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build-swift-stdlib.sh b/build-swift-stdlib.sh index 44779fc..06d204f 100755 --- a/build-swift-stdlib.sh +++ b/build-swift-stdlib.sh @@ -9,6 +9,7 @@ mkdir -p $SWIFT_INSTALL_PREFIX echo "Configure Swift" rm -rf $SWIFT_BUILDDIR/CMakeCache.txt cmake -S $SWIFT_SRCDIR -B $SWIFT_BUILDDIR -G Ninja \ + -DXML_LIBRARY=${STAGING_DIR}/usr/lib/libxml2.so.2.12.8 -DCMAKE_INSTALL_PREFIX=${SWIFT_INSTALL_PREFIX} \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_BUILD_TYPE=${SWIFT_BUILD_CONFIGURATION} \ From 6899dbffa9a612d6ac12e93ed3752dec38249475 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Mon, 14 Apr 2025 19:02:04 +0200 Subject: [PATCH 22/25] path to libxml and libedit --- build-swift-stdlib.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build-swift-stdlib.sh b/build-swift-stdlib.sh index 06d204f..b94838a 100755 --- a/build-swift-stdlib.sh +++ b/build-swift-stdlib.sh @@ -9,7 +9,8 @@ mkdir -p $SWIFT_INSTALL_PREFIX echo "Configure Swift" rm -rf $SWIFT_BUILDDIR/CMakeCache.txt cmake -S $SWIFT_SRCDIR -B $SWIFT_BUILDDIR -G Ninja \ - -DXML_LIBRARY=${STAGING_DIR}/usr/lib/libxml2.so.2.12.8 + -DLIBXML2_LIBRARY=${STAGING_DIR}/usr/lib/libxml2.so.2.12.8 \ + -DLibEdit_LIBRARIES=${STAGING_DIR}/usr/lib/libedit.so.0.0.72 \ -DCMAKE_INSTALL_PREFIX=${SWIFT_INSTALL_PREFIX} \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_BUILD_TYPE=${SWIFT_BUILD_CONFIGURATION} \ From f9f08dd6b07c60ec74a936ef1bc26f9a90d4ad3d Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Mon, 14 Apr 2025 20:56:25 +0200 Subject: [PATCH 23/25] turn off static build --- build-swift-stdlib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-swift-stdlib.sh b/build-swift-stdlib.sh index b94838a..025937a 100755 --- a/build-swift-stdlib.sh +++ b/build-swift-stdlib.sh @@ -30,7 +30,7 @@ cmake -S $SWIFT_SRCDIR -B $SWIFT_BUILDDIR -G Ninja \ -DSWIFT_NATIVE_SWIFT_TOOLS_PATH=$SWIFT_NATIVE_PATH \ -DSWIFT_BUILD_DYNAMIC_SDK_OVERLAY=ON \ -DSWIFT_BUILD_DYNAMIC_STDLIB=ON \ - -DSWIFT_BUILD_STATIC_STDLIB=ON \ + -DSWIFT_BUILD_STATIC_STDLIB=OFF \ -DSWIFT_BUILD_REMOTE_MIRROR=ON \ -DSWIFT_BUILD_SOURCEKIT=ON \ -DSWIFT_BUILD_STDLIB_EXTRA_TOOLCHAIN_CONTENT=ON \ From 8025c2e24494382e7853bbd28c5c9e8c85ad2e05 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Mon, 14 Apr 2025 20:57:21 +0200 Subject: [PATCH 24/25] turn off stdlibcc, it still asks for /opt/swift-armv7/build/swift-linux-aarch64/./lib/swift/linux/libstdcxx.modulemap --- build-swift-stdlib.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/build-swift-stdlib.sh b/build-swift-stdlib.sh index 025937a..0f22596 100755 --- a/build-swift-stdlib.sh +++ b/build-swift-stdlib.sh @@ -49,9 +49,9 @@ cmake -S $SWIFT_SRCDIR -B $SWIFT_BUILDDIR -G Ninja \ -DSWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE=${SYNTAX_SRCDIR} \ -DSWIFT_PATH_TO_STRING_PROCESSING_SOURCE=${STRING_PROCESSING_SRCDIR} \ -DSWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING=ON \ - -DSWIFT_ENABLE_EXPERIMENTAL_CXX_INTEROP=ON \ - -DSWIFT_ENABLE_CXX_INTEROP_SWIFT_BRIDGING_HEADER=ON \ - -DSWIFT_BUILD_STDLIB_CXX_MODULE=ON \ + -DSWIFT_ENABLE_EXPERIMENTAL_CXX_INTEROP=OFF \ + -DSWIFT_ENABLE_CXX_INTEROP_SWIFT_BRIDGING_HEADER=OFF \ + -DSWIFT_BUILD_STDLIB_CXX_MODULE=OFF \ -DSWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING=ON \ -DSWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED=ON \ -DSWIFT_ENABLE_EXPERIMENTAL_NONESCAPABLE_TYPES=ON \ @@ -74,8 +74,8 @@ echo "Install Swift StdLib" (cd $SWIFT_BUILDDIR && ninja install) # https://github.com/swiftlang/swift/issues/78003 -echo "Fix libswiftCxx installation location..." -cp -rf ${SWIFT_INSTALL_PREFIX}/lib/swift/linux/libswiftCxx*.a ${SWIFT_INSTALL_PREFIX}/lib/swift_static/linux +#echo "Fix libswiftCxx installation location..." +#cp -rf ${SWIFT_INSTALL_PREFIX}/lib/swift/linux/libswiftCxx*.a ${SWIFT_INSTALL_PREFIX}/lib/swift_static/linux echo "Install Swift Stdlib to sysroot" cp -rf ${SWIFT_INSTALL_PREFIX}/* ${STAGING_DIR}/usr/ From f6427a6849b5c60f931b47a02e255b6343bec9b1 Mon Sep 17 00:00:00 2001 From: Xaver Gruber Date: Tue, 15 Apr 2025 18:45:28 +0200 Subject: [PATCH 25/25] add back flags in toolchain file --- create-cmake-toolchain.sh | 49 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/create-cmake-toolchain.sh b/create-cmake-toolchain.sh index 01a8899..fcc39bd 100755 --- a/create-cmake-toolchain.sh +++ b/create-cmake-toolchain.sh @@ -24,33 +24,32 @@ set(CMAKE_CXX_FLAGS_INIT " -B${STAGING_DIR}/bin ") # Without that flag CMake is not able to pass test compilation check set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) -#set(CMAKE_OBJCOPY llvm-objcopy CACHE INTERNAL "objcopy tool") -#set(CMAKE_SIZE_UTIL llvm-size CACHE INTERNAL "size tool") -## Default C compiler flags -#set(CMAKE_C_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG") -#set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) -#set(CMAKE_C_FLAGS_RELEASE_INIT "-O3 -Wall") -#set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) -#set(CMAKE_C_FLAGS_MINSIZEREL_INIT "-Oz -Wall") -#set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) -#set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall") -#set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) -## Default C++ compiler flags -#set(TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG "") -#string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${STAGING_DIR}/usr/include/c++/13.3.0") -#string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${STAGING_DIR}/usr/include/c++/13.3.0/${SWIFT_TARGET_NAME}") -#string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${STAGING_DIR}/usr/include/c++/13.3.0/backward") -#set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") -#set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) -#set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") -#set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) -#set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Oz -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") -#set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) -#set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") -#set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) +set(CMAKE_OBJCOPY llvm-objcopy CACHE INTERNAL "objcopy tool") +set(CMAKE_SIZE_UTIL llvm-size CACHE INTERNAL "size tool") +# Default C compiler flags +set(CMAKE_C_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG") +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS_RELEASE_INIT "-O3 -Wall") +set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS_MINSIZEREL_INIT "-Oz -Wall") +set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall") +set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) +# Default C++ compiler flags +set(TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG "") +string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${STAGING_DIR}/usr/include/c++/13.3.0") +string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${STAGING_DIR}/usr/include/c++/13.3.0/${SWIFT_TARGET_NAME}") +string(APPEND TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG " -cxx-isystem ${STAGING_DIR}/usr/include/c++/13.3.0/backward") +set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g3 -Og -Wall -pedantic -DDEBUG ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG_INIT}" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE_INIT}" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Oz -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL_INIT}" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall ${TOOLCHAIN_CXX_INCLUDE_DIRS_FLAG}") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING "" FORCE) set(CMAKE_FIND_ROOT_PATH ${STAGING_DIR}) -#set(CMAKE_FIND_ROOT_PATH ${STAGING_DIR}/usr/bin) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)