aboutsummaryrefslogtreecommitdiff
path: root/build2/file.cxx
AgeCommit message (Collapse)AuthorFilesLines
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.
2016-07-08Move filesystem-related functions from context to new filesystem filesBoris Kolpackov1-1/+1
2016-06-27Add config.bin.target var/hint, use to decide libso{} install modeBoris Kolpackov1-2/+2
Normally the user doesn't need to specify config.bin.target explicitly since the cxx module will hint it. We now also have the whole set of target's components: bin.target.{cpu,vendor,system,version,class}
2016-06-26Minor module interface cleanupsBoris Kolpackov1-1/+1
2016-04-19Redesign src/out scopingBoris Kolpackov1-39/+30
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-04-11Adjust abs_dir_path usage to take advantage of inheritanceBoris Kolpackov1-1/+1
2016-04-11New configuration logic, iteration 1Boris Kolpackov1-28/+7
2016-04-05Make name::pair char againBoris Kolpackov1-0/+3
The plan is to represent scope/target-qualified variables as ':'-style pairs.
2016-04-05Implement --buildfile option, overrides default buildfile, supports '-'Boris Kolpackov1-5/+14
2016-03-31Clean up variable lookup interfacesBoris Kolpackov1-7/+6
2016-03-31Set part of variable override implementationBoris Kolpackov1-4/+10
2016-03-30Minor parser interface reworkBoris Kolpackov1-4/+6
2016-03-28Add variable cast from lookupBoris Kolpackov1-8/+8
2016-03-28New variable architectureBoris Kolpackov1-87/+125
2016-03-28Enable @-delimited pairs mode everywhereBoris Kolpackov1-7/+5
2016-03-28Add few notes, comment cleanupsBoris Kolpackov1-0/+2
2016-02-29Rename level[1-6]() to l[1-6]()Boris Kolpackov1-13/+13
2016-02-12<types>/<utility> scheme cleanupBoris Kolpackov1-2/+0
2016-01-25Add support for searching subprojects of amalgamation for imported projectsBoris Kolpackov1-33/+51
Currently only top-level subproject are considered.
2016-01-23Cleanup absolute/relative path diagnostics by introducing stream verbosityBoris Kolpackov1-4/+2
2016-01-21Rename equal token to assign, etcBoris Kolpackov1-3/+3
2016-01-09Update copyright yearBoris Kolpackov1-1/+1
2016-01-05Rename build directory/namespace to build2Boris Kolpackov1-0/+980