aboutsummaryrefslogtreecommitdiff
path: root/build2/target.cxx
AgeCommit message (Collapse)AuthorFilesLines
2019-07-01Split build system into library and driverBoris Kolpackov1-1260/+0
2019-06-03Adapt to renaming traits alias to traits_type for basic_path, basic_url, and ↵Karen Arutyunov1-4/+4
string_table class templates
2019-04-03Change depdb API and handle system_error thrown by butl::file_mtime()Karen Arutyunov1-2/+0
Previously, debdb operations threw system_error and io_error to signal errors, except for opening which issued diagnostics and failed. Now all operations print the diagnostics and fail on system and IO errors.
2019-03-07Add support for alternative build file/directory naming schemeBoris Kolpackov1-30/+52
Now the build/*.build, buildfile, and .buildignore filesystem entries in a project can alternatively (but consistently) be called build2/*.build2, build2file, and .build2ignore. See a note at the beginning of the Project Structure section in the manual for details (motivation, restrictions, etc).
2019-01-16Update copyright yearKaren Arutyunov1-1/+1
2019-01-14Diagnose target names with multiple trailing slashes as invalidBoris Kolpackov1-0/+2
2018-11-14Fallback to loading outer buildfile if there isn't one in src_baseBoris Kolpackov1-1/+68
This covers the case where the target is defined in the outer buildfile which is common with non-intrusive project conversions where everything is built from a single root buildfile.
2018-11-01Add support for rule-specific variables, use to fix cc.type data raceBoris Kolpackov1-0/+27
2018-08-07Add support for default extension specification, trailing dot escapingBoris Kolpackov1-23/+119
For example: cxx{*}: extension = cxx cxx{foo} # foo.cxx cxx{foo.test} # foo.test (probably what we want...) cxx{foo.test...} # foo.test.cxx (... is this) cxx{foo..} # foo. cxx{foo....} # foo.. cxx{foo.....} # error (must come in escape pair)
2018-07-26Pass extension supplied by rule to target type default extension functionBoris Kolpackov1-16/+23
Also revert the precedence back to target type over rule. But now the target type is able to customize this logic (see exe{} for a use case).
2018-07-25Prefer default extension supplied by rule over one supplied by target typeBoris Kolpackov1-15/+18
2018-07-24Make exe{} target default to no extension rather than failBoris Kolpackov1-9/+9
This just keep breaking (this time for exe{}: in{} match during distribution). So we assume rules will assign the target platform extension if necessary and if not, then we default to no extension (e.g., a shell script).
2018-07-16Implement in moduleBoris Kolpackov1-44/+0
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-05-19Add manifest{} target type ('manifest' file name automatically mapped as such)Boris Kolpackov1-0/+44
2018-02-03Get rid of action rule override semanticsBoris Kolpackov1-91/+7
Instead we now have two more or less separate match states for outer and inner parts of an action.
2018-01-05Add support for variable aliasesBoris Kolpackov1-4/+8
2017-12-16Split stream verbosity into components (path, extension)Boris Kolpackov1-11/+15
Use to make sure structured result output always contains absolute target path.
2017-12-16Redo string/stream representation of dir{} name/targetBoris Kolpackov1-10/+15
Now instead of: dir{foo/bar/} We get: foo/dir{bar/} Which feels more consistent with how we print other names/targets. That is, "directory bar/ in directory foo/" similar how foo/exe{bar} is "executable bar in directory foo/".
2017-12-07Distinguish between "fixed" and "default" target extensionsBoris Kolpackov1-71/+69
This fixes wrong merging of, say, file{README} and file{README.MySQL} (in libmysqlclient).
2017-12-01Fix GCC 7 -fimplicit-fallthrough warningsBoris Kolpackov1-2/+1
2017-11-22Fix dist bug where missing source file would be silently ignoredBoris Kolpackov1-1/+1
2017-11-09Initial support for prerequisite-specific variables, use for bin.wholeBoris Kolpackov1-0/+2
2017-11-09Fix bug in handling of empty target name prefixes (e.g., bin.lib.prefix)Boris Kolpackov1-1/+1
2017-10-03Adapt to modularization of libbutlKaren Arutyunov1-1/+1
2017-09-01Add support for try_match(), use to handle deleted headersBoris Kolpackov1-8/+15
2017-07-31Experimental (and probably broken) pkg-config generation supportBoris Kolpackov1-20/+0
2017-05-31Adjust extension semantics in file rule to match search_existing_file()Boris Kolpackov1-4/+9
2017-05-01Add hxx extension for headersKaren Arutyunov1-8/+8
2017-04-29Fix bug in default target logicBoris Kolpackov1-22/+24
2017-04-28Fix buildfile loading raceBoris Kolpackov1-0/+12
2017-04-28Add in{} target type for .in ("input") file (requires preprocessing)Boris Kolpackov1-0/+43
2017-04-27Pass target to prerequisite searchBoris Kolpackov1-20/+20
2017-03-24Fix recursive locking bugBoris Kolpackov1-2/+7
2017-03-14Preserve failed state even if recipe is overriddenBoris Kolpackov1-2/+3
2017-03-14Implement implied buildfile supportBoris Kolpackov1-6/+16
In essence, if the buildfile is: ./: */ Then it can be omitted entirely (provided there is at least one subdirectory).
2017-03-10Implement support for wildcard patternsBoris Kolpackov1-7/+87
2017-03-06Tweak target locking logicBoris Kolpackov1-7/+4
2017-03-02Implement parallel matchBoris Kolpackov1-86/+146
2017-02-14Modify library mate-information protocol not to use lib{} groupBoris Kolpackov1-7/+0
2017-02-13Track variable value modificationsBoris Kolpackov1-1/+1
2017-02-13Implement parallel error propagation, keep_going modeBoris Kolpackov1-1/+1
Keep going is the default but there is now the -s|--serial-stop that makes the driver run serially and stop at first error. Also fix some lockups, other minor improvements/features.
2017-02-13Tighten target constness furtherBoris Kolpackov1-1/+1
2017-02-13Tighten code that operates during both search/match and executeBoris Kolpackov1-0/+5
2017-02-13Pass const target& to recipesBoris Kolpackov1-1/+1
2017-02-13Introduce target::task_countBoris Kolpackov1-4/+18
2017-02-13Implement target_set locking, including extension updateBoris Kolpackov1-41/+131
2017-02-13Redesign target_set interface in preparation for lockingBoris Kolpackov1-19/+17
2017-02-13Store extension in target map key rather than in targetBoris Kolpackov1-40/+47
This is in preparation for locking its modification/access.
2017-02-13Pass const scope& where modification should not happenBoris Kolpackov1-9/+10