aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc
AgeCommit message (Collapse)AuthorFilesLines
2023-09-11Invoke Clang to produce object files for module partitions similar to interfacesSwat SomeBug1-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-08Manually extract library search paths from LIBRARY_PATH for ClangBoris Kolpackov4-70/+90
Unlike GCC, Clang does not incorporate the LIBRARY_PATH environment variable value into the -print-search-dirs output.
2023-09-07Search for .tbd in addition to .dylib in Mac OSBoris Kolpackov1-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-07Add implied .../MacOSX*.sdk/usr/lib/ to system library search directoriesBoris Kolpackov1-7/+22
2023-08-29Add diagnostics color support on Windows (GH issue #312)Boris Kolpackov1-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-22Consider *_inc{} target types as headers for rule match purposesBoris Kolpackov5-18/+24
2023-08-22Add abstract c_inc{} and cxx_inc{} target typesBoris Kolpackov2-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-31Add CCC_OVERRIDE_OPTIONS to list of Clang env vars to track/saveBoris Kolpackov1-2/+5
2023-07-24Add setupapi.lib to list of Windows system librariesBoris Kolpackov1-0/+1
2023-06-28Minor tweaks and cleanupsBoris Kolpackov1-0/+3
2023-06-22Filter out subsequent occurrences of library itself in .pc files (GH issue #283)Boris Kolpackov1-18/+28
Failed that we will end up with a dependency cycle.
2023-06-22Omit -Wno-gnu-line-marker for Apple Clang 14.0.3Boris Kolpackov1-2/+9
2023-06-19Update Apple Clang to vanilla Clang version mappingBoris Kolpackov1-21/+27
2023-06-14Use dry_run_option instead of dry_run during matchBoris Kolpackov1-1/+1
2023-06-13Disable -Wgnu-line-marker in Clang 15 triggered by -frewrite-includesBoris Kolpackov1-6/+43
See llvm-project issue 63284 for details.
2023-06-07Implement GCC module mapper protocol quoting/escaping (GH issues #203, #228)Boris Kolpackov1-14/+223
2023-06-05Remap Clang -Wunqualified-std-cast-call warning to -Wextra (GH issue #259)Boris Kolpackov1-0/+40
2023-06-02Fix another race in library metadata protocol logicBoris Kolpackov1-0/+8
2023-06-02Fix data race in library metadata protocol logicBoris Kolpackov2-4/+9
2023-04-18Add support for Assembler with C Preprocessor (.S) compilationBoris Kolpackov7-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-10Fix inconsistent /usr/local/{include,lib} searchBoris Kolpackov4-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-05Allow creating context with bare minimum of initializationsBoris Kolpackov2-6/+6
This is used by bpkg to detect forwarded configurations without incurring the full context creation overhead.
2023-04-04Add support for installation filtering (GH issue #147)Boris Kolpackov1-2/+2
2023-04-03Add authz.lib to Windows system library listBoris Kolpackov1-0/+1
2023-03-30Add comdlg32.lib to list of system Windows librariesBoris Kolpackov1-0/+1
2023-03-24Add support for generating relocatable pkg-config filesBoris Kolpackov1-10/+133
2023-03-23Add support for relocatable installation in $install.resolve()Boris Kolpackov1-1/+2
2023-03-22Initial work on relocatable install: config.install.relocatable and rpathBoris Kolpackov1-2/+66
2023-03-08Fix uninitialized variable bugBoris Kolpackov1-1/+1
2023-03-02Adapt to interface changes in libpkgconf 1.9Boris Kolpackov1-0/+7
Patch by Matthew Krupcale.
2023-03-01Add support for installation manifestBoris Kolpackov1-3/+3
2023-02-20Fix raw string literal lexing bug in cc:lexer (GH issue #268)Boris Kolpackov2-3/+5
2023-02-13Deduplicate -I and -L options extracted from pkg-config files (GH issue #265)Boris Kolpackov1-43/+81
2022-12-15Add noexcept to move constructors and move assignment operatorsKaren Arutyunov1-4/+4
2022-12-14Improve empty simple value to empty list of names reduction heuristicsBoris Kolpackov1-1/+1
Specifically, do not reduce typed RHS empty simple values for prepend/append and additionally for assignment provided LHS is typed and is a container.
2022-12-12Adapt to dir_iterator API changeKaren Arutyunov2-2/+15
2022-12-09Enable diagnostics color in GCC and ClangBoris Kolpackov4-2/+80
2022-12-09Normalize target's out directory in cc::insert_library()Boris Kolpackov1-7/+8
2022-12-08Normalize extracted header/library search directories (GH issue #235)Boris Kolpackov5-13/+48
2022-12-07Fix incorrect process_path::effect accessBoris Kolpackov1-1/+1
2022-12-07Use effective rather than recall path for cache keyBoris Kolpackov1-1/+1
2022-12-07Fix bug in MSVC library_type() implementation (GH issue #235)Boris Kolpackov1-4/+1
It looks like the implementation was botched a bit when switching from link.exe /DUMP /ARCHIVEMEMBERS to link.exe /LIB /LIST.
2022-12-07Add MSVC library type cachingBoris Kolpackov1-9/+24
2022-12-07List dnsapi, msimg32 as Windows system librariesBoris Kolpackov1-2/+4
2022-12-06Handle bin.whole when specified for interface dependenciesBoris Kolpackov1-5/+23
2022-12-05Skip common .pc file for binless if found but rejected binful (GH issues #235)Boris Kolpackov3-26/+80
2022-12-05List windowscodecs as Windows system libraryBoris Kolpackov1-0/+1
2022-11-30Diagnose absence of import library after link.exe invocation (GH issue #231)Boris Kolpackov1-7/+22
If a library does not export any symbols then link.exe skips creating the import library.
2022-11-29Fix backlink logic for target groupsBoris Kolpackov1-5/+24
We used to backlink ad hoc group members both via the group and as individual members. And for explicit groups it was done only via individual members, which means it only works correctly if every member is individually updated. Now both types of groups are backlinked from the group target.
2022-11-25Fix diag buffer opining logic in cc::compile_ruleBoris Kolpackov1-5/+11