Swifty-LLVM is a Swifty interface for the LLVM compiler infrastructure, currently wrapping LLVM's C API.
See also: swift-llvm-bindings
This package requires Swift 6.1
This package requires LLVM 20. Major versions of LLVM are not interchangeable or backward-compatible.
If you are using this package for development we strongly recommend
the use of an LLVM with assertions enabled such as
these; otherwise it's much
too easy to violate LLVM's preconditions without knowing it. This
package's devcontainer (in the .devcontainer subdirectory) has
assert-enabled LLVM builds preinstalled in /opt/llvm-Debug and
/opt/llvm-MinSizeRel.
-
Configure: choose a build-directory and a CMake build type (usually
DebugorRelease) and then, where<LLVM>is the path to the root directory of your LLVM installation,cmake -D CMAKE_BUILD_TYPE=<build-type> \ -D LLVM_DIR=<LLVM>/lib/cmake/llvm \ -G Ninja -S . -B <build-directory>(on Windows substitute your shell's line continuation character for
\or just remove the line breaks and backslashes).If you want to run tests, add
-DBUILD_TESTING=1.Note: on macOS, if you are not using your Xcode's default toolchain, you may need
-D CMAKE_Swift_COMPILER=swiftcto prevent CMake from using Xcode's defaultswift.If this command fails it could be because you have an LLVM without CMake support installed; we suggest you try one of these packages instead.
-
Build:
cmake --build <build-directory> -
Test (requires
-DBUILD_TESTING=1in step 1):ctest --parallel --test-dir <build-directory>
-
Generate Xcode project: choose a build-directory and then, where
<LLVM>is the path to the root directory of your LLVM installation,cmake -D LLVM_DIR=<LLVM>/lib/cmake/llvm \ -G Xcode -S . -B <build-directory>If you want to run tests, add
-DBUILD_TESTING=1. -
Profit: open the
.xcodeprojfile in the build-directory and use Xcode's UI to build and test.
You can skip the following steps if you are using development containers.
- Install pkg-config.
- Ubuntu:
sudo apt install pkg-config - Windows:
choco install pkgconfiglite(Chocolatey) or install it manually - MacOS:
sudo port install pkgconfig(Mac Ports) installed, and<YOUR LLVM>/pkgconfigadded to thePKG_CONFIG_PATHenvironment variable.
- Add your LLVM installation's
pkgconfigsubfolder toPKG_CONFIG_PATH.
Now you should be able to build and test the project:
swift build -c release
swift test -c release- Add
platforms: [.macOS("xxx")]toPackage.swiftwherexxxis your macOS version to address the warning complaining that an "object file was built for newer macOS version than being linked". - You may need to add the path to
zstdlibrary inllvm.pc.