summaryrefslogtreecommitdiff
path: root/cmake/LinkerChecks.cmake
diff options
context:
space:
mode:
authorRoger Leigh <rleigh@codelibre.net>2021-02-06 22:08:25 +0000
committerRoger Leigh <rleigh@codelibre.net>2021-02-13 12:24:53 +0000
commit6d4c815ddf27325890344980ec09b6bbcbf4979a (patch)
tree696afcd02a078244f2c433e793fd43a7d25319a1 /cmake/LinkerChecks.cmake
parentaf6cca4c0a4441e69bbde31d54615ea91b257ca4 (diff)
downloadlibtiff-git-6d4c815ddf27325890344980ec09b6bbcbf4979a.tar.gz
cmake: Move linker checks to LinkerChecks.cmake
Diffstat (limited to 'cmake/LinkerChecks.cmake')
-rw-r--r--cmake/LinkerChecks.cmake50
1 files changed, 50 insertions, 0 deletions
diff --git a/cmake/LinkerChecks.cmake b/cmake/LinkerChecks.cmake
new file mode 100644
index 00000000..ad1f0f9f
--- /dev/null
+++ b/cmake/LinkerChecks.cmake
@@ -0,0 +1,50 @@
+# Check linker capabilities
+#
+# Copyright © 2015 Open Microscopy Environment / University of Dundee
+# Copyright © 2021 Roger Leigh <rleigh@codelibre.net>
+# Written by Roger Leigh <rleigh@codelibre.net>
+#
+# Permission to use, copy, modify, distribute, and sell this software and
+# its documentation for any purpose is hereby granted without fee, provided
+# that (i) the above copyright notices and this permission notice appear in
+# all copies of the software and related documentation, and (ii) the names of
+# Sam Leffler and Silicon Graphics may not be used in any advertising or
+# publicity relating to the software without the specific, prior written
+# permission of Sam Leffler and Silicon Graphics.
+#
+# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+#
+# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+# OF THIS SOFTWARE.
+
+
+include(CheckCSourceCompiles)
+
+
+option(ld-version-script "Enable linker version script" ON)
+
+# Check if LD supports linker scripts.
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map" "VERS_1 {
+ global: sym;
+};
+
+VERS_2 {
+ global: sym;
+} VERS_1;
+")
+set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
+set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "-Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
+check_c_source_compiles("int main(void){return 0;}" HAVE_LD_VERSION_SCRIPT)
+set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
+file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
+if (ld-version-script AND HAVE_LD_VERSION_SCRIPT)
+ set(HAVE_LD_VERSION_SCRIPT TRUE)
+else()
+ set(HAVE_LD_VERSION_SCRIPT FALSE)
+endif()