Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2021-09-09 | Handle Emscripten -pthread mode | Boris Kolpackov | 1 | -0/+15 | |
2021-08-12 | Add ${c,cxx}.deduplicate_export_libs() function | Boris Kolpackov | 4 | -0/+154 | |
This function deduplicates interface library dependencies by removing libraries that are also interface dependencies of the specified libraries. This can result in significantly better build performance for heavily interface-interdependent library families (for example, like Boost). Typical usage: import intf_libs = ... import intf_libs += ... ... import intf_libs += ... intf_libs = $cxx.deduplicate_export_libs($intf_libs) | |||||
2021-08-12 | Avoid duplication in Libs/Libs.private in generated .pc files | Boris Kolpackov | 3 | -23/+69 | |
2021-08-11 | Optimize process_libraries() some more | Boris Kolpackov | 3 | -16/+45 | |
2021-08-10 | Complete process_libraries() duplicate suppression work | Boris Kolpackov | 5 | -69/+114 | |
2021-08-09 | Merge library hashing and collection into single traversal pass | Boris Kolpackov | 4 | -230/+106 | |
It turns out this is a lot faster on deeply-dependent libraries like Boost while not having any noticeable differences for "sane" projects. | |||||
2021-08-09 | Print pkgconfig_save() command at verbosity 1 since can take long | Boris Kolpackov | 1 | -1/+6 | |
2021-08-05 | Implement traversal pruning in process_libraries() | Boris Kolpackov | 8 | -421/+503 | |
2021-08-05 | Add resolved library cache, use in cc::process_libraries() | Boris Kolpackov | 2 | -9/+74 | |
2021-07-22 | Adjust Emscripten Clang version to account for unreleased snapshots | Boris Kolpackov | 1 | -1/+17 | |
2021-07-20 | Map Apple Clang version 12.0.5 to vanilla Clang 10.0.0 | Boris Kolpackov | 1 | -16/+19 | |
2021-07-01 | Suppress duplicate libraries in pkg-config files | Boris Kolpackov | 3 | -46/+89 | |
2021-07-01 | Handle GCC versions in 9.2-win32 form (GitHub issue #156) | Boris Kolpackov | 1 | -25/+19 | |
2021-06-30 | Move symbol exporting .def file rule to bin.def module, add support for MinGW | Boris Kolpackov | 1 | -2/+4 | |
The bin.def module is automatically loaded by the c and cxx modules for the *-win32-msvc target architecture. This allows automatically exporting all symbols for all Windows targets using the following setup (showing for cxx in this example): lib{foo}: libul{foo}: {hxx cxx}{**} ... lib{foo}: def{foo}: include = ($cxx.target.system == 'win32-msvc') def{foo}: libul{foo} if ($cxx.target.system == 'mingw32') cxx.loptions += -Wl,--export-all-symbols That is, we use the .def file generation for MSVC and the built-in support (--export-all-symbols) for MinGW. But it is also possible to use the .def file generation for MinGW. In this case we need to explicitly load the bin.def module (which should be done after loading c or cxx) and using the following setup: using bin.def # In root.build. lib{foo}: libul{foo}: {hxx cxx}{**} ... lib{foo}: def{foo}: include = ($cxx.target.class == 'windows') def{foo}: libul{foo} | |||||
2021-06-21 | Add support for automatic generation of symbol exporting .def file | Boris Kolpackov | 2 | -6/+9 | |
2021-06-08 | Implement ad hoc regex pattern rule support | Boris Kolpackov | 1 | -1/+1 | |
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-07 | Strip partition part from module name when forming imported partition name | Boris Kolpackov | 3 | -14/+22 | |
2021-05-28 | Tie loose ends in target type/pattern-specific matching | Boris Kolpackov | 1 | -5/+7 | |
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 | 10 | -70/+70 | |
2021-05-13 | Add ${c,cxx}.find_system_{header,library}() functions | Boris Kolpackov | 7 | -3/+240 | |
2021-05-13 | Extract MSVC header/library search paths from INCLUDE/LIB envvars | Boris Kolpackov | 1 | -29/+48 | |
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-04 | Replace int_ with intf_ and imp_ with impl_ in names | Boris Kolpackov | 5 | -16/+16 | |
2021-05-04 | Handle duplicate suppression of multi-element libraries (-l foo) | Boris Kolpackov | 7 | -150/+305 | |
See GitHub issue #114 for context. | |||||
2021-04-26 | Detect and diagnose presence of certain GCC environment variables | Boris Kolpackov | 1 | -1/+8 | |
Their presence is incompatible with what we are doing. | |||||
2021-04-22 | Incorporate project environment checksum into cc::compiler_info cache key | Boris Kolpackov | 3 | -1/+24 | |
2021-04-22 | Add another hash/save_environment() overload | Boris Kolpackov | 1 | -2/+2 | |
2021-04-20 | Detect environment changes in ad hoc recipes | Boris Kolpackov | 1 | -3/+2 | |
2021-04-20 | Track changes to environment in cc rules | Boris Kolpackov | 5 | -5/+33 | |
2021-04-09 | Adjust to butl::process::quite_argument() interface change | Boris Kolpackov | 1 | -1/+1 | |
2021-04-07 | Register environment variables for hermetic build configurations | Boris Kolpackov | 4 | -6/+112 | |
2021-03-20 | Don't create file cache entry for non-existent .ii file | Boris Kolpackov | 1 | -1/+7 | |
2021-03-19 | Redo entering of src directories into scope_map | Boris Kolpackov | 1 | -10/+20 | |
2021-03-18 | Move file_cache::write:close() call to correct place in cc::compile_rule | Boris Kolpackov | 1 | -7/+5 | |
2021-03-16 | Define intermediate build results file cache interface | Boris Kolpackov | 2 | -44/+91 | |
2021-03-13 | Tighten Clang detection not to misdetect GCC built with Clang | Boris Kolpackov | 1 | -1/+8 | |
GitHub issue #136. | |||||
2021-03-09 | Remove stray trailing whitespaces from diagnostics | Boris Kolpackov | 1 | -1/+1 | |
2021-02-11 | Improve module name to file name matching logic | Boris Kolpackov | 1 | -9/+38 | |
2021-02-11 | Use lib{} group for installed libraries in make_header_sidebuild() | Boris Kolpackov | 1 | -23/+18 | |
2021-02-11 | Generalize process_libraries() to allow no picking installed library member | Boris Kolpackov | 6 | -81/+107 | |
2021-02-09 | Allow overriding cxx.features.modules with config.cxx.features.modules | Boris Kolpackov | 1 | -2/+4 | |
2021-02-09 | Minor simplification | Boris Kolpackov | 2 | -5/+5 | |
2021-02-08 | Get rid of unused lambda capture | Boris Kolpackov | 1 | -1/+1 | |
2021-02-08 | Enter scope src directories into scope map | Boris Kolpackov | 1 | -14/+6 | |
2021-02-03 | Propagate relevant options/prerequisites to header unit sidebuilds | Boris Kolpackov | 5 | -33/+216 | |
2021-01-30 | Add std::{map, multimap} to types.hxx | Boris Kolpackov | 4 | -6/+1 | |
Seeing that std::map is becoming a common Buildfile variable type. |