Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
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 | |
2023-09-28 | Don't mark rdata symbols DATA in MSVC .def file (GH issue #315) | Boris Kolpackov | 1 | -1/+9 | |
2023-09-25 | Treat -liconv on Mac OS as system | Boris Kolpackov | 1 | -1/+5 | |
2023-09-21 | Fix bug in previous commit | Boris Kolpackov | 1 | -1/+1 | |
2023-09-21 | Don't install static library prerequisites of executable | Boris Kolpackov | 2 | -1/+32 | |
2023-09-20 | Fix issue with fallback rule priority in dist module | Boris Kolpackov | 6 | -22/+48 | |
While at it, also remove workarounds for the same issue in the config and test modules. | |||||
2023-09-11 | Invoke Clang to produce object files for module partitions similar to interfaces | Swat SomeBug | 1 | -2/+7 | |
Module interface and implementation partitions are like module interfaces so it's not surprising they require similar compilation steps. See GH PR #328 for background. | |||||
2023-09-08 | Manually extract library search paths from LIBRARY_PATH for Clang | Boris Kolpackov | 4 | -70/+90 | |
Unlike GCC, Clang does not incorporate the LIBRARY_PATH environment variable value into the -print-search-dirs output. | |||||
2023-09-07 | Search for .tbd in addition to .dylib in Mac OS | Boris Kolpackov | 1 | -0/+25 | |
Besides .dylib, Mac OS now also has "text-based stub libraries" that use the .tbd extension. They appear to be similar to Windows import libraries and contain information such as the location of the .dylib library, its symbols, etc. For example, there is /Library/.../MacOSX13.3.sdk/usr/lib/libsqlite3.tbd which points to /usr/lib/libsqlite3.dylib (but which itself is invisible/inaccessible, presumably for security). Note that for now we are treating the .tbd library as the shared library but could probably do the more elaborate dance with ad hoc members like on Windows if really necessary. | |||||
2023-09-07 | Add implied .../MacOSX*.sdk/usr/lib/ to system library search directories | Boris Kolpackov | 1 | -7/+22 | |
2023-09-06 | Don't crash if config.report.variable names undefined variable | Boris Kolpackov | 1 | -2/+2 | |
2023-08-29 | Add diagnostics color support on Windows (GH issue #312) | Boris Kolpackov | 3 | -27/+66 | |
Note that currently this has to be enabled with an explicit --diag-color option. In the future the plan is to enable it by default if supported. | |||||
2023-08-23 | Replace assert with diagnostics in bootstrap_src() (GH issue #322) | Boris Kolpackov | 1 | -0/+9 | |
2023-08-22 | Consider *_inc{} target types as headers for rule match purposes | Boris Kolpackov | 7 | -18/+26 | |
2023-08-22 | Add abstract c_inc{} and cxx_inc{} target types | Boris Kolpackov | 7 | -4/+71 | |
These abstract base target types are meant for deriving additional target types (for example, Qt moc{}) that can be #include'd in C and C++ translation units, respectively. In particular, only such targets will be considered to reverse-lookup extensions to target types (see dyndep_rule::map_extension() for background). | |||||
2023-08-09 | Auto-extract function documentation from functions-*.cxx | Boris Kolpackov | 1 | -0/+2 | |
2023-08-09 | Complete and cleanup function documentation in preparation for auto-extraction | Boris Kolpackov | 15 | -309/+537 | |
Also: - Move the $target.*() function family from functions-name.cxx to separate functions-target.cxx. - Get rid of the separate $process_path_ex.*() family, merging it with $process_path.*(). | |||||
2023-08-03 | Document target types in manual (GH issue #309) | Boris Kolpackov | 1 | -0/+3 | |
2023-08-02 | Diagnose declarations of targets/prerequisites with abstract target types | Boris Kolpackov | 2 | -1/+26 | |