aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/link-rule.cxx
AgeCommit message (Collapse)AuthorFilesLines
2021-01-30Rework include translation supportBoris Kolpackov1-1/+1
See the config.cxx.translate_include variable documentation in cxx/init.cxx for details.
2021-01-22Redo bin.lib.version not to require empty keyBoris Kolpackov1-3/+9
2020-12-14Fix incorrect assert in conditionBoris Kolpackov1-2/+2
2020-12-11Add $cxx.obj_modules() which returns object files for binless modulesBoris Kolpackov1-0/+5
2020-12-11Add support for module interface-only librariesBoris Kolpackov1-34/+142
Also suppress generation of the object file in cases where we don't need it.
2020-12-03Add ability to get absolute library paths from ${c,cxx}.lib_libs()Boris Kolpackov1-4/+9
2020-11-23Suppress duplicates when extracting library options (GitHub issue #114)Boris Kolpackov1-35/+127
2020-11-17Omit default extensions for target types that now have fixed extensionsBoris Kolpackov1-2/+2
2020-11-11Add ${c,cxx}.lib_{poptions,libs,rpaths}() functionsBoris Kolpackov1-36/+36
These functions can be used to query library metadata for options and libraries that should be used when compiling/linking dependent targets, similar to how cc::{compile,link}_rule do it. With this support it should be possible to more or less re-create their semantics in ad hoc recipes.
2020-11-05Initial Emscripten supportBoris Kolpackov1-0/+44
- Target: wasm32-emscripten (wasm32-unknown-emscripten). - Compiler id: clang-emscripten (type clang, variant emscripten, class gcc). - Ability to build executables (.js plus .wasm) and static libraries (.a). Set executable bit on the .js file (so it can be executed with a suitable binfmt interpreter). - Default config.bin.lib for wasm32-emscripten is static instead of both. - Full C++ exception support is enable unless disabled explicitly by the user with -s DISABLE_EXCEPTION_CATCHING=1|2. - The bin module registers the wasm{} target type for wasm32-emscripten.
2020-08-12Adjust linker arguments for LTO parallelizationMatthew Krupcale1-0/+54
GCC 10+ and Clang 4+ support controlling the number of LTO threads/jobs used during linking. Use the build2 scheduler to allocate up to the number of hardware threads to the GCC or Clang linker processes when -flto=auto or -flto=thin is specified, respectively. Otherwise, GCC or Clang will attempt to spawn the number of hardware threads detected for each linker process, which could result in up to n^2 linker threads on a CPU with n hardware threads.
2020-07-13Fold translated *.std options into compiler mode optionsBoris Kolpackov1-1/+0
This way they are accessible in ad hoc recipes.
2020-06-16Move common functionality from cc to binBoris Kolpackov1-1/+1
2020-05-27Initial support for ad hoc recipes (still work in progress)Boris Kolpackov1-19/+5
2020-03-20Generate common .pc file in addition to static/staged when installing lib{}Boris Kolpackov1-9/+49
The common .pc file is produced by ignoring any static/shared-specific poptions and splitting loptions/libs into Libs/Libs.private. It is "best effort", in a sense that it's not guaranteed to be sufficient in all cases, but it will probably cover the majority of cases, even on Windows, thanks to automatic dllimport'ing of functions.
2020-03-17Rename all find*(variable) to lookup*(variable)Boris Kolpackov1-6/+6
Now we consistently use term "lookup" for variable value lookup. At some point we should also rename type lookup to binding and get rid of all the lookup_type aliases.
2020-03-10Force hard links inside backlinked DLL assembly directoryBoris Kolpackov1-1/+2
Windows does not allow the manifest file inside to be a symlink for some (probably security) reasons.
2020-02-24Disable /WHOLEARCHIVE workaround for lld-link 9.0.1 and laterBoris Kolpackov1-9/+16
2020-02-07Drop copyright notice from source codeKaren Arutyunov1-1/+0
2020-02-03Add header/library search paths from compiler mode to sys_*_dirsBoris Kolpackov1-33/+35
2020-01-27Improve process run_*() APIBoris Kolpackov1-1/+4
2020-01-24Don't pass dependency library non-export loptions to linkerKaren Arutyunov1-2/+10
2019-11-29Reorder {cc,c/cxx}.{poptions,loptions}Boris Kolpackov1-1/+6
Now it is c/cxx first followed by cc which is the reverse order of coptions since the header/library search paths are examined in the order specified (in contrast to the "last value wins" semantics that we assume for coptions).
2019-11-26Rename executable's .lib/.exp to avoid clashes with librariesBoris Kolpackov1-29/+41
Failed that we cannot have an executable and a library with the same name and in the same directory (their .lib's will clash).
2019-11-07Initial work on path_name use for `-` to stdin/stdout translationBoris Kolpackov1-1/+1
2019-10-29Add support for specifying custom load prefix and version clean patternsBoris Kolpackov1-5/+10
2019-10-29Tighten up versioned libraries clean patternsBoris Kolpackov1-69/+122
2019-10-21Work around LLD bug #43744Boris Kolpackov1-0/+23
2019-10-21Build thin archives for utility libraries if using llvm-libBoris Kolpackov1-0/+13
2019-10-18Add ability to specify "compiler mode" options as part of config.{c,cxx}Boris Kolpackov1-8/+12
Such options are (normally) not overridden by buildfiles and are passed last (after cc.coptions and {c,cxx}.coptions) in the resulting command lines. They are also cross-hinted between config.c and config.cxx. For example: $ b config.cxx="g++ -m64"
2019-10-14Implement MSVC installation discovery for version 15 (2017) and laterKaren Arutyunov1-8/+8
In particular, this removes the requirement to build from the Visual Studio command prompt. Note that since MSVC compiler binaries are target-specific (i.e., there are no -m32/-m64 options nor something like /MACHINE), in this case we default to a 64-bit build (a 32-bit build can still be achieved by running from a suitable command prompt). Finally, this mechanism is also used to find Clang bundled with MSVC.
2019-10-09Prepend pattern search paths to PATH when running binutilsBoris Kolpackov1-4/+66
This way any dependent tools (such as mt.exe that is invoked by link.exe) are first search for in there.
2019-10-07Pass MSVC system library search paths to linker if LIB envvar is unsetBoris Kolpackov1-13/+44
2019-10-05Default to MSVC DLL runtime for Clang on WindowsBoris Kolpackov1-6/+8
2019-10-01Adapt to renaming butl::casecmp() to icasecmp()Karen Arutyunov1-1/+1
2019-09-27Adapt to bracket expressions in wildcard patternsKaren Arutyunov1-1/+1
2019-09-05Tighten versioned shared library cleanup logicBoris Kolpackov1-12/+23
2019-09-04Add support for native shared library versioning on LinuxBoris Kolpackov1-24/+110
Now we can do: lib{foo}: bin.lib.version = linux@1.2 And end up with libfoo.so.1.2 libfoo.so.1 -> libfoo.so.1.2
2019-08-28Move cc build system module to separate libraryKaren Arutyunov1-0/+3043