[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