Skip to content

Commit 3d94eef

Browse files
authored
Merge pull request #16 from edg-l/chore/refactor-ci
Refactor `build.rs`
2 parents 1415a4f + 5089b04 commit 3d94eef

File tree

3 files changed

+24
-33
lines changed

3 files changed

+24
-33
lines changed

.github/workflows/test.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
matrix:
1212
os:
1313
- ubuntu-latest
14-
- macos-14
14+
- macos-latest
1515
runs-on: ${{ matrix.os }}
1616
steps:
1717
- uses: actions/checkout@v4

build.rs

+18-29
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ use std::{
66
str,
77
};
88

9-
#[cfg(feature = "llvm16-0")]
10-
const LLVM_MAJOR_VERSION: usize = 16;
11-
#[cfg(feature = "llvm17-0")]
12-
const LLVM_MAJOR_VERSION: usize = 17;
13-
#[cfg(feature = "llvm18-0")]
14-
const LLVM_MAJOR_VERSION: usize = 18;
15-
#[cfg(feature = "llvm19-0")]
16-
const LLVM_MAJOR_VERSION: usize = 19;
9+
const LLVM_MAJOR_VERSION: usize = if cfg!(feature = "llvm16-0") {
10+
16
11+
} else if cfg!(feature = "llvm17-0") {
12+
17
13+
} else if cfg!(feature = "llvm18-0") {
14+
18
15+
} else {
16+
19
17+
};
1718

1819
fn main() {
1920
if let Err(error) = run() {
@@ -36,14 +37,9 @@ fn run() -> Result<(), Box<dyn Error>> {
3637
println!("cargo:rerun-if-changed=wrapper.h");
3738
println!("cargo:rerun-if-changed=cc");
3839
println!("cargo:rustc-link-search={}", llvm_config("--libdir")?);
39-
println!("cargo:rustc-link-lib=static=LLVMCore");
40-
println!("cargo:rustc-link-lib=static=LLVMSupport");
41-
println!("cargo:rustc-link-lib=static=LLVMTableGen");
4240

4341
for name in llvm_config("--libnames")?.trim().split(' ') {
44-
if let Some(name) = trim_library_name(name) {
45-
println!("cargo:rustc-link-lib={}", name);
46-
}
42+
println!("cargo:rustc-link-lib=static={}", parse_library_name(name)?);
4743
}
4844

4945
for flag in llvm_config("--system-libs")?.trim().split(' ') {
@@ -59,20 +55,15 @@ fn run() -> Result<(), Box<dyn Error>> {
5955
);
6056
println!(
6157
"cargo:rustc-link-lib={}",
62-
path.file_name()
63-
.unwrap()
64-
.to_str()
65-
.unwrap()
66-
.split_once('.')
67-
.unwrap()
68-
.0
69-
.trim_start_matches("lib")
58+
parse_library_name(path.file_name().unwrap().to_str().unwrap())?
7059
);
7160
} else {
7261
println!("cargo:rustc-link-lib={}", flag);
7362
}
7463
}
7564

65+
println!("cargo:rustc-link-lib=ffi");
66+
7667
if let Some(name) = get_system_libcpp() {
7768
println!("cargo:rustc-link-lib={}", name);
7869
}
@@ -100,7 +91,7 @@ fn run() -> Result<(), Box<dyn Error>> {
10091

10192
bindgen::builder()
10293
.header("wrapper.h")
103-
.clang_arg(format!("-I{}", "cc/include"))
94+
.clang_arg("-Icc/include")
10495
.clang_arg(format!("-I{}", llvm_config("--includedir")?))
10596
.default_enum_style(bindgen::EnumVariation::ModuleConsts)
10697
.parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
@@ -143,10 +134,8 @@ fn llvm_config(argument: &str) -> Result<String, Box<dyn Error>> {
143134
.to_string())
144135
}
145136

146-
fn trim_library_name(name: &str) -> Option<&str> {
147-
if let Some(name) = name.strip_prefix("lib") {
148-
name.strip_suffix(".a")
149-
} else {
150-
None
151-
}
137+
fn parse_library_name(name: &str) -> Result<&str, String> {
138+
name.strip_prefix("lib")
139+
.and_then(|name| name.split('.').next())
140+
.ok_or_else(|| format!("failed to parse library name: {}", name))
152141
}

tools/setup.sh

+5-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ set -e
55
llvm_version=19
66

77
brew update
8-
brew install llvm@$llvm_version z3
8+
brew install llvm@$llvm_version
99

10-
echo TABLEGEN_190_PREFIX=$(brew --prefix)/opt/llvm@$llvm_version >>$GITHUB_ENV
11-
echo PATH=$(brew --prefix)/opt/llvm@$llvm_version/bin:$PATH >>$GITHUB_ENV
10+
llvm_prefix=$(brew --prefix llvm@$llvm_version)
11+
12+
echo TABLEGEN_190_PREFIX=$llvm_prefix >>$GITHUB_ENV
13+
echo PATH=$llvm_prefix/bin:$PATH >>$GITHUB_ENV
1214
echo LIBRARY_PATH=$(brew --prefix)/lib:$LIBRARY_PATH >>$GITHUB_ENV
1315
echo LD_LIBRARY_PATH=$(brew --prefix)/lib:$LD_LIBRARY_PATH >>$GITHUB_ENV

0 commit comments

Comments
 (0)