aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc
AgeCommit message (Collapse)AuthorFilesLines
2020-11-19Handle C++20 module partitions in scannerBoris Kolpackov7-63/+176
2020-11-17Resolve warningBoris Kolpackov1-0/+1
2020-11-17Omit default extensions for target types that now have fixed extensionsBoris Kolpackov1-2/+2
2020-11-17Implement modules pseudo-directive parsing (p1703, p1857)Boris Kolpackov7-54/+148
2020-11-13Minor tracing fix and additionBoris Kolpackov1-0/+3
2020-11-11Add ${c,cxx}.lib_{poptions,libs,rpaths}() functionsBoris Kolpackov9-104/+388
These functions can be used to query library metadata for options and libraries that should be used when compiling/linking dependent targets, similar to how cc::{compile,link}_rule do it. With this support it should be possible to more or less re-create their semantics in ad hoc recipes.
2020-11-05Initial Emscripten supportBoris Kolpackov5-397/+650
- Target: wasm32-emscripten (wasm32-unknown-emscripten). - Compiler id: clang-emscripten (type clang, variant emscripten, class gcc). - Ability to build executables (.js plus .wasm) and static libraries (.a). Set executable bit on the .js file (so it can be executed with a suitable binfmt interpreter). - Default config.bin.lib for wasm32-emscripten is static instead of both. - Full C++ exception support is enable unless disabled explicitly by the user with -s DISABLE_EXCEPTION_CATCHING=1|2. - The bin module registers the wasm{} target type for wasm32-emscripten.
2020-11-04Minor terminology tweakBoris Kolpackov1-1/+1
2020-09-24Give hints for common causes of "no rule to update ..." errorBoris Kolpackov3-4/+4
2020-08-24Use representation when passing target_triplet as hintBoris Kolpackov2-2/+2
2020-08-12Adjust linker arguments for LTO parallelizationMatthew Krupcale1-0/+54
GCC 10+ and Clang 4+ support controlling the number of LTO threads/jobs used during linking. Use the build2 scheduler to allocate up to the number of hardware threads to the GCC or Clang linker processes when -flto=auto or -flto=thin is specified, respectively. Otherwise, GCC or Clang will attempt to spawn the number of hardware threads detected for each linker process, which could result in up to n^2 linker threads on a CPU with n hardware threads.
2020-07-23Escape quotes in .pc file values besides spaces and backslashesKaren Arutyunov1-1/+1
2020-07-17Fix race in path/mtime assignment and file_rule::match()Boris Kolpackov2-23/+9
2020-07-17Use -fexternc-nounwind by default for Clang targeting MSVCBoris Kolpackov1-5/+27
This option implements the 'c' part in /EHsc and is not a mere optimization; see Clang bug #45021 for details.
2020-07-16Save original compiler path/mode in {c,cxx}.config.path/modeBoris Kolpackov3-9/+17
It turns out that when propagating {c,cxx}.config in tests we don't want to propagate any options (such as *.std) that have been folded into our project's mode.
2020-07-14Fix Clang warningBoris Kolpackov1-0/+2
2020-07-13Add ability to extend rule interface in source-compatible mannerBoris Kolpackov2-2/+2
2020-07-13Fold translated *.std options into compiler mode optionsBoris Kolpackov6-30/+13
This way they are accessible in ad hoc recipes.
2020-07-07Make sure paths used to insert target are canonicalizedBoris Kolpackov1-3/+9
2020-07-07Skip sources of executables in cc::install_ruleBoris Kolpackov1-4/+23
Failed that, they may pull headers via an ad hoc group.
2020-07-01Fix bug in *.export.imp_libs logicBoris Kolpackov2-3/+3
2020-07-01Add additional diagnostics for unassigned path (GitHub issue #89)Boris Kolpackov1-6/+10
2020-07-01Add additional diagnostics for disappearing header (GitHub issue #80)Boris Kolpackov1-0/+16
2020-07-01Add *.export.imp_libs to get rid of dual *.export.libs semanticsBoris Kolpackov3-36/+38
2020-06-26Handle #import in MSVC /showIncludes outputBoris Kolpackov2-13/+44
2020-06-26Minor terminology fix in commentsBoris Kolpackov1-3/+2
2020-06-26Fix race in library metadata protocolBoris Kolpackov2-4/+5
Specifically, we need to check whether the prerequisite_member is ad hoc before checking whether it is NULL because ad hoc ones are blanked out (set to NULL) during execute.
2020-06-25Fix warningBoris Kolpackov1-1/+1
2020-06-25Add more instrumentation for unassigned path raceBoris Kolpackov1-14/+41
2020-06-24Fix trace and clarify commentsBoris Kolpackov1-9/+12
2020-06-22Try to detect and warn about the ccache compiler wrapperBoris Kolpackov1-4/+24
2020-06-22Add version mapping for Apple Clang 11.0.3Boris Kolpackov1-14/+22
2020-06-18Complete NetBSD compatibilityBoris Kolpackov3-2/+7
2020-06-16Move common functionality from cc to binBoris Kolpackov5-177/+18
2020-06-12Make order of imports stable in saved host build configurationBoris Kolpackov1-0/+2
2020-06-09Move C++ modules sidebuild to build/cc/build/modules/ subdirectoryBoris Kolpackov4-13/+26
2020-06-08Hash ad hoc prerequsites for ad hoc recipe change detectionBoris Kolpackov1-1/+1
2020-06-02Add process_path_ex with program stable name and checksumBoris Kolpackov1-1/+1
2020-05-27Initial support for ad hoc recipes (still work in progress)Boris Kolpackov4-37/+20
2020-05-22Fix bug in previous commitBoris Kolpackov1-1/+1
2020-05-22Make template definition available in all translation units where usedBoris Kolpackov3-28/+38
We were trying to be clever but GCC 10's IPA-SRA optimization didn't like it.
2020-04-30Rename target::member to target::adhoc_memberBoris Kolpackov2-2/+2
2020-04-27Rework tool importation along with cli moduleBoris Kolpackov4-22/+10
Specifically, now config.<tool> (like config.cli) is handled by the import machinery (it is like a shorter alias for config.import.<tool>.<tool>.exe that we already had). And the cli module now uses that instead of custom logic. This also adds support for uniform tool metadata extraction that is handled by the import machinery. As a result, a tool that follows the "build2 way" can be imported with metadata by the buildfile and/or corresponding module without any tool-specific code or brittleness associated with parsing --version or similar outputs. See the cli tool/module for details. Finally, two new flavors of the import directive are now supported: import! triggers immediate importation skipping any rule-specific logic while import? is optional import (analogous to using?). Note that optional import is always immediate. There is also the import-specific metadata attribute which can be specified for these two import flavors in order to trigger metadata importation. For example: import? [metadata] cli = cli%exe{cli} if ($cli != [null]) info "cli version $($cli:cli.version)"
2020-04-13Add ../share/pkgconfig/ search directory by default on LinuxBoris Kolpackov2-10/+20
2020-04-11Pass LC_ALL=C when extracting locale-dependent information in bin module on ↵Karen Arutyunov1-1/+0
POSIX
2020-04-07Pass LC_ALL=C when extracting locale-dependent information on POSIXBoris Kolpackov2-19/+68
2020-04-02Fix ~host config to only contain cc and bin modules configurationBoris Kolpackov1-1/+1
Also add ~build2 that contains everything (except config.dist.*) to be used for build system modules.
2020-03-31Switch to project variable visibility by defaultBoris Kolpackov2-15/+18
2020-03-20Generate common .pc file in addition to static/staged when installing lib{}Boris Kolpackov6-26/+88
The common .pc file is produced by ignoring any static/shared-specific poptions and splitting loptions/libs into Libs/Libs.private. It is "best effort", in a sense that it's not guaranteed to be sufficient in all cases, but it will probably cover the majority of cases, even on Windows, thanks to automatic dllimport'ing of functions.
2020-03-17Rename all find*(variable) to lookup*(variable)Boris Kolpackov1-6/+6
Now we consistently use term "lookup" for variable value lookup. At some point we should also rename type lookup to binding and get rid of all the lookup_type aliases.