Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
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 | 7 | -135/+126 | |
2023-12-04 | Clarify comment | Boris Kolpackov | 1 | -4/+4 | |
2023-12-04 | Don't match predefs rule for unsupported compiler/version | Boris Kolpackov | 1 | -1/+24 | |
2023-12-04 | Improve parser diagnostics | Boris Kolpackov | 1 | -1/+5 | |
2023-12-04 | Support creating file symlinks with ad hoc recipes | Boris Kolpackov | 1 | -6/+52 | |
2023-12-03 | Support dir{}/fsdir{} idiosyncrasies in $name.*() function family | Boris Kolpackov | 1 | -0/+6 | |
2023-12-03 | Reimplement search_existing() functions via target_type::search | Boris Kolpackov | 18 | -66/+91 | |
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 | 5 | -23/+58 | |
2023-12-03 | Make fsdir{} usable as target of ad hoc Buildscript recipes | Boris Kolpackov | 2 | -3/+41 | |
In particular, it can now be used to represent a directory symlink. For example: exe{hello}: ... fsdir{assets} fsdir{assets}: % update {{ ln -s $src_base/assets $out_base/assets }} % clean {{ rm $out_base/assets }} | |||||
2023-11-29 | Add rule for extracting C and C++ predefs | Boris Kolpackov | 8 | -30/+518 | |
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 | 9 | -118/+7033 | |
2023-11-21 | Add target::append_locked() variant | Boris Kolpackov | 2 | -6/+34 | |
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-17 | Add pre-condition assert to target::newer() | Boris Kolpackov | 1 | -0/+2 | |
2023-11-16 | Fix target::group_state() for unmatched ad hoc group members | Boris Kolpackov | 2 | -4/+14 | |
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 | 2 | -34/+19 | |
2023-11-09 | Minor fix to diagnostics | Boris Kolpackov | 1 | -1/+1 | |
2023-11-07 | Account for match options re-locking when checking if target is matched | Boris Kolpackov | 6 | -15/+49 | |
2023-11-06 | Fix basic issues with C++20 named modules support in Clang | Boris Kolpackov | 2 | -13/+16 | |
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-03 | Work around lack of definition for static constexpr some more | Boris Kolpackov | 1 | -2/+4 | |
2023-11-03 | Work around lack of definition for static constexpr | Boris Kolpackov | 1 | -2/+2 | |
During bootstrap we compile in C++14 where it is not implicitly inline. | |||||
2023-11-03 | Fix data race in match options logic | Boris Kolpackov | 3 | -10/+36 | |
2023-11-02 | Add $first()/$second() pair functions | Boris Kolpackov | 1 | -1/+59 | |
2023-11-02 | Minor diagnostics improvement | Boris Kolpackov | 1 | -1/+1 | |
2023-11-01 | Tighten/optimize cleaning of fsdir{} during match | Boris Kolpackov | 4 | -10/+37 | |
2023-11-01 | Fix incorrect fsdir_rule::perform_update_direct() calls | Boris Kolpackov | 4 | -18/+20 | |
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 | Add support for adjusting match options of post hoc prerequisites | Boris Kolpackov | 7 | -46/+153 | |
2023-11-01 | Use match options for runtime/buildtime distinction when installing libraries | Boris Kolpackov | 8 | -201/+837 | |
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-11-01 | Add notion of match options | Boris Kolpackov | 16 | -173/+537 | |
Now, when matching a rule, the caller may request a subset of the full functionality of performing an operation on a target. This is achieved with match options. | |||||
2023-10-26 | Add inject_fsdir_direct(), fsdir_rule::perform_clean_direct() functions | Boris Kolpackov | 4 | -4/+55 | |
2023-10-26 | Add clean_during_match*() functions | Boris Kolpackov | 2 | -1/+196 | |
2023-10-26 | Minor diagnostics improvement | Boris Kolpackov | 2 | -5/+15 | |
2023-10-06 | Handle 0 mask in update_during_match_prerequisites() | Boris Kolpackov | 3 | -6/+7 | |
2023-10-04 | Add match_direct_complete() to support async direct matches | Boris Kolpackov | 2 | -19/+30 | |