Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2021-09-28 | Adapt to libbutl headers extension change from .mxx to .hxx | Karen Arutyunov | 1 | -1/+1 | |
2021-09-09 | Handle Emscripten -pthread mode | Boris Kolpackov | 1 | -0/+15 | |
2021-08-12 | Add ${c,cxx}.deduplicate_export_libs() function | Boris Kolpackov | 1 | -0/+86 | |
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-09 | Merge library hashing and collection into single traversal pass | Boris Kolpackov | 1 | -212/+95 | |
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-05 | Implement traversal pruning in process_libraries() | Boris Kolpackov | 1 | -29/+55 | |
2021-07-01 | Suppress duplicate libraries in pkg-config files | Boris Kolpackov | 1 | -27/+1 | |
2021-05-28 | Tie loose ends in target type/pattern-specific matching | Boris Kolpackov | 1 | -5/+7 | |
2021-05-13 | Add ${c,cxx}.find_system_{header,library}() functions | Boris Kolpackov | 1 | -0/+131 | |
2021-05-06 | Propagate complete match rules from utility libraries in link rule | Boris Kolpackov | 1 | -80/+72 | |
This makes sure mixed-language (e.g., C and C++) utility libraries behave as expected. | |||||
2021-05-04 | Handle duplicate suppression of multi-element libraries (-l foo) | Boris Kolpackov | 1 | -54/+68 | |
See GitHub issue #114 for context. | |||||
2021-04-20 | Track changes to environment in cc rules | Boris Kolpackov | 1 | -4/+7 | |
2021-04-09 | Adjust to butl::process::quite_argument() interface change | Boris Kolpackov | 1 | -1/+1 | |
2021-02-11 | Generalize process_libraries() to allow no picking installed library member | Boris Kolpackov | 1 | -11/+13 | |
2021-02-03 | Propagate relevant options/prerequisites to header unit sidebuilds | Boris Kolpackov | 1 | -0/+2 | |
2021-01-30 | Add std::{map, multimap} to types.hxx | Boris Kolpackov | 1 | -2/+0 | |
Seeing that std::map is becoming a common Buildfile variable type. | |||||
2021-01-30 | Rework include translation support | Boris Kolpackov | 1 | -1/+1 | |
See the config.cxx.translate_include variable documentation in cxx/init.cxx for details. | |||||
2021-01-22 | Redo bin.lib.version not to require empty key | Boris Kolpackov | 1 | -3/+9 | |
2020-12-14 | Fix incorrect assert in condition | Boris Kolpackov | 1 | -2/+2 | |
2020-12-11 | Add $cxx.obj_modules() which returns object files for binless modules | Boris Kolpackov | 1 | -0/+5 | |
2020-12-11 | Add support for module interface-only libraries | Boris Kolpackov | 1 | -34/+142 | |
Also suppress generation of the object file in cases where we don't need it. | |||||
2020-12-03 | Add ability to get absolute library paths from ${c,cxx}.lib_libs() | Boris Kolpackov | 1 | -4/+9 | |
2020-11-23 | Suppress duplicates when extracting library options (GitHub issue #114) | Boris Kolpackov | 1 | -35/+127 | |
2020-11-17 | Omit default extensions for target types that now have fixed extensions | Boris Kolpackov | 1 | -2/+2 | |
2020-11-11 | Add ${c,cxx}.lib_{poptions,libs,rpaths}() functions | Boris Kolpackov | 1 | -36/+36 | |
These functions can be used to query library metadata for options and libraries that should be used when compiling/linking dependent targets, similar to how cc::{compile,link}_rule do it. With this support it should be possible to more or less re-create their semantics in ad hoc recipes. | |||||
2020-11-05 | Initial Emscripten support | Boris Kolpackov | 1 | -0/+44 | |
- Target: wasm32-emscripten (wasm32-unknown-emscripten). - Compiler id: clang-emscripten (type clang, variant emscripten, class gcc). - Ability to build executables (.js plus .wasm) and static libraries (.a). Set executable bit on the .js file (so it can be executed with a suitable binfmt interpreter). - Default config.bin.lib for wasm32-emscripten is static instead of both. - Full C++ exception support is enable unless disabled explicitly by the user with -s DISABLE_EXCEPTION_CATCHING=1|2. - The bin module registers the wasm{} target type for wasm32-emscripten. | |||||
2020-08-12 | Adjust linker arguments for LTO parallelization | Matthew Krupcale | 1 | -0/+54 | |
GCC 10+ and Clang 4+ support controlling the number of LTO threads/jobs used during linking. Use the build2 scheduler to allocate up to the number of hardware threads to the GCC or Clang linker processes when -flto=auto or -flto=thin is specified, respectively. Otherwise, GCC or Clang will attempt to spawn the number of hardware threads detected for each linker process, which could result in up to n^2 linker threads on a CPU with n hardware threads. | |||||
2020-07-13 | Fold translated *.std options into compiler mode options | Boris Kolpackov | 1 | -1/+0 | |
This way they are accessible in ad hoc recipes. | |||||
2020-06-16 | Move common functionality from cc to bin | Boris Kolpackov | 1 | -1/+1 | |
2020-05-27 | Initial support for ad hoc recipes (still work in progress) | Boris Kolpackov | 1 | -19/+5 | |
2020-03-20 | Generate common .pc file in addition to static/staged when installing lib{} | Boris Kolpackov | 1 | -9/+49 | |
The common .pc file is produced by ignoring any static/shared-specific poptions and splitting loptions/libs into Libs/Libs.private. It is "best effort", in a sense that it's not guaranteed to be sufficient in all cases, but it will probably cover the majority of cases, even on Windows, thanks to automatic dllimport'ing of functions. | |||||
2020-03-17 | Rename all find*(variable) to lookup*(variable) | Boris Kolpackov | 1 | -6/+6 | |
Now we consistently use term "lookup" for variable value lookup. At some point we should also rename type lookup to binding and get rid of all the lookup_type aliases. | |||||
2020-03-10 | Force hard links inside backlinked DLL assembly directory | Boris Kolpackov | 1 | -1/+2 | |
Windows does not allow the manifest file inside to be a symlink for some (probably security) reasons. | |||||
2020-02-24 | Disable /WHOLEARCHIVE workaround for lld-link 9.0.1 and later | Boris Kolpackov | 1 | -9/+16 | |
2020-02-07 | Drop copyright notice from source code | Karen Arutyunov | 1 | -1/+0 | |
2020-02-03 | Add header/library search paths from compiler mode to sys_*_dirs | Boris Kolpackov | 1 | -33/+35 | |
2020-01-27 | Improve process run_*() API | Boris Kolpackov | 1 | -1/+4 | |
2020-01-24 | Don't pass dependency library non-export loptions to linker | Karen Arutyunov | 1 | -2/+10 | |
2019-11-29 | Reorder {cc,c/cxx}.{poptions,loptions} | Boris Kolpackov | 1 | -1/+6 | |
Now it is c/cxx first followed by cc which is the reverse order of coptions since the header/library search paths are examined in the order specified (in contrast to the "last value wins" semantics that we assume for coptions). | |||||
2019-11-26 | Rename executable's .lib/.exp to avoid clashes with libraries | Boris Kolpackov | 1 | -29/+41 | |
Failed that we cannot have an executable and a library with the same name and in the same directory (their .lib's will clash). | |||||
2019-11-07 | Initial work on path_name use for `-` to stdin/stdout translation | Boris Kolpackov | 1 | -1/+1 | |
2019-10-29 | Add support for specifying custom load prefix and version clean patterns | Boris Kolpackov | 1 | -5/+10 | |
2019-10-29 | Tighten up versioned libraries clean patterns | Boris Kolpackov | 1 | -69/+122 | |
2019-10-21 | Work around LLD bug #43744 | Boris Kolpackov | 1 | -0/+23 | |
2019-10-21 | Build thin archives for utility libraries if using llvm-lib | Boris Kolpackov | 1 | -0/+13 | |
2019-10-18 | Add ability to specify "compiler mode" options as part of config.{c,cxx} | Boris Kolpackov | 1 | -8/+12 | |
Such options are (normally) not overridden by buildfiles and are passed last (after cc.coptions and {c,cxx}.coptions) in the resulting command lines. They are also cross-hinted between config.c and config.cxx. For example: $ b config.cxx="g++ -m64" | |||||
2019-10-14 | Implement MSVC installation discovery for version 15 (2017) and later | Karen Arutyunov | 1 | -8/+8 | |
In particular, this removes the requirement to build from the Visual Studio command prompt. Note that since MSVC compiler binaries are target-specific (i.e., there are no -m32/-m64 options nor something like /MACHINE), in this case we default to a 64-bit build (a 32-bit build can still be achieved by running from a suitable command prompt). Finally, this mechanism is also used to find Clang bundled with MSVC. | |||||
2019-10-09 | Prepend pattern search paths to PATH when running binutils | Boris Kolpackov | 1 | -4/+66 | |
This way any dependent tools (such as mt.exe that is invoked by link.exe) are first search for in there. | |||||
2019-10-07 | Pass MSVC system library search paths to linker if LIB envvar is unset | Boris Kolpackov | 1 | -13/+44 | |
2019-10-05 | Default to MSVC DLL runtime for Clang on Windows | Boris Kolpackov | 1 | -6/+8 | |
2019-10-01 | Adapt to renaming butl::casecmp() to icasecmp() | Karen Arutyunov | 1 | -1/+1 | |