aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-08-25Implement missing pieces in utility libraries supportBoris Kolpackov14-313/+624
In particular, we can now build static libraries out of utility libraries.
2018-08-22Define BUILD2_BOOTSTRAP when compiling libbutl sourcesBoris Kolpackov1-1/+1
2018-08-22Rework code to sidestep Clang 3.8 on FreeBSD 11.0 mis-compilationBoris Kolpackov1-2/+1
2018-08-22Remove unnecessary move()'sBoris Kolpackov1-2/+2
2018-08-21Unset CL and _CL_ environment variables when detecting MSVCBoris Kolpackov5-18/+37
2018-08-21Print 'ar' instead of 'ld' when building static librariesBoris Kolpackov1-1/+1
2018-08-14Use thin archives if available for utility librariesBoris Kolpackov5-44/+166
Thin archives are supported by GNU ar since binutils 2.19.1 and LLVM ar since LLVM 3.8.0.
2018-08-09Fix tests some moreBoris Kolpackov1-3/+3
2018-08-09Fix test failures on WindowsBoris Kolpackov2-8/+23
2018-08-09Add functions for decomposing name as parget/prerequisite nameBoris Kolpackov1-1/+82
2018-08-09Handle few corner cases in concatenated expansionBoris Kolpackov2-23/+70
2018-08-09Add support for name patterns without wildcard charactersBoris Kolpackov4-28/+35
In particular, this allows the "if-exists" specification of prerequisites, for example: for t: $tests exe{$t}: cxx{$t} test{+$t}
2018-08-09Add support for returning optional<T> from (buildfile) function implementationsBoris Kolpackov3-1/+32
2018-08-09Fix issue with concatenating empty typed LHSBoris Kolpackov1-3/+14
2018-08-07Add support for default extension specification, trailing dot escapingBoris Kolpackov14-188/+457
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-30Fortify cli detection against "other" cli's (like Mono JIT compiler)Boris Kolpackov1-12/+25
2018-07-30Make project variable to be of project_name typeKaren Arutyunov32-116/+271
2018-07-28Add build.version.stage boolean variableBoris Kolpackov1-0/+14
It can be used to detection (for example, in tests) whether this is a staged toolchain.
2018-07-26Pass extension supplied by rule to target type default extension functionBoris Kolpackov6-25/+38
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-25Remove unnecessary initialization (which also helps GCC 4.9 and VC 14u3)Boris Kolpackov1-1/+1
2018-07-25Add note to bash module documentationBoris Kolpackov1-1/+3
2018-07-25Exclude cli and bash modules from bootstrap buildBoris Kolpackov4-10/+7
2018-07-25Prefer default extension supplied by rule over one supplied by target typeBoris Kolpackov3-20/+25
2018-07-25Add noteBoris Kolpackov1-3/+4
2018-07-25Fix C++ module testKaren Arutyunov1-1/+1
2018-07-25Fix broken dist checksum calculationKaren Arutyunov1-1/+1
2018-07-24Make exe{} target default to no extension rather than failBoris Kolpackov2-13/+10
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-24Switch to new GCC module interface (-fmodule-mapper)Boris Kolpackov3-153/+112
2018-07-24Handle leading 'module;' marker (p0713)Boris Kolpackov4-4/+45
2018-07-24Document in and bash modulesBoris Kolpackov2-11/+309
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-07-21Install bash module prerequisites for amalgamation rather than projectBoris Kolpackov4-5/+31
This is similar to what we do for shared libraries in cc::install_rule.
2018-07-21Fix installed import semantics for bash modulesBoris Kolpackov1-6/+31
2018-07-21Tweak bash rule matching semanticsBoris Kolpackov1-2/+5
2018-07-20Implement bash moduleBoris Kolpackov24-128/+1138
2018-07-20Add builtin.concat(dir_path,name) overloadBoris Kolpackov2-0/+30
In particular, this allows: export $out_root/libfoo/$import.target
2018-07-20Match inner update rule before prerequisites in install::file_ruleBoris Kolpackov1-8/+13
2018-07-17Add --after <ref-file> option for testscript touch builtinKaren Arutyunov4-20/+82
2018-07-17Reimplement version::in_rule in terms of in::ruleBoris Kolpackov7-441/+182
Significantly, the version::in_rule rule now track changes to the substitution values.
2018-07-17Add temporary sleep to in test to verify debugging hypothesisBoris Kolpackov1-0/+3
2018-07-17Handle executables (permissions, extensions) in in::ruleBoris Kolpackov2-2/+37
2018-07-17Add ability to customize in::rule's default symbol and modeBoris Kolpackov2-3/+8
2018-07-16Update bootstrap scripts with new module directory (in)Boris Kolpackov4-1/+5
2018-07-16Implement in moduleBoris Kolpackov19-112/+861
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-07-16Resolve function overload via the argument reversal to untypedBoris Kolpackov8-227/+99
2018-07-14Add testscript mv builtinKaren Arutyunov3-10/+530
2018-07-12Adjust modules test to maybe-cleanup .ii files (no longer there for VC)Boris Kolpackov1-1/+1
2018-07-11Remove build2 tag from manifestKaren Arutyunov1-1/+1
2018-07-11Force reprocessing for module interface units if compiling with VCBoris Kolpackov1-0/+10
2018-07-10Fix bug in dist checksum implementationBoris Kolpackov1-3/+6