Skip to content

Commit

Permalink
Merge branch 'feature/toolchain-files'
Browse files Browse the repository at this point in the history
  • Loading branch information
xtremekforever committed Feb 15, 2025
2 parents 53edeef + b283598 commit 31be7ab
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 19 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build-swift-latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Build Swift Latest

on:
push:
branches: [ "main" ]
branches: [ "main", "feature/**" ]
pull_request:
branches: [ "main" ]

Expand Down
2 changes: 1 addition & 1 deletion build-dispatch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ LIBS="-latomic" cmake -S $LIBDISPATCH_SRCDIR -B $LIBDISPATCH_BUILDDIR -G Ninja \
-DCMAKE_CXX_FLAGS="${RUNTIME_FLAGS}" \
-DCMAKE_C_LINK_FLAGS="${LINK_FLAGS}" \
-DCMAKE_CXX_LINK_FLAGS="${LINK_FLAGS}" \
-DCMAKE_TOOLCHAIN_FILE="${CROSS_TOOLCHAIN_FILE}" \
-DENABLE_SWIFT=YES \
-DCMAKE_Swift_FLAGS="${SWIFTC_FLAGS}" \
-DCMAKE_Swift_FLAGS_DEBUG="" \
Expand All @@ -33,5 +34,4 @@ echo "Install Dispatch"
(cd $LIBDISPATCH_BUILDDIR && ninja install)

echo "Install Dispatch to sysroot"
mv ${LIBDISPATCH_INSTALL_PREFIX}/lib/swift/linux/"$(uname -m)"/ ${LIBDISPATCH_INSTALL_PREFIX}/lib/swift/linux/${SWIFT_TARGET_ARCH}/
cp -rf ${LIBDISPATCH_INSTALL_PREFIX}/* ${STAGING_DIR}/usr/
10 changes: 1 addition & 9 deletions build-foundation.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ LIBS="-latomic" cmake -S $FOUNDATION_SRCDIR -B $FOUNDATION_BUILDDIR -G Ninja \
-DCMAKE_C_LINK_FLAGS="${LINK_FLAGS}" \
-DCMAKE_CXX_LINK_FLAGS="${LINK_FLAGS}" \
-DCMAKE_ASM_FLAGS="${ASM_FLAGS}" \
-DCMAKE_TOOLCHAIN_FILE="${CROSS_TOOLCHAIN_FILE}" \
-DCF_DEPLOYMENT_SWIFT=ON \
-Ddispatch_DIR="${LIBDISPATCH_BUILDDIR}/cmake/modules" \
-DLIBXML2_LIBRARY=${STAGING_DIR}/usr/lib/arm-linux-gnueabihf/libxml2.so \
Expand All @@ -48,17 +49,8 @@ echo "Build Foundation"
echo "Install Foundation"
(cd $FOUNDATION_BUILDDIR && ninja install)

echo "Fix-up archs"
HOST_ARCH=$(uname -m)
find ${FOUNDATION_INSTALL_PREFIX}/lib/swift/linux -name "${HOST_ARCH}*.swiftmodule" -execdir mv {} ${SWIFT_TARGET_ARCH}-unknown-linux-gnueabihf.swiftmodule \;
find ${FOUNDATION_INSTALL_PREFIX}/lib/swift/linux -name "${HOST_ARCH}*.swiftdoc" -execdir mv {} ${SWIFT_TARGET_ARCH}-unknown-linux-gnueabihf.swiftdoc \;

# Restore Dispatch headers
cp -rf ${LIBDISPATCH_INSTALL_PREFIX}/* ${STAGING_DIR}/usr/

echo "Install Foundation into sysroot"
FOUNDATION_MODULES_DIR=${FOUNDATION_INSTALL_PREFIX}/lib/swift/linux/"$(uname -m)"
if [ -d $FOUNDATION_MODULES_DIR ]; then
mv ${FOUNDATION_MODULES_DIR} ${FOUNDATION_INSTALL_PREFIX}/lib/swift/linux/${SWIFT_TARGET_ARCH}
fi
cp -rf ${FOUNDATION_INSTALL_PREFIX}/* ${STAGING_DIR}/usr/
6 changes: 1 addition & 5 deletions build-swift-testing.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ LIBS="-latomic" cmake -S $SWIFT_TESTING_SRCDIR -B $SWIFT_TESTING_BUILDDIR -G Nin
-DCMAKE_CXX_FLAGS="${RUNTIME_FLAGS}" \
-DCMAKE_C_LINK_FLAGS="${LINK_FLAGS}" \
-DCMAKE_CXX_LINK_FLAGS="${LINK_FLAGS}" \
-DCMAKE_TOOLCHAIN_FILE="${CROSS_TOOLCHAIN_FILE}" \
-DCF_DEPLOYMENT_SWIFT=ON \
-DCMAKE_Swift_COMPILER=${SWIFT_NATIVE_PATH}/swiftc \
-DCMAKE_Swift_FLAGS="${SWIFTC_FLAGS}" \
Expand All @@ -33,10 +34,5 @@ echo "Build swift-testing"
echo "Install swift-testing"
(cd $SWIFT_TESTING_BUILDDIR && ninja install)

echo "Fix-up archs"
HOST_ARCH=$(uname -m)
find ${SWIFT_TESTING_INSTALL_PREFIX}/lib/swift/linux -name "${HOST_ARCH}*.swiftmodule" -execdir mv {} ${SWIFT_TARGET_ARCH}-unknown-linux-gnueabihf.swiftmodule \;
find ${SWIFT_TESTING_INSTALL_PREFIX}/lib/swift/linux -name "${HOST_ARCH}*.swiftdoc" -execdir mv {} ${SWIFT_TARGET_ARCH}-unknown-linux-gnueabihf.swiftdoc \;

echo "Install swift-testing to sysroot"
cp -rf ${SWIFT_TESTING_INSTALL_PREFIX}/* ${STAGING_DIR}/usr/
2 changes: 1 addition & 1 deletion build-xctest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ LIBS="-latomic" cmake -S $XCTEST_SRCDIR -B $XCTEST_BUILDDIR -G Ninja \
-DCMAKE_CXX_FLAGS="${RUNTIME_FLAGS}" \
-DCMAKE_C_LINK_FLAGS="${LINK_FLAGS}" \
-DCMAKE_CXX_LINK_FLAGS="${LINK_FLAGS}" \
-DCMAKE_TOOLCHAIN_FILE="${CROSS_TOOLCHAIN_FILE}" \
-DCF_DEPLOYMENT_SWIFT=ON \
-Ddispatch_DIR="${LIBDISPATCH_BUILDDIR}/cmake/modules" \
-DFoundation_DIR="${FOUNDATION_BUILDDIR}/cmake/modules" \
Expand All @@ -41,5 +42,4 @@ echo "Install XCTest"
cp -rf ${LIBDISPATCH_INSTALL_PREFIX}/* ${STAGING_DIR}/usr/

echo "Install XCTest to sysroot"
mv ${XCTEST_INSTALL_PREFIX}/lib/swift/linux/"$(uname -m)" ${XCTEST_INSTALL_PREFIX}/lib/swift/linux/${SWIFT_TARGET_ARCH}
cp -rf ${XCTEST_INSTALL_PREFIX}/* ${STAGING_DIR}/usr/
3 changes: 3 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ rm -rf $STAGING_DIR/usr/lib/swift*
# Build LLVM
./build-llvm.sh

# This is required for cross-compiling dispatch, foundation, etc
./create-cmake-toolchain.sh

# Build Swift
./build-swift-stdlib.sh
./build-dispatch.sh
Expand Down
12 changes: 12 additions & 0 deletions create-cmake-toolchain.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash
set -e
source swift-define

cat <<EOT > $CROSS_TOOLCHAIN_FILE
set(CMAKE_CXX_COMPILER_TARGET ${SWIFT_TARGET_NAME})
set(CMAKE_C_COMPILER_TARGET ${SWIFT_TARGET_NAME})
set(CMAKE_SYSROOT ${STAGING_DIR})
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_TARGET_ARCH})
set(CMAKE_Swift_COMPILER_TARGET ${SWIFT_TARGET_NAME})
EOT
7 changes: 5 additions & 2 deletions swift-define
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ SWIFT_TARGET_ARCH=${SWIFT_TARGET_ARCH:=armv7}

case ${SWIFT_TARGET_ARCH} in
armv6)
CMAKE_TARGET_ARCH="armv6l"
# The only version of armv6 supported is the RPI ARM1176JZF-S, which is only supported by Raspbian
# If you attempt to build for armv6 with a Ubuntu or Debian sysroot, binaries will fail to run!!!
EXTRA_FLAGS="-march=armv6z -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard"
EXTRA_FLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard"
;;
armv7)
EXTRA_FLAGS="-march=armv7-a -mfpu=neon -mfloat-abi=hard"
CMAKE_TARGET_ARCH="armv7-a"
EXTRA_FLAGS="-march=${CMAKE_TARGET_ARCH} -mfpu=neon -mfloat-abi=hard"
;;
*)
echo "Unsupported architecture $SWIFT_TARGET_ARCH!"
Expand All @@ -32,6 +34,7 @@ SWIFT_BUILD_CONFIGURATION="${SWIFT_BUILD_CONFIGURATION:=Release}"
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
Expand Down

0 comments on commit 31be7ab

Please sign in to comment.