Skip to content

Commit 7bc7bbe

Browse files
committed
Make it possible to document builtin macro definitions
1 parent 5ec1756 commit 7bc7bbe

File tree

4 files changed

+294
-63
lines changed

4 files changed

+294
-63
lines changed

boulder/src/build/job/phase.rs

Lines changed: 56 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use itertools::Itertools;
66
use std::collections::BTreeSet;
77

8+
use stone_recipe::macros::BuiltinDefinition as Def;
89
use stone_recipe::{
910
script,
1011
tuning::{self, Toolchain},
@@ -140,20 +141,20 @@ impl Phase {
140141
parser.add_macros(macros.clone());
141142
}
142143

143-
parser.add_definition("name", &recipe.parsed.source.name);
144-
parser.add_definition("version", &recipe.parsed.source.version);
145-
parser.add_definition("release", recipe.parsed.source.release);
146-
parser.add_definition("jobs", num_jobs);
147-
parser.add_definition("pkgdir", paths.recipe().guest.join("pkg").display());
148-
parser.add_definition("sourcedir", paths.upstreams().guest.display());
149-
parser.add_definition("installroot", paths.install().guest.display());
150-
parser.add_definition("buildroot", build_dir.display());
151-
parser.add_definition("workdir", work_dir.display());
144+
parser.add_definition(Def::Name, &recipe.parsed.source.name);
145+
parser.add_definition(Def::Version, &recipe.parsed.source.version);
146+
parser.add_definition(Def::Release, recipe.parsed.source.release);
147+
parser.add_definition(Def::Jobs, num_jobs);
148+
parser.add_definition(Def::PkgDir, paths.recipe().guest.join("pkg").display());
149+
parser.add_definition(Def::SourceDir, paths.upstreams().guest.display());
150+
parser.add_definition(Def::InstallRoot, paths.install().guest.display());
151+
parser.add_definition(Def::BuildRoot, build_dir.display());
152+
parser.add_definition(Def::WorkDir, work_dir.display());
152153

153-
parser.add_definition("compiler_cache", "/mason/ccache");
154-
parser.add_definition("scompiler_cache", "/mason/sccache");
154+
parser.add_definition(Def::CompilerCache, "/mason/ccache");
155+
parser.add_definition(Def::SCompilerCache, "/mason/sccache");
155156

156-
parser.add_definition("sourcedateepoch", recipe.build_time.timestamp());
157+
parser.add_definition(Def::SourceDateEpoch, recipe.build_time.timestamp());
157158

158159
let path = if ccache {
159160
"/usr/lib/ccache/bin:/usr/bin:/bin"
@@ -162,63 +163,63 @@ impl Phase {
162163
};
163164

164165
if ccache {
165-
parser.add_definition("rustc_wrapper", "/usr/bin/sccache");
166+
parser.add_definition(Def::RustcWrapper, "/usr/bin/sccache");
166167
} else {
167-
parser.add_definition("rustc_wrapper", "");
168+
parser.add_definition(Def::RustcWrapper, "");
168169
}
169170

170171
/* Set the relevant compilers */
171172
if matches!(recipe.parsed.options.toolchain, Toolchain::Llvm) {
172-
parser.add_definition("compiler_c", "clang");
173-
parser.add_definition("compiler_cxx", "clang++");
174-
parser.add_definition("compiler_objc", "clang");
175-
parser.add_definition("compiler_objcxx", "clang++");
176-
parser.add_definition("compiler_cpp", "clang-cpp");
177-
parser.add_definition("compiler_objcpp", "clang -E -");
178-
parser.add_definition("compiler_objcxxcpp", "clang++ -E");
179-
parser.add_definition("compiler_d", "ldc2");
180-
parser.add_definition("compiler_ar", "llvm-ar");
181-
parser.add_definition("compiler_objcopy", "llvm-objcopy");
182-
parser.add_definition("compiler_nm", "llvm-nm");
183-
parser.add_definition("compiler_ranlib", "llvm-ranlib");
184-
parser.add_definition("compiler_strip", "llvm-strip");
173+
parser.add_definition(Def::CompilerC, "clang");
174+
parser.add_definition(Def::CompilerCxx, "clang++");
175+
parser.add_definition(Def::CompilerObjC, "clang");
176+
parser.add_definition(Def::CompilerObjCxx, "clang++");
177+
parser.add_definition(Def::CompilerCpp, "clang-cpp");
178+
parser.add_definition(Def::CompilerObjCpp, "clang -E -");
179+
parser.add_definition(Def::CompilerObjCxxCpp, "clang++ -E");
180+
parser.add_definition(Def::CompilerD, "ldc2");
181+
parser.add_definition(Def::CompilerAr, "llvm-ar");
182+
parser.add_definition(Def::CompilerObjcopy, "llvm-objcopy");
183+
parser.add_definition(Def::CompilerNm, "llvm-nm");
184+
parser.add_definition(Def::CompilerRanlib, "llvm-ranlib");
185+
parser.add_definition(Def::CompilerStrip, "llvm-strip");
185186
} else {
186-
parser.add_definition("compiler_c", "gcc");
187-
parser.add_definition("compiler_cxx", "g++");
188-
parser.add_definition("compiler_objc", "gcc");
189-
parser.add_definition("compiler_objcxx", "g++");
190-
parser.add_definition("compiler_cpp", "gcc -E");
191-
parser.add_definition("compiler_objcpp", "gcc -E");
192-
parser.add_definition("compiler_objcxxcpp", "g++ -E");
193-
parser.add_definition("compiler_d", "ldc2"); // FIXME: GDC
194-
parser.add_definition("compiler_ar", "gcc-ar");
195-
parser.add_definition("compiler_objcopy", "objcopy");
196-
parser.add_definition("compiler_nm", "gcc-nm");
197-
parser.add_definition("compiler_ranlib", "gcc-ranlib");
198-
parser.add_definition("compiler_strip", "strip");
187+
parser.add_definition(Def::CompilerC, "gcc");
188+
parser.add_definition(Def::CompilerCxx, "g++");
189+
parser.add_definition(Def::CompilerObjC, "gcc");
190+
parser.add_definition(Def::CompilerObjCxx, "g++");
191+
parser.add_definition(Def::CompilerCpp, "gcc -E");
192+
parser.add_definition(Def::CompilerObjCpp, "gcc -E");
193+
parser.add_definition(Def::CompilerObjCxxCpp, "g++ -E");
194+
parser.add_definition(Def::CompilerD, "ldc2"); // FIXME: GDC
195+
parser.add_definition(Def::CompilerAr, "gcc-ar");
196+
parser.add_definition(Def::CompilerObjcopy, "objcopy");
197+
parser.add_definition(Def::CompilerNm, "gcc-nm");
198+
parser.add_definition(Def::CompilerRanlib, "gcc-ranlib");
199+
parser.add_definition(Def::CompilerStrip, "strip");
199200
}
200-
parser.add_definition("compiler_path", path);
201+
parser.add_definition(Def::CompilerPath, path);
201202

202203
if recipe.parsed.mold {
203-
parser.add_definition("compiler_ld", "ld.mold");
204+
parser.add_definition(Def::CompilerLd, "ld.mold");
204205
} else if matches!(recipe.parsed.options.toolchain, Toolchain::Llvm) {
205-
parser.add_definition("compiler_ld", "ld.lld");
206+
parser.add_definition(Def::CompilerLd, "ld.lld");
206207
} else {
207-
parser.add_definition("compiler_ld", "ld.bfd");
208+
parser.add_definition(Def::CompilerLd, "ld.bfd");
208209
}
209210

210211
/* Allow packagers to do stage specific actions in a pgo build */
211212
if matches!(pgo_stage, Some(pgo::Stage::One)) {
212-
parser.add_definition("pgo_stage", "ONE");
213+
parser.add_definition(Def::PgoStage, "ONE");
213214
} else if matches!(pgo_stage, Some(pgo::Stage::Two)) {
214-
parser.add_definition("pgo_stage", "TWO");
215+
parser.add_definition(Def::PgoStage, "TWO");
215216
} else if matches!(pgo_stage, Some(pgo::Stage::Use)) {
216-
parser.add_definition("pgo_stage", "USE");
217+
parser.add_definition(Def::PgoStage, "USE");
217218
} else {
218-
parser.add_definition("pgo_stage", "NONE");
219+
parser.add_definition(Def::PgoStage, "NONE");
219220
}
220221

221-
parser.add_definition("pgo_dir", format!("{}-pgo", build_dir.display()));
222+
parser.add_definition(Def::PgoDir, format!("{}-pgo", build_dir.display()));
222223

223224
add_tuning(target, pgo_stage, recipe, macros, &mut parser)?;
224225

@@ -388,12 +389,12 @@ fn add_tuning(
388389
rustflags.push_str(" -Clink-arg=-fuse-ld=mold");
389390
}
390391

391-
parser.add_definition("cflags", cflags);
392-
parser.add_definition("cxxflags", cxxflags);
393-
parser.add_definition("fflags", fflags);
394-
parser.add_definition("ldflags", ldflags);
395-
parser.add_definition("dflags", dflags);
396-
parser.add_definition("rustflags", rustflags);
392+
parser.add_definition(Def::CFlags, cflags);
393+
parser.add_definition(Def::CxxFlags, cxxflags);
394+
parser.add_definition(Def::FFlags, fflags);
395+
parser.add_definition(Def::LdFlags, ldflags);
396+
parser.add_definition(Def::DFlags, dflags);
397+
parser.add_definition(Def::RustFlags, rustflags);
397398

398399
Ok(())
399400
}

boulder/src/package.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,12 @@ fn resolve_packages(
119119
recipe: &Recipe,
120120
collector: &mut Collector,
121121
) -> Result<BTreeMap<String, Package>, Error> {
122+
use stone_recipe::macros::BuiltinDefinition as Def;
123+
122124
let mut parser = script::Parser::new();
123-
parser.add_definition("name", &recipe.parsed.source.name);
124-
parser.add_definition("version", &recipe.parsed.source.version);
125-
parser.add_definition("release", recipe.parsed.source.release);
125+
parser.add_definition(Def::Name, &recipe.parsed.source.name);
126+
parser.add_definition(Def::Version, &recipe.parsed.source.version);
127+
parser.add_definition(Def::Release, recipe.parsed.source.release);
126128

127129
let mut packages = BTreeMap::new();
128130

0 commit comments

Comments
 (0)