Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2024-10-09 | Add support for JSON compilation database generation and maintenance | Boris Kolpackov | 1 | -0/+9 | |
See the "Compilation Database" section in the "cc Module" chapter of the manual for details. | |||||
2024-01-08 | Allow specifying compiler mode options in buildfile | Boris Kolpackov | 1 | -7/+20 | |
Now the configured mode options are appended to buildfile-specified (which must be specified before loading the guess module). In particular, this ability to specify the compiler mode in a buildfile is useful in embedded development where the project may need to hardcode things like -target, -nostdinc, etc. For example: cxx.std = 20 cxx.mode = -target riscv32-unknown-unknown -nostdinc using cxx | |||||
2024-01-08 | Add {bin,c,cxx}.types submodules that only register target types | Boris Kolpackov | 1 | -41/+2 | |
2023-11-01 | Use match options for runtime/buildtime distinction when installing libraries | Boris Kolpackov | 1 | -0/+3 | |
Specifically, now, if a library is installed solely as a prerequisite of an executable (potentially recursively), then only its runtime files are installed omitting everything buildtime-related (static/import libraries, non-versioned symlinks for shared libraries, pkg-config files, headers, etc). If you are familiar with the runtime and -dev/-devel package splits for libraries in Debian/Fedora, this is an analogous semantics. | |||||
2023-09-08 | Manually extract library search paths from LIBRARY_PATH for Clang | Boris Kolpackov | 1 | -4/+4 | |
Unlike GCC, Clang does not incorporate the LIBRARY_PATH environment variable value into the -print-search-dirs output. | |||||
2023-09-07 | Add implied .../MacOSX*.sdk/usr/lib/ to system library search directories | Boris Kolpackov | 1 | -7/+22 | |
2023-08-22 | Consider *_inc{} target types as headers for rule match purposes | Boris Kolpackov | 1 | -3/+3 | |
2023-04-18 | Add support for Assembler with C Preprocessor (.S) compilation | Boris Kolpackov | 1 | -2/+2 | |
Specifically, the c module now provides the c.as-cpp submodules which can be loaded in order to register the S{} target type and enable Assembler with C Preprocessor compilation in the c compile rule. For details, refer to "Assembler with C Preprocessor Compilation" in the manual. | |||||
2023-04-10 | Fix inconsistent /usr/local/{include,lib} search | Boris Kolpackov | 1 | -12/+29 | |
In particular, we were adding -L/usr/local/lib which means it is considered before built-in directories (/usr/lib, etc) but in our own library search code we were considering it after (because we were storing it at the end of sys_lib_dirs). Now in both sys_{hdr,lib}_dirs we store /usr/local/{include,lib} after mode and before built-in directories. Note that as part of this fix we now pass -isystem /usr/local/include instead of -idirafter (which is consistent with the -L behavior and also the customarily expected semantics). | |||||
2022-11-22 | Add support for Objective-C/C++ compilation in cc module | Boris Kolpackov | 1 | -0/+3 | |
2022-11-08 | More work on child process diagnostics buffering | Boris Kolpackov | 1 | -1/+5 | |
2022-10-13 | Optimize by going straight to public variable pool where applicable | Boris Kolpackov | 1 | -1/+4 | |
2022-10-10 | Preparatory work for public/private variable distinction | Boris Kolpackov | 1 | -3/+5 | |
We still always use the public var_pool from context but where required, all access now goes through scope::var_pool(). | |||||
2022-04-06 | Add support for rule hints | Boris Kolpackov | 1 | -12/+12 | |
A rule hint is a target attribute, for example: [rule_hint=cxx] exe{hello}: c{hello} Rule hints can be used to resolve ambiguity when multiple rules match the same target as well as to override an unambiguous match. | |||||
2021-10-04 | Optimize internal scope implementation | Boris Kolpackov | 1 | -27/+29 | |
2021-10-01 | Add notion of internal scope, translate external -I to -isystem or equivalent | Boris Kolpackov | 1 | -12/+113 | |
2021-05-13 | Rename sys_inc_dirs to sys_hdr_dirs for consistency | Boris Kolpackov | 1 | -22/+22 | |
2021-04-22 | Incorporate project environment checksum into cc::compiler_info cache key | Boris Kolpackov | 1 | -1/+3 | |
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 | 1 | -0/+14 | |
2021-04-07 | Register environment variables for hermetic build configurations | Boris Kolpackov | 1 | -0/+3 | |
2021-03-09 | Remove stray trailing whitespaces from diagnostics | Boris Kolpackov | 1 | -1/+1 | |
2021-01-30 | Add std::{map, multimap} to types.hxx | Boris Kolpackov | 1 | -1/+0 | |
Seeing that std::map is becoming a common Buildfile variable type. | |||||
2021-01-30 | Rework include translation support | Boris Kolpackov | 1 | -59/+77 | |
See the config.cxx.translate_include variable documentation in cxx/init.cxx for details. | |||||
2020-12-15 | Cache more results of executing programs (compilers, etc) | Boris Kolpackov | 1 | -20/+65 | |
2020-11-11 | Add ${c,cxx}.lib_{poptions,libs,rpaths}() functions | Boris Kolpackov | 1 | -3/+15 | |
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 | -19/+42 | |
- 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-07-16 | Save original compiler path/mode in {c,cxx}.config.path/mode | Boris Kolpackov | 1 | -1/+7 | |
It turns out that when propagating {c,cxx}.config in tests we don't want to propagate any options (such as *.std) that have been folded into our project's mode. | |||||
2020-07-13 | Fold translated *.std options into compiler mode options | Boris Kolpackov | 1 | -10/+4 | |
This way they are accessible in ad hoc recipes. | |||||
2020-06-02 | Add process_path_ex with program stable name and checksum | Boris Kolpackov | 1 | -1/+1 | |
2020-04-02 | Fix ~host config to only contain cc and bin modules configuration | Boris Kolpackov | 1 | -1/+1 | |
Also add ~build2 that contains everything (except config.dist.*) to be used for build system modules. | |||||
2020-03-31 | Switch to project variable visibility by default | Boris Kolpackov | 1 | -3/+6 | |
2020-03-20 | Generate common .pc file in addition to static/staged when installing lib{} | Boris Kolpackov | 1 | -0/+1 | |
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 | Rework config::{omitted,required,optional}() into unified config_lookup() | Boris Kolpackov | 1 | -24/+29 | |
2020-03-11 | Minor config variable lookup cleanups | Boris Kolpackov | 1 | -5/+16 | |
2020-02-24 | Work around bug in Clang 10 targeting MSVC in c++2a (LLVM bug #44956) | Boris Kolpackov | 1 | -1/+1 | |
2020-02-07 | Drop copyright notice from source code | Karen Arutyunov | 1 | -1/+0 | |
2020-02-03 | Fix bug in sys_*_dirs commit | Boris Kolpackov | 1 | -1/+1 | |
2020-02-03 | Add header/library search paths from compiler mode to sys_*_dirs | Boris Kolpackov | 1 | -21/+29 | |
2020-01-28 | Use scope::var_pool() | Boris Kolpackov | 1 | -1/+1 | |
2020-01-27 | Add corner case check in const.{c,cxx} array splitting | Boris Kolpackov | 1 | -8/+11 | |
2019-11-08 | Redo Apple /usr/include detection using patterns | Boris Kolpackov | 1 | -16/+8 | |
This should cover XCode 11 where the symlinks are the other way around now (see homebrew-core issue #46393 for details). | |||||
2019-11-05 | Add support for supplying MSVC IFCPATH equivalent | Boris Kolpackov | 1 | -0/+12 | |
2019-10-18 | Add ability to specify "compiler mode" options as part of config.{c,cxx} | Boris Kolpackov | 1 | -119/+165 | |
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-11 | Add support for clang-cl | Boris Kolpackov | 1 | -5/+27 | |
The compiler type is `msvc`, variant `clang`. | |||||
2019-10-07 | Pass MSVC system library search paths to linker if LIB envvar is unset | Boris Kolpackov | 1 | -54/+67 | |
2019-10-05 | Implement more accurate MSVC information extraction from Clang on Windows | Boris Kolpackov | 1 | -0/+1 | |
2019-09-18 | Rename importable_headers variable to translatable_headers | Boris Kolpackov | 1 | -8/+8 | |
This name aligns better with the post-Cologne importable/translatable semantics. | |||||
2019-08-28 | Move cc build system module to separate library | Karen Arutyunov | 1 | -0/+781 | |