diff options
author | Nils Gladitz <nilsgladitz@gmail.com> | 2013-12-25 16:59:24 (GMT) |
---|---|---|
committer | Nils Gladitz <nilsgladitz@gmail.com> | 2014-01-08 15:28:14 (GMT) |
commit | be0458c5620d611a772fd3a25312cf5ae6cb492c (patch) | |
tree | a026c5ba04bd2404ce29ae77b22485a865f92bd2 /Tests | |
parent | b87ce492ab4600091262593499095ea5db1ae0ca (diff) | |
download | CMake-be0458c5620d611a772fd3a25312cf5ae6cb492c.zip CMake-be0458c5620d611a772fd3a25312cf5ae6cb492c.tar.gz CMake-be0458c5620d611a772fd3a25312cf5ae6cb492c.tar.bz2 |
InstallRules: added new variable to disable generation of install rules
The boolean variable CMAKE_SKIP_INSTALL_RULES
allows disabling generation of install rules for projects which don't
want them.
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/CMakeLists.txt | 13 | ||||
-rw-r--r-- | Tests/MissingInstall/CMakeLists.txt | 25 | ||||
-rw-r--r-- | Tests/MissingInstall/ExpectInstallFail.cmake | 18 | ||||
-rw-r--r-- | Tests/MissingInstall/mybin.cpp | 1 | ||||
-rw-r--r-- | Tests/RunCMake/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CMakeLists.txt.orig | 142 | ||||
-rw-r--r-- | Tests/RunCMake/install/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/RunCMake/install/RunCMakeTest.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/install/SkipInstallRulesNoWarning1-check.cmake | 9 | ||||
-rw-r--r-- | Tests/RunCMake/install/SkipInstallRulesNoWarning1-stderr.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/install/SkipInstallRulesNoWarning1.cmake | 1 | ||||
-rw-r--r-- | Tests/RunCMake/install/SkipInstallRulesNoWarning2-check.cmake | 9 | ||||
-rw-r--r-- | Tests/RunCMake/install/SkipInstallRulesNoWarning2-stderr.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/install/SkipInstallRulesNoWarning2.cmake | 1 | ||||
-rw-r--r-- | Tests/RunCMake/install/SkipInstallRulesWarning-check.cmake | 9 | ||||
-rw-r--r-- | Tests/RunCMake/install/SkipInstallRulesWarning-stderr.txt | 3 | ||||
-rw-r--r-- | Tests/RunCMake/install/SkipInstallRulesWarning.cmake | 2 |
17 files changed, 244 insertions, 0 deletions
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 5ea604f..c992d1d 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -742,6 +742,19 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/ --test-command ${SimpleInstallInstallDir}/MyTest/bin/SimpleInstExeS2) list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SimpleInstallS2") + set(MissingInstallInstallDir + "${CMake_BINARY_DIR}/Tests/MissingInstall/InstallDirectory") + add_test(MissingInstall ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMake_SOURCE_DIR}/Tests/MissingInstall" + "${CMake_BINARY_DIR}/Tests/MissingInstall" + ${build_generator_args} + --build-project TestMissingInstall + --build-two-config + --build-options ${build_options} + "-DCMAKE_INSTALL_PREFIX:PATH=${MissingInstallInstallDir}") + list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/MissingInstall") + # By default, run the CPackComponents test if the CTEST_TEST_CPACK # option is ON: # diff --git a/Tests/MissingInstall/CMakeLists.txt b/Tests/MissingInstall/CMakeLists.txt new file mode 100644 index 0000000..91624f7 --- /dev/null +++ b/Tests/MissingInstall/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required (VERSION 2.8.12) +project(TestMissingInstall) + +set(CMAKE_SKIP_INSTALL_RULES ON) + +# Skip the dependency that causes a build when installing. This +# avoids infinite loops when the post-build rule below installs. +set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY 1) +set(CMAKE_SKIP_PACKAGE_ALL_DEPENDENCY 1) + +if(CMAKE_CONFIGURATION_TYPES) + set(MULTI_CONFIG ON) +else() + set(MULTI_CONFIG OFF) +endif() + +add_executable(mybin mybin.cpp) +install(TARGETS mybin RUNTIME DESTINATION bin) + +add_custom_command(TARGET mybin + POST_BUILD + COMMAND ${CMAKE_COMMAND} "-DMULTI_CONFIG=${MULTI_CONFIG}" + -P ${CMAKE_CURRENT_SOURCE_DIR}/ExpectInstallFail.cmake + COMMENT "Install Project" +) diff --git a/Tests/MissingInstall/ExpectInstallFail.cmake b/Tests/MissingInstall/ExpectInstallFail.cmake new file mode 100644 index 0000000..3d677bf --- /dev/null +++ b/Tests/MissingInstall/ExpectInstallFail.cmake @@ -0,0 +1,18 @@ +if(MULTI_CONFIG) + set(SI_CONFIG --config $<CONFIGURATION>) +else() + set(SI_CONFIG) +endif() + +execute_process( + COMMAND ${CMAKE_COMMAND} + --build . + --target install ${SI_CONFIG} + RESULT_VARIABLE RESULT + OUTPUT_VARIABLE OUTPUT + ERROR_VARIABLE ERROR +) + +if(RESULT EQUAL 0) + message(FATAL_ERROR "install should have failed") +endif() diff --git a/Tests/MissingInstall/mybin.cpp b/Tests/MissingInstall/mybin.cpp new file mode 100644 index 0000000..237c8ce --- /dev/null +++ b/Tests/MissingInstall/mybin.cpp @@ -0,0 +1 @@ +int main() {} diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 96b0543..e091155 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -140,3 +140,5 @@ add_RunCMake_test(File_Generate) add_RunCMake_test(ExportWithoutLanguage) add_RunCMake_test(target_link_libraries) add_RunCMake_test(CheckModules) + +add_RunCMake_test(install) diff --git a/Tests/RunCMake/CMakeLists.txt.orig b/Tests/RunCMake/CMakeLists.txt.orig new file mode 100644 index 0000000..96b0543 --- /dev/null +++ b/Tests/RunCMake/CMakeLists.txt.orig @@ -0,0 +1,142 @@ +# This directory contains tests that run CMake to configure a project +# but do not actually build anything. To add a test: +# +# 1.) Add a subdirectory named for the test. +# +# 2.) Call add_RunCMake_test and pass the test directory name. +# +# 3.) Create a RunCMakeTest.cmake script in the directory containing +# include(RunCMake) +# run_cmake(SubTest1) +# ... +# run_cmake(SubTestN) +# where SubTest1..SubTestN are sub-test names each corresponding to +# an independent CMake run and project configuration. +# +# 3.) Create a CMakeLists.txt file in the directory containing +# cmake_minimum_required(...) +# project(${RunCMake_TEST} NONE) # or languages needed +# include(${RunCMake_TEST}.cmake) +# where "${RunCMake_TEST}" is literal. A value for RunCMake_TEST +# will be passed to CMake by the run_cmake macro when running each +# sub-test. +# +# 4.) Create a <SubTest>.cmake file for each sub-test named above +# containing the actual test code. Optionally create files +# containing expected test results: +# <SubTest>-result.txt = Process result expected if not "0" +# <SubTest>-stdout.txt = Regex matching expected stdout content +# <SubTest>-stderr.txt = Regex matching expected stderr content +# <SubTest>-check.cmake = Custom result check +# Note that trailing newlines will be stripped from actual and expected test +# output before matching against the stdout and stderr expressions. +# The code in <SubTest>-check.cmake may use variables +# RunCMake_TEST_SOURCE_DIR = Top of test source tree +# RunCMake_TEST_BINARY_DIR = Top of test binary tree +# and an failure must store a message in RunCMake_TEST_FAILED. + +macro(add_RunCMake_test test) + add_test(RunCMake.${test} ${CMAKE_CMAKE_COMMAND} + -DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR} + -DRunCMake_GENERATOR=${CMAKE_TEST_GENERATOR} + -DRunCMake_GENERATOR_TOOLSET=${CMAKE_TEST_GENERATOR_TOOLSET} + -DRunCMake_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${test} + -DRunCMake_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/${test} + ${${test}_ARGS} + -P "${CMAKE_CURRENT_SOURCE_DIR}/${test}/RunCMakeTest.cmake" + ) +endmacro() + +if(XCODE_VERSION AND "${XCODE_VERSION}" VERSION_LESS 3) + set(GeneratorToolset_ARGS -DXCODE_BELOW_3=1) +endif() + +add_RunCMake_test(CMP0019) +add_RunCMake_test(CMP0022) +add_RunCMake_test(CMP0026) +add_RunCMake_test(CMP0027) +add_RunCMake_test(CMP0028) +add_RunCMake_test(CMP0037) +add_RunCMake_test(CMP0038) +add_RunCMake_test(CMP0039) +add_RunCMake_test(CMP0040) +add_RunCMake_test(CMP0041) +add_RunCMake_test(CTest) +if(UNIX AND "${CMAKE_TEST_GENERATOR}" MATCHES "Unix Makefiles") + add_RunCMake_test(CompilerChange) +endif() +add_RunCMake_test(CompilerNotFound) +add_RunCMake_test(Configure) +add_RunCMake_test(DisallowedCommands) +add_RunCMake_test(ExternalData) +add_RunCMake_test(FPHSA) +add_RunCMake_test(GeneratorExpression) +add_RunCMake_test(GeneratorToolset) +add_RunCMake_test(TargetPropertyGeneratorExpressions) +add_RunCMake_test(Languages) +add_RunCMake_test(ObjectLibrary) +if(NOT WIN32) + add_RunCMake_test(PositionIndependentCode) + set(SKIP_VISIBILITY 0) + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" AND "${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS 4.2) + set(SKIP_VISIBILITY 1) + endif() + + if (CMAKE_CXX_COMPILER_ID MATCHES Watcom + OR CMAKE_SYSTEM_NAME MATCHES IRIX64 + OR CMAKE_CXX_COMPILER_ID MATCHES HP + OR CMAKE_CXX_COMPILER_ID MATCHES XL + OR CMAKE_CXX_COMPILER_ID MATCHES SunPro) + set(SKIP_VISIBILITY 1) + endif() + + if (NOT SKIP_VISIBILITY) + add_RunCMake_test(VisibilityPreset) + endif() +endif() +if (QT4_FOUND) + set(CompatibleInterface_ARGS -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}) +endif() +add_RunCMake_test(CompatibleInterface) +add_RunCMake_test(Syntax) + +add_RunCMake_test(add_dependencies) +add_RunCMake_test(build_command) +add_RunCMake_test(export) +add_RunCMake_test(cmake_minimum_required) +add_RunCMake_test(find_package) +add_RunCMake_test(get_filename_component) +add_RunCMake_test(if) +add_RunCMake_test(include) +add_RunCMake_test(include_directories) +add_RunCMake_test(list) +add_RunCMake_test(message) +add_RunCMake_test(string) +add_RunCMake_test(try_compile) +add_RunCMake_test(set) +add_RunCMake_test(variable_watch) +add_RunCMake_test(CMP0004) +add_RunCMake_test(TargetPolicies) +add_RunCMake_test(alias_targets) +add_RunCMake_test(interface_library) +add_RunCMake_test(no_install_prefix) + +find_package(Qt4 QUIET) +find_package(Qt5Core QUIET) +if (QT4_FOUND AND Qt5Core_FOUND AND NOT Qt5Core_VERSION VERSION_LESS 5.1.0) + add_RunCMake_test(IncompatibleQt) +endif() +if (QT4_FOUND) + set(ObsoleteQtMacros_ARGS -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}) + add_RunCMake_test(ObsoleteQtMacros) +endif() + +if("${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio [^6]") + add_RunCMake_test(include_external_msproject) + add_RunCMake_test(SolutionGlobalSections) +endif() + +add_RunCMake_test(File_Generate) +add_RunCMake_test(ExportWithoutLanguage) +add_RunCMake_test(target_link_libraries) +add_RunCMake_test(CheckModules) diff --git a/Tests/RunCMake/install/CMakeLists.txt b/Tests/RunCMake/install/CMakeLists.txt new file mode 100644 index 0000000..4b3de84 --- /dev/null +++ b/Tests/RunCMake/install/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 2.8.12) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/install/RunCMakeTest.cmake b/Tests/RunCMake/install/RunCMakeTest.cmake new file mode 100644 index 0000000..c8dc379 --- /dev/null +++ b/Tests/RunCMake/install/RunCMakeTest.cmake @@ -0,0 +1,4 @@ +include(RunCMake) +run_cmake(SkipInstallRulesWarning) +run_cmake(SkipInstallRulesNoWarning1) +run_cmake(SkipInstallRulesNoWarning2) diff --git a/Tests/RunCMake/install/SkipInstallRulesNoWarning1-check.cmake b/Tests/RunCMake/install/SkipInstallRulesNoWarning1-check.cmake new file mode 100644 index 0000000..2807698 --- /dev/null +++ b/Tests/RunCMake/install/SkipInstallRulesNoWarning1-check.cmake @@ -0,0 +1,9 @@ +if(NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeCache.txt") + message(FATAL_ERROR "missing test prerequisite CMakeCache.txt") +endif() + +set(CMAKE_INSTALL_CMAKE "${RunCMake_TEST_BINARY_DIR}/cmake_install.cmake") + +if(EXISTS ${CMAKE_INSTALL_CMAKE}) + message(FATAL_ERROR "${CMAKE_INSTALL_CMAKE} should not exist") +endif() diff --git a/Tests/RunCMake/install/SkipInstallRulesNoWarning1-stderr.txt b/Tests/RunCMake/install/SkipInstallRulesNoWarning1-stderr.txt new file mode 100644 index 0000000..10f3293 --- /dev/null +++ b/Tests/RunCMake/install/SkipInstallRulesNoWarning1-stderr.txt @@ -0,0 +1 @@ +^$ diff --git a/Tests/RunCMake/install/SkipInstallRulesNoWarning1.cmake b/Tests/RunCMake/install/SkipInstallRulesNoWarning1.cmake new file mode 100644 index 0000000..22c7f8c --- /dev/null +++ b/Tests/RunCMake/install/SkipInstallRulesNoWarning1.cmake @@ -0,0 +1 @@ +set(CMAKE_SKIP_INSTALL_RULES ON) diff --git a/Tests/RunCMake/install/SkipInstallRulesNoWarning2-check.cmake b/Tests/RunCMake/install/SkipInstallRulesNoWarning2-check.cmake new file mode 100644 index 0000000..4372b77 --- /dev/null +++ b/Tests/RunCMake/install/SkipInstallRulesNoWarning2-check.cmake @@ -0,0 +1,9 @@ +if(NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeCache.txt") + message(FATAL_ERROR "missing test prerequisite CMakeCache.txt") +endif() + +set(CMAKE_INSTALL_CMAKE "${RunCMake_TEST_BINARY_DIR}/cmake_install.cmake") + +if(NOT EXISTS ${CMAKE_INSTALL_CMAKE}) + message(FATAL_ERROR "${CMAKE_INSTALL_CMAKE} should exist") +endif() diff --git a/Tests/RunCMake/install/SkipInstallRulesNoWarning2-stderr.txt b/Tests/RunCMake/install/SkipInstallRulesNoWarning2-stderr.txt new file mode 100644 index 0000000..10f3293 --- /dev/null +++ b/Tests/RunCMake/install/SkipInstallRulesNoWarning2-stderr.txt @@ -0,0 +1 @@ +^$ diff --git a/Tests/RunCMake/install/SkipInstallRulesNoWarning2.cmake b/Tests/RunCMake/install/SkipInstallRulesNoWarning2.cmake new file mode 100644 index 0000000..2f5f03a --- /dev/null +++ b/Tests/RunCMake/install/SkipInstallRulesNoWarning2.cmake @@ -0,0 +1 @@ +install(FILES CMakeLists.txt DESTINATION src) diff --git a/Tests/RunCMake/install/SkipInstallRulesWarning-check.cmake b/Tests/RunCMake/install/SkipInstallRulesWarning-check.cmake new file mode 100644 index 0000000..2807698 --- /dev/null +++ b/Tests/RunCMake/install/SkipInstallRulesWarning-check.cmake @@ -0,0 +1,9 @@ +if(NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeCache.txt") + message(FATAL_ERROR "missing test prerequisite CMakeCache.txt") +endif() + +set(CMAKE_INSTALL_CMAKE "${RunCMake_TEST_BINARY_DIR}/cmake_install.cmake") + +if(EXISTS ${CMAKE_INSTALL_CMAKE}) + message(FATAL_ERROR "${CMAKE_INSTALL_CMAKE} should not exist") +endif() diff --git a/Tests/RunCMake/install/SkipInstallRulesWarning-stderr.txt b/Tests/RunCMake/install/SkipInstallRulesWarning-stderr.txt new file mode 100644 index 0000000..9130526 --- /dev/null +++ b/Tests/RunCMake/install/SkipInstallRulesWarning-stderr.txt @@ -0,0 +1,3 @@ +CMake Warning in CMakeLists.txt: + CMAKE_SKIP_INSTALL_RULES was enabled even though installation rules have + been specified diff --git a/Tests/RunCMake/install/SkipInstallRulesWarning.cmake b/Tests/RunCMake/install/SkipInstallRulesWarning.cmake new file mode 100644 index 0000000..b621d9b --- /dev/null +++ b/Tests/RunCMake/install/SkipInstallRulesWarning.cmake @@ -0,0 +1,2 @@ +set(CMAKE_SKIP_INSTALL_RULES ON) +install(FILES CMakeLists.txt DESTINATION src) |