aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/guess.cxx
AgeCommit message (Collapse)AuthorFilesLines
2023-12-03Reimplement search_existing() functions via target_type::searchBoris Kolpackov1-1/+1
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-11-22Fix incorrect _LIBCPP_VERSION macro name in commentsBoris Kolpackov1-6/+6
2023-11-17Undo remap of Apple Clang 14.0.3 and 15.0.0 to vanilla Clang 14.0 and 15.0Boris Kolpackov1-5/+7
2023-11-14Remap Apple Clang 14.0.3 and 15.0.0 to vanilla Clang 14.0 and 15.0Boris Kolpackov1-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-07-31Add CCC_OVERRIDE_OPTIONS to list of Clang env vars to track/saveBoris Kolpackov1-2/+5
2023-06-19Update Apple Clang to vanilla Clang version mappingBoris Kolpackov1-21/+27
2022-12-12Adapt to dir_iterator API changeKaren Arutyunov1-1/+1
2022-12-08Normalize extracted header/library search directories (GH issue #235)Boris Kolpackov1-0/+16
2022-11-23Rework diag_buffer interface to facilitate correct destruction orderBoris Kolpackov1-2/+2
2022-11-08Make process exit diagnostics consistentBoris Kolpackov1-2/+2
In particular, we now always print error message on non-0 exit except in cases where such exit is ignored.
2022-11-08More work on child process diagnostics bufferingBoris Kolpackov1-25/+38
2022-10-27Suppress (potential) bogus GCC 12 -Wrestrict warningsBoris Kolpackov1-1/+1
2022-10-25Adapt to butl::semantic_version API changeKaren Arutyunov1-3/+7
2022-10-21Handle freestanding/broken setups when entering importable std headersBoris Kolpackov1-17/+30
Fixes GH issue #219.
2022-09-21Add winrt Platform SDK header search path for MSVCBoris Kolpackov1-3/+4
This is required, for example, to build QtGui.
2022-08-17If cl.exe path is specified then extract VC tools directory from this pathKaren Arutyunov1-32/+74
2022-07-21Map Apple Clang 13.1.6 to vanilla Clang 12.0.0Boris Kolpackov1-18/+20
2022-07-17Map VC 17 to runtime version 14.3Boris Kolpackov1-2/+5
2022-05-17Add OpenBSD libc detectionBoris Kolpackov1-0/+2
2022-04-24Fix bug in previous commitBoris Kolpackov1-1/+1
2022-04-24Recognize ARM64 as MSVC targetBoris Kolpackov1-12/+19
2021-10-11Update Apple to vanilla Clang version mapping for Apple Clang 13.0.0Boris Kolpackov1-2/+5
2021-10-01Add notion of internal scope, translate external -I to -isystem or equivalentBoris Kolpackov1-1/+1
2021-09-28Adapt to libbutl headers extension change from .mxx to .hxxKaren Arutyunov1-1/+1
2021-07-22Adjust Emscripten Clang version to account for unreleased snapshotsBoris Kolpackov1-1/+17
2021-07-20Map Apple Clang version 12.0.5 to vanilla Clang 10.0.0Boris Kolpackov1-16/+19
2021-07-01Handle GCC versions in 9.2-win32 form (GitHub issue #156)Boris Kolpackov1-25/+19
2021-06-08Implement ad hoc regex pattern rule supportBoris Kolpackov1-1/+1
An ad hoc pattern rule consists of a pattern that mimics a dependency declaration followed by one or more recipes. For example: exe{~'/(.*)/'}: cxx{~'/\1/'} {{ $cxx.path -o $path($>) $path($<[0]) }} If a pattern matches a dependency declaration of a target, then the recipe is used to perform the corresponding operation on this target. For example, the following dependency declaration matches the above pattern which means the rule's recipe will be used to update this target: exe{hello}: cxx{hello} While the following declarations do not match the above pattern: exe{hello}: c{hello} # Type mismatch. exe{hello}: cxx{howdy} # Name mismatch. On the left hand side of `:` in the pattern we can have a single target or an ad hoc target group. The single target or the first (primary) ad hoc group member must be a regex pattern (~). The rest of the ad hoc group members can be patterns or substitutions (^). For example: <exe{~'/(.*)/'} file{^'/\1.map/'}>: cxx{~'/\1/'} {{ $cxx.path -o $path($>[0]) "-Wl,-Map=$path($>[1])" $path($<[0]) }} On the left hand side of `:` in the pattern we have prerequisites which can be patterns, substitutions, or non-patterns. For example: <exe{~'/(.*)/'} file{^'/\1.map/'}>: cxx{~'/\1/'} hxx{^'/\1/'} hxx{common} {{ $cxx.path -o $path($>[0]) "-Wl,-Map=$path($>[1])" $path($<[0]) }} Substitutions on the left hand side of `:` and substitutions and non-patterns on the right hand side are added to the dependency declaration. For example, given the above rule and dependency declaration, the effective dependency is going to be: <exe{hello} file{hello.map>: cxx{hello} hxx{hello} hxx{common}
2021-05-13Rename sys_inc_dirs to sys_hdr_dirs for consistencyBoris Kolpackov1-8/+8
2021-05-06Fix default Clang C++ compiler name mis-guessBoris Kolpackov1-1/+1
2021-04-26Detect and diagnose presence of certain GCC environment variablesBoris Kolpackov1-1/+8
Their presence is incompatible with what we are doing.
2021-04-22Incorporate project environment checksum into cc::compiler_info cache keyBoris Kolpackov1-0/+17
2021-04-22Add another hash/save_environment() overloadBoris Kolpackov1-2/+2
2021-04-07Register environment variables for hermetic build configurationsBoris Kolpackov1-5/+102
2021-03-13Tighten Clang detection not to misdetect GCC built with ClangBoris Kolpackov1-1/+8
GitHub issue #136.
2021-01-30Add std::{map, multimap} to types.hxxBoris Kolpackov1-1/+0
Seeing that std::map is becoming a common Buildfile variable type.
2021-01-30Rework include translation supportBoris Kolpackov1-0/+175
See the config.cxx.translate_include variable documentation in cxx/init.cxx for details.
2021-01-08Add noteBoris Kolpackov1-0/+7
2020-12-15Cache more results of executing programs (compilers, etc)Boris Kolpackov1-16/+4
2020-11-30Add version mapping for Apple Clang 12.0.0Boris Kolpackov1-1/+3
2020-11-05Initial Emscripten supportBoris Kolpackov1-132/+266
- 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-08-24Use representation when passing target_triplet as hintBoris Kolpackov1-1/+1
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 Kolpackov1-1/+4
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 Kolpackov1-13/+33
2020-02-12Add convenience run_start() overloadBoris Kolpackov1-2/+2
2020-02-07Drop copyright notice from source codeKaren Arutyunov1-1/+0
2020-02-03Add header/library search paths from compiler mode to sys_*_dirsBoris Kolpackov1-21/+42