Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hylo-lang/Swifty-LLVM
Swifty interface for the LLVM compiler infrastructure.
https://github.com/hylo-lang/Swifty-LLVM
Last synced: 3 months ago
JSON representation
Swifty interface for the LLVM compiler infrastructure.
- Host: GitHub
- URL: https://github.com/hylo-lang/Swifty-LLVM
- Owner: hylo-lang
- License: apache-2.0
- Created: 2023-03-09T01:50:36.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-12T18:50:51.000Z (3 months ago)
- Last Synced: 2024-03-12T21:09:18.818Z (3 months ago)
- Language: Swift
- Size: 266 KB
- Stars: 25
- Watchers: 4
- Forks: 3
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-stars - hylo-lang/Swifty-LLVM - Swifty interface for the LLVM compiler infrastructure. (Swift)
README
# Swifty-LLVM
[![codecov](https://codecov.io/gh/hylo-lang/Swifty-LLVM/graph/badge.svg?token=M80FBR8JX8)](https://codecov.io/gh/hylo-lang/Swifty-LLVM)
**Swifty-LLVM** is a Swifty interface for the [LLVM](https://llvm.org) compiler infrastructure, currently wrapping LLVM's C API.
See also: [swift-llvm-bindings](https://github.com/apple/swift-llvm-bindings)
## Insallation:
### Development/Use Requirements
### Swift
This package requires Swift 5.9
### LLVM
This package requires LLVM 17. 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](https://github.com/hylo-lang/llvm-build); otherwise it's much
too easy to violate LLVM's preconditions without knowing it.*If* you want to build with the Swift Package Manager you'll need an
installation of LLVM with an `llvm-config` executable, which we will
use to create an `pkg-config` file for LLVM.## Building with CMake and Ninja
1. **Configure**: choose a *build-directory* and a CMake `build-type`
(usually `Debug` or `Release`) and then, where is the path
to the root directory of your LLVM installation,```
cmake -D CMAKE_BUILD_TYPE= \
-D LLVM_DIR=/lib/cmake/llvm \
-G Ninja -S . -B
```(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 `-D BUILD_TESTING`.
If this command fails it could be because you have an LLVM without
CMake support installed; we suggest you try one of
[these](https://github.com/hylo-lang/llvm-build) packages instead.2. **Build**:
```
cmake --build
```3. **Test** (requires `-D BUILD_TESTING` in step 1):
```
ctest --test-dir
```## Building with CMake and Xcode
1. **Generate Xcode project**: choose a *build-directory* and then,
where is the path to the root directory of your LLVM
installation,```
cmake -D LLVM_DIR=/lib/cmake/llvm \
-G Xcode -S . -B
```If you want to run tests, add `-D BUILD_TESTING`.
2. **Profit**: open the `.xcodeproj` file in the *build-directory* and
use Xcode's UI to build.## Building with Swift Package Manager
First, you need to create a `pkgconfig` file specific to your
installation and make it visible to your build tools. We use a `bash`
script as follows in the top-level directory of this project:```bash
./Tools/make-pkgconfig.sh ./llvm.pc
```if you are on Windows, your `git` installation (which is required for
Swift) contains a `bash` executable so you can do something like:```bash
C:\Program Files\Git\bin\bash ./Tools/make-pkgconfig.sh ./llvm.pc
```The command above generates `llvm.pc` in the current directory and
prints its contents to the terminal. You can either add its directory
to your `PKG_CONFIG_PATH` environtment variable for use with
command-line tools:```bash
export PKG_CONFIG_PATH=$PWD
```or you can put it somewhere that `pkg_config` already searches (needed
for use with Xcode):```bash
sudo mkdir -p /usr/local/lib/pkgconfig && sudo mv llvm.pc /usr/local/lib/pkgconfig/
```Once `llvm.pc` is set up, you should be able to **build this project**
using Swift package manager:```bash
swift build -c release
```### Notes to macOS users:
1. Add `platforms: [.macOS("xxx")]` to `Package.swift` where `xxx` is
your macOS version to address the warning complaining that an
"object file was built for newer macOS version than being linked".
2. You may need to add the path to `zstd` library in `llvm.pc`.