aboutsummaryrefslogtreecommitdiff
path: root/build2/cxx
AgeCommit message (Collapse)AuthorFilesLines
2017-03-10Implement support for wildcard patternsBoris Kolpackov1-0/+4
2017-02-13Add model mutex, make var_pool const by defaultBoris Kolpackov1-3/+3
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 Kolpackov4-4/+4
2016-12-14Add support for cxx.std=latest, use when building build2Boris Kolpackov1-5/+43
2016-11-27Handle C++ standard selection in VC14u3, VC15Boris Kolpackov1-12/+37
They now provide the /std: option which defaults to c++14.
2016-11-26Add support for VC15Karen Arutyunov1-1/+1
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-31Improve mixed source (e.g., C and C++) building supportBoris Kolpackov2-3/+3
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-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-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-12Rename module to initBoris Kolpackov2-6/+6
2016-08-12Implement support for C compilationBoris Kolpackov20-6020/+197
We now have two new modules: cc (c-common) and c.
2016-08-10Add ignore case support for find_option()Karen Arutyunov3-13/+7
2016-08-02Cosmetic changeBoris Kolpackov2-4/+4
2016-08-02Check for eof before streaming rdbufBoris Kolpackov1-3/+9
2016-08-02Filter gratuitous VC cl.exe and link.exe messagesBoris Kolpackov3-18/+119
2016-08-01Fix relinking on install for VCBoris Kolpackov1-4/+9
2016-07-29Suppress VC banners even at verbosity above 2Boris Kolpackov2-7/+3
There is really no use seeing this stuff.
2016-07-29Make /EHsc and /MD default for VC compilerBoris Kolpackov1-4/+45
2016-07-23Adapt to fdstream extensionKaren Arutyunov6-209/+230
2016-07-22Incorporate target to link rule's depdbBoris Kolpackov3-2/+16
Since there is no guarantee that the target is part of the linker's checksum.
2016-07-22Factor target CPU to VC /MACHINE option translationBoris Kolpackov2-19/+30
2016-07-22Link shell32.lib and user32.lib to default for VC buildsBoris Kolpackov1-0/+19
2016-07-21Save config vars in order specified rather than alphabeticallyBoris Kolpackov1-1/+1
This way we can group them semantically which results in easier to understand config.build output.
2016-07-20Switch to dynamic empty() implementation in variable valueBoris Kolpackov1-1/+1
The current model fell apart when we modified values directly.
2016-07-20Sanitize library name-derived macro for illegal characters ('-', etc)Boris Kolpackov1-6/+11
2016-07-20Print project name and out_root in config reportsBoris Kolpackov1-4/+2
2016-07-20Move ar/ranlib to bin.ar sub-module, load in cxx unless shared-only buildBoris Kolpackov1-22/+42
This way we don't load/configure what we don't need.
2016-07-19Add import library target libi{}, make libs{} the DLLBoris Kolpackov5-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-19Add support for building DLLs with VCBoris Kolpackov3-131/+409
2016-07-18Add standard static/shared macros for imported installed librariesBoris Kolpackov1-1/+48
2016-07-18Pick liba{}/libs{} before looking up cxx.export.*Boris Kolpackov4-39/+73
This way we can specify static library-specific defines which are necessary to handle DLL export.
2016-07-17Redesign obj to exe/lib mappingBoris Kolpackov9-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-15Always generate separate object files for liba{} and libso{}Boris Kolpackov1-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-15Make .pdb ad hoc group member, installBoris Kolpackov2-16/+41
2016-07-15Name and cleanup extra VC files (.pdb, .ilk, .idb)Boris Kolpackov3-40/+122
2016-07-13Use link.exe instead of cl.exe to link executablesBoris Kolpackov2-69/+109
2016-07-11Escape Windows path backslashes in synthesized .rc fileBoris Kolpackov1-2/+18
2016-07-11Reimplement Windows rpath emulation using embedded manifestsBoris Kolpackov4-334/+525
As a bonus, everyone now gets a sane default manifest.