aboutsummaryrefslogtreecommitdiff
path: root/build2/c
AgeCommit message (Collapse)AuthorFilesLines
2018-09-03Use (native) C and C++ compilers we were built with as defaultsBoris Kolpackov1-1/+9
2018-05-19Update copyright yearKaren Arutyunov3-3/+3
2018-01-08Implement compiler_info cachingBoris Kolpackov1-4/+4
2018-01-05Initial support for c/cxx runtime/stdlib detectionBoris Kolpackov1-0/+9
2017-12-12Add support for C17 now that both GCC 8 and Clang 6 recognize -std=c17Boris Kolpackov1-2/+7
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-12-01Terminate waiting threads if coming off failed load phaseBoris Kolpackov1-1/+0
In this case the build state may no longer be valid.
2017-11-27Add {c,cxx}.class variablesBoris Kolpackov1-6/+7
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-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/+55
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-04Implement sidebuilding of installed modulesBoris Kolpackov1-0/+1
2017-08-02Change cc.preprocessed to {c,cxx}.preprocessedBoris Kolpackov1-1/+2
2017-06-22Add extra support for symbol exporting in modularized projectsBoris Kolpackov1-0/+1
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 ();
2017-06-08Implement rule chaining for modulesBoris Kolpackov1-0/+1
2017-05-31C++ modules work: add target typesBoris Kolpackov1-1/+2
2017-05-30Diagnose lack of module support in extract_modules()Boris Kolpackov1-0/+2
2017-05-30Add 'experimental' value for cxx.std, enable modules supportBoris Kolpackov1-2/+2
Also add cxx.features.modules boolean variable that can be used to control/query C++ modules enablement.
2017-05-30Rework C/C++ standard translation in preparation for experimental/modulesBoris Kolpackov1-45/+59
Also fix bug in clang-apple versioning.
2017-05-29Add ability to limit amount of preprocessing done on sourceBoris Kolpackov1-0/+1
The cc.preprocessed variable can be 'none' (not preprocessed), 'includes' (no depends on preprocessor, e.g., #ifdef, etc), and 'all' (the source is fully preprocessed). Note that for 'all' the source can still contain comments and line continuations.
2017-05-25Extract C++ modules informationBoris Kolpackov1-0/+1
For now we do it for every translation unit in order to test our C++ lexer and parser.
2017-05-25Add compiler_id enumBoris Kolpackov1-1/+2
2017-05-18Add compiler version checks for separate preprocess and compile setupBoris Kolpackov1-0/+2
2017-05-17Add ability to disable use of preprocessed output in compilationBoris Kolpackov1-10/+11
This can be done from a buildfile for a scope (including project root scope) and per target via cc.reprocess: cc.reprocess = true obj{hello}: cc.reprocess = false As as well externally via config.cc.reprocess: b config.cc.reprocess=true [configure]
2017-05-16Implement separate preprocess and compiler for GCC and ClangBoris Kolpackov1-0/+1
2017-05-01Add hxx extension for headersKaren Arutyunov4-36/+36
2017-02-13Add model mutex, make var_pool const by defaultBoris Kolpackov1-13/+13
2017-01-23Add bunch of missing const'sBoris Kolpackov1-2/+2
2017-01-06Store platform targets as typed target_tripletBoris Kolpackov1-5/+4
2017-01-05Update copyright yearBoris Kolpackov3-3/+3
2016-11-18Make names and vector<name> different types, add typed value constructorBoris Kolpackov1-4/+4
2016-09-05Handle /usr/local brain-deathBoris Kolpackov1-0/+2
2016-08-30Add support for target visibility, use for dist, test, installBoris Kolpackov1-1/+1
This means we can no longer write: install = false Now it should be: *: install = false
2016-08-28Limit c.std, cxx.std, and extension visibility to projectBoris Kolpackov1-1/+1
2016-08-27Reimplement UNIX rpath using process_library(), -rpath-link is still brokenBoris Kolpackov1-0/+1
2016-08-27Clean up library export, make c and cxx modules project root onlyBoris Kolpackov1-131/+143
So now c and cxx modules can only be loaded in project root scope (normally root.build). Also, the c.std and cxx.std must now be set *before* loading the module to take effect. This means we won't be able to handle old buildfiles anymore but old versions of build2 should be able to handle new *.std placement.
2016-08-26Add pkg-config support for import installedBoris Kolpackov1-0/+2
Redesign library importing/exporting while at it.
2016-08-24Pick *.libs variable depending on library type during static linkingBoris Kolpackov1-0/+2
2016-08-24Handle *.export.libs, distinguish interface and implementation dependenciesBoris Kolpackov1-1/+1
A library dependency on another libraries is either "interface" or "implementation". If it is interface, then everyone who links to this library should also link to the interface dependency, explicitly. A good example of an interface dependency is a library API that is called in inline functions. Interface dependencies of a library should be explicitly listed in the *.export.libs (where we can also list target names). So the typical usage will be along these lines: import int_libs = libfoo%lib{foo} import int_libs += ... import imp_libs = libbar%lib{bar} import imp_libs += ... lib{baz}: ... $int_libs $imp_libs lib{baz}: cxx.export.libs = $int_libs
2016-08-23Rename cc.{vars,config} modules to cc.core.{vars,config}Boris Kolpackov1-3/+3
We are going to use cc.config for something else.
2016-08-22Cache process_path, use fallback search directory for binutilsBoris Kolpackov1-10/+11
2016-08-19Implement uninstall operationBoris Kolpackov1-0/+1
2016-08-12Implement support for C compilationBoris Kolpackov3-0/+299
We now have two new modules: cc (c-common) and c.