Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2024-02-26 | Add ability to serialize compilation/linking in cc rules | Boris Kolpackov | 4 | -8/+43 | |
Specifically, both the C/C++ compiler and link rules now recognize the cc.serialize boolean variable which instructs them to compiler/link serially with regards to any other recipe. This is primarily useful when compiling large translation units or linking large binaries that require so much memory that doing that in parallel with other compilation/linking jobs is likely to summon the OOM killer. For example: obj{memory-hog}: cc.serialize = true | |||||
2024-02-22 | Detect dependency cycles in *.export.libs | Boris Kolpackov | 1 | -0/+5 | |
Fixes GH issue #362. | |||||
2024-02-22 | Detect non-cc::link_rule libraries not marked with cc.type=cc | Boris Kolpackov | 1 | -4/+11 | |
Fixes GH issue #368. | |||||
2024-02-22 | Deal with libs{} being member of group in windows_rpath_timestamp() | Boris Kolpackov | 1 | -1/+14 | |
Fixes GH issue #366. | |||||
2024-02-15 | Add fsdir{} duplicate suppression in more places | Boris Kolpackov | 2 | -2/+9 | |
2024-02-06 | Fix bunch of maybe used uninitialized warnings | Boris Kolpackov | 2 | -2/+3 | |
2024-02-02 | Handle unseparated `rc` and `git` suffixes in Clang version (GH issue #360) | Boris Kolpackov | 1 | -2/+38 | |
2024-01-29 | Fix pkgconfig_load() to set common poptions for lib{} target group | Karen Arutyunov | 1 | -6/+47 | |
2024-01-11 | Properly split injected ad hoc group member name in regex pattern rule | Boris Kolpackov | 1 | -1/+2 | |
2024-01-10 | Add ability to specify alternative sysroot for pkg-config files (GC issue #59) | Boris Kolpackov | 2 | -4/+65 | |
Specifically, the new config.cc.pkgconfig.sysroot variable provides roughly equivalent functionality to PKG_CONFIG_SYSROOT_DIR in pkg-config. For details and limitations, see "Rewriting Installed Libraries System Root (sysroot)" in the manual for details. | |||||
2024-01-10 | Fix bunch of typos | Boris Kolpackov | 4 | -6/+6 | |
2024-01-09 | Disable use of -frewrite-includes for assembler with preprocessor files | Boris Kolpackov | 1 | -3/+24 | |
With -frewrite-includes Clang has issues with correctly tracking location information (manifests itself as wrong line numbers in debug info, for example). The result also appears to reference the .Si file instead of the original source file for some reason. While at it also omit trying to scan such files since that can be hazardous (such files sometimes use `#`-style comments). | |||||
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 | Handle absent paths in cc::gcc_header_search_dirs() (e.g., due to -nostdinc) | Boris Kolpackov | 1 | -8/+17 | |
2024-01-08 | Add {bin,c,cxx}.types submodules that only register target types | Boris Kolpackov | 1 | -41/+2 | |
2023-12-14 | Allow enabling C++ modules for C++20 and later std.cxx values | Boris Kolpackov | 1 | -1/+7 | |
2023-12-14 | Cleanup old code for C++ modules support in Clang | Boris Kolpackov | 1 | -106/+2 | |
2023-12-13 | Fix another instance of module name not being assigned due to deferred failure | Boris Kolpackov | 1 | -10/+17 | |
2023-12-12 | Work around unexecuted member for installed libraries issue | Boris Kolpackov | 2 | -7/+60 | |
See comment for the long-term plan. | |||||
2023-12-08 | Workaround bogus initialized variable warning | Boris Kolpackov | 1 | -1/+1 | |
2023-12-07 | Fix bug that led to duplication of module import information | Boris Kolpackov | 1 | -1/+7 | |
2023-12-07 | Add support for compiling MSVC standard library modules | Boris Kolpackov | 1 | -41/+144 | |
2023-12-07 | C++20 named modules support for MSVC, take 2 | Boris Kolpackov | 5 | -113/+106 | |
2023-12-04 | Don't match predefs rule for unsupported compiler/version | Boris Kolpackov | 1 | -1/+24 | |
2023-12-03 | Reimplement search_existing() functions via target_type::search | Boris Kolpackov | 2 | -2/+2 | |
This allows us to automatically get the target type-specific behavior with regards to the out_only semantics (added in the previous commit) instead of passing it explicitly from each call site. | |||||
2023-12-03 | Search in src for existing prerequisites with unspecified out | Boris Kolpackov | 1 | -3/+3 | |
2023-11-29 | Add rule for extracting C and C++ predefs | Boris Kolpackov | 4 | -2/+412 | |
2023-11-29 | Minor cleanups in cc::compile_rule | Boris Kolpackov | 1 | -6/+3 | |
2023-11-29 | Complete earlier fix for modules support in Clang | Boris Kolpackov | 1 | -5/+2 | |
2023-11-27 | Fix minor incompatibility with C++14 | Boris Kolpackov | 1 | -1/+1 | |
2023-11-27 | Tweak module name from file name guessing logic | Boris Kolpackov | 1 | -2/+41 | |
As a heuristics, prefer shorter but exact partition name matches to longer but partial. | |||||
2023-11-22 | Fix cc::link_rule and cc::install_rule to recognize S{} even in C++ | Boris Kolpackov | 2 | -20/+20 | |
Failed that, a C++ link rule cannot match a dependency with S{} prerequisites. | |||||
2023-11-22 | Deal with lack of module information due to deferred failure | Boris Kolpackov | 1 | -9/+17 | |
2023-11-22 | Fix incorrect _LIBCPP_VERSION macro name in comments | Boris Kolpackov | 2 | -7/+7 | |
2023-11-22 | Add support for `import std` in Clang 17 or later with libc++ | Boris Kolpackov | 5 | -116/+7008 | |
2023-11-17 | Undo remap of Apple Clang 14.0.3 and 15.0.0 to vanilla Clang 14.0 and 15.0 | Boris Kolpackov | 1 | -5/+7 | |
2023-11-16 | Extend comment on Clang's -fmodules-embed-all-files use | Boris Kolpackov | 1 | -0/+6 | |
2023-11-15 | Switch from two-step module compilation to -fmodule-output for Clang | Boris Kolpackov | 1 | -0/+35 | |
2023-11-14 | Remap Apple Clang 14.0.3 and 15.0.0 to vanilla Clang 14.0 and 15.0 | Boris Kolpackov | 1 | -6/+14 | |
Lately, we started seeing __LIBCPP_VERSION values like 15.0.6 or 16.0.2 which would suggest the base is 15.0.5 or 16.0.1. But that assumption did not check out with the actual usage. For example, vanilla Clang 16 should no longer require -fmodules-ts but the Apple's version (that is presumably based on it) still does. So the theory here is that Apple upgrades to newer libc++ while keeping the old compiler. Which means we must be more conservative and assume something like 15.0.6 is still 14-based. | |||||
2023-11-14 | Fix module sidebuild logic for Clang | Boris Kolpackov | 1 | -10/+16 | |
2023-11-09 | Fix more issues with C++20 named modules support in Clang | Boris Kolpackov | 1 | -20/+10 | |
2023-11-09 | Minor fix to diagnostics | Boris Kolpackov | 1 | -1/+1 | |
2023-11-06 | Fix basic issues with C++20 named modules support in Clang | Boris Kolpackov | 1 | -12/+5 | |
Note that modules support now require Clang 16 or later. | |||||
2023-11-06 | Fix C-comment scanning bug in cc::lexer | Boris Kolpackov | 2 | -10/+12 | |
2023-11-03 | Generalize and export cc::lexer | Boris Kolpackov | 4 | -16/+29 | |
2023-11-01 | Fix incorrect fsdir_rule::perform_update_direct() calls | Boris Kolpackov | 1 | -1/+1 | |
Also make fsdir_rule::perform_{update,clean}_direct() harder to misuse. | |||||
2023-11-01 | Handle match options for post hoc libs{} prerequisites in cc::install_rule | Boris Kolpackov | 2 | -0/+78 | |
2023-11-01 | Use match options for runtime/buildtime distinction when installing libraries | Boris Kolpackov | 3 | -67/+393 | |
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-11-01 | Undo "Don't install static library prerequisites of executable" | Boris Kolpackov | 2 | -26/+1 | |
This turned out not to be always correct since a static library can have prerequisites that it requires at runtime (see the libca-certificates-curl for an example). The new plan is to split static/shared library installation into run-time and build-time parts using the new match options mechanism. | |||||
2023-09-25 | Treat -liconv on Mac OS as system | Boris Kolpackov | 1 | -1/+5 | |