aboutsummaryrefslogtreecommitdiff
path: root/libbuild2
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-09-06Don't crash if config.report.variable names undefined variableBoris Kolpackov1-2/+2
2023-08-29Add diagnostics color support on Windows (GH issue #312)Boris Kolpackov3-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-23Replace assert with diagnostics in bootstrap_src() (GH issue #322)Boris Kolpackov1-0/+9
2023-08-22Consider *_inc{} target types as headers for rule match purposesBoris Kolpackov7-18/+26
2023-08-22Add abstract c_inc{} and cxx_inc{} target typesBoris Kolpackov7-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-09Auto-extract function documentation from functions-*.cxxBoris Kolpackov1-0/+2
2023-08-09Complete and cleanup function documentation in preparation for auto-extractionBoris Kolpackov15-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-03Document target types in manual (GH issue #309)Boris Kolpackov1-0/+3
2023-08-02Diagnose declarations of targets/prerequisites with abstract target typesBoris Kolpackov2-1/+26
2023-07-31Add CCC_OVERRIDE_OPTIONS to list of Clang env vars to track/saveBoris Kolpackov1-2/+5
2023-07-27Recognize cNN/c++NN in addition to NN in c.std/cxx.stdBoris Kolpackov2-34/+72
Also recognize 23 in addition to 2x for C23.
2023-07-24Add setupapi.lib to list of Windows system librariesBoris Kolpackov1-0/+1
2023-07-21Fix incorrect documentation in dyndep_rule APIBoris Kolpackov1-1/+1
2023-07-20Don't treat unmatched prerequisites as implicitly ad hocBoris Kolpackov3-9/+32
It was surprising and inconvenient that they didn't end up in $<. Plus, such prerequisites can always be marked as ad hoc explicitly.
2023-07-20Consider unmatched prerequisites in updated_during_match() checkBoris Kolpackov4-13/+45
2023-07-20Change inner rule/prerequisites match order in install::file_ruleBoris Kolpackov7-4/+82
The old order messed up the for-install signaling logic. See the long comment in install::file_rule::apply_impl() for background and details.
2023-07-20Improve diagnosticsBoris Kolpackov1-3/+16
2023-07-05Change version to 0.17.0-a.0.zBoris Kolpackov1-1/+1
2023-06-30Release version 0.16.0v0.16.0Boris Kolpackov1-1/+1
2023-06-28Minor tweaks and cleanupsBoris Kolpackov2-0/+4
2023-06-26Regenerate options parsing filesKaren Arutyunov2-26/+26
2023-06-26Omit dangling symlink warning for backlinked executablesBoris Kolpackov1-13/+44
2023-06-22Map cxx.std=26 to -std=c++2c for GCC and ClangBoris Kolpackov2-4/+13
2023-06-22Fix wraparound in task_count logicBoris Kolpackov3-18/+20
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-15Remove stray whitespace from "uninstall" command nameBoris Kolpackov1-3/+3
2023-06-15Fix incorrect memory order in target::matched() callBoris Kolpackov2-2/+2
2023-06-14Use dry_run_option instead of dry_run during matchBoris Kolpackov2-3/+3
2023-06-14Don't fail in dyndep_rule::enter_file() if target is in srcBoris Kolpackov1-4/+24
2023-06-14Improve dyndep_rule::{inject,verify}_existing_file() documentationBoris Kolpackov2-7/+11
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-12Hack around GCC 13 -Wdangling-reference false positivesBoris Kolpackov5-16/+17
See GCC bugs 107532, 110213.
2023-06-09Add explicit move as recommended by Clang warningBoris Kolpackov1-1/+1
2023-06-09Diagnose multiple values in typed concatenation (GH issue #263)Boris Kolpackov1-26/+41
2023-06-08Add support for buildfile importationBoris Kolpackov12-175/+701
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-02Temporarily turn null include error into warning for backwards compatBoris Kolpackov1-11/+19
2023-06-02Fix data race in library metadata protocol logicBoris Kolpackov3-5/+14
2023-06-01Diagnose null include, operation-specific variable valuesBoris Kolpackov2-31/+47
While assigning null directly is unlikely, it's fairly easy via a variable expansion. Real-world example: ./: exe{tensor}: include = $config.Eigen.unsupported
2023-06-01Add inner_recipe for expressivenessBoris Kolpackov8-7/+11
2023-06-01Resolve (but disable for now) target_count issue in resolve_members()Boris Kolpackov7-70/+249
2023-05-31Improve diagnostics when dropping config.import.* valuesBoris Kolpackov1-0/+20