Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
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 | |
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-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-08-29 | Add diagnostics color support on Windows (GH issue #312) | Boris Kolpackov | 1 | -8/+39 | |
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-22 | Consider *_inc{} target types as headers for rule match purposes | Boris Kolpackov | 5 | -18/+24 | |
2023-08-22 | Add abstract c_inc{} and cxx_inc{} target types | Boris Kolpackov | 2 | -0/+32 | |
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-07-31 | Add CCC_OVERRIDE_OPTIONS to list of Clang env vars to track/save | Boris Kolpackov | 1 | -2/+5 | |
2023-07-24 | Add setupapi.lib to list of Windows system libraries | Boris Kolpackov | 1 | -0/+1 | |
2023-06-28 | Minor tweaks and cleanups | Boris Kolpackov | 1 | -0/+3 | |
2023-06-22 | Filter out subsequent occurrences of library itself in .pc files (GH issue #283) | Boris Kolpackov | 1 | -18/+28 | |
Failed that we will end up with a dependency cycle. | |||||
2023-06-22 | Omit -Wno-gnu-line-marker for Apple Clang 14.0.3 | Boris Kolpackov | 1 | -2/+9 | |
2023-06-19 | Update Apple Clang to vanilla Clang version mapping | Boris Kolpackov | 1 | -21/+27 | |
2023-06-14 | Use dry_run_option instead of dry_run during match | Boris Kolpackov | 1 | -1/+1 | |
2023-06-13 | Disable -Wgnu-line-marker in Clang 15 triggered by -frewrite-includes | Boris Kolpackov | 1 | -6/+43 | |
See llvm-project issue 63284 for details. | |||||
2023-06-07 | Implement GCC module mapper protocol quoting/escaping (GH issues #203, #228) | Boris Kolpackov | 1 | -14/+223 | |
2023-06-05 | Remap Clang -Wunqualified-std-cast-call warning to -Wextra (GH issue #259) | Boris Kolpackov | 1 | -0/+40 | |
2023-06-02 | Fix another race in library metadata protocol logic | Boris Kolpackov | 1 | -0/+8 | |
2023-06-02 | Fix data race in library metadata protocol logic | Boris Kolpackov | 2 | -4/+9 | |
2023-04-18 | Add support for Assembler with C Preprocessor (.S) compilation | Boris Kolpackov | 7 | -41/+103 | |
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 | 4 | -32/+53 | |
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). | |||||
2023-04-05 | Allow creating context with bare minimum of initializations | Boris Kolpackov | 2 | -6/+6 | |
This is used by bpkg to detect forwarded configurations without incurring the full context creation overhead. |