Path: blob/master/Tests/CMakeOnly/find_library/CMakeLists.txt
3153 views
cmake_minimum_required(VERSION 3.10)1project(FindLibraryTest NONE)23set(CMAKE_FIND_DEBUG_MODE 1)45macro(test_find_library desc expected)6unset(LIB CACHE)7find_library(LIB ${ARGN} NO_DEFAULT_PATH)8if(LIB)9# Convert to relative path for comparison to expected location.10file(RELATIVE_PATH REL_LIB "${CMAKE_CURRENT_SOURCE_DIR}" "${LIB}")1112# Check and report failure.13if(NOT "${REL_LIB}" STREQUAL "${expected}")14message(SEND_ERROR "Library ${expected} found as [${REL_LIB}]${desc}")15elseif(CMAKE_FIND_DEBUG_MODE)16message(STATUS "Library ${expected} found as [${REL_LIB}]${desc}")17endif()18else()19message(SEND_ERROR "Library ${expected} NOT FOUND${desc}")20endif()21endmacro()2223macro(test_find_library_subst expected)24get_filename_component(dir ${expected} PATH)25get_filename_component(name ${expected} NAME)26string(REGEX REPLACE "lib/?[36Xx][24Y3][Z2]*" "lib" dir "${dir}")27test_find_library(", searched as ${dir}" "${expected}"28NAMES ${name}29PATHS ${CMAKE_CURRENT_SOURCE_DIR}/${dir}30)31endmacro()3233set(CMAKE_FIND_LIBRARY_PREFIXES "lib")34set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")35set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIBX32_PATHS TRUE)36set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS TRUE)37set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE)3839set(CMAKE_INTERNAL_PLATFORM_ABI "ELF")40set(CMAKE_SIZEOF_VOID_P 4)41foreach(lib42lib/32/libtest5.a43lib/A/lib/libtest1.a44lib/A/lib32/libtest3.a45lib/A/libtest1.a46lib/libtest1.a47lib/libtest2.a48lib/libtest3.a49lib/libtest3.a50lib32/A/lib/libtest2.a51lib32/A/lib32/libtest4.a52lib32/A/libtest4.a53lib32/libtest4.a54)55test_find_library_subst(${lib})56endforeach()5758set(CMAKE_SIZEOF_VOID_P 8)59foreach(lib6460lib/64/libtest2.a61lib/A/lib64/libtest3.a62lib/libtest3.a63lib64/A/lib/libtest2.a64lib64/A/lib64/libtest1.a65lib64/A/libtest1.a66lib64/libtest1.a67)68test_find_library_subst(${lib64})69endforeach()7071set(CMAKE_INTERNAL_PLATFORM_ABI "ELF X32")72set(CMAKE_SIZEOF_VOID_P 4)73foreach(libx3274lib/x32/libtest2.a75lib/A/libx32/libtest3.a76lib/libtest3.a77libx32/A/lib/libtest2.a78libx32/A/libx32/libtest1.a79libx32/A/libtest1.a80libx32/libtest1.a81)82test_find_library_subst(${libx32})83endforeach()8485test_find_library("" A/libtestA.a86NAMES testA testB87PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A ${CMAKE_CURRENT_SOURCE_DIR}/B88)89test_find_library("" B/libtestB.a90NAMES testB testA91PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A ${CMAKE_CURRENT_SOURCE_DIR}/B92)93test_find_library("" A/libtestA.a94NAMES testB testA NAMES_PER_DIR95PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A ${CMAKE_CURRENT_SOURCE_DIR}/B96)9798set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX "XYZ")99foreach(libXYZ100lib/XYZ/libtest1.a101lib/A/libXYZ/libtest2.a102lib/libtest3.a103libXYZ/A/lib/libtest4.a104libXYZ/A/libXYZ/libtest5.a105libXYZ/A/libtest6.a106libXYZ/libtest7.a107)108test_find_library_subst(${libXYZ})109endforeach()110111112