aboutsummaryrefslogtreecommitdiff
path: root/build2/cxx
AgeCommit message (Collapse)AuthorFilesLines
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.
2016-07-09Add config.bin.pattern, pass it as hint from cxx moduleBoris Kolpackov1-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-08Add dependency on fsdir{} in alias rulesBoris Kolpackov2-2/+2
This makes sure that a directory with only dir{} target gets cleaned up.
2016-07-08Move filesystem-related functions from context to new filesystem filesBoris Kolpackov1-2/+2
2016-07-08Implement limited rpath emulation for WindowsBoris Kolpackov2-45/+428
2016-07-01Port to MSVCKaren Arutyunov2-10/+10
2016-06-27Add config.bin.target var/hint, use to decide libso{} install modeBoris Kolpackov1-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}
2016-06-27Get rid of extern "C" in module boot()/init()Boris Kolpackov2-16/+16
We will have a separate (extern "C") register() function that will return the pointers to these two. This way we can still throw exceptions from boot() and init().
2016-06-26Add support for passing configuration hints via module init()Boris Kolpackov2-3/+11
2016-06-26Minor module interface cleanupsBoris Kolpackov1-8/+4
2016-06-26Add notion of ad hoc group, use to handle DLL/import libraryBoris Kolpackov3-133/+170
2016-06-20Fix some more MinGW .dll.a searchBoris Kolpackov1-15/+43
2016-06-18Port to MinGWKaren Arutyunov2-8/+34
2016-06-18Fix MinGW .dll.a searchBoris Kolpackov1-8/+15
2016-06-18Cosmetic changesBoris Kolpackov1-1/+0
2016-06-17Initial take on DLL support for MinGW toolchainBoris Kolpackov3-26/+81
2016-06-11Initial VC++ support (static libraries only)Boris Kolpackov8-257/+728
2016-05-21Recursively link prerequisite libraries of static librariesBoris Kolpackov1-4/+52
2016-04-26Add imported library rpaths before user-supplied0.3.0Boris Kolpackov1-9/+13
This way we don't accidentally prefer old (installed) versions.
2016-04-25Fix bug in C++ compiler guessing logicBoris Kolpackov1-1/+1
2016-04-23Revert back to using root scope in src_out()/out_src()Boris Kolpackov1-2/+2
Relaxing it to base was not wise since we can have "sideways" prerequisites (those from parallel directories such as brep's ../web/*).
2016-04-22Clarify few @@ notesBoris Kolpackov2-2/+2
2016-04-21Implement short-circuiting to group stateBoris Kolpackov1-3/+5
This is necessary to get rid of bogus restarts in inject_prerequisites() where it think a group member was updated since its state changed from unknown to (group's) changed.
2016-04-19Redesign src/out scopingBoris Kolpackov2-15/+33
We no longer enter paths from the src tree into scope map. Instead, targets from the src tree now include their out tree directory (in essence their "configuration"). This is then used to find a target's scope. See the comment in class target for details. The result of this change is that we can now again build multiple configurations (out trees) for same project at once.
2016-04-11New configuration logic, iteration 1Boris Kolpackov2-19/+18
2016-03-31Clean up variable lookup interfacesBoris Kolpackov2-3/+3
2016-03-31Set part of variable override implementationBoris Kolpackov1-14/+16
2016-03-28Clean up variable usageBoris Kolpackov5-98/+128
2016-03-28Add variable cast from lookupBoris Kolpackov4-25/+25
2016-03-28New variable architectureBoris Kolpackov4-30/+30
2016-03-16Change prerequisite cleaning "limit" from subdirectories to same projectBoris Kolpackov2-7/+8
One day we will get this right.