aboutsummaryrefslogtreecommitdiff
path: root/build2/file.cxx
AgeCommit message (Collapse)AuthorFilesLines
2018-08-30Handle missing export directive in export stubBoris Kolpackov1-2/+11
If none were executed, then we assume the requested target is not exported.
2018-08-29Fix typo in diagnosticsBoris Kolpackov1-1/+1
2018-07-30Make project variable to be of project_name typeKaren Arutyunov1-37/+22
2018-07-23Sanitize project name when forming config.import.<proj> variableBoris Kolpackov1-5/+23
Specifically, '-', '+', and '.' are replaced with '_' to form a "canonical" variable name.
2018-05-23Fix bug in inner project bootstrap during configure/disfigureBoris Kolpackov1-2/+7
2018-05-19Update copyright yearKaren Arutyunov1-1/+1
2018-05-18Pass ignore_dangling flag to dir_iterator() ctorKaren Arutyunov1-74/+80
2018-05-14Tolerate misconfigured src_root in info and disfigure meta-operationsBoris Kolpackov1-18/+63
2018-04-27Add support for build hooksBoris Kolpackov1-43/+135
The following buildfiles are loaded (if present) at appropriate times from the out_root subdirectories of a project: build/bootstrap/pre-*.build # before loading bootstrap.build build/bootstrap/post-*.build # after loading bootstrap.build build/root/pre-*.build # before loading root.build build/root/post-*.build # after loading root.build
2018-04-26Implement forwarded configurations and backlinkingBoris Kolpackov1-48/+116
2018-04-24Minor code reuse improvementBoris Kolpackov1-1/+1
2018-01-05Add support for variable aliasesBoris Kolpackov1-1/+1
2018-01-04Load config.build in init(), not boot()Boris Kolpackov1-6/+10
We now make sure the config module is init'ed first.
2017-12-13Implement info meta operationBoris Kolpackov1-7/+25
This meta operation can be used to print basic information (name, version, source/output roots, etc) for one or more projects.
2017-11-29Reimplement module sidebuilding using an ad hoc subprojectBoris Kolpackov1-15/+39
2017-09-06Call dist callback in subprojectsBoris Kolpackov1-1/+0
This fixes a bug with no updating manifest versions in build2-toolchain subprojects.
2017-09-03Cleanup project src/out_root/base discovery logicBoris Kolpackov1-14/+9
Specifically, we no longer support specifying the out_base explicitly and assuming work is src_base.
2017-07-28Restrict exe{} search to PATH when importingBoris Kolpackov1-1/+3
2017-05-13Fix VC15 warnings (/W3)Karen Arutyunov1-1/+1
2017-05-01Add hxx extension for headersKaren Arutyunov1-11/+11
2017-03-02Implement parallel matchBoris Kolpackov1-3/+3
2017-02-13Track variable value modificationsBoris Kolpackov1-1/+1
2017-02-13Tighten code that operates during both search/match and executeBoris Kolpackov1-17/+29
2017-02-13Pass const scope& where modification should not happenBoris Kolpackov1-17/+19
2017-02-13Implement pattern-based variable typing, tighten variable type updateBoris Kolpackov1-4/+8
2017-02-13Add notion of phase, enforceBoris Kolpackov1-4/+5
2017-02-13Add model mutex, make var_pool const by defaultBoris Kolpackov1-42/+41
2017-01-23Implement automatic loading of directory buildfilesBoris Kolpackov1-3/+46
Now instead of explicitly writing: d = foo/ bar/ ./: $d include $d We can (usually) just write: ./: foo/ bar/
2017-01-19Get rid of extension_poolBoris Kolpackov1-3/+6
2017-01-19Get rid of project_name_poolBoris Kolpackov1-8/+8
With small string optimizations this is most likely a hindrance rather that an optimization.
2017-01-09Make use of operator<<(ostream, exception)Karen Arutyunov1-3/+3
2017-01-05Update copyright yearBoris Kolpackov1-1/+1
2016-12-17Add support for specifying individual paths of imported targetsBoris Kolpackov1-44/+101
The new config.import.* variable format is: config.import.<proj>.<name>[.<type>] For example: b config.import.build2.b=/opt/build2/bin/b b config.import.build2.b.exe=b-boot
2016-12-17Use PATH search as fallback import mechanism for exe{} targetsBoris Kolpackov1-7/+52
2016-11-22Use diagnostics facility from libbutlBoris Kolpackov1-6/+3
2016-11-18Implement noop meta-operationBoris Kolpackov1-0/+1
The effect is loading all the buildfiles but not searching/matching/executing any targets/operations. Useful for testing.
2016-11-04Change token type 'name' to more general 'word'Boris Kolpackov1-1/+1
2016-11-04Various design/implementation cleanupsBoris Kolpackov1-2/+2
2016-09-15Add io_error alias for std::ios_base::failureKaren Arutyunov1-3/+3
2016-09-13Fix crashing on subprojects that have no project variable setKaren Arutyunov1-2/+2
2016-09-13Fix crashing on unhandled system_error thrown by file_exists()Karen Arutyunov1-9/+8
2016-09-06Don't search for subprojects recursively, only at top-levelBoris Kolpackov1-1/+7
2016-08-30Add support for config.build file versioningBoris Kolpackov1-9/+22
2016-08-23Treat empty config.import.* value as instruction to skip subproject searchBoris Kolpackov1-39/+53
Also, change explicit config.import.* value to take precedence over subproject search.
2016-08-22Add few extra tracing statementsBoris Kolpackov1-0/+10
2016-07-30Construct paths to use canonical directory separatorsBoris Kolpackov1-8/+15
Hardcoding separators as in "build/root.build" is now a big no-no.
2016-07-30Actualize project root directoriesBoris Kolpackov1-3/+3
This solves the problem of changing path spelling on platforms with case- insensitive filesystems. For example, you may build a project in the current working directory without specifying any paths. This means the current working directory will be used as the project's root. On Windows this could be C:\x. Now you are building another project that imports the above project and you specify config.import.x variable pointing to the above build. But you are lazy to type capital C so you spell it as config.import.x=c:\x. What happens now is the value from config.import.x is used as the project root. And now it is a different spelling compared to your original build. This is not a problem when the build system itself is concerned -- it is smart enough to use case-insensitive comparison. However, we often use roots to derive other things, say, -I options that we pass to compilers. And these options are normally no longer treated as (case-insensitive) paths. If they are hashed and the result stored in depdb, then we end up with rebuilds that are triggered by changes from C:\ to c:\.
2016-07-30Fix missing src_root initializationBoris Kolpackov1-0/+2
2016-07-23Adapt to fdstream extensionKaren Arutyunov1-26/+14
2016-07-20Switch to dynamic empty() implementation in variable valueBoris Kolpackov1-1/+1
The current model fell apart when we modified values directly.