diff options
author | Steven Newbury <steve@snewbury.org.uk> | 2017-02-27 21:06:51 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-03-07 20:22:55 (GMT) |
commit | 462cf254270fbd56bffc73b00dc28882fdb0bdd6 (patch) | |
tree | ff0ebb25613ba68d21b9b50f60f1f53f2ea05d79 /Modules | |
parent | 06ef23c3e0abf79f451cf69fbd3ac646b7e17c27 (diff) | |
download | CMake-462cf254270fbd56bffc73b00dc28882fdb0bdd6.zip CMake-462cf254270fbd56bffc73b00dc28882fdb0bdd6.tar.gz CMake-462cf254270fbd56bffc73b00dc28882fdb0bdd6.tar.bz2 |
Add support for x32-abi
Detect x32-abi through CMakeCompilerABI infrastruture and use this
information at runtime to determine the correct library paths with
`FIND_LIBRARY_USE_LIBX32_PATHS`.
Fixes: #15994
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/CMakeCompilerABI.h | 4 | ||||
-rw-r--r-- | Modules/FindPkgConfig.cmake | 4 | ||||
-rw-r--r-- | Modules/Platform/UnixPaths.cmake | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/Modules/CMakeCompilerABI.h b/Modules/CMakeCompilerABI.h index f2714b4..ad481d6 100644 --- a/Modules/CMakeCompilerABI.h +++ b/Modules/CMakeCompilerABI.h @@ -25,6 +25,10 @@ const char info_sizeof_dptr[] = { #elif defined(__GNU__) && defined(__ELF__) && defined(__ARMEL__) #define ABI_ID "ELF ARM" +#elif defined(__linux__) && defined(__ELF__) && defined(__amd64__) && \ + defined(__ILP32__) +#define ABI_ID "ELF X32" + #elif defined(__ELF__) #define ABI_ID "ELF" #endif diff --git a/Modules/FindPkgConfig.cmake b/Modules/FindPkgConfig.cmake index a69081f..54572f0 100644 --- a/Modules/FindPkgConfig.cmake +++ b/Modules/FindPkgConfig.cmake @@ -312,6 +312,10 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma if(uselib64 AND CMAKE_SIZEOF_VOID_P EQUAL 8) list(APPEND _lib_dirs "lib64/pkgconfig") endif() + get_property(uselibx32 GLOBAL PROPERTY FIND_LIBRARY_USE_LIBX32_PATHS) + if(uselibx32 AND CMAKE_INTERNAL_PLATFORM_ABI STREQUAL "ELF X32") + list(APPEND _lib_dirs "libx32/pkgconfig") + endif() endif() endif() list(APPEND _lib_dirs "lib/pkgconfig") diff --git a/Modules/Platform/UnixPaths.cmake b/Modules/Platform/UnixPaths.cmake index b216d03..c1d2c03 100644 --- a/Modules/Platform/UnixPaths.cmake +++ b/Modules/Platform/UnixPaths.cmake @@ -86,3 +86,4 @@ list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES # Enable use of lib32 and lib64 search path variants by default. set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS TRUE) set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE) +set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIBX32_PATHS TRUE) |