<div dir="ltr">I&#39;m working on cross-compiling swift using OS X to build a linux-arm runtime/stdlib, and I&#39;ve had some success. My change is here:<div><br></div><div><a href="https://github.com/froody/swift/commit/bc7ca07c1c7a94a8d07acd635c486388640ee2d2">https://github.com/froody/swift/commit/bc7ca07c1c7a94a8d07acd635c486388640ee2d2</a><br></div><div><br></div><div>Steps to repro are in cmake/modules/Toolchain-linux-arm.cmake</div><div><br></div><div>It&#39;s still a work in progress, but I wanted to get some feedback on whether or not I&#39;m going in the right direction. Toolchain files are the recommended way for cross-compiling with CMake, but it seems like it doesn&#39;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&#39;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&#39;t exist, and I&#39;m wondering if there&#39;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 <a href="https://bugs.swift.org/browse/SR-237">https://bugs.swift.org/browse/SR-237</a> first/in parallel?</div><div><br></div><div>I also required a change to LLVM:</div><div><div><br></div><div><font color="#3367d6"><u><a href="https://github.com/froody/swift-llvm/commit/ed54c92943444999f11918f013cca1dba7892da1">https://github.com/froody/swift-llvm/commit/ed54c92943444999f11918f013cca1dba7892da1</a></u></font><br></div></div><div><br></div><div>to fix this error:</div><div> </div><div><div>CMake Error: The inter-target dependency graph contains the following strongly connected component (cycle):</div><div>  &quot;NativeLLVMConfig&quot; of type UTILITY</div><div>    depends on &quot;llvm-config&quot; (strong)</div><div>  &quot;llvm-config&quot; of type EXECUTABLE</div><div>    depends on &quot;NativeLLVMConfig&quot; (strong)</div></div><div><br></div><div>Maybe Chris Bieneman has an idea about this? I seemed to successfully cross-compile with the &quot;False AND&quot; hack, not sure what&#39;s going on.<br></div><div><br></div><div>Anyway, I&#39;d appreciate any feedback on the direction/next steps.</div><div><br></div><div>cheers,</div><div>Tom</div></div>