Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
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 | |
2016-08-19 | Implement uninstall operation | Boris Kolpackov | 1 | -0/+1 | |
2016-08-12 | Rename module to init | Boris Kolpackov | 2 | -6/+6 | |
2016-08-12 | Implement support for C compilation | Boris Kolpackov | 20 | -6020/+197 | |
We now have two new modules: cc (c-common) and c. | |||||
2016-08-10 | Add ignore case support for find_option() | Karen Arutyunov | 3 | -13/+7 | |
2016-08-02 | Cosmetic change | Boris Kolpackov | 2 | -4/+4 | |
2016-08-02 | Check for eof before streaming rdbuf | Boris Kolpackov | 1 | -3/+9 | |
2016-08-02 | Filter gratuitous VC cl.exe and link.exe messages | Boris Kolpackov | 3 | -18/+119 | |
2016-08-01 | Fix relinking on install for VC | Boris Kolpackov | 1 | -4/+9 | |
2016-07-29 | Suppress VC banners even at verbosity above 2 | Boris Kolpackov | 2 | -7/+3 | |
There is really no use seeing this stuff. | |||||
2016-07-29 | Make /EHsc and /MD default for VC compiler | Boris Kolpackov | 1 | -4/+45 | |
2016-07-23 | Adapt to fdstream extension | Karen Arutyunov | 6 | -209/+230 | |
2016-07-22 | Incorporate target to link rule's depdb | Boris Kolpackov | 3 | -2/+16 | |
Since there is no guarantee that the target is part of the linker's checksum. | |||||
2016-07-22 | Factor target CPU to VC /MACHINE option translation | Boris Kolpackov | 2 | -19/+30 | |
2016-07-22 | Link shell32.lib and user32.lib to default for VC builds | Boris Kolpackov | 1 | -0/+19 | |
2016-07-21 | Save config vars in order specified rather than alphabetically | Boris Kolpackov | 1 | -1/+1 | |
This way we can group them semantically which results in easier to understand config.build output. | |||||
2016-07-20 | Switch to dynamic empty() implementation in variable value | Boris Kolpackov | 1 | -1/+1 | |
The current model fell apart when we modified values directly. | |||||
2016-07-20 | Sanitize library name-derived macro for illegal characters ('-', etc) | Boris Kolpackov | 1 | -6/+11 | |
2016-07-20 | Print project name and out_root in config reports | Boris Kolpackov | 1 | -4/+2 | |
2016-07-20 | Move ar/ranlib to bin.ar sub-module, load in cxx unless shared-only build | Boris Kolpackov | 1 | -22/+42 | |
This way we don't load/configure what we don't need. | |||||
2016-07-19 | Add import library target libi{}, make libs{} the DLL | Boris Kolpackov | 5 | -120/+183 | |
In the end, having libs{} be the DLL with import library being its member is more natural than making libs{} the import library and having dll{} as its member. | |||||
2016-07-19 | Add support for building DLLs with VC | Boris Kolpackov | 3 | -131/+409 | |
2016-07-18 | Add standard static/shared macros for imported installed libraries | Boris Kolpackov | 1 | -1/+48 | |
2016-07-18 | Pick liba{}/libs{} before looking up cxx.export.* | Boris Kolpackov | 4 | -39/+73 | |
This way we can specify static library-specific defines which are necessary to handle DLL export. | |||||
2016-07-17 | Redesign obj to exe/lib mapping | Boris Kolpackov | 9 | -188/+320 | |
Specifically: * objso{} and libso{} target types have been renamed to objs{} and libs{} * obje{} has been added (so now we have obje{}, obja{}, and objs{}) * obje{} is now used for building exe{} * object file extensions have been changed to use "hierarchical extensions" that reflect the extension of the corresponding exe/lib target (instead of the -so suffix we used), specifically: obje{}: foo.o, (UNIX), foo.exe.o (MinGW), foo.exe.obj (Windows) obja{}: foo.a.o (UNIX, MinGW), foo.lib.obj (Windows) objs{}: foo.so.o (UNIX), foo.dylib.o (Darwin), foo.dll.o (MinGW), foo.dll.obj (Windows) | |||||
2016-07-15 | Always generate separate object files for liba{} and libso{} | Boris Kolpackov | 1 | -9/+5 | |
While on some platforms they sometimes can be the same, they could also be built differently (e.g., based on command line macros, etc). I guess we could compare the set of options and if they are identical, then use the same file. But that will complicate things quite a bit, so maybe in version 2. | |||||
2016-07-15 | Make .pdb ad hoc group member, install | Boris Kolpackov | 2 | -16/+41 | |
2016-07-15 | Name and cleanup extra VC files (.pdb, .ilk, .idb) | Boris Kolpackov | 3 | -40/+122 | |
2016-07-13 | Use link.exe instead of cl.exe to link executables | Boris Kolpackov | 2 | -69/+109 | |
2016-07-11 | Escape Windows path backslashes in synthesized .rc file | Boris Kolpackov | 1 | -2/+18 | |
2016-07-11 | Reimplement Windows rpath emulation using embedded manifests | Boris Kolpackov | 4 | -334/+525 | |
As a bonus, everyone now gets a sane default manifest. | |||||
2016-07-09 | Add config.bin.pattern, pass it as hint from cxx module | Boris Kolpackov | 1 | -13/+74 | |
With this change we normally no longer need to specify config.bin.ar explicitly when cross-compiling or set it to lib.exe for VC. | |||||
2016-07-08 | Add dependency on fsdir{} in alias rules | Boris Kolpackov | 2 | -2/+2 | |
This makes sure that a directory with only dir{} target gets cleaned up. | |||||
2016-07-08 | Move filesystem-related functions from context to new filesystem files | Boris Kolpackov | 1 | -2/+2 | |
2016-07-08 | Implement limited rpath emulation for Windows | Boris Kolpackov | 2 | -45/+428 | |
2016-07-01 | Port to MSVC | Karen Arutyunov | 2 | -10/+10 | |
2016-06-27 | Add config.bin.target var/hint, use to decide libso{} install mode | Boris Kolpackov | 1 | -80/+98 | |
Normally the user doesn't need to specify config.bin.target explicitly since the cxx module will hint it. We now also have the whole set of target's components: bin.target.{cpu,vendor,system,version,class} |