diff options
Diffstat (limited to 'Tests/CMakeOnly')
-rw-r--r-- | Tests/CMakeOnly/AllFindModules/CMakeLists.txt | 84 | ||||
-rw-r--r-- | Tests/CMakeOnly/CMakeLists.txt | 30 | ||||
-rw-r--r-- | Tests/CMakeOnly/CheckCXXCompilerFlag/CMakeLists.txt | 58 | ||||
-rw-r--r-- | Tests/CMakeOnly/CheckCXXSymbolExists/CMakeLists.txt | 62 | ||||
-rw-r--r-- | Tests/CMakeOnly/CheckLanguage/CMakeLists.txt | 22 | ||||
-rw-r--r-- | Tests/CMakeOnly/CheckSymbolExists/CMakeLists.txt | 51 | ||||
-rw-r--r-- | Tests/CMakeOnly/CheckSymbolExists/cm_cse.h | 6 | ||||
-rw-r--r-- | Tests/CMakeOnly/LinkInterfaceLoop/CMakeLists.txt | 27 | ||||
-rw-r--r-- | Tests/CMakeOnly/LinkInterfaceLoop/lib.c | 1 | ||||
-rw-r--r-- | Tests/CMakeOnly/LinkInterfaceLoop/main.c | 1 | ||||
-rw-r--r-- | Tests/CMakeOnly/ProjectInclude/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/CMakeOnly/ProjectInclude/include.cmake | 1 | ||||
-rw-r--r-- | Tests/CMakeOnly/TargetScope/CMakeLists.txt | 13 | ||||
-rw-r--r-- | Tests/CMakeOnly/TargetScope/Sib/CMakeLists.txt | 6 | ||||
-rw-r--r-- | Tests/CMakeOnly/TargetScope/Sub/CMakeLists.txt | 9 | ||||
-rw-r--r-- | Tests/CMakeOnly/TargetScope/Sub/Sub/CMakeLists.txt | 6 | ||||
-rw-r--r-- | Tests/CMakeOnly/Test.cmake.in | 13 |
17 files changed, 394 insertions, 0 deletions
diff --git a/Tests/CMakeOnly/AllFindModules/CMakeLists.txt b/Tests/CMakeOnly/AllFindModules/CMakeLists.txt new file mode 100644 index 000000000..551cee3bc --- /dev/null +++ b/Tests/CMakeOnly/AllFindModules/CMakeLists.txt @@ -0,0 +1,84 @@ +cmake_minimum_required (VERSION 2.8) +project(AllFindModules) + +if (POLICY CMP0017) + cmake_policy(SET CMP0017 NEW) +endif () + +# Avoid ctest truncation of output +message(STATUS "CTEST_FULL_OUTPUT") + +file(GLOB FIND_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/../../../Modules/Find*.cmake" ) + +macro(do_find MODULE_NAME) + message(STATUS " Checking Find${MODULE_NAME}") + find_package(${MODULE_NAME}) +endmacro(do_find) + +# It is only possible to use either Qt3 or Qt4 in one project. +# Since FindQt will complain if both are found we explicitly request Qt4 here +# and filter out FindQt3. FindKDE3 also depends on Qt3 and +# is therefore also blocked +set(DESIRED_QT_VERSION 4) +set(NO_QT4_MODULES "Qt3" "KDE3") + +# These modules are named Find*.cmake, but are nothing that works in +# find_package(). +set(NO_FIND_MODULES "PackageHandleStandardArgs" "PackageMessage") + +foreach(FIND_MODULE ${FIND_MODULES}) + string(REGEX REPLACE ".*/Find(.*)\\.cmake$" "\\1" MODULE_NAME "${FIND_MODULE}") + + list(FIND NO_QT4_MODULES ${MODULE_NAME} NO_QT4_INDEX) + list(FIND NO_FIND_MODULES ${MODULE_NAME} NO_FIND_INDEX) + if (NO_QT4_INDEX EQUAL -1 AND NO_FIND_INDEX EQUAL -1) + do_find(${MODULE_NAME}) + endif () + +endforeach(FIND_MODULE) + +# Qt4 is not present, so we can check Qt3 +if (NOT QT4_FOUND) + set(DESIRED_QT_VERSION 3) + foreach(FIND_MODULE ${NO_QT4_MODULES} "Qt") + do_find(${FIND_MODULE}) + endforeach(FIND_MODULE) +endif (NOT QT4_FOUND) + +macro(check_version_string MODULE_NAME VERSION_VAR) + if (${MODULE_NAME}_FOUND) + if (DEFINED ${VERSION_VAR}) + message(STATUS "${VERSION_VAR}='${${VERSION_VAR}}'") + if (NOT ${VERSION_VAR} MATCHES "^[0-9]") + message(SEND_ERROR "unexpected: ${VERSION_VAR} does not begin with a decimal digit") + endif() + if ("${${VERSION_VAR}}" STREQUAL "") + message(SEND_ERROR "unexpected: ${VERSION_VAR} is empty") + endif() + if (${VERSION_VAR} VERSION_EQUAL 0) + message(SEND_ERROR "unexpected: ${VERSION_VAR} is VERSION_EQUAL 0") + endif() + if (NOT ${VERSION_VAR} VERSION_GREATER 0) + message(SEND_ERROR "unexpected: ${VERSION_VAR} is NOT VERSION_GREATER 0") + endif() + else() + message(SEND_ERROR "${MODULE_NAME}_FOUND is set but version number variable ${VERSION_VAR} is NOT DEFINED") + endif() + endif () +endmacro(check_version_string) + +# If any of these modules reported that it was found a version number should have been +# reported. + +foreach(VTEST ALSA ARMADILLO BZIP2 CUPS CURL EXPAT FREETYPE GETTEXT GIT HSPELL + JASPER LIBLZMA LIBXML2 LIBXSLT PERL PKG_CONFIG PostgreSQL TIFF ZLIB) + check_version_string(${VTEST} ${VTEST}_VERSION_STRING) +endforeach(VTEST) + +foreach(VTEST BISON Boost CUDA DOXYGEN FLEX GIF GTK2 LibArchive OPENSCENEGRAPH + RUBY SWIG) + check_version_string(${VTEST} ${VTEST}_VERSION) +endforeach(VTEST) + +check_version_string(PYTHONINTERP PYTHON_VERSION_STRING) +check_version_string(SUBVERSION Subversion_VERSION_SVN) diff --git a/Tests/CMakeOnly/CMakeLists.txt b/Tests/CMakeOnly/CMakeLists.txt new file mode 100644 index 000000000..a1551ca03 --- /dev/null +++ b/Tests/CMakeOnly/CMakeLists.txt @@ -0,0 +1,30 @@ +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Test.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/Test.cmake @ONLY) + +macro(add_CMakeOnly_test test) + add_test(CMakeOnly.${test} ${CMAKE_CMAKE_COMMAND} + -DTEST=${test} + -P ${CMAKE_CURRENT_BINARY_DIR}/Test.cmake + ) +endmacro() + +add_CMakeOnly_test(LinkInterfaceLoop) +set_property(TEST CMakeOnly.LinkInterfaceLoop PROPERTY TIMEOUT 90) + +add_CMakeOnly_test(CheckSymbolExists) + +add_CMakeOnly_test(CheckCXXSymbolExists) + +add_CMakeOnly_test(CheckCXXCompilerFlag) + +add_CMakeOnly_test(CheckLanguage) + +add_CMakeOnly_test(AllFindModules) + +add_CMakeOnly_test(TargetScope) + +add_test(CMakeOnly.ProjectInclude ${CMAKE_CMAKE_COMMAND} + -DTEST=ProjectInclude + -DCMAKE_ARGS=-DCMAKE_PROJECT_ProjectInclude_INCLUDE=${CMAKE_CURRENT_SOURCE_DIR}/ProjectInclude/include.cmake + -P ${CMAKE_CURRENT_BINARY_DIR}/Test.cmake + ) diff --git a/Tests/CMakeOnly/CheckCXXCompilerFlag/CMakeLists.txt b/Tests/CMakeOnly/CheckCXXCompilerFlag/CMakeLists.txt new file mode 100644 index 000000000..e205330b0 --- /dev/null +++ b/Tests/CMakeOnly/CheckCXXCompilerFlag/CMakeLists.txt @@ -0,0 +1,58 @@ +cmake_minimum_required(VERSION 2.8) +project(CheckCXXCompilerFlag) + +message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)") +set(CMAKE_VERBOSE_MAKEFILE 1) + +macro(TEST_FAIL value msg) + if (${value}) + message (SEND_ERROR "Test fail:" ${msg} ${Out} ) + endif () +endmacro() + +macro(TEST_PASS value msg) + if (NOT ${value}) + message (SEND_ERROR "Test fail:" ${msg} ${Out} ) + endif () +endmacro() + +if(CMAKE_COMPILER_IS_GNUCXX) + exec_program(${CMAKE_C_COMPILER} ARGS --version OUTPUT_VARIABLE _gcc_version_info) + string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}") + # gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the + # patch level, handle this here: + if(NOT _gcc_version) + string (REGEX REPLACE ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0" _gcc_version "${_gcc_version_info}") + endif() +endif() + +if(CMAKE_CXX_COMPILER_ID MATCHES Clang) + exec_program(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE _clang_version_info) + string (REGEX REPLACE ".*version ([0-9]\\.[0-9]).*" "\\1" _clang_version "${_clang_version_info}") +endif() + +if(CMAKE_CXX_COMPILER_ID MATCHES Intel) + exec_program(${CMAKE_CXX_COMPILER} ARGS -V OUTPUT_VARIABLE _intel_version_info) + string (REGEX REPLACE ".*Version ([0-9]+(\\.[0-9]+)+).*" "\\1" _intel_version "${_intel_version_info}") +endif() + +message("Platform:\n WIN32: ${WIN32}\n UNIX: ${UNIX}\n APPLE: ${APPLE}\n MINGW: ${MINGW}\n CYGWIN: ${CYGWIN}\n" + " MSVC: ${MSVC}\n MSVC60: ${MSVC60}\n MSVC70: ${MSVC70}\n MSVC71: ${MSVC71}\n MSVC80: ${MSVC80}\n MSVC90: ${MSVC90}\n MSVC10: ${MSVC10}\n" + " GCC: ${_gcc_version}\n" + " Clang: ${_clang_version}\n" + " Intel: ${_intel_version}\n" +) + +include(CheckCXXCompilerFlag) + +check_cxx_compiler_flag(-fvisibility=hidden HAS_HIDDEN_VISIBILITY) + +message("HAS_HIDDEN_VISIBILITY: ${HAS_HIDDEN_VISIBILITY}\n\nCOMPILE OUTPUT:\n${OUTPUT}") + +if(CMAKE_COMPILER_IS_GNUCXX) + if(NOT WIN32) +# test_pass(HAS_HIDDEN_VISIBILITY "GCC should support hidden visibility, but does not.") + endif() +else() + message("Unhandled Platform") +endif() diff --git a/Tests/CMakeOnly/CheckCXXSymbolExists/CMakeLists.txt b/Tests/CMakeOnly/CheckCXXSymbolExists/CMakeLists.txt new file mode 100644 index 000000000..1c978c181 --- /dev/null +++ b/Tests/CMakeOnly/CheckCXXSymbolExists/CMakeLists.txt @@ -0,0 +1,62 @@ +# This test will verify if CheckCXXSymbolExists only report symbols available +# for linking that really are. You can find some documentation on this in +# bug 11333 where we found out that gcc would optimize out the actual +# reference to the symbol, so symbols that are in fact _not_ available in the +# given libraries (but seen in header) were reported as present. +# +# If you change this test do not forget to change the CheckSymbolExists +# test, too. + +PROJECT(CheckCXXSymbolExists CXX) + +CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) + +SET(CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/../CheckSymbolExists") + +INCLUDE(CheckCXXSymbolExists) + +foreach(_config_type Release RelWithDebInfo MinSizeRel Debug) + set(CMAKE_TRY_COMPILE_CONFIGURATION ${_config_type}) + unset(CSE_RESULT_${_config_type} CACHE) + MESSAGE(STATUS "Testing configuration ${_config_type}") + check_cxx_symbol_exists(non_existent_function_for_symbol_test "cm_cse.h" CSE_RESULT_${_config_type}) + + IF (CSE_RESULT_${_config_type}) + MESSAGE(SEND_ERROR "CheckCXXSymbolExists reported a nonexistent symbol as existing in configuration ${_config_type}") + ENDIF (CSE_RESULT_${_config_type}) +endforeach() + +set(CMAKE_TRY_COMPILE_CONFIGURATION ${CMAKE_BUILD_TYPE}) +unset(CSE_RESULT_ERRNO_CERRNO CACHE) + +MESSAGE(STATUS "Checking <cerrno>") + +check_cxx_symbol_exists(errno "cerrno" CSE_RESULT_ERRNO_CERRNO) + +IF (NOT CSE_RESULT_ERRNO_CERRNO) + unset(CSE_RESULT_ERRNO_ERRNOH CACHE) + + MESSAGE(STATUS "Checking <errno.h>") + + check_cxx_symbol_exists(errno "errno.h" CSE_RESULT_ERRNO_ERRNOH) + + IF (NOT CSE_RESULT_ERRNO_ERRNOH) + MESSAGE(SEND_ERROR "CheckCXXSymbolExists did not find errno in <cerrno> and <errno.h>") + ELSE (NOT CSE_RESULT_ERRNO_ERRNOH) + MESSAGE(STATUS "errno found in <errno.h>") + ENDIF (NOT CSE_RESULT_ERRNO_ERRNOH) +ELSE (NOT CSE_RESULT_ERRNO_CERRNO) + MESSAGE(STATUS "errno found in <cerrno>") +ENDIF (NOT CSE_RESULT_ERRNO_CERRNO) + +IF (CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") + unset(CSE_RESULT_O3 CACHE) + MESSAGE(STATUS "Testing with optimization -O3") + + check_cxx_symbol_exists(non_existent_function_for_symbol_test "cm_cse.h" CSE_RESULT_O3) + + IF (CSE_RESULT_O3) + MESSAGE(SEND_ERROR "CheckCXXSymbolExists reported a nonexistent symbol as existing with optimization -O3") + ENDIF (CSE_RESULT_O3) +ENDIF (CMAKE_COMPILER_IS_GNUCXX) diff --git a/Tests/CMakeOnly/CheckLanguage/CMakeLists.txt b/Tests/CMakeOnly/CheckLanguage/CMakeLists.txt new file mode 100644 index 000000000..f5336dc03 --- /dev/null +++ b/Tests/CMakeOnly/CheckLanguage/CMakeLists.txt @@ -0,0 +1,22 @@ +cmake_minimum_required (VERSION 2.8) +project(CheckLanguage NONE) +include(CheckLanguage) + +set(langs ) +set(expect_C 1) +set(expect_CXX 1) +unset(expect_Fortran) +set(expect_NoSuchLanguage 0) +foreach(lang C CXX Fortran NoSuchLanguage) + check_language(${lang}) + if(NOT DEFINED CMAKE_${lang}_COMPILER) + message(FATAL_ERROR "check_language(${lang}) did not set result") + endif() + if(DEFINED expect_${lang}) + if(expect_${lang} AND NOT CMAKE_${lang}_COMPILER) + message(FATAL_ERROR "check_language(${lang}) should not fail!") + elseif(NOT expect_${lang} AND CMAKE_${lang}_COMPILER) + message(FATAL_ERROR "check_language(${lang}) should not succeed!") + endif() + endif() +endforeach() diff --git a/Tests/CMakeOnly/CheckSymbolExists/CMakeLists.txt b/Tests/CMakeOnly/CheckSymbolExists/CMakeLists.txt new file mode 100644 index 000000000..7c969d3be --- /dev/null +++ b/Tests/CMakeOnly/CheckSymbolExists/CMakeLists.txt @@ -0,0 +1,51 @@ +# This test will verify if CheckSymbolExists only report symbols available +# for linking that really are. You can find some documentation on this in +# bug 11333 where we found out that gcc would optimize out the actual +# reference to the symbol, so symbols that are in fact _not_ available in the +# given libraries (but seen in header) were reported as present. +# +# If you change this test do not forget to change the CheckCXXSymbolExists +# test, too. + +PROJECT(CheckSymbolExists C) + +CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) + +SET(CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}") + +INCLUDE(CheckSymbolExists) + +foreach(_config_type Release RelWithDebInfo MinSizeRel Debug) + set(CMAKE_TRY_COMPILE_CONFIGURATION ${_config_type}) + unset(CSE_RESULT_${_config_type} CACHE) + MESSAGE(STATUS "Testing configuration ${_config_type}") + + check_symbol_exists(non_existent_function_for_symbol_test "cm_cse.h" CSE_RESULT_${_config_type}) + + IF (CSE_RESULT_${_config_type}) + MESSAGE(SEND_ERROR "CheckSymbolExists reported a nonexistent symbol as existing in configuration ${_config_type}") + ENDIF (CSE_RESULT_${_config_type}) +endforeach() + +set(CMAKE_TRY_COMPILE_CONFIGURATION ${CMAKE_BUILD_TYPE}) +unset(CSE_RESULT_ERRNO CACHE) + +check_symbol_exists(errno "errno.h" CSE_RESULT_ERRNO) + +IF (NOT CSE_RESULT_ERRNO) + MESSAGE(SEND_ERROR "CheckSymbolExists did not find errno in <errno.h>") +ELSE (NOT CSE_RESULT_ERRNO) + MESSAGE(STATUS "errno found as expected") +ENDIF (NOT CSE_RESULT_ERRNO) + +IF (CMAKE_COMPILER_IS_GNUCC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") + unset(CSE_RESULT_O3 CACHE) + MESSAGE(STATUS "Testing with optimization -O3") + + check_symbol_exists(non_existent_function_for_symbol_test "cm_cse.h" CSE_RESULT_O3) + + IF (CSE_RESULT_O3) + MESSAGE(SEND_ERROR "CheckSymbolExists reported a nonexistent symbol as existing with optimization -O3") + ENDIF (CSE_RESULT_O3) +ENDIF (CMAKE_COMPILER_IS_GNUCC) diff --git a/Tests/CMakeOnly/CheckSymbolExists/cm_cse.h b/Tests/CMakeOnly/CheckSymbolExists/cm_cse.h new file mode 100644 index 000000000..4f41c7696 --- /dev/null +++ b/Tests/CMakeOnly/CheckSymbolExists/cm_cse.h @@ -0,0 +1,6 @@ +#ifndef _CSE_DUMMY_H +#define _CSE_DUMMY_H + +int non_existent_function_for_symbol_test(); + +#endif diff --git a/Tests/CMakeOnly/LinkInterfaceLoop/CMakeLists.txt b/Tests/CMakeOnly/LinkInterfaceLoop/CMakeLists.txt new file mode 100644 index 000000000..56e449afd --- /dev/null +++ b/Tests/CMakeOnly/LinkInterfaceLoop/CMakeLists.txt @@ -0,0 +1,27 @@ +cmake_minimum_required (VERSION 2.8) +project(LinkInterfaceLoop C) + +# Add a shared library that incorrectly names itself as a +# dependency, thus forming a cycle. +add_library(A SHARED IMPORTED) +set_target_properties(A PROPERTIES + IMPORTED_LINK_DEPENDENT_LIBRARIES A + IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/dirA/A" + ) + +# Add a shared library that incorrectly names itself in +# its link interface, thus forming a cycle. +add_library(B SHARED IMPORTED) +set_target_properties(B PROPERTIES + IMPORTED_LINK_INTERFACE_LIBRARIES B + IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/dirB/B" + ) + +# Add a shared library with an empty link interface +# that depends on two shared libraries. +add_library(C SHARED lib.c) +set_property(TARGET C PROPERTY LINK_INTERFACE_LIBRARIES "") +target_link_libraries(C B A) + +add_executable(main main.c) +target_link_libraries(main C) diff --git a/Tests/CMakeOnly/LinkInterfaceLoop/lib.c b/Tests/CMakeOnly/LinkInterfaceLoop/lib.c new file mode 100644 index 000000000..fede1d61f --- /dev/null +++ b/Tests/CMakeOnly/LinkInterfaceLoop/lib.c @@ -0,0 +1 @@ +int lib(void) { return 0; } diff --git a/Tests/CMakeOnly/LinkInterfaceLoop/main.c b/Tests/CMakeOnly/LinkInterfaceLoop/main.c new file mode 100644 index 000000000..78f2de106 --- /dev/null +++ b/Tests/CMakeOnly/LinkInterfaceLoop/main.c @@ -0,0 +1 @@ +int main(void) { return 0; } diff --git a/Tests/CMakeOnly/ProjectInclude/CMakeLists.txt b/Tests/CMakeOnly/ProjectInclude/CMakeLists.txt new file mode 100644 index 000000000..a9abb4ad7 --- /dev/null +++ b/Tests/CMakeOnly/ProjectInclude/CMakeLists.txt @@ -0,0 +1,4 @@ +project(ProjectInclude) +if(NOT AUTO_INCLUDE) + message(FATAL_ERROR "include file not found") +endif() diff --git a/Tests/CMakeOnly/ProjectInclude/include.cmake b/Tests/CMakeOnly/ProjectInclude/include.cmake new file mode 100644 index 000000000..527ebe7d0 --- /dev/null +++ b/Tests/CMakeOnly/ProjectInclude/include.cmake @@ -0,0 +1 @@ +set(AUTO_INCLUDE TRUE) diff --git a/Tests/CMakeOnly/TargetScope/CMakeLists.txt b/Tests/CMakeOnly/TargetScope/CMakeLists.txt new file mode 100644 index 000000000..fa5d8e234 --- /dev/null +++ b/Tests/CMakeOnly/TargetScope/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required (VERSION 2.8) +project(TargetScope NONE) + +add_subdirectory(Sub) + +if(TARGET SubLibLocal) + message(FATAL_ERROR "SubLibLocal visible in top directory") +endif() +if(NOT TARGET SubLibGlobal) + message(FATAL_ERROR "SubLibGlobal not visible in top directory") +endif() + +add_subdirectory(Sib) diff --git a/Tests/CMakeOnly/TargetScope/Sib/CMakeLists.txt b/Tests/CMakeOnly/TargetScope/Sib/CMakeLists.txt new file mode 100644 index 000000000..7f6f4e8fd --- /dev/null +++ b/Tests/CMakeOnly/TargetScope/Sib/CMakeLists.txt @@ -0,0 +1,6 @@ +if(TARGET SubLibLocal) + message(FATAL_ERROR "SubLibLocal visible in sibling directory") +endif() +if(NOT TARGET SubLibGlobal) + message(FATAL_ERROR "SubLibGlobal not visible in sibling directory") +endif() diff --git a/Tests/CMakeOnly/TargetScope/Sub/CMakeLists.txt b/Tests/CMakeOnly/TargetScope/Sub/CMakeLists.txt new file mode 100644 index 000000000..27318f585 --- /dev/null +++ b/Tests/CMakeOnly/TargetScope/Sub/CMakeLists.txt @@ -0,0 +1,9 @@ +add_library(SubLibLocal UNKNOWN IMPORTED) +add_library(SubLibGlobal UNKNOWN IMPORTED GLOBAL) +add_subdirectory(Sub) +if(NOT TARGET SubLibLocal) + message(FATAL_ERROR "SubLibLocal not visible in own directory") +endif() +if(NOT TARGET SubLibGlobal) + message(FATAL_ERROR "SubLibGlobal not visible in own directory") +endif() diff --git a/Tests/CMakeOnly/TargetScope/Sub/Sub/CMakeLists.txt b/Tests/CMakeOnly/TargetScope/Sub/Sub/CMakeLists.txt new file mode 100644 index 000000000..a351daadf --- /dev/null +++ b/Tests/CMakeOnly/TargetScope/Sub/Sub/CMakeLists.txt @@ -0,0 +1,6 @@ +if(NOT TARGET SubLibLocal) + message(FATAL_ERROR "SubLibLocal not visible in subdirectory") +endif() +if(NOT TARGET SubLibGlobal) + message(FATAL_ERROR "SubLibGlobal not visible in subdirectory") +endif() diff --git a/Tests/CMakeOnly/Test.cmake.in b/Tests/CMakeOnly/Test.cmake.in new file mode 100644 index 000000000..42af06891 --- /dev/null +++ b/Tests/CMakeOnly/Test.cmake.in @@ -0,0 +1,13 @@ +set(source_dir "@CMAKE_CURRENT_SOURCE_DIR@/${TEST}") +set(binary_dir "@CMAKE_CURRENT_BINARY_DIR@/${TEST}-build") +file(REMOVE_RECURSE "${binary_dir}") +file(MAKE_DIRECTORY "${binary_dir}") +execute_process( + COMMAND ${CMAKE_COMMAND} ${CMAKE_ARGS} + "${source_dir}" -G "@CMAKE_TEST_GENERATOR@" + WORKING_DIRECTORY "${binary_dir}" + RESULT_VARIABLE result + ) +if(result) + message(FATAL_ERROR "CMake failed to configure ${TEST}") +endif() |