Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2018-01-08 | Implement compiler_info caching | Boris Kolpackov | 1 | -4/+4 | |
2018-01-05 | Initial support for c/cxx runtime/stdlib detection | Boris Kolpackov | 1 | -0/+9 | |
2017-12-12 | Add support for C17 now that both GCC 8 and Clang 6 recognize -std=c17 | Boris Kolpackov | 1 | -2/+7 | |
2017-12-04 | Improve diagnostics when c-family modules using different toolchains | Boris Kolpackov | 1 | -0/+2 | |
We now also warn on toolchain pattern mismatch. | |||||
2017-12-04 | Implement better cross-hinting between c-family modules | Boris Kolpackov | 1 | -0/+4 | |
2017-12-01 | Terminate waiting threads if coming off failed load phase | Boris Kolpackov | 1 | -1/+0 | |
In this case the build state may no longer be valid. | |||||
2017-11-27 | Add {c,cxx}.class variables | Boris Kolpackov | 1 | -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-03 | Extract system header search paths from GCC or compatible | Boris Kolpackov | 1 | -0/+3 | |
2017-09-25 | Get rid of pkgconfig module | Karen Arutyunov | 1 | -1/+0 | |
2017-09-07 | Implement {c,cxx}.guess modules | Boris Kolpackov | 2 | -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-04 | Implement sidebuilding of installed modules | Boris Kolpackov | 1 | -0/+1 | |
2017-08-02 | Change cc.preprocessed to {c,cxx}.preprocessed | Boris Kolpackov | 1 | -1/+2 | |
2017-06-22 | Add extra support for symbol exporting in modularized projects | Boris Kolpackov | 1 | -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-08 | Implement rule chaining for modules | Boris Kolpackov | 1 | -0/+1 | |
2017-05-31 | C++ modules work: add target types | Boris Kolpackov | 1 | -1/+2 | |
2017-05-30 | Diagnose lack of module support in extract_modules() | Boris Kolpackov | 1 | -0/+2 | |
2017-05-30 | Add 'experimental' value for cxx.std, enable modules support | Boris Kolpackov | 1 | -2/+2 | |
Also add cxx.features.modules boolean variable that can be used to control/query C++ modules enablement. | |||||
2017-05-30 | Rework C/C++ standard translation in preparation for experimental/modules | Boris Kolpackov | 1 | -45/+59 | |
Also fix bug in clang-apple versioning. | |||||
2017-05-29 | Add ability to limit amount of preprocessing done on source | Boris Kolpackov | 1 | -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-25 | Extract C++ modules information | Boris Kolpackov | 1 | -0/+1 | |
For now we do it for every translation unit in order to test our C++ lexer and parser. | |||||
2017-05-25 | Add compiler_id enum | Boris Kolpackov | 1 | -1/+2 | |
2017-05-18 | Add compiler version checks for separate preprocess and compile setup | Boris Kolpackov | 1 | -0/+2 | |
2017-05-17 | Add ability to disable use of preprocessed output in compilation | Boris Kolpackov | 1 | -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-16 | Implement separate preprocess and compiler for GCC and Clang | Boris Kolpackov | 1 | -0/+1 | |
2017-05-01 | Add hxx extension for headers | Karen Arutyunov | 4 | -36/+36 | |
2017-02-13 | Add model mutex, make var_pool const by default | Boris Kolpackov | 1 | -13/+13 | |
2017-01-23 | Add bunch of missing const's | Boris Kolpackov | 1 | -2/+2 | |
2017-01-06 | Store platform targets as typed target_triplet | Boris Kolpackov | 1 | -5/+4 | |
2017-01-05 | Update copyright year | Boris Kolpackov | 3 | -3/+3 | |
2016-11-18 | Make names and vector<name> different types, add typed value constructor | Boris Kolpackov | 1 | -4/+4 | |
2016-09-05 | Handle /usr/local brain-death | Boris Kolpackov | 1 | -0/+2 | |
2016-08-30 | Add support for target visibility, use for dist, test, install | Boris Kolpackov | 1 | -1/+1 | |
This means we can no longer write: install = false Now it should be: *: install = false | |||||
2016-08-28 | Limit c.std, cxx.std, and extension visibility to project | Boris Kolpackov | 1 | -1/+1 | |
2016-08-27 | Reimplement UNIX rpath using process_library(), -rpath-link is still broken | Boris Kolpackov | 1 | -0/+1 | |
2016-08-27 | Clean up library export, make c and cxx modules project root only | Boris Kolpackov | 1 | -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-26 | Add pkg-config support for import installed | Boris Kolpackov | 1 | -0/+2 | |
Redesign library importing/exporting while at it. | |||||
2016-08-24 | Pick *.libs variable depending on library type during static linking | Boris Kolpackov | 1 | -0/+2 | |
2016-08-24 | Handle *.export.libs, distinguish interface and implementation dependencies | Boris Kolpackov | 1 | -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-23 | Rename cc.{vars,config} modules to cc.core.{vars,config} | Boris Kolpackov | 1 | -3/+3 | |
We are going to use cc.config for something else. | |||||
2016-08-22 | Cache process_path, use fallback search directory for binutils | Boris Kolpackov | 1 | -10/+11 | |
2016-08-19 | Implement uninstall operation | Boris Kolpackov | 1 | -0/+1 | |
2016-08-12 | Implement support for C compilation | Boris Kolpackov | 3 | -0/+299 | |
We now have two new modules: cc (c-common) and c. |