[swift-dev] Cross-compiling with Toolchain files
froody at gmail.com
Tue Feb 16 15:48:44 CST 2016
I'm working on cross-compiling swift using OS X to build a linux-arm
runtime/stdlib, and I've had some success. My change is here:
Steps to repro are in cmake/modules/Toolchain-linux-arm.cmake
It's still a work in progress, but I wanted to get some feedback on whether
or not I'm going in the right direction. Toolchain files are the
recommended way for cross-compiling with CMake, but it seems like it
doesn't mesh well with the current system of building multiple mach-o
targets from a single CMake invocation (e.g. OS X, iOS, tvOS and watchOS
built on OS X). I've also had to fight the build-system a lot (using many
--skip-build-foo flags, and two invocations of ./utils/build-script) in
order to avoid building ninja targets that don't exist, and I'm wondering
if there's a better way to do this, i.e. to build llvm/clang/swiftc for OS
X in llvm-macosx-x86_64/swift-macosx-x86_64 build directories, and use that
to build (swiftc?)/stdlib/tests for linux-arm in a swift-linux-armv7 build
directory. Maybe this is a good reason to do
https://bugs.swift.org/browse/SR-237 first/in parallel?
I also required a change to LLVM:
to fix this error:
CMake Error: The inter-target dependency graph contains the following
strongly connected component (cycle):
"NativeLLVMConfig" of type UTILITY
depends on "llvm-config" (strong)
"llvm-config" of type EXECUTABLE
depends on "NativeLLVMConfig" (strong)
Maybe Chris Bieneman has an idea about this? I seemed to successfully
cross-compile with the "False AND" hack, not sure what's going on.
Anyway, I'd appreciate any feedback on the direction/next steps.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-dev