aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/file.cxx
AgeCommit message (Collapse)AuthorFilesLines
2022-04-20Add explicit flag to more efficiently avoid repeated load_root() callsBoris Kolpackov1-19/+21
2022-04-20Add import cacheBoris Kolpackov1-2/+57
2022-04-18Avoid locking target set if in load phaseBoris Kolpackov1-0/+3
2022-02-16Add pre/post hooks to load_root()Boris Kolpackov1-1/+15
2022-02-14Add ability to override amalgamation and subprojects in bootstrap_src()Boris Kolpackov1-2/+33
2021-12-15Return stable imported target name from import_direct()Boris Kolpackov1-17/+41
2021-10-26Add commentBoris Kolpackov1-2/+4
2021-10-15Allow explicit amalgamation by simple projectsBoris Kolpackov1-9/+8
2021-09-02Add diag_frame around export stub loadingBoris Kolpackov1-2/+11
This gives the location of the importer in case the export stub issues any diagnostics.
2021-08-13Fix amalgamation discovery logic some moreBoris Kolpackov1-1/+5
2021-08-03Fix incorrect assumption in amalgamation discovery logicBoris Kolpackov1-8/+10
2021-07-30Fix issue in amalgamation discoveryBoris Kolpackov1-41/+53
2021-05-07Various improvements and clarifications in metadata handlingBoris Kolpackov1-42/+81
2021-04-22Incorporate project environment checksum into cc::compiler_info cache keyBoris Kolpackov1-1/+2
2021-04-07Register environment variables for hermetic build configurationsBoris Kolpackov1-5/+25
2021-04-02Add support for propagating project environmentBoris Kolpackov1-5/+32
2021-03-19Redo entering of src directories into scope_mapBoris Kolpackov1-13/+13
2021-02-08Enter scope src directories into scope mapBoris Kolpackov1-16/+32
2021-01-12Diagnose typed and project-qualified empty namesBoris Kolpackov1-0/+5
2020-12-15Cache more results of executing programs (compilers, etc)Boris Kolpackov1-8/+23
2020-12-14Fix bug in create_new_target_locked()Karen Arutyunov1-1/+1
2020-11-13Minor tracing fix and additionBoris Kolpackov1-1/+1
2020-11-06Add support for test timeoutsKaren Arutyunov1-0/+1
2020-10-28Pad config report to maximum name lengthBoris Kolpackov1-10/+32
2020-09-24Give hints for common causes of "no rule to update ..." errorBoris Kolpackov1-1/+1
2020-09-24Add post-boot module functionBoris Kolpackov1-1/+10
2020-09-22Add ability to skip external modules during bootstrap (--no-external-modules)Boris Kolpackov1-1/+7
2020-09-15Handle infinite output when extracting metadata (GitHub issue #102)Boris Kolpackov1-2/+22
2020-08-26Fix bug in module initialization orderBoris Kolpackov1-21/+13
2020-08-24Only suggest ad hoc path import for path-based targetsBoris Kolpackov1-6/+10
2020-08-16Add ability to initialize bootstrapped modules after loading root.buildBoris Kolpackov1-5/+23
2020-08-16Redo modules map as vectorBoris Kolpackov1-8/+4
2020-07-12Cache subprojects variable value in scope::root_extraBoris Kolpackov1-35/+17
2020-07-10Add support for project-local importationBoris Kolpackov1-11/+19
An import without a project name or with the same name as the importing project's is now treated as importation from the same project. For example, given the libhello project that exports the lib{hello} target, a buildfile for an executable in the same project instead of doing something like this: include ../libhello/ exe{hello}: ../libhello/lib{hello} Can now do this: import lib = libhello%lib{hello} Or: import lib = lib{hello} And then: exe{hello}: $lib Note that a target in project-local importation must still be exported in the project's export stub. In other words, project-local importation goes through the same mechanisms as normal import.
2020-07-09Add support for ad hoc importationBoris Kolpackov1-68/+299
2020-07-08Fix bug in switch_scope()Boris Kolpackov1-1/+1
2020-07-03Cutoff amalgamation and subproject for simple projectsBoris Kolpackov1-40/+35
2020-07-02Optimize variable extraction in bootstrap_src()Boris Kolpackov1-64/+58
2020-07-02Cache project name in root_extraBoris Kolpackov1-8/+29
2020-06-09Make importation of unqualified targets illegalBoris Kolpackov1-6/+9
2020-06-09Move recipe build directory to build/build/recipes/Boris Kolpackov1-6/+9
Our new scheme is to have any "out" content in a subdirectory called build/ (build/build/ for the build system core, build/<module>/build/ for modules). This way we can ignore them in .gitignore with a generic entry.
2020-06-09Make metadata variable prefix mandatoryBoris Kolpackov1-28/+10
While we could automatically set it if the target is imported, there is nothing we can do if the target is used in the same project. So to avoid confusion we make it mandatory.
2020-06-03Add clarifying commentBoris Kolpackov1-0/+5
2020-06-01Extend target metadata to include variable prefix, stable nameBoris Kolpackov1-26/+76
2020-05-27Initial support for ad hoc recipes (still work in progress)Boris Kolpackov1-18/+47
2020-05-27Amalgamation cutoff supportBoris Kolpackov1-44/+106
Now a project that disables amalgamation will not logically "see" an outer project even if it's physically inside its scope.
2020-04-30Verify path set by {src,out}-root.build files is absoluteBoris Kolpackov1-31/+50
2020-04-27Get rid of warningsBoris Kolpackov1-1/+1
2020-04-27Rework tool importation along with cli moduleBoris Kolpackov1-136/+710
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-04-27Don't switch projects when switching scopes during bootstrapBoris Kolpackov1-10/+12