install: add test for new NAMELINK_COMPONENT parameter

This commit is contained in:
Kyle Edwards
2018-04-18 15:47:48 -04:00
committed by Brad King
parent 0212d7c762
commit edcb545a24
13 changed files with 285 additions and 1 deletions

View File

@@ -338,7 +338,13 @@ add_RunCMake_test(CheckIPOSupported)
add_RunCMake_test(CommandLine -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME})
add_RunCMake_test(CommandLineTar)
add_RunCMake_test(install)
if(CMAKE_PLATFORM_NO_VERSIONED_SONAME OR (NOT CMAKE_SHARED_LIBRARY_SONAME_FLAG AND NOT CMAKE_SHARED_LIBRARY_SONAME_C_FLAG))
set(NO_NAMELINK 1)
else()
set(NO_NAMELINK 0)
endif()
add_RunCMake_test(install -DNO_NAMELINK=${NO_NAMELINK} -DCYGWIN=${CYGWIN})
add_RunCMake_test(CPackCommandLine)
add_RunCMake_test(CPackConfig)
add_RunCMake_test(CPackInstallProperties)

View File

@@ -21,6 +21,10 @@ function(run_install_test case)
# Check explicit component.
set(CMAKE_INSTALL_PREFIX ${RunCMake_TEST_BINARY_DIR}/root-exc)
run_cmake_command(${case}-exc ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DBUILD_TYPE=Debug -DCOMPONENT=exc -P cmake_install.cmake)
set(CMAKE_INSTALL_PREFIX ${RunCMake_TEST_BINARY_DIR}/root-lib)
run_cmake_command(${case}-lib ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DBUILD_TYPE=Debug -DCOMPONENT=lib -P cmake_install.cmake)
set(CMAKE_INSTALL_PREFIX ${RunCMake_TEST_BINARY_DIR}/root-dev)
run_cmake_command(${case}-dev ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DBUILD_TYPE=Debug -DCOMPONENT=dev -P cmake_install.cmake)
endif()
endfunction()
@@ -59,6 +63,8 @@ run_cmake(EXPORT-OldIFace)
run_cmake(CMP0062-OLD)
run_cmake(CMP0062-NEW)
run_cmake(CMP0062-WARN)
run_cmake(TARGETS-NAMELINK_COMPONENT-bad-all)
run_cmake(TARGETS-NAMELINK_COMPONENT-bad-exc)
if(NOT RunCMake_GENERATOR STREQUAL "Xcode" OR NOT "$ENV{CMAKE_OSX_ARCHITECTURES}" MATCHES "[;$]")
run_install_test(FILES-TARGET_OBJECTS)
@@ -67,3 +73,4 @@ endif()
set(run_install_test_components 1)
run_install_test(FILES-EXCLUDE_FROM_ALL)
run_install_test(TARGETS-EXCLUDE_FROM_ALL)
run_install_test(TARGETS-NAMELINK_COMPONENT)

View File

@@ -0,0 +1,73 @@
if(WIN32)
set(_check_files
[[lib]]
[[lib/(lib)?namelink-none\.dll]]
[[lib/(lib)?namelink-same\.dll]]
[[lib/(lib)?namelink-sep\.dll]]
[[lib/(lib)?namelink-skip\.dll]]
[[lib/(lib)?namelink-uns-dev\.dll]]
[[lib/(lib)?namelink-uns\.dll]]
)
elseif(CYGWIN)
set(_check_files
[[lib]]
[[lib/cygnamelink-none\.dll]]
[[lib/cygnamelink-same-1\.dll]]
[[lib/cygnamelink-sep-1\.dll]]
[[lib/cygnamelink-skip-1\.dll]]
[[lib/cygnamelink-uns-1\.dll]]
[[lib/cygnamelink-uns-dev-1\.dll]]
)
elseif(APPLE)
set(_check_files
[[lib]]
[[lib/libnamelink-none\.dylib]]
[[lib/libnamelink-only\.dylib]]
[[lib/libnamelink-same\.1\.0\.dylib]]
[[lib/libnamelink-same\.1\.dylib]]
[[lib/libnamelink-same\.dylib]]
[[lib/libnamelink-sep\.1\.0\.dylib]]
[[lib/libnamelink-sep\.1\.dylib]]
[[lib/libnamelink-sep\.dylib]]
[[lib/libnamelink-skip\.1\.0\.dylib]]
[[lib/libnamelink-skip\.1\.dylib]]
[[lib/libnamelink-uns-dev\.1\.0\.dylib]]
[[lib/libnamelink-uns-dev\.1\.dylib]]
[[lib/libnamelink-uns-dev\.dylib]]
[[lib/libnamelink-uns\.1\.0\.dylib]]
[[lib/libnamelink-uns\.1\.dylib]]
[[lib/libnamelink-uns\.dylib]]
)
elseif(NO_NAMELINK)
set(_check_files
[[lib]]
[[lib/libnamelink-none\.so]]
[[lib/libnamelink-same\.so]]
[[lib/libnamelink-sep\.so]]
[[lib/libnamelink-skip\.so]]
[[lib/libnamelink-uns-dev\.so]]
[[lib/libnamelink-uns\.so]]
)
else()
set(_check_files
[[lib]]
[[lib/libnamelink-none\.so]]
[[lib/libnamelink-only\.so]]
[[lib/libnamelink-same\.so]]
[[lib/libnamelink-same\.so\.1]]
[[lib/libnamelink-same\.so\.1\.0]]
[[lib/libnamelink-sep\.so]]
[[lib/libnamelink-sep\.so\.1]]
[[lib/libnamelink-sep\.so\.1\.0]]
[[lib/libnamelink-skip\.so\.1]]
[[lib/libnamelink-skip\.so\.1\.0]]
[[lib/libnamelink-uns-dev\.so]]
[[lib/libnamelink-uns-dev\.so\.1]]
[[lib/libnamelink-uns-dev\.so\.1\.0]]
[[lib/libnamelink-uns\.so]]
[[lib/libnamelink-uns\.so\.1]]
[[lib/libnamelink-uns\.so\.1\.0]]
)
endif()
check_installed("^${_check_files}$")

View File

@@ -0,0 +1,5 @@
^CMake Error at TARGETS-NAMELINK_COMPONENT-bad-all\.cmake:5 \(install\):
install TARGETS given NAMELINK_COMPONENT option not in LIBRARY group\. The
NAMELINK_COMPONENT option may be specified only following LIBRARY\.
Call Stack \(most recent call first\):
CMakeLists\.txt:3 \(include\)$

View File

@@ -0,0 +1,9 @@
enable_language(C)
add_library(namelink-lib empty.c)
install(TARGETS namelink-lib
DESTINATION lib
COMPONENT lib
NAMELINK_COMPONENT dev
)

View File

@@ -0,0 +1,5 @@
^CMake Error at TARGETS-NAMELINK_COMPONENT-bad-exc\.cmake:5 \(install\):
install TARGETS given NAMELINK_COMPONENT option not in LIBRARY group\. The
NAMELINK_COMPONENT option may be specified only following LIBRARY\.
Call Stack \(most recent call first\):
CMakeLists\.txt:3 \(include\)$

View File

@@ -0,0 +1,10 @@
enable_language(C)
add_executable(namelink-exc main.c)
install(TARGETS namelink-exc
RUNTIME
DESTINATION bin
COMPONENT exc
NAMELINK_COMPONENT dev
)

View File

@@ -0,0 +1,11 @@
if(WIN32 OR CYGWIN OR NO_NAMELINK)
set(_check_files)
else()
set(_check_files
[[lib]]
[[lib/libnamelink-only\.(so|dylib)]]
[[lib/libnamelink-sep\.(so|dylib)]]
[[lib/libnamelink-uns-dev\.(so|dylib)]]
)
endif()
check_installed("^${_check_files}$")

View File

@@ -0,0 +1,50 @@
if(WIN32)
set(_check_files
[[lib]]
[[lib/(lib)?namelink-none\.dll]]
[[lib/(lib)?namelink-same\.dll]]
[[lib/(lib)?namelink-sep\.dll]]
[[lib/(lib)?namelink-skip\.dll]]
)
elseif(CYGWIN)
set(_check_files
[[lib]]
[[lib/cygnamelink-none\.dll]]
[[lib/cygnamelink-same-1\.dll]]
[[lib/cygnamelink-sep-1\.dll]]
[[lib/cygnamelink-skip-1\.dll]]
)
elseif(APPLE)
set(_check_files
[[lib]]
[[lib/libnamelink-none\.dylib]]
[[lib/libnamelink-same\.1\.0\.dylib]]
[[lib/libnamelink-same\.1\.dylib]]
[[lib/libnamelink-same\.dylib]]
[[lib/libnamelink-sep\.1\.0\.dylib]]
[[lib/libnamelink-sep\.1\.dylib]]
[[lib/libnamelink-skip\.1\.0\.dylib]]
[[lib/libnamelink-skip\.1\.dylib]]
)
elseif(NO_NAMELINK)
set(_check_files
[[lib]]
[[lib/libnamelink-none\.so]]
[[lib/libnamelink-same\.so]]
[[lib/libnamelink-sep\.so]]
[[lib/libnamelink-skip\.so]]
)
else()
set(_check_files
[[lib]]
[[lib/libnamelink-none\.so]]
[[lib/libnamelink-same\.so]]
[[lib/libnamelink-same\.so\.1]]
[[lib/libnamelink-same\.so\.1\.0]]
[[lib/libnamelink-sep\.so\.1]]
[[lib/libnamelink-sep\.so\.1\.0]]
[[lib/libnamelink-skip\.so\.1]]
[[lib/libnamelink-skip\.so\.1\.0]]
)
endif()
check_installed("^${_check_files}$")

View File

@@ -0,0 +1,38 @@
if(WIN32)
set(_check_files
[[lib]]
[[lib/(lib)?namelink-uns-dev\.dll]]
[[lib/(lib)?namelink-uns\.dll]]
)
elseif(CYGWIN)
set(_check_files
[[lib]]
[[lib/cygnamelink-uns-1\.dll]]
[[lib/cygnamelink-uns-dev-1\.dll]]
)
elseif(APPLE)
set(_check_files
[[lib]]
[[lib/libnamelink-uns-dev\.1\.0\.dylib]]
[[lib/libnamelink-uns-dev\.1\.dylib]]
[[lib/libnamelink-uns\.1\.0\.dylib]]
[[lib/libnamelink-uns\.1\.dylib]]
[[lib/libnamelink-uns\.dylib]]
)
elseif(NO_NAMELINK)
set(_check_files
[[lib]]
[[lib/libnamelink-uns-dev\.so]]
[[lib/libnamelink-uns\.so]]
)
else()
set(_check_files
[[lib]]
[[lib/libnamelink-uns-dev\.so\.1]]
[[lib/libnamelink-uns-dev\.so\.1\.0]]
[[lib/libnamelink-uns\.so]]
[[lib/libnamelink-uns\.so\.1]]
[[lib/libnamelink-uns\.so\.1\.0]]
)
endif()
check_installed("^${_check_files}$")

View File

@@ -0,0 +1,68 @@
enable_language(C)
macro(add_versioned_library NAME)
add_library(${NAME} SHARED obj1.c)
set_target_properties(${NAME} PROPERTIES
VERSION 1.0
SOVERSION 1
)
endmacro()
add_versioned_library(namelink-sep)
add_versioned_library(namelink-same)
add_versioned_library(namelink-uns)
add_versioned_library(namelink-uns-dev)
add_versioned_library(namelink-only)
add_versioned_library(namelink-skip)
add_library(namelink-none SHARED obj1.c)
install(TARGETS namelink-sep namelink-none
RUNTIME
DESTINATION lib
COMPONENT lib
LIBRARY
DESTINATION lib
COMPONENT lib
NAMELINK_COMPONENT dev
)
install(TARGETS namelink-same
RUNTIME
DESTINATION lib
COMPONENT lib
LIBRARY
DESTINATION lib
COMPONENT lib
)
install(TARGETS namelink-uns
RUNTIME
DESTINATION lib
LIBRARY
DESTINATION lib
)
install(TARGETS namelink-uns-dev
RUNTIME
DESTINATION lib
LIBRARY
DESTINATION lib
NAMELINK_COMPONENT dev
)
install(TARGETS namelink-only
RUNTIME
DESTINATION lib
COMPONENT lib
LIBRARY
DESTINATION lib
COMPONENT lib
NAMELINK_COMPONENT dev
NAMELINK_ONLY
)
install(TARGETS namelink-skip
RUNTIME
DESTINATION lib
COMPONENT lib
LIBRARY
DESTINATION lib
COMPONENT lib
NAMELINK_COMPONENT dev
NAMELINK_SKIP
)