summaryrefslogtreecommitdiffstats
path: root/build2/c
Commit message (Collapse)AuthorAgeFilesLines
* Move bunch of root scope-only data members to root_extraBoris Kolpackov2019-03-071-2/+2
|
* Update copyright yearKaren Arutyunov2019-01-163-3/+3
|
* Add config.{c,cxx}.{id,version,target} configuration variablesBoris Kolpackov2018-10-261-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).
* Redesign cc::compiler_id to make variant customizableBoris Kolpackov2018-10-251-3/+4
|
* Use (native) C and C++ compilers we were built with as defaultsBoris Kolpackov2018-09-031-1/+9
|
* Update copyright yearKaren Arutyunov2018-05-193-3/+3
|
* Implement compiler_info cachingBoris Kolpackov2018-01-081-4/+4
|
* Initial support for c/cxx runtime/stdlib detectionBoris Kolpackov2018-01-051-0/+9
|
* Add support for C17 now that both GCC 8 and Clang 6 recognize -std=c17Boris Kolpackov2017-12-121-2/+7
|
* Improve diagnostics when c-family modules using different toolchainsBoris Kolpackov2017-12-041-0/+2
| | | | We now also warn on toolchain pattern mismatch.
* Implement better cross-hinting between c-family modulesBoris Kolpackov2017-12-041-0/+4
|
* Terminate waiting threads if coming off failed load phaseBoris Kolpackov2017-12-011-1/+0
| | | | In this case the build state may no longer be valid.
* Add {c,cxx}.class variablesBoris Kolpackov2017-11-271-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)
* Extract system header search paths from GCC or compatibleBoris Kolpackov2017-10-031-0/+3
|
* Get rid of pkgconfig moduleKaren Arutyunov2017-09-251-1/+0
|
* Implement {c,cxx}.guess modulesBoris Kolpackov2017-09-072-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
* Implement sidebuilding of installed modulesBoris Kolpackov2017-08-041-0/+1
|
* Change cc.preprocessed to {c,cxx}.preprocessedBoris Kolpackov2017-08-021-1/+2
|
* Add extra support for symbol exporting in modularized projectsBoris Kolpackov2017-06-221-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 ();
* Implement rule chaining for modulesBoris Kolpackov2017-06-081-0/+1
|
* C++ modules work: add target typesBoris Kolpackov2017-05-311-1/+2
|
* Diagnose lack of module support in extract_modules()Boris Kolpackov2017-05-301-0/+2
|
* Add 'experimental' value for cxx.std, enable modules supportBoris Kolpackov2017-05-301-2/+2
| | | | | Also add cxx.features.modules boolean variable that can be used to control/query C++ modules enablement.
* Rework C/C++ standard translation in preparation for experimental/modulesBoris Kolpackov2017-05-301-45/+59
| | | | Also fix bug in clang-apple versioning.
* Add ability to limit amount of preprocessing done on sourceBoris Kolpackov2017-05-291-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.
* Extract C++ modules informationBoris Kolpackov2017-05-251-0/+1
| | | | | For now we do it for every translation unit in order to test our C++ lexer and parser.
* Add compiler_id enumBoris Kolpackov2017-05-251-1/+2
|
* Add compiler version checks for separate preprocess and compile setupBoris Kolpackov2017-05-181-0/+2
|
* Add ability to disable use of preprocessed output in compilationBoris Kolpackov2017-05-171-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]
* Implement separate preprocess and compiler for GCC and ClangBoris Kolpackov2017-05-161-0/+1
|
* Add hxx extension for headersKaren Arutyunov2017-05-014-36/+36
|
* Add model mutex, make var_pool const by defaultBoris Kolpackov2017-02-131-13/+13
|
* Add bunch of missing const'sBoris Kolpackov2017-01-231-2/+2
|
* Store platform targets as typed target_tripletBoris Kolpackov2017-01-061-5/+4
|
* Update copyright yearBoris Kolpackov2017-01-053-3/+3
|
* Make names and vector<name> different types, add typed value constructorBoris Kolpackov2016-11-181-4/+4
|
* Handle /usr/local brain-deathBoris Kolpackov2016-09-051-0/+2
|
* Add support for target visibility, use for dist, test, installBoris Kolpackov2016-08-301-1/+1
| | | | | | | | | | This means we can no longer write: install = false Now it should be: *: install = false
* Limit c.std, cxx.std, and extension visibility to projectBoris Kolpackov2016-08-281-1/+1
|
* Reimplement UNIX rpath using process_library(), -rpath-link is still brokenBoris Kolpackov2016-08-271-0/+1
|
* Clean up library export, make c and cxx modules project root onlyBoris Kolpackov2016-08-271-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.
* Add pkg-config support for import installedBoris Kolpackov2016-08-261-0/+2
| | | | Redesign library importing/exporting while at it.
* Pick *.libs variable depending on library type during static linkingBoris Kolpackov2016-08-241-0/+2
|
* Handle *.export.libs, distinguish interface and implementation dependenciesBoris Kolpackov2016-08-241-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
* Rename cc.{vars,config} modules to cc.core.{vars,config}Boris Kolpackov2016-08-231-3/+3
| | | | We are going to use cc.config for something else.
* Cache process_path, use fallback search directory for binutilsBoris Kolpackov2016-08-221-10/+11
|
* Implement uninstall operationBoris Kolpackov2016-08-191-0/+1
|
* Implement support for C compilationBoris Kolpackov2016-08-123-0/+299
We now have two new modules: cc (c-common) and c.