Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2021-06-08 | Implement ad hoc regex pattern rule support | Boris Kolpackov | 29 | -383/+1644 | |
An ad hoc pattern rule consists of a pattern that mimics a dependency declaration followed by one or more recipes. For example: exe{~'/(.*)/'}: cxx{~'/\1/'} {{ $cxx.path -o $path($>) $path($<[0]) }} If a pattern matches a dependency declaration of a target, then the recipe is used to perform the corresponding operation on this target. For example, the following dependency declaration matches the above pattern which means the rule's recipe will be used to update this target: exe{hello}: cxx{hello} While the following declarations do not match the above pattern: exe{hello}: c{hello} # Type mismatch. exe{hello}: cxx{howdy} # Name mismatch. On the left hand side of `:` in the pattern we can have a single target or an ad hoc target group. The single target or the first (primary) ad hoc group member must be a regex pattern (~). The rest of the ad hoc group members can be patterns or substitutions (^). For example: <exe{~'/(.*)/'} file{^'/\1.map/'}>: cxx{~'/\1/'} {{ $cxx.path -o $path($>[0]) "-Wl,-Map=$path($>[1])" $path($<[0]) }} On the left hand side of `:` in the pattern we have prerequisites which can be patterns, substitutions, or non-patterns. For example: <exe{~'/(.*)/'} file{^'/\1.map/'}>: cxx{~'/\1/'} hxx{^'/\1/'} hxx{common} {{ $cxx.path -o $path($>[0]) "-Wl,-Map=$path($>[1])" $path($<[0]) }} Substitutions on the left hand side of `:` and substitutions and non-patterns on the right hand side are added to the dependency declaration. For example, given the above rule and dependency declaration, the effective dependency is going to be: <exe{hello} file{hello.map>: cxx{hello} hxx{hello} hxx{common} | |||||
2021-06-02 | Redo fallback reverse operation machinery in ad hoc recipes | Boris Kolpackov | 7 | -64/+78 | |
2021-05-31 | Only pass target to recipe_text() if recipe is not shared | Boris Kolpackov | 10 | -42/+88 | |
2021-05-28 | Fix few Windows/VC compatibility issues | Boris Kolpackov | 2 | -6/+6 | |
2021-05-28 | Add support for regex-based target type/pattern specific variables | Boris Kolpackov | 14 | -261/+710 | |
This is in addition to the already supported path-based target type/pattern specific variables. For example: hxx{*}: x = y # path-based hxx{~/.*/}: x = y # regex-based | |||||
2021-05-28 | Recognize quoting of first character in token | Boris Kolpackov | 7 | -55/+118 | |
Use this to relax the pattern inclusion/exclusion syntax to only require unquoted +/-. | |||||
2021-05-28 | Ban conversion of patterns to values | Boris Kolpackov | 9 | -113/+137 | |
Also improve conversion diagnostic. | |||||
2021-05-28 | Add pattern_mode::ignore and use in appropriate places | Boris Kolpackov | 5 | -25/+35 | |
2021-05-28 | Tie loose ends in target type/pattern-specific matching | Boris Kolpackov | 7 | -42/+119 | |
2021-05-28 | Clean default target type extension logic | Boris Kolpackov | 5 | -22/+83 | |
2021-05-28 | Make notion of name pattern explicit, fix various related loose ends | Boris Kolpackov | 13 | -145/+285 | |
2021-05-25 | Add dbgeng.lib to list of Windows system libraries | Boris Kolpackov | 1 | -0/+1 | |
2021-05-14 | Add synchronization.lib to the list of Windows system libraries | Boris Kolpackov | 1 | -19/+21 | |
2021-05-13 | Rename sys_inc_dirs to sys_hdr_dirs for consistency | Boris Kolpackov | 12 | -78/+78 | |
2021-05-13 | Add ${c,cxx}.find_system_{header,library}() functions | Boris Kolpackov | 8 | -4/+241 | |
2021-05-13 | Extract MSVC header/library search paths from INCLUDE/LIB envvars | Boris Kolpackov | 1 | -29/+48 | |
2021-05-13 | Rearrange inline function definitions to make MinGW GCC happy | Boris Kolpackov | 2 | -4/+9 | |
2021-05-13 | Do lazy allocation of shadow task queues | Boris Kolpackov | 3 | -7/+11 | |
2021-05-13 | Don't both mark the scheduler queue and enter sub-phase | Boris Kolpackov | 2 | -19/+2 | |
2021-05-12 | Deal with helper thread starvation during phase switching | Boris Kolpackov | 6 | -46/+261 | |
The implemented solution entails shadowing old phase queues so that helpers don't pick up old phase tasks and boosting the max_threads count so that we can create more helpers if all the existing ones are stuck in the old phase. | |||||
2021-05-12 | Keep phase locked while working own queue | Boris Kolpackov | 8 | -43/+87 | |
2021-05-07 | Various improvements and clarifications in metadata handling | Boris Kolpackov | 2 | -45/+85 | |
2021-05-06 | See through utility libraries when looking for module interfaces | Boris Kolpackov | 2 | -92/+117 | |
2021-05-06 | Propagate complete match rules from utility libraries in link rule | Boris Kolpackov | 2 | -80/+82 | |
This makes sure mixed-language (e.g., C and C++) utility libraries behave as expected. | |||||
2021-05-06 | Fix default Clang C++ compiler name mis-guess | Boris Kolpackov | 1 | -1/+1 | |
2021-05-05 | Deactivate when blocked on load phase mutex | Boris Kolpackov | 1 | -2/+12 | |
This turned out to be important when building in multiple contexts that share the scheduler (e.g., main and module/recipe build context). In this case we need an accurate active thread count in order to decide when to start an extra helper thread past max_active. | |||||
2021-05-04 | Add config.install.root with data_root/etc/ default | Boris Kolpackov | 2 | -0/+4 | |
2021-05-04 | Replace int_ with intf_ and imp_ with impl_ in names | Boris Kolpackov | 15 | -45/+45 | |
2021-05-04 | Handle duplicate suppression of multi-element libraries (-l foo) | Boris Kolpackov | 7 | -150/+305 | |
See GitHub issue #114 for context. | |||||
2021-05-03 | Allow unseparated scope-qualified variable assignment and expansion | Boris Kolpackov | 2 | -6/+59 | |
2021-04-26 | Detect and diagnose presence of certain GCC environment variables | Boris Kolpackov | 2 | -8/+14 | |
Their presence is incompatible with what we are doing. | |||||
2021-04-22 | Add <version> install directory substitution in addition to <project> | Boris Kolpackov | 2 | -8/+23 | |
2021-04-22 | Incorporate project environment checksum into cc::compiler_info cache key | Boris Kolpackov | 8 | -3/+60 | |
2021-04-22 | Add another hash/save_environment() overload | Boris Kolpackov | 4 | -2/+33 | |
2021-04-22 | Document use of depdb-env for manually tracking changes to environment | Boris Kolpackov | 1 | -0/+18 | |
2021-04-21 | Add buildscript depdb builtin 'env' command | Karen Arutyunov | 7 | -18/+127 | |
2021-04-20 | Detect environment changes in ad hoc recipes | Boris Kolpackov | 9 | -37/+101 | |
2021-04-20 | Track changes to environment in cc rules | Boris Kolpackov | 10 | -6/+134 | |
2021-04-20 | Disable bunch of bogus GCC warnings | Boris Kolpackov | 3 | -3/+4 | |
2021-04-16 | Handle hermetic configurations in ~host and ~build2 | Boris Kolpackov | 2 | -14/+29 | |
Specifically, we keep config.config.environment but strip config.config.hermetic. Also update the INSTALL file. | |||||
2021-04-15 | Disable modules support in VC 16.8 and later due to options change | Boris Kolpackov | 1 | -2/+5 | |
See GitHub issue #134 for background. | |||||
2021-04-09 | Adjust to butl::process::quite_argument() interface change | Boris Kolpackov | 1 | -1/+1 | |
2021-04-09 | Fix bug in configure meta-operation implementation | Boris Kolpackov | 1 | -1/+1 | |
2021-04-09 | Document hermetic build configuration support | Boris Kolpackov | 4 | -15/+201 | |
2021-04-07 | Register environment variables for hermetic build configurations | Boris Kolpackov | 22 | -20/+433 | |
2021-04-04 | Add base functionality for hermetic build configurationshermetic | Boris Kolpackov | 7 | -112/+345 | |
2021-04-02 | Add support for propagating project environment | Boris Kolpackov | 13 | -54/+254 | |
2021-03-26 | Implement config.config.environment storage | Boris Kolpackov | 5 | -99/+252 | |
2021-03-22 | Fix tests to work for compressed file cache entries | Boris Kolpackov | 1 | -1/+1 | |
2021-03-22 | Fix bug in file cache logic (compression disabled) | Boris Kolpackov | 1 | -0/+2 | |