|
@@ -0,0 +1,61 @@
|
|
|
+cmake_minimum_required(VERSION 2.8)
|
|
|
+project(FindLibraryTest NONE)
|
|
|
+
|
|
|
+set(CMAKE_FIND_DEBUG_MODE 1)
|
|
|
+
|
|
|
+macro(test_find_library expected)
|
|
|
+ get_filename_component(dir ${expected} PATH)
|
|
|
+ get_filename_component(name ${expected} NAME)
|
|
|
+ string(REGEX REPLACE "lib/?64" "lib" dir "${dir}")
|
|
|
+ unset(LIB CACHE)
|
|
|
+ find_library(LIB
|
|
|
+ NAMES ${name}
|
|
|
+ PATHS ${CMAKE_CURRENT_SOURCE_DIR}/${dir}
|
|
|
+ NO_DEFAULT_PATH
|
|
|
+ )
|
|
|
+ if(LIB)
|
|
|
+ # Convert to relative path for comparison to expected location.
|
|
|
+ file(RELATIVE_PATH REL_LIB "${CMAKE_CURRENT_SOURCE_DIR}" "${LIB}")
|
|
|
+
|
|
|
+ # Debugging output.
|
|
|
+ if(CMAKE_FIND_DEBUG_MODE)
|
|
|
+ message(STATUS "Library ${expected} searched as ${dir}, found as [${REL_LIB}].")
|
|
|
+ endif()
|
|
|
+
|
|
|
+ # Check and report failure.
|
|
|
+ if(NOT "${REL_LIB}" STREQUAL "${expected}")
|
|
|
+ message(SEND_ERROR "Library ${l} should have been [${expected}] but was [${REL_LIB}]")
|
|
|
+ endif()
|
|
|
+ else()
|
|
|
+ message(SEND_ERROR "Library ${expected} searched as ${dir}, NOT FOUND!")
|
|
|
+ endif()
|
|
|
+endmacro()
|
|
|
+
|
|
|
+set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
|
|
|
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
|
|
|
+set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE)
|
|
|
+
|
|
|
+set(CMAKE_SIZEOF_VOID_P 4)
|
|
|
+foreach(lib
|
|
|
+ lib/A/lib/libtest1.a
|
|
|
+ lib/A/libtest1.a
|
|
|
+ lib/libtest1.a
|
|
|
+ lib/libtest2.a
|
|
|
+ lib/libtest3.a
|
|
|
+ lib/libtest3.a
|
|
|
+ )
|
|
|
+ test_find_library(${lib})
|
|
|
+endforeach()
|
|
|
+
|
|
|
+set(CMAKE_SIZEOF_VOID_P 8)
|
|
|
+foreach(lib64
|
|
|
+ lib/64/libtest2.a
|
|
|
+ #lib/A/lib64/libtest3.a # known breakage
|
|
|
+ lib/libtest3.a
|
|
|
+ #lib64/A/lib/libtest2.a # known breakage
|
|
|
+ lib64/A/lib64/libtest1.a
|
|
|
+ lib64/A/libtest1.a
|
|
|
+ lib64/libtest1.a
|
|
|
+ )
|
|
|
+ test_find_library(${lib64})
|
|
|
+endforeach()
|