[build2] build2 configuration options list
Boris Kolpackov
boris at codesynthesis.com
Wed Mar 18 13:49:10 UTC 2020
Paul Stath <PStath at jmawireless.com> writes:
> Is there a list of build2 configuration options?
> Something like the config.install.* table in section 1.4.3 of the
> Build2 manual?
Unfortunately not yet. The more commonly used ones are mentioned in
the manual while the more obscure ones are only listed in the source
code (though most of them should be documented there).
Running the following grep command on the build2 source should list
most of them (noticeably the config.install.* ones are missing because
they are computed; see libbuild2/install/init.cxx for details).
egrep -r --include=init.cxx '"config\..+\..+"'
I've included the output from the current master below.
> Is there any way that the documentation of the config parameters could
> be added to the code (maybe as comments?) and extracted during the build
> to generate such a reference?
Yes, that's the idea we had as well. You can see some prototyping of what
it might look like in the Rust module (search for the //- comments):
https://github.com/build2/libbuild2-rust/blob/master/libbuild2-rust/libbuild2/rust/init.cxx
libbuild2/cxx/init.cxx: vp.insert<string> ("config.cxx.id", true),
libbuild2/cxx/init.cxx: vp.insert<string> ("config.cxx.version", true),
libbuild2/cxx/init.cxx: vp.insert<string> ("config.cxx.target", true),
libbuild2/cxx/init.cxx: vp.insert<string> ("config.cxx.std", true),
libbuild2/cxx/init.cxx: vp.insert<strings> ("config.cxx.poptions", true),
libbuild2/cxx/init.cxx: vp.insert<strings> ("config.cxx.coptions", true),
libbuild2/cxx/init.cxx: vp.insert<strings> ("config.cxx.loptions", true),
libbuild2/cxx/init.cxx: vp.insert<strings> ("config.cxx.aoptions", true),
libbuild2/cxx/init.cxx: vp.insert<strings> ("config.cxx.libs", true),
libbuild2/cxx/init.cxx: &vp.insert<strings> ("config.cxx.translatable_headers", true),
libbuild2/test/init.cxx: vp.insert<name_pair> ("config.test.output", true),
libbuild2/version/init.cxx: m.dist_uncommitted = cast_false<bool> (rs["config.dist.uncommitted"]);
libbuild2/config/init.cxx: vp.insert<path> ("config.config.save", true /* ovr */);
libbuild2/config/init.cxx: "config.config.persist", true /* ovr */, v_p));
libbuild2/config/init.cxx: auto& c_m (vp.insert<bool> ("config.config.module", false /*ovr*/, v_p));
libbuild2/config/init.cxx: auto& c_l (vp.insert<paths> ("config.config.load", true /* ovr */));
libbuild2/install/init.cxx: auto& cvar (vp.insert<abs_dir_path> ("config.install.chroot", true));
libbuild2/cc/init.cxx: vp.insert<strings> ("config.cc.poptions", true);
libbuild2/cc/init.cxx: vp.insert<strings> ("config.cc.coptions", true);
libbuild2/cc/init.cxx: vp.insert<strings> ("config.cc.loptions", true);
libbuild2/cc/init.cxx: vp.insert<strings> ("config.cc.aoptions", true);
libbuild2/cc/init.cxx: vp.insert<strings> ("config.cc.libs", true);
libbuild2/cc/init.cxx: vp.insert<string> ("config.cc.id");
libbuild2/cc/init.cxx: vp.insert<string> ("config.cc.hinter"); // Hinting module.
libbuild2/cc/init.cxx: vp.insert<string> ("config.cc.pattern");
libbuild2/cc/init.cxx: vp.insert<strings> ("config.cc.mode");
libbuild2/cc/init.cxx: vp.insert<target_triplet> ("config.cc.target");
libbuild2/cc/init.cxx: vp.insert<bool> ("config.cc.reprocess", true);
libbuild2/cc/init.cxx: rs.assign<string> ("cc.id") = cast<string> (h["config.cc.id"]);
libbuild2/cc/init.cxx: rs.assign<string> ("cc.hinter") = cast<string> (h["config.cc.hinter"]);
libbuild2/cc/init.cxx: const auto& t (cast<target_triplet> (h["config.cc.target"]));
libbuild2/cc/init.cxx: cast_empty<string> (h["config.cc.pattern"]);
libbuild2/cc/init.cxx: cast_empty<strings> (h["config.cc.mode"]);
libbuild2/cc/init.cxx: lookup_config (rs, "config.cc.poptions", nullptr));
libbuild2/cc/init.cxx: lookup_config (rs, "config.cc.coptions", nullptr));
libbuild2/cc/init.cxx: lookup_config (rs, "config.cc.loptions", nullptr));
libbuild2/cc/init.cxx: lookup_config (rs, "config.cc.aoptions", nullptr));
libbuild2/cc/init.cxx: lookup_config (rs, "config.cc.libs", nullptr));
libbuild2/cc/init.cxx: if (lookup l = lookup_config (rs, "config.cc.reprocess"))
libbuild2/cc/init.cxx: h.assign ("config.bin.target") =
libbuild2/cc/init.cxx: if (auto l = extra.hints["config.bin.pattern"])
libbuild2/cc/init.cxx: h.assign ("config.bin.pattern") = cast<string> (l);
libbuild2/dist/init.cxx: vp.insert<abs_dir_path> ("config.dist.root", true);
libbuild2/dist/init.cxx: vp.insert<paths> ("config.dist.archives", true);
libbuild2/dist/init.cxx: vp.insert<paths> ("config.dist.checksums", true);
libbuild2/dist/init.cxx: vp.insert<path> ("config.dist.cmd", true);
libbuild2/dist/init.cxx: vp.insert<bool> ("config.dist.uncommitted", true);
libbuild2/dist/init.cxx: if (lookup l = lookup_config (rs, "config.dist.root", nullptr))
libbuild2/dist/init.cxx: "config.dist.cmd",
libbuild2/dist/init.cxx: if (lookup l = lookup_config (rs, "config.dist.archives", nullptr))
libbuild2/dist/init.cxx: if (lookup l = lookup_config (rs, "config.dist.checksums", nullptr))
libbuild2/dist/init.cxx: fail << "config.dist.checksums specified without "
libbuild2/dist/init.cxx: << "config.dist.archives";
libbuild2/dist/init.cxx: lookup_config (rs, "config.dist.uncommitted");
libbuild2/bin/init.cxx: vp.insert<string> ("config.bin.target", true);
libbuild2/bin/init.cxx: vp.insert<string> ("config.bin.pattern", true);
libbuild2/bin/init.cxx: vp.insert<string> ("config.bin.lib", true);
libbuild2/bin/init.cxx: vp.insert<strings> ("config.bin.exe.lib", true);
libbuild2/bin/init.cxx: vp.insert<strings> ("config.bin.liba.lib", true);
libbuild2/bin/init.cxx: vp.insert<strings> ("config.bin.libs.lib", true);
libbuild2/bin/init.cxx: vp.insert<dir_paths> ("config.bin.rpath", true);
libbuild2/bin/init.cxx: vp.insert<bool> ("config.bin.rpath.auto", true);
libbuild2/bin/init.cxx: vp.insert<dir_paths> ("config.bin.rpath_link", true);
libbuild2/bin/init.cxx: vp.insert<bool> ("config.bin.rpath_link.auto", true);
libbuild2/bin/init.cxx: vp.insert<string> ("config.bin.prefix", true);
libbuild2/bin/init.cxx: vp.insert<string> ("config.bin.suffix", true);
libbuild2/bin/init.cxx: vp.insert<string> ("config.bin.lib.prefix", true);
libbuild2/bin/init.cxx: vp.insert<string> ("config.bin.lib.suffix", true);
libbuild2/bin/init.cxx: vp.insert<string> ("config.bin.exe.prefix", true);
libbuild2/bin/init.cxx: vp.insert<string> ("config.bin.exe.suffix", true);
libbuild2/bin/init.cxx: v = *lookup_config (rs, "config.bin.lib", "both");
libbuild2/bin/init.cxx: v = *lookup_config (rs, "config.bin.exe.lib", exe_lib);
libbuild2/bin/init.cxx: v = *lookup_config (rs, "config.bin.liba.lib", liba_lib);
libbuild2/bin/init.cxx: v = *lookup_config (rs, "config.bin.libs.lib", libs_lib);
libbuild2/bin/init.cxx: lookup_config (rs, "config.bin.rpath", nullptr));
libbuild2/bin/init.cxx: lookup_config (rs, "config.bin.rpath_link", nullptr));
libbuild2/bin/init.cxx: (l = lookup_config (rs, "config.bin.rpath.auto"))
libbuild2/bin/init.cxx: (l = lookup_config (rs, "config.bin.rpath_link.auto"))
libbuild2/bin/init.cxx: lookup p (lookup_config (rs, "config.bin.prefix"));
libbuild2/bin/init.cxx: lookup s (lookup_config (rs, "config.bin.suffix"));
libbuild2/bin/init.cxx: set ("bin.lib.prefix", "config.bin.lib.prefix", p);
libbuild2/bin/init.cxx: set ("bin.lib.suffix", "config.bin.lib.suffix", s);
libbuild2/bin/init.cxx: set ("bin.exe.prefix", "config.bin.exe.prefix", p);
libbuild2/bin/init.cxx: set ("bin.exe.suffix", "config.bin.exe.suffix", s);
libbuild2/bin/init.cxx: const variable& var (rs.ctx.var_pool["config.bin.target"]);
libbuild2/bin/init.cxx: const variable& var (rs.ctx.var_pool["config.bin.pattern"]);
libbuild2/bin/init.cxx: vp.insert<path> ("config.bin.ar", true);
libbuild2/bin/init.cxx: vp.insert<path> ("config.bin.ranlib", true);
libbuild2/bin/init.cxx: "config.bin.ar",
libbuild2/bin/init.cxx: "config.bin.ranlib",
libbuild2/bin/init.cxx: vp.insert<path> ("config.bin.ld", true);
libbuild2/bin/init.cxx: "config.bin.ld",
libbuild2/bin/init.cxx: vp.insert<path> ("config.bin.rc", true);
libbuild2/bin/init.cxx: "config.bin.rc",
libbuild2/c/init.cxx: vp.insert<string> ("config.c.id", true),
libbuild2/c/init.cxx: vp.insert<string> ("config.c.version", true),
libbuild2/c/init.cxx: vp.insert<string> ("config.c.target", true),
libbuild2/c/init.cxx: vp.insert<string> ("config.c.std", true),
libbuild2/c/init.cxx: vp.insert<strings> ("config.c.poptions", true),
libbuild2/c/init.cxx: vp.insert<strings> ("config.c.coptions", true),
libbuild2/c/init.cxx: vp.insert<strings> ("config.c.loptions", true),
libbuild2/c/init.cxx: vp.insert<strings> ("config.c.aoptions", true),
libbuild2/c/init.cxx: vp.insert<strings> ("config.c.libs", true),
More information about the users
mailing list