Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2017-11-29 | Reimplement module sidebuilding using an ad hoc subproject | Boris Kolpackov | 1 | -0/+3 | |
2017-11-27 | Add {c,cxx}.class variables | Boris Kolpackov | 1 | -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-06 | Translate 'latest' to C++2a for GCC 8 | Boris Kolpackov | 1 | -2/+2 | |
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/+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-30 | Switch to -fmodule-file=<name>=<file>, requires Clang 6.0/trunk | Boris Kolpackov | 1 | -2/+2 | |
2017-08-04 | Implement sidebuilding of installed modules | Boris Kolpackov | 1 | -7/+12 | |
2017-08-02 | Change cc.preprocessed to {c,cxx}.preprocessed | Boris Kolpackov | 1 | -1/+11 | |
2017-08-02 | Add support for C++20/c++2a modes | Boris Kolpackov | 1 | -3/+6 | |
Note: not yet enabled for GCC 8 since the patch is not yet merged. | |||||
2017-06-28 | Update to reflect new GCC signature for C++ modules branch | Boris Kolpackov | 1 | -1/+1 | |
2017-06-23 | Don't treat mxx{} as cc-source | Boris Kolpackov | 2 | -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-22 | Add extra support for symbol exporting in modularized projects | Boris Kolpackov | 1 | -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 (); | |||||
2017-06-12 | Only enable modules if practically usable unless forced | Boris Kolpackov | 1 | -4/+10 | |
2017-06-12 | Add workaround for Clang module import during preprocessing | Boris Kolpackov | 1 | -2/+4 | |
2017-06-09 | Only enable modules for GCC from the cxx-modules branch | Boris Kolpackov | 1 | -3/+4 | |
2017-06-09 | Only enable modules support starting from VC15u3 (19.11) | Boris Kolpackov | 1 | -2/+5 | |
2017-06-08 | Implement rule chaining for modules | Boris Kolpackov | 1 | -0/+1 | |
2017-05-31 | C++ modules work: add target types | Boris Kolpackov | 3 | -3/+36 | |
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 | -72/+148 | |
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 | -89/+128 | |
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 | -0/+1 | |
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 | -23/+23 | |
2017-04-27 | Pass target to prerequisite search | Boris Kolpackov | 1 | -4/+4 | |
2017-03-10 | Implement support for wildcard patterns | Boris Kolpackov | 1 | -0/+4 | |
2017-02-13 | Add model mutex, make var_pool const by default | Boris Kolpackov | 1 | -3/+3 | |
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 | 4 | -4/+4 | |
2016-12-14 | Add support for cxx.std=latest, use when building build2 | Boris Kolpackov | 1 | -5/+43 | |
2016-11-27 | Handle C++ standard selection in VC14u3, VC15 | Boris Kolpackov | 1 | -12/+37 | |
They now provide the /std: option which defaults to c++14. | |||||
2016-11-26 | Add support for VC15 | Karen Arutyunov | 1 | -1/+1 | |
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-31 | Improve mixed source (e.g., C and C++) building support | Boris Kolpackov | 2 | -3/+3 | |
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 | -130/+142 | |
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 | |