aboutsummaryrefslogtreecommitdiff
path: root/build2/cxx
AgeCommit message (Collapse)AuthorFilesLines
2019-08-23Get rid of var_extension char arrayBoris Kolpackov1-10/+10
2019-08-22Targets, scopes, varsBoris Kolpackov1-3/+4
2019-08-21Cleanup context.hxx and its usageBoris Kolpackov1-1/+0
2019-07-26Remove no longer necessary workaround for GCC modules modeBoris Kolpackov1-4/+0
2019-07-22Temporarily map C++ standard to c++17 in cxx-modules-ex GCC branchBoris Kolpackov1-0/+4
2019-07-01Split build system into library and driverBoris Kolpackov4-10/+10
2019-06-21Add support for [config.]{cc,c,cxx}.aoptions (archive options)Boris Kolpackov1-0/+5
In particular, this can be used to suppress lib.exe warnings, for example: cc.aoptions += /IGNORE:4221
2019-06-19Improve diagnosticsBoris Kolpackov1-4/+4
2019-06-06Fix cc link rule matching ambiguity wrt to C/C++ sourcesBoris Kolpackov1-1/+0
Considering a C header as C++ source was definitely a bad idea.
2019-05-03Add config.{c,cxx}.stdBoris Kolpackov1-2/+2
These values override {c,cxx}.std specified at the project level. In particular, this allows us to force a specific standard for all the projects in a build configuration, for example: b create: conf/,cc config.cxx=g++ config.cxx.std=experimental
2019-05-03Support <>-style header specification in importable_headersBoris Kolpackov1-3/+3
2019-05-03Rename [config.]cxx.header_units to importable_headersBoris Kolpackov1-5/+5
2019-05-03Adjust modules support enablement for GCCBoris Kolpackov1-4/+11
Now we require c++-modules-ex branch unless forced.
2019-04-30Initial take on header unit and include translation supportBoris Kolpackov1-4/+19
2019-04-11Only enable MSVC /permissive- in experimental modeBoris Kolpackov1-6/+18
Currently this flag tends to trigger too many compiler bugs.
2019-04-11Default to strict mode (/permissive-) from VC15.5Boris Kolpackov1-187/+189
2019-04-11Sync up with latest C++ modules support in GCCBoris Kolpackov1-2/+2
2019-03-07Move bunch of root scope-only data members to root_extraBoris Kolpackov1-2/+2
2019-01-24Loosen GCC modules enablement requirementsBoris Kolpackov1-2/+1
2019-01-16Update copyright yearKaren Arutyunov4-4/+4
2019-01-09Tighten cc rules matchingBoris Kolpackov2-13/+13
Specifically, make sure the rule does not match if there is a c-common prerequisites that it doesn't recognize.
2018-10-26Add config.{c,cxx}.{id,version,target} configuration variablesBoris Kolpackov1-0/+3
These variables allow overriding guessed compiler id/version/target, for example, in case of mis-guesses or when working with compilers that don't report their base (e.g., GCC, Clang) with -v/--version (common in the embedded space).
2018-10-25Redesign cc::compiler_id to make variant customizableBoris Kolpackov1-15/+15
2018-09-03Use (native) C and C++ compilers we were built with as defaultsBoris Kolpackov1-1/+9
2018-07-24Switch to new GCC module interface (-fmodule-mapper)Boris Kolpackov1-11/+14
2018-07-16Implement in moduleBoris Kolpackov1-2/+2
Given test.in containing something along these lines: foo = $foo$ Now we can do: using in file{test}: in{test.in} file{test}: foo = FOO The alternative variable substitution symbol can be specified with the in.symbol variable and lax (instead of the default strict) mode with in.substitution. For example: file{test}: in.symbol = '@' file{test}: in.substitution = lax
2018-06-25Minor note on Apple Clang to vanilla Clang version mappingBoris Kolpackov1-6/+8
2018-05-19Update copyright yearKaren Arutyunov4-4/+4
2018-02-14Enable modules support only for VC 15u5 and up, drop hacks for earlierBoris Kolpackov1-3/+3
2018-01-08Implement compiler_info cachingBoris Kolpackov1-4/+4
2018-01-05Initial support for c/cxx runtime/stdlib detectionBoris Kolpackov1-0/+6
2018-01-05Add cxx.module_name alias for cc.module_nameBoris Kolpackov1-0/+4
2017-12-15Update Apple Clang to vanilla Clang version remapping (up to Xcode 9.2)Boris Kolpackov1-2/+14
2017-12-12Add support for VC 15u5 (compiler version 19.12)Boris Kolpackov1-8/+17
2017-12-07Distinguish between "fixed" and "default" target extensionsBoris Kolpackov1-12/+17
This fixes wrong merging of, say, file{README} and file{README.MySQL} (in libmysqlclient).
2017-12-04Improve diagnostics when c-family modules using different toolchainsBoris Kolpackov1-0/+2
We now also warn on toolchain pattern mismatch.
2017-12-04Implement better cross-hinting between c-family modulesBoris Kolpackov1-0/+4
2017-11-29Reimplement module sidebuilding using an ad hoc subprojectBoris Kolpackov1-0/+3
2017-11-27Add {c,cxx}.class variablesBoris Kolpackov1-9/+13
Compiler class describes a set of compilers that follow more or less the same command line interface. Compilers that don't belong to any of the existing classes are in classes of their own (say, Sun CC would be on its own if we were to support it). Currently defined compiler classes: gcc gcc, clang, clang-apple, icc (on non-Windows) msvc msvc, clang-cl, icc (Windows)
2017-11-06Translate 'latest' to C++2a for GCC 8Boris Kolpackov1-2/+2
2017-10-03Extract system header search paths from GCC or compatibleBoris Kolpackov1-0/+3
2017-09-25Get rid of pkgconfig moduleKaren Arutyunov1-1/+0
2017-09-07Implement {c,cxx}.guess modulesBoris Kolpackov2-16/+54
These can be loaded before {c,cxx} to guess the compiler. Based on this information we can then choose the standard, experimental features, etc. For example: using cxx.guess if ($cxx.id == 'clang') cxx.features.modules = false cxx.std = experimental using cxx
2017-08-30Switch to -fmodule-file=<name>=<file>, requires Clang 6.0/trunkBoris Kolpackov1-2/+2
2017-08-04Implement sidebuilding of installed modulesBoris Kolpackov1-7/+12
2017-08-02Change cc.preprocessed to {c,cxx}.preprocessedBoris Kolpackov1-1/+11
2017-08-02Add support for C++20/c++2a modesBoris Kolpackov1-3/+6
Note: not yet enabled for GCC 8 since the patch is not yet merged.
2017-06-28Update to reflect new GCC signature for C++ modules branchBoris Kolpackov1-1/+1
2017-06-23Don't treat mxx{} as cc-sourceBoris Kolpackov2-4/+4
If we do it, then the link rule will refuse to match when modules are disabled (in which case mxx{} should be treated as a header).
2017-06-22Add extra support for symbol exporting in modularized projectsBoris Kolpackov1-1/+10
Since modules don't see each other's macros, we can use a single, keyword- like macro for dll-exporting that is managed by the build system (so no need for an "export" header). For example: cxx.features.symexport = true export __symexport void f ();