aboutsummaryrefslogtreecommitdiff
path: root/build2/cli/target.cxx
AgeCommit message (Collapse)AuthorFilesLines
2023-04-13Move cli module to libbuild2-cli libraryBoris Kolpackov1-75/+0
This is a temporary measure (until we unboundle this module) needed for in-process configure support in bpkg.
2022-04-06Add support for rule hintsBoris Kolpackov1-2/+2
A rule hint is a target attribute, for example: [rule_hint=cxx] exe{hello}: c{hello} Rule hints can be used to resolve ambiguity when multiple rules match the same target as well as to override an unambiguous match.
2020-04-27Rework tool importation along with cli moduleBoris Kolpackov1-3/+0
Specifically, now config.<tool> (like config.cli) is handled by the import machinery (it is like a shorter alias for config.import.<tool>.<tool>.exe that we already had). And the cli module now uses that instead of custom logic. This also adds support for uniform tool metadata extraction that is handled by the import machinery. As a result, a tool that follows the "build2 way" can be imported with metadata by the buildfile and/or corresponding module without any tool-specific code or brittleness associated with parsing --version or similar outputs. See the cli tool/module for details. Finally, two new flavors of the import directive are now supported: import! triggers immediate importation skipping any rule-specific logic while import? is optional import (analogous to using?). Note that optional import is always immediate. There is also the import-specific metadata attribute which can be specified for these two import flavors in order to trigger metadata importation. For example: import? [metadata] cli = cli%exe{cli} if ($cli != [null]) info "cli version $($cli:cli.version)"
2020-02-07Drop copyright notice from source codeKaren Arutyunov1-1/+0
2019-08-23Introduce notion of build contextBoris Kolpackov1-7/+8
All non-const global state is now in class context and we can now have multiple independent builds going on at the same time.
2019-07-01Split build system into library and driverBoris Kolpackov1-1/+1
2019-01-16Update copyright yearKaren Arutyunov1-1/+1
2018-07-16Implement in moduleBoris Kolpackov1-2/+2
Given test.in containing something along these lines: foo = $foo$ Now we can do: using in file{test}: in{test.in} file{test}: foo = FOO The alternative variable substitution symbol can be specified with the in.symbol variable and lax (instead of the default strict) mode with in.substitution. For example: file{test}: in.symbol = '@' file{test}: in.substitution = lax
2018-05-19Update copyright yearKaren Arutyunov1-1/+1
2018-02-03Get rid of action rule override semanticsBoris Kolpackov1-1/+1
Instead we now have two more or less separate match states for outer and inner parts of an action.
2017-12-07Distinguish between "fixed" and "default" target extensionsBoris Kolpackov1-10/+9
This fixes wrong merging of, say, file{README} and file{README.MySQL} (in libmysqlclient).
2017-11-24Fix few bugs in generated header path remapping logicBoris Kolpackov1-1/+1
2017-08-05Add noteBoris Kolpackov1-0/+2
2017-05-01Add hxx extension for headersKaren Arutyunov1-1/+1
2017-04-27Pass target to prerequisite searchBoris Kolpackov1-2/+2
2017-03-10Implement support for wildcard patternsBoris Kolpackov1-0/+2
2017-03-03Fix cli distribution via groupBoris Kolpackov1-4/+3
2017-03-02Implement parallel matchBoris Kolpackov1-15/+3
2017-02-13Tighten target constness furtherBoris Kolpackov1-2/+7
2017-02-13Store extension in target map key rather than in targetBoris Kolpackov1-2/+2
This is in preparation for locking its modification/access.
2017-01-19Get rid of extension_poolBoris Kolpackov1-2/+2
2017-01-05Update copyright yearBoris Kolpackov1-1/+1
2016-11-26Add support for VC15Karen Arutyunov1-1/+1
2016-07-08Move filesystem-related functions from context to new filesystem filesBoris Kolpackov1-1/+1
2016-07-01Port to MSVCKaren Arutyunov1-2/+2
2016-04-19Redesign src/out scopingBoris Kolpackov1-5/+9
We no longer enter paths from the src tree into scope map. Instead, targets from the src tree now include their out tree directory (in essence their "configuration"). This is then used to find a target's scope. See the comment in class target for details. The result of this change is that we can now again build multiple configurations (out trees) for same project at once.
2016-01-24Differentiate extension printing according to stream verbosityBoris Kolpackov1-0/+2
2016-01-09Update copyright yearBoris Kolpackov1-1/+1
2016-01-05Rename build directory/namespace to build2Boris Kolpackov1-0/+77