- 16 Jul, 2019 1 commit
-
-
Brad King authored
On AIX, plugins meant to be loaded into executables via `dlopen` must be linked with access to a list of symbols exported from the executable in order to use them (when not using runtime linking). The AIX linker supports specifying this list as an "import file" passed on the command line either via the `-bI:...` option or (with a leading `#! .` line) as a normal input file like any other library file. The linker import file plays the same role on AIX as import libraries do on Windows. Teach CMake to enable its import library abstraction on AIX for executables with the `ENABLE_EXPORTS` target property set. Teach our internal `ExportImportList` script to optionally generate a leading `#! .` line at the top of the generated export/import list. Update our rule for linking an executable with exports to generate a public-facing "import library" implemented as an AIX linker import file. With this approach, our existing infrastructure for handling import libraries on Windows will now work for AIX linker import files too: * Plugins that link to their executable's symbols will be automatically linked using the import file on the command line. * The executable's import file will be (optionally) installed and exported for use in linking externally-built plugins. This will allow executables and their plugins to build even if we later turn off runtime linking. Issue: #19163
-
- 15 Jul, 2019 1 commit
-
-
Brad King authored
On AIX, symbols in executables must be exported in order to be visible to modules (plugins) they load via `dlopen`. Prior to policy `CMP0065`, CMake linked all executables with flags to export symbols, but the NEW behavior for that policy is to do so only for executables that have the `ENABLE_EXPORTS` target property set. In both cases, CMake has always used the AIX linker option `-bexpall` option to export symbols from executables. This has worked fairly well with the XL compiler, but with the GNU compiler it works only for C ABI symbols. The reason is that `-bexpall` does not export symbols starting in `_` but the GNU C++ ABI mangles all symbols with a leading `_`. Therefore we have only supported C ABI plugins with the GNU compiler on AIX. Some projects have tried to work around this by replacing `-bexpall` with `-bexpfull`, but the latter often exports symbols that we do not want exported. Avoid using `-bexpall` for executables by instead using by our own internal `ExportImportList` script to compute symbol export lists from the object files to be linked into an executable. Pass the explicitly computed export list to the AIX linker's `-bE:...` option. We already do this for shared object exports. Issue: #19163
-
- 14 Jul, 2019 1 commit
-
-
Marc Chevrier authored
-
- 12 Jul, 2019 1 commit
-
-
Brad King authored
-
- 04 Jun, 2019 2 commits
-
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
- 23 May, 2019 1 commit
-
-
Sebastian Holtermann authored
-
- 21 May, 2019 1 commit
-
-
Ruslan Baratov authored
-
- 16 May, 2019 1 commit
-
-
Saleem Abdulrasool authored
Add the placeholders needed to support compiling Swift code.
-
- 14 May, 2019 1 commit
-
-
Luca Cappa authored
-
- 17 Apr, 2019 1 commit
-
-
Brad King authored
Replace our hard-coded defaults for `/MD` and `/MDd` with a first-class abstraction to select the runtime library from an enumeration of logical names. We've long hesitated to do this because the idea of "runtime library selection" touches on related concepts on several platforms. Avoid that scope creep by simply defining an abstraction that applies only when targeting the MSVC ABI on Windows. Removing the old default flags requires a policy because existing projects may rely on string processing to edit them and choose a runtime library under the old behavior. Add policy CMP0091 to provide compatibility. Fixes: #19108
-
- 31 Mar, 2019 1 commit
-
-
Sebastian Holtermann authored
In various places `///!` was used to start a comment line. This is not valid Doygen syntax. This patch replaces `///!` comment starts with `//!`.
-
- 23 Mar, 2019 20 commits
-
-
Sebastian Holtermann authored
To manage the lifetime of `cmTargetInternals`, the private implementation of `cmTarget`, use `std::unique_ptr<cmTargetInternals>` instead of `cmTargetInternalPointer`, which is removed. `cmTarget` is made non-copyable but movable.
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
- 21 Mar, 2019 3 commits
-
-
Harry Mallon authored
-
Sebastian Holtermann authored
-
Sebastian Holtermann authored
-
- 21 Feb, 2019 1 commit
-
-
wahikihiki authored
-
- 15 Feb, 2019 1 commit
-
-
Artur Ryt authored
It replaces C arrays with deduced std::initializer_lists or std::array what makes enables for-loop over them.
-
- 07 Feb, 2019 1 commit
-
-
Artur Ryt authored
Replaced most manual `const_iterator`-based loops and some reverse-iterator loops with range loops. Fixes: #18858
-
- 27 Jan, 2019 1 commit
-
-
bmanga authored
-
- 18 Jan, 2019 1 commit
-
-
Sebastian Holtermann authored
The new optional `before` parameter in `cmTarget::AddSource` and `cmGeneratorTarget::AddSource` allows to prepend a source file to the sources list instead of appending it.
-