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.2
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
Debug
orRelease
) 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=swiftc
to 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=1
in 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
.xcodeproj
file 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>/pkgconfig
added to thePKG_CONFIG_PATH
environment variable.
- Add your LLVM installation's
pkgconfig
subfolder 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.swift
wherexxx
is 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
zstd
library inllvm.pc
.