diff options
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/ExportImport/Export/CMakeLists.txt | 33 | ||||
-rw-r--r-- | Tests/ExportImport/Export/testSharedLibRequiredUser.cpp | 10 | ||||
-rw-r--r-- | Tests/ExportImport/Export/testSharedLibRequiredUser.h | 12 | ||||
-rw-r--r-- | Tests/ExportImport/Export/testSharedLibRequiredUser2.cpp | 8 | ||||
-rw-r--r-- | Tests/ExportImport/Export/testSharedLibRequiredUser2.h | 14 | ||||
-rw-r--r-- | Tests/ExportImport/Import/try_compile/CMakeLists.txt | 27 | ||||
-rw-r--r-- | Tests/IncludeDirectories/CMP0021/CMakeLists.txt | 14 | ||||
-rw-r--r-- | Tests/IncludeDirectories/CMP0021/includes/cmp0021/cmp0021.h | 2 | ||||
-rw-r--r-- | Tests/IncludeDirectories/CMP0021/main.cpp | 11 | ||||
-rw-r--r-- | Tests/IncludeDirectories/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/RunCMake/Configure/FailCopyFileABI-check.cmake | 3 |
11 files changed, 130 insertions, 8 deletions
diff --git a/Tests/ExportImport/Export/CMakeLists.txt b/Tests/ExportImport/Export/CMakeLists.txt index b5b2027813..1f23b2ae79 100644 --- a/Tests/ExportImport/Export/CMakeLists.txt +++ b/Tests/ExportImport/Export/CMakeLists.txt @@ -213,6 +213,34 @@ set_property(TARGET testSharedLibRequired APPEND PROPERTY $<$<CXX_COMPILER_ID:GNU>:-DCUSTOM_COMPILE_OPTION> ) +add_library(testSharedLibRequiredUser SHARED testSharedLibRequiredUser.cpp) +generate_export_header(testSharedLibRequiredUser) +# LINK_PRIVATE so that it appears in the LINK_DEPENDENT_LIBRARIES, but not +# the INTERFACE_LINK_LIBRARIES. +set_property(TARGET testSharedLibRequiredUser APPEND PROPERTY + INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}>" +) +target_link_libraries(testSharedLibRequiredUser LINK_PRIVATE testSharedLibRequired) +install(FILES + "${CMAKE_CURRENT_SOURCE_DIR}/testSharedLibRequiredUser.h" + "${CMAKE_CURRENT_BINARY_DIR}/testsharedlibrequireduser_export.h" + DESTINATION include/testSharedLibRequiredUser +) + +cmake_policy(SET CMP0022 NEW) +add_library(testSharedLibRequiredUser2 SHARED testSharedLibRequiredUser2.cpp) +generate_export_header(testSharedLibRequiredUser2) +set_property(TARGET testSharedLibRequiredUser2 APPEND PROPERTY + INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}>" +) +set_property(TARGET testSharedLibRequiredUser2 PROPERTY LINK_LIBRARIES testSharedLibRequired) +set_property(TARGET testSharedLibRequiredUser2 PROPERTY INTERFACE_LINK_LIBRARIES testSharedLibRequired) +install(FILES + "${CMAKE_CURRENT_SOURCE_DIR}/testSharedLibRequiredUser2.h" + "${CMAKE_CURRENT_BINARY_DIR}/testsharedlibrequireduser2_export.h" + DESTINATION include/testSharedLibRequiredUser2 +) +cmake_policy(SET CMP0022 OLD) add_library(testSharedLibDepends SHARED testSharedLibDepends.cpp) set_property(TARGET testSharedLibDepends APPEND PROPERTY @@ -284,6 +312,8 @@ install(TARGETS testLibIncludeRequired5 testLibIncludeRequired6 testSharedLibRequired + testSharedLibRequiredUser + testSharedLibRequiredUser2 noIncludesInterface EXPORT RequiredExp DESTINATION lib INCLUDES DESTINATION @@ -384,7 +414,8 @@ add_subdirectory(sublib) # For CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE test. # Export from build tree. export(TARGETS testExe1 testLib1 testLib2 testLib3 testExe2libImp testLib3Imp testLib3ImpDep subdirlib - testSharedLibRequired testSharedLibDepends renamed_on_export + testSharedLibRequired testSharedLibRequiredUser testSharedLibRequiredUser2 + testSharedLibDepends renamed_on_export cmp0022NEW cmp0022OLD NAMESPACE bld_ FILE ExportBuildTree.cmake diff --git a/Tests/ExportImport/Export/testSharedLibRequiredUser.cpp b/Tests/ExportImport/Export/testSharedLibRequiredUser.cpp new file mode 100644 index 0000000000..5580005176 --- /dev/null +++ b/Tests/ExportImport/Export/testSharedLibRequiredUser.cpp @@ -0,0 +1,10 @@ + +#include "testSharedLibRequiredUser.h" + +#include "testSharedLibRequired.h" + +int TestSharedLibRequiredUser::foo() +{ + TestSharedLibRequired req; + return req.foo(); +} diff --git a/Tests/ExportImport/Export/testSharedLibRequiredUser.h b/Tests/ExportImport/Export/testSharedLibRequiredUser.h new file mode 100644 index 0000000000..58bcaa5070 --- /dev/null +++ b/Tests/ExportImport/Export/testSharedLibRequiredUser.h @@ -0,0 +1,12 @@ + +#ifndef TESTSHAREDLIBREQUIREDUSER_H +#define TESTSHAREDLIBREQUIREDUSER_H + +#include "testsharedlibrequireduser_export.h" + +struct TESTSHAREDLIBREQUIREDUSER_EXPORT TestSharedLibRequiredUser +{ + int foo(); +}; + +#endif diff --git a/Tests/ExportImport/Export/testSharedLibRequiredUser2.cpp b/Tests/ExportImport/Export/testSharedLibRequiredUser2.cpp new file mode 100644 index 0000000000..d671bf0651 --- /dev/null +++ b/Tests/ExportImport/Export/testSharedLibRequiredUser2.cpp @@ -0,0 +1,8 @@ + +#include "testSharedLibRequiredUser2.h" + +TestSharedLibRequired TestSharedLibRequiredUser2::foo() +{ + TestSharedLibRequired req; + return req; +} diff --git a/Tests/ExportImport/Export/testSharedLibRequiredUser2.h b/Tests/ExportImport/Export/testSharedLibRequiredUser2.h new file mode 100644 index 0000000000..a132940289 --- /dev/null +++ b/Tests/ExportImport/Export/testSharedLibRequiredUser2.h @@ -0,0 +1,14 @@ + +#ifndef TESTSHAREDLIBREQUIREDUSER2_H +#define TESTSHAREDLIBREQUIREDUSER2_H + +#include "testsharedlibrequireduser2_export.h" + +#include "testSharedLibRequired.h" + +struct TESTSHAREDLIBREQUIREDUSER2_EXPORT TestSharedLibRequiredUser2 +{ + TestSharedLibRequired foo(); +}; + +#endif diff --git a/Tests/ExportImport/Import/try_compile/CMakeLists.txt b/Tests/ExportImport/Import/try_compile/CMakeLists.txt index 5600dffdf6..10884616ba 100644 --- a/Tests/ExportImport/Import/try_compile/CMakeLists.txt +++ b/Tests/ExportImport/Import/try_compile/CMakeLists.txt @@ -5,17 +5,32 @@ find_package(testLibRequired 2.5 REQUIRED) include(CheckCXXSourceCompiles) -set(CMAKE_REQUIRED_LIBRARIES Req::testSharedLibRequired) +set(CMAKE_REQUIRED_LIBRARIES Req::testSharedLibRequiredUser) check_cxx_source_compiles( " -#include \"testSharedLibRequired.h\" +#include \"testSharedLibRequiredUser.h\" int main(int argc, char **argv) { - TestSharedLibRequired req; - return req.foo(); + TestSharedLibRequiredUser user; + return user.foo(); } -" SHARED_LIB_REQUIRED) +" SHARED_LIB_DEPENDS) -if(NOT SHARED_LIB_REQUIRED) +if(NOT SHARED_LIB_DEPENDS) + message(SEND_ERROR "try_compile with IMPORTED targets failed!\n\n${OUTPUT}") +endif() + +set(CMAKE_REQUIRED_LIBRARIES Req::testSharedLibRequiredUser2) +check_cxx_source_compiles( + " +#include \"testSharedLibRequiredUser2.h\" +int main(int argc, char **argv) +{ + TestSharedLibRequiredUser2 user; + return user.foo().foo(); +} +" SHARED_LIB_DEPENDS2) + +if(NOT SHARED_LIB_DEPENDS2) message(SEND_ERROR "try_compile with IMPORTED targets failed!\n\n${OUTPUT}") endif() diff --git a/Tests/IncludeDirectories/CMP0021/CMakeLists.txt b/Tests/IncludeDirectories/CMP0021/CMakeLists.txt new file mode 100644 index 0000000000..0b9aee899a --- /dev/null +++ b/Tests/IncludeDirectories/CMP0021/CMakeLists.txt @@ -0,0 +1,14 @@ + +cmake_policy(SET CMP0021 OLD) +add_executable(cmp0021exe main.cpp) + +if(NOT CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/includes") + execute_process(COMMAND ${CMAKE_COMMAND} -E + copy_directory + "${CMAKE_CURRENT_SOURCE_DIR}/includes" + "${CMAKE_CURRENT_BINARY_DIR}/includes" + ) +endif() +set_property(TARGET cmp0021exe PROPERTY + INCLUDE_DIRECTORIES includes/cmp0021) diff --git a/Tests/IncludeDirectories/CMP0021/includes/cmp0021/cmp0021.h b/Tests/IncludeDirectories/CMP0021/includes/cmp0021/cmp0021.h new file mode 100644 index 0000000000..3d49b31d57 --- /dev/null +++ b/Tests/IncludeDirectories/CMP0021/includes/cmp0021/cmp0021.h @@ -0,0 +1,2 @@ + +#define CMP0021_DEFINE diff --git a/Tests/IncludeDirectories/CMP0021/main.cpp b/Tests/IncludeDirectories/CMP0021/main.cpp new file mode 100644 index 0000000000..f886c4629c --- /dev/null +++ b/Tests/IncludeDirectories/CMP0021/main.cpp @@ -0,0 +1,11 @@ + +#include "cmp0021.h" + +#ifndef CMP0021_DEFINE +#error Expected CMP0021_DEFINE +#endif + +int main(int, char **) +{ + return 0; +} diff --git a/Tests/IncludeDirectories/CMakeLists.txt b/Tests/IncludeDirectories/CMakeLists.txt index 596a280660..35ad8dc90d 100644 --- a/Tests/IncludeDirectories/CMakeLists.txt +++ b/Tests/IncludeDirectories/CMakeLists.txt @@ -86,3 +86,7 @@ get_target_property(incs empty_entry_test INCLUDE_DIRECTORIES) if (NOT incs STREQUAL ";/one/two") message(SEND_ERROR "Empty include_directories entry was not ignored.") endif() + +if(NOT CMAKE_GENERATOR STREQUAL Xcode AND NOT CMAKE_GENERATOR STREQUAL Ninja) + add_subdirectory(CMP0021) +endif() diff --git a/Tests/RunCMake/Configure/FailCopyFileABI-check.cmake b/Tests/RunCMake/Configure/FailCopyFileABI-check.cmake index c439aac7d2..db0cb0a346 100644 --- a/Tests/RunCMake/Configure/FailCopyFileABI-check.cmake +++ b/Tests/RunCMake/Configure/FailCopyFileABI-check.cmake @@ -4,10 +4,11 @@ if(EXISTS "${log}") else() set(error_log "") endif() -if(NOT error_log MATCHES "Cannot copy output executable.* +string(REPLACE "\r\n" "\n" regex "Cannot copy output executable.* to destination specified by COPY_FILE:.* Unable to find the executable at any of: .*\\.missing") +if(NOT error_log MATCHES "${regex}") string(REGEX REPLACE "\n" "\n " error_log " ${error_log}") set(RunCMake_TEST_FAILED "Log file:\n ${log}\ndoes not have expected COPY_FILE failure message:\n${error_log}") endif() |