Browse Source

install: add test for new NAMELINK_COMPONENT parameter

Kyle Edwards 7 years ago
parent
commit
edcb545a24

+ 7 - 1
Tests/RunCMake/CMakeLists.txt

@@ -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)

+ 7 - 0
Tests/RunCMake/install/RunCMakeTest.cmake

@@ -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)

+ 73 - 0
Tests/RunCMake/install/TARGETS-NAMELINK_COMPONENT-all-check.cmake

@@ -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}$")

+ 1 - 0
Tests/RunCMake/install/TARGETS-NAMELINK_COMPONENT-bad-all-result.txt

@@ -0,0 +1 @@
+1

+ 5 - 0
Tests/RunCMake/install/TARGETS-NAMELINK_COMPONENT-bad-all-stderr.txt

@@ -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\)$

+ 9 - 0
Tests/RunCMake/install/TARGETS-NAMELINK_COMPONENT-bad-all.cmake

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

+ 1 - 0
Tests/RunCMake/install/TARGETS-NAMELINK_COMPONENT-bad-exc-result.txt

@@ -0,0 +1 @@
+1

+ 5 - 0
Tests/RunCMake/install/TARGETS-NAMELINK_COMPONENT-bad-exc-stderr.txt

@@ -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\)$

+ 10 - 0
Tests/RunCMake/install/TARGETS-NAMELINK_COMPONENT-bad-exc.cmake

@@ -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
+)

+ 11 - 0
Tests/RunCMake/install/TARGETS-NAMELINK_COMPONENT-dev-check.cmake

@@ -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}$")

+ 50 - 0
Tests/RunCMake/install/TARGETS-NAMELINK_COMPONENT-lib-check.cmake

@@ -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}$")

+ 38 - 0
Tests/RunCMake/install/TARGETS-NAMELINK_COMPONENT-uns-check.cmake

@@ -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}$")

+ 68 - 0
Tests/RunCMake/install/TARGETS-NAMELINK_COMPONENT.cmake

@@ -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
+)