diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 15:39:57 -0700 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 15:39:57 -0700 |
commit | 035c7fabc3b82cbc9a346c11abe2e9462b4c0379 (patch) | |
tree | 7e40f5a790eae329a8c5d3e59f046451767956ff /Tests/SimpleInstall | |
download | cmake-035c7fabc3b82cbc9a346c11abe2e9462b4c0379.tar.gz cmake-035c7fabc3b82cbc9a346c11abe2e9462b4c0379.tar.bz2 cmake-035c7fabc3b82cbc9a346c11abe2e9462b4c0379.zip |
Imported Upstream version 2.8.9upstream/2.8.9
Diffstat (limited to 'Tests/SimpleInstall')
28 files changed, 614 insertions, 0 deletions
diff --git a/Tests/SimpleInstall/CMakeLists.txt b/Tests/SimpleInstall/CMakeLists.txt new file mode 100644 index 000000000..378b5292b --- /dev/null +++ b/Tests/SimpleInstall/CMakeLists.txt @@ -0,0 +1,398 @@ +cmake_minimum_required (VERSION 2.6) +PROJECT (TestSimpleInstall) +SET(CMAKE_VERBOSE_MAKEFILE 1) +SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY + "${TestSimpleInstall_BINARY_DIR}/bin") +SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY + "${TestSimpleInstall_BINARY_DIR}/lib/static") +SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY + "${TestSimpleInstall_BINARY_DIR}/lib") + +# Skip generating the rpath pointing at the build tree to make sure +# the executable is installed with the proper rpath in the install +# tree. +SET(CMAKE_SKIP_BUILD_RPATH 1) + +# Make sure the executable can run from the install tree. +SET(CMAKE_INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/MyTest/lib) + +# 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) + +SET(CMAKE_DEBUG_POSTFIX "_test_debug_postfix") + +SET(EXTRA_INSTALL_FLAGS) +MESSAGE("Extra install: ${EXTRA_INSTALL_FLAGS}") + +IF(STAGE2) + SET(LIBPATHS + ${CMAKE_INSTALL_PREFIX}/MyTest/lib/static + ${CMAKE_INSTALL_PREFIX}/MyTest/lib + ) + SET(t1NAMES test1 test1${CMAKE_DEBUG_POSTFIX} test1rel) + SET(t2NAMES test2 test2${CMAKE_DEBUG_POSTFIX}) + SET(t4NAMES test4out test4out${CMAKE_DEBUG_POSTFIX}) + + # Make sure the install script ran. + SET(CMAKE_INSTALL_SCRIPT_DID_RUN 0) + INCLUDE(${CMAKE_INSTALL_PREFIX}/MyTest/InstallScriptOut.cmake OPTIONAL) + IF(CMAKE_INSTALL_SCRIPT_DID_RUN) + MESSAGE(STATUS "Stage 1 did run install script 2.") + ELSE(CMAKE_INSTALL_SCRIPT_DID_RUN) + MESSAGE(SEND_ERROR "Stage 1 did not run install script 2.") + ENDIF(CMAKE_INSTALL_SCRIPT_DID_RUN) + + IF(CYGWIN OR MINGW) + SET(LIBPATHS ${LIBPATHS} "${CMAKE_INSTALL_PREFIX}/MyTest/bin") + ENDIF(CYGWIN OR MINGW) + MESSAGE("Search for library in: ${LIBPATHS}") + + SET(TEST1_LIBRARY "TEST1_LIBRARY-NOTFOUND" CACHE FILEPATH "Force find." FORCE) + SET(TEST2_LIBRARY "TEST2_LIBRARY-NOTFOUND" CACHE FILEPATH "Force find." FORCE) + SET(TEST4_LIBRARY "TEST4_LIBRARY-NOTFOUND" CACHE FILEPATH "Force find." FORCE) + + FIND_LIBRARY(TEST1_LIBRARY + NAMES ${t1NAMES} + PATHS ${LIBPATHS} + DOC "First library") + FIND_LIBRARY(TEST2_LIBRARY + NAMES ${t2NAMES} + PATHS ${LIBPATHS} + DOC "Second library") + FIND_LIBRARY(TEST4_LIBRARY + NAMES ${t4NAMES} + PATHS ${LIBPATHS} + DOC "Fourth library") + + # Test importing a library found on disk. + ADD_LIBRARY(lib_test4 UNKNOWN IMPORTED) + SET_PROPERTY(TARGET lib_test4 PROPERTY IMPORTED_LOCATION ${TEST4_LIBRARY}) + + INCLUDE_DIRECTORIES(${CMAKE_INSTALL_PREFIX}/MyTest/include) + ADD_EXECUTABLE (SimpleInstExeS2 inst2.cxx foo.c foo.h) + TARGET_LINK_LIBRARIES(SimpleInstExeS2 ${TEST1_LIBRARY} ${TEST2_LIBRARY} lib_test4) + SET(install_target SimpleInstExeS2) + + IF("${TEST1_LIBRARY}" MATCHES "static") + MESSAGE(STATUS "test1 correctly found in lib/static") + ELSE("${TEST1_LIBRARY}" MATCHES "static") + MESSAGE(SEND_ERROR "test1 not found in lib/static!") + ENDIF("${TEST1_LIBRARY}" MATCHES "static") + + # Check for failure of configuration-specific installation. + IF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/include/Release/lib1debug.h") + MESSAGE(FATAL_ERROR "Debug-configuration file installed for Release!") + ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/include/Release/lib1debug.h") + IF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/include/Debug/lib1release.h") + MESSAGE(FATAL_ERROR "Release-configuration file installed for Debug!") + ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/include/Debug/lib1release.h") + + # Check for failure of directory installation. + IF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/TSD.h") + MESSAGE(FATAL_ERROR "Directory installation did not install TSD.h") + ENDIF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/TSD.h") + IF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/CVS") + MESSAGE(FATAL_ERROR "Directory installation installed CVS directory.") + ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/CVS") + IF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS") + MESSAGE(FATAL_ERROR "Directory installation installed CVS directory.") + ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS") + IF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CMakeLists.txt") + MESSAGE(FATAL_ERROR "Directory installation installed CMakeLists.txt.") + ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CMakeLists.txt") + IF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/alt/TestSubDir/TSD.h") + MESSAGE(FATAL_ERROR "Directory installation did not install alternate TSD.h") + ENDIF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/alt/TestSubDir/TSD.h") + IF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/alt/TestSubDir/TSD.cxx") + MESSAGE(FATAL_ERROR "Directory installation installed alternate TSD.cxx") + ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/alt/TestSubDir/TSD.cxx") + + # Check that scripts properly installed. + IF(WIN32 AND NOT CYGWIN) + SET(BAT .bat) + ELSE(WIN32 AND NOT CYGWIN) + SET(BAT) + ENDIF(WIN32 AND NOT CYGWIN) + FOREACH(loc share share/old1 share/old2 share/old3 share/alt) + SET(CUR_SCRIPT "${CMAKE_INSTALL_PREFIX}/MyTest/${loc}/sample_script${BAT}") + EXECUTE_PROCESS( + COMMAND ${CUR_SCRIPT} + RESULT_VARIABLE SAMPLE_SCRIPT_RESULT + OUTPUT_VARIABLE SAMPLE_SCRIPT_OUTPUT + ) + IF(NOT "${SAMPLE_SCRIPT_RESULT}" MATCHES "^0$") + MESSAGE(FATAL_ERROR + "Sample script [${CUR_SCRIPT}] failed: [${SAMPLE_SCRIPT_RESULT}]") + ENDIF(NOT "${SAMPLE_SCRIPT_RESULT}" MATCHES "^0$") + IF(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output") + MESSAGE(FATAL_ERROR + "Bad sample script [${CUR_SCRIPT}] output: [${SAMPLE_SCRIPT_OUTPUT}]") + ENDIF(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output") + ENDFOREACH(loc) + + # Check for failure of empty directory installation. + IF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/empty") + MESSAGE(FATAL_ERROR "Empty directory installation did not install.") + ENDIF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/empty") + FILE(GLOB EMPTY_FILES "${CMAKE_INSTALL_PREFIX}/MyTest/share/empty/*") + IF(EMPTY_FILES) + MESSAGE(FATAL_ERROR "Empty directory installed [${EMPTY_FILES}].") + ENDIF(EMPTY_FILES) + + # Make sure the test executable can run from the install tree. + SET_TARGET_PROPERTIES(SimpleInstExeS2 PROPERTIES + INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib) + + INSTALL_TARGETS(/MyTest/bin SimpleInstExeS2) + +# try to import the exported targets again + SET(SimpleInstallS1_DIR ${CMAKE_INSTALL_PREFIX}/MyTest/lib) + FIND_PACKAGE(SimpleInstallS1 REQUIRED) + GET_TARGET_PROPERTY(simpleInstallImported S1_SimpleInstall IMPORTED) + IF(NOT simpleInstallImported) + MESSAGE(FATAL_ERROR "Target S1_SimpleInstall could not be imported") + ENDIF(NOT simpleInstallImported) + +ELSE(STAGE2) + # Wipe out the install directory to do a fresh test. + FILE(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/MyTest) + + # this is stage 1, so create libraries and modules and install everything + ADD_LIBRARY(test1 STATIC lib1.cxx) + ADD_LIBRARY(test2 SHARED lib2.cxx) + ADD_LIBRARY(test3 MODULE lib3.cxx) + ADD_LIBRARY(test4 SHARED lib4.cxx) + + # Test <ARCHIVE|LIBRARY|RUNTIME>_OUTPUT_NAME properties. + SET_PROPERTY(TARGET test4 PROPERTY ARCHIVE_OUTPUT_NAME test4out) + SET_PROPERTY(TARGET test4 PROPERTY LIBRARY_OUTPUT_NAME test4out) + + ADD_EXECUTABLE (SimpleInstall inst.cxx foo.c foo.h) + TARGET_LINK_LIBRARIES(SimpleInstall test1 test2 test4) + SET(install_target SimpleInstall) + + SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES OUTPUT_NAME SimpleInstExe) + # Disable VERSION test until it is implemented in the Xcode generator. + IF(NOT XCODE) + SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES VERSION 1.2) + ENDIF(NOT XCODE) + + # Make sure the test executable can run from the install tree. + SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES + INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib) + + # Test per-configuration output name. + SET_TARGET_PROPERTIES(test1 PROPERTIES RELEASE_OUTPUT_NAME test1rel) + SET_TARGET_PROPERTIES(test2 PROPERTIES PUBLIC_HEADER foo.h) + + IF(CMAKE_GENERATOR MATCHES "Makefiles") + ADD_SUBDIRECTORY(TestSubDir) + ADD_DEPENDENCIES(SimpleInstall TSD) + ENDIF(CMAKE_GENERATOR MATCHES "Makefiles") + + ADD_DEPENDENCIES(SimpleInstall test3) + ADD_DEPENDENCIES(test2 test3) + ADD_DEPENDENCIES(test4 test2) + + INSTALL(TARGETS SimpleInstall test1 test2 test3 EXPORT SimpleInstallS1 + RUNTIME DESTINATION MyTest/bin COMPONENT Runtime # .exe, .dll + LIBRARY DESTINATION MyTest/lib COMPONENT Runtime # .so, mod.dll + ARCHIVE DESTINATION MyTest/lib/static COMPONENT Development # .a, .lib + PUBLIC_HEADER DESTINATION MyTest/include COMPONENT Development + ) + + INSTALL(TARGETS test4 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE + RUNTIME DESTINATION MyTest/bin + LIBRARY DESTINATION MyTest/lib + ARCHIVE DESTINATION MyTest/lib/static + OPTIONAL # for coverage...target should always exist + ) + INSTALL(FILES lib1.h DESTINATION MyTest/include/foo) + INSTALL(FILES lib2.h + DESTINATION MyTest/include/foo + COMPONENT Development + PERMISSIONS OWNER_READ OWNER_WRITE + RENAME lib2renamed.h + ) + + # Test old-style install commands. + INSTALL_FILES(/MyTest/include FILES lib3.h) + INSTALL_FILES(/MyTest/include/old .h lib3) + INSTALL_FILES(/MyTest/include/old "^lib2.h$") + INSTALL_PROGRAMS(/MyTest/share/old1 FILES + scripts/sample_script scripts/sample_script.bat) + INSTALL_PROGRAMS(/MyTest/share/old2 + scripts/sample_script scripts/sample_script.bat) + +# "export" the targets collected in "SimpleInstallS1" + INSTALL(EXPORT SimpleInstallS1 FILE SimpleInstallS1Config.cmake + DESTINATION MyTest/lib + NAMESPACE S1_ ) + + EXPORT(TARGETS SimpleInstall test1 test2 test3 + FILE "${CMAKE_CURRENT_BINARY_DIR}/SimpleInstallS1Config.cmake" + NAMESPACE S2_ ) + + ADD_SUBDIRECTORY(scripts) + + # Test optional installation. + INSTALL(FILES does_not_exist.h DESTINATION MyTest/include/foo OPTIONAL) + + # Test configuration-specific installation. + INSTALL(FILES lib1.h RENAME lib1release.h CONFIGURATIONS Release + DESTINATION MyTest/include/Release + ) + INSTALL(FILES lib1.h RENAME lib1debug.h CONFIGURATIONS Debug + DESTINATION MyTest/include/Debug + ) + + # Test directory installation. + FILE(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS") + FILE(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/CVS") + INSTALL( + DIRECTORY TestSubDir scripts/ DESTINATION MyTest/share + FILE_PERMISSIONS OWNER_READ OWNER_WRITE + DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + PATTERN "CVS" EXCLUDE + REGEX "\\.txt$" EXCLUDE + PATTERN "scripts/*" PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ + ) + + # Alternate directory installation for coverage. + INSTALL( + DIRECTORY scripts/ DESTINATION MyTest/share/alt + COMPONENT Development + USE_SOURCE_PERMISSIONS + PATTERN "CVS" EXCLUDE + REGEX "\\.txt$" EXCLUDE + ) + INSTALL( + DIRECTORY TestSubDir DESTINATION MyTest/share/alt + FILE_PERMISSIONS OWNER_READ OWNER_WRITE + DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + FILES_MATCHING PATTERN "*.h" + ) + + # Test empty directory installation. + INSTALL(DIRECTORY DESTINATION MyTest/share/empty) + + # Test optional directory installation. + INSTALL(DIRECTORY does-not-exist DESTINATION MyTest/share OPTIONAL) + + # Test user-specified install scripts, with and without COMPONENT. + INSTALL( + SCRIPT InstallScript1.cmake + CODE "SET(INSTALL_CODE_DID_RUN 1)" + SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/InstallScript2.cmake + ) + INSTALL( + SCRIPT InstallScript3.cmake + CODE "SET(INSTALL_CODE_WITH_COMPONENT_DID_RUN 1)" + SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/InstallScript4.cmake + COMPONENT Development + ) + SET_DIRECTORY_PROPERTIES(PROPERTIES + ADDITIONAL_MAKE_CLEAN_FILES + "${CMAKE_INSTALL_PREFIX}/InstallScriptOut.cmake;${CMAKE_INSTALL_PREFIX}/InstallScript4Out.cmake") + + SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES PRE_INSTALL_SCRIPT + ${CMAKE_CURRENT_SOURCE_DIR}/PreInstall.cmake) + SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES POST_INSTALL_SCRIPT + ${CMAKE_CURRENT_SOURCE_DIR}/PostInstall.cmake) + SET_TARGET_PROPERTIES(test4 PROPERTIES VERSION 1.2 SOVERSION 3 + INSTALL_NAME_DIR @executable_path/../lib) +ENDIF(STAGE2) + +IF(CMAKE_CONFIGURATION_TYPES) + SET(SI_CONFIG -C ${CMAKE_CFG_INTDIR}) +ELSE(CMAKE_CONFIGURATION_TYPES) + SET(SI_CONFIG) +ENDIF(CMAKE_CONFIGURATION_TYPES) + +# Dummy test of CPack +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Test of packaging with cpack") +SET(CPACK_PACKAGE_VENDOR "Kitware") +SET(CPACK_INSTALL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/PackageScript.cmake") + +IF(WIN32 AND NOT UNIX) + FIND_PROGRAM(NSIS_MAKENSIS NAMES makensis + PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS] + DOC "Where is makensis.exe located" + ) + IF(NOT NSIS_MAKENSIS) + SET(CPACK_GENERATOR TGZ) + ENDIF(NOT NSIS_MAKENSIS) +ENDIF(WIN32 AND NOT UNIX) +IF(UNIX AND NOT APPLE) + SET(CPACK_GENERATOR "TGZ;STGZ;TZ") + # FIND_PROGRAM(found_compress + # NAMES compress) + # IF(found_compress) + # FIND_PROGRAM(file_command NAMES file) + # IF(NOT file_command) + # set(file_command file) + # ENDIF(NOT file_command) + # EXECUTE_PROCESS(COMMAND ${file_command} ${found_compress} + # OUTPUT_VARIABLE output) + # set(SKIP_TZ FALSE) + # if("${output}" MATCHES "script") + # set(SKIP_TZ TRUE) + # endif("${output}" MATCHES "script") + # if("${output}" MATCHES "dummy.sh") + # set(SKIP_TZ TRUE) + # endif("${output}" MATCHES "dummy.sh") + # if(NOT SKIP_TZ) + # message("compress found and it was not a script") + # message("output from file command: [${output}]") + # SET(CPACK_GENERATOR "${CPACK_GENERATOR};TZ") + # else(NOT SKIP_TZ) + # message("compress found, but it was a script so dont use it") + # message("output from file command: [${output}]") + # endif(NOT SKIP_TZ) + # ENDIF(found_compress) + FIND_PROGRAM(found_bz2 + NAMES bzip2) + IF(found_bz2) + SET(CPACK_GENERATOR "${CPACK_GENERATOR};TBZ2") + ENDIF(found_bz2) +ENDIF(UNIX AND NOT APPLE) + +SET(CPACK_PACKAGE_EXECUTABLES "SimpleInstall" "Simple Install") +SET(CMAKE_INSTALL_MFC_LIBRARIES 1) +SET(CMAKE_INSTALL_DEBUG_LIBRARIES 1) +INCLUDE(InstallRequiredSystemLibraries) + +IF(CTEST_TEST_CPACK) + SET(PACKAGE_TARGET --build-target package) + + # Avoid settings that require the .zip file command line tools... + # (just build an NSIS installer without component support) + # + SET(CPACK_BINARY_ZIP OFF) + SET(CPACK_MONOLITHIC_INSTALL ON) +ELSE(CTEST_TEST_CPACK) + SET(PACKAGE_TARGET) +ENDIF(CTEST_TEST_CPACK) + +INCLUDE(CPack) + +ADD_CUSTOM_COMMAND( + TARGET ${install_target} + POST_BUILD + COMMAND ${CMAKE_CTEST_COMMAND} + ARGS ${SI_CONFIG} + --build-and-test + ${CMAKE_SOURCE_DIR} + ${CMAKE_BINARY_DIR} + --build-generator ${CMAKE_GENERATOR} + --build-project ${PROJECT_NAME} + --build-makeprogram ${CMAKE_MAKE_PROGRAM} + --build-noclean + --build-target install + ${PACKAGE_TARGET} + COMMENT "Install Project" + ) diff --git a/Tests/SimpleInstall/InstallScript1.cmake b/Tests/SimpleInstall/InstallScript1.cmake new file mode 100644 index 000000000..27b7725f8 --- /dev/null +++ b/Tests/SimpleInstall/InstallScript1.cmake @@ -0,0 +1,5 @@ +MESSAGE("This is install script 1.") +SET(INSTALL_SCRIPT_1_DID_RUN 1) +IF(INSTALL_CODE_DID_RUN) + MESSAGE(FATAL_ERROR "Install script 1 did not run before install code.") +ENDIF(INSTALL_CODE_DID_RUN) diff --git a/Tests/SimpleInstall/InstallScript2.cmake b/Tests/SimpleInstall/InstallScript2.cmake new file mode 100644 index 000000000..927cae8b6 --- /dev/null +++ b/Tests/SimpleInstall/InstallScript2.cmake @@ -0,0 +1,14 @@ +MESSAGE("This is install script 2.") +IF(INSTALL_SCRIPT_1_DID_RUN) + MESSAGE("Install script ordering works.") +ELSE(INSTALL_SCRIPT_1_DID_RUN) + MESSAGE(FATAL_ERROR "Install script 1 did not run before install script 2.") +ENDIF(INSTALL_SCRIPT_1_DID_RUN) +IF(INSTALL_CODE_DID_RUN) + MESSAGE("Install code ordering works.") +ELSE(INSTALL_CODE_DID_RUN) + MESSAGE(FATAL_ERROR "Install script 2 did not run after install code.") +ENDIF(INSTALL_CODE_DID_RUN) +FILE(WRITE "${CMAKE_INSTALL_PREFIX}/MyTest/InstallScriptOut.cmake" + "SET(CMAKE_INSTALL_SCRIPT_DID_RUN 1)\n" + ) diff --git a/Tests/SimpleInstall/InstallScript3.cmake b/Tests/SimpleInstall/InstallScript3.cmake new file mode 100644 index 000000000..b1aecd4c2 --- /dev/null +++ b/Tests/SimpleInstall/InstallScript3.cmake @@ -0,0 +1,12 @@ +MESSAGE("This is install script 3.") +SET(INSTALL_SCRIPT_3_DID_RUN 1) +IF(INSTALL_CODE_WITH_COMPONENT_DID_RUN) + MESSAGE(FATAL_ERROR "Install script 3 did not run before install code with component.") +ENDIF(INSTALL_CODE_WITH_COMPONENT_DID_RUN) + +IF(CMAKE_INSTALL_COMPONENT) +IF(NOT "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Development") + MESSAGE("CMAKE_INSTALL_COMPONENT=\"${CMAKE_INSTALL_COMPONENT}\"") + MESSAGE(FATAL_ERROR "Install script 3 should only run for \"Development\" INSTALL COMPONENT.") +ENDIF(NOT "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Development") +ENDIF(CMAKE_INSTALL_COMPONENT) diff --git a/Tests/SimpleInstall/InstallScript4.cmake b/Tests/SimpleInstall/InstallScript4.cmake new file mode 100644 index 000000000..0ffea4bc8 --- /dev/null +++ b/Tests/SimpleInstall/InstallScript4.cmake @@ -0,0 +1,22 @@ +MESSAGE("This is install script 4.") +IF(INSTALL_SCRIPT_3_DID_RUN) + MESSAGE("Install script ordering works.") +ELSE(INSTALL_SCRIPT_3_DID_RUN) + MESSAGE(FATAL_ERROR "Install script 3 did not run before install script 4.") +ENDIF(INSTALL_SCRIPT_3_DID_RUN) +IF(INSTALL_CODE_WITH_COMPONENT_DID_RUN) + MESSAGE("Install code ordering works.") +ELSE(INSTALL_CODE_WITH_COMPONENT_DID_RUN) + MESSAGE(FATAL_ERROR "Install script 4 did not run after install with component code.") +ENDIF(INSTALL_CODE_WITH_COMPONENT_DID_RUN) + +IF(CMAKE_INSTALL_COMPONENT) +IF(NOT "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Development") + MESSAGE("CMAKE_INSTALL_COMPONENT=\"${CMAKE_INSTALL_COMPONENT}\"") + MESSAGE(FATAL_ERROR "Install script 4 should only run for \"Development\" INSTALL COMPONENT.") +ENDIF(NOT "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Development") +ENDIF(CMAKE_INSTALL_COMPONENT) + +FILE(WRITE "${CMAKE_INSTALL_PREFIX}/MyTest/InstallScript4Out.cmake" + "SET(CMAKE_INSTALL_SCRIPT_4_DID_RUN 1)\n" + ) diff --git a/Tests/SimpleInstall/PackageScript.cmake b/Tests/SimpleInstall/PackageScript.cmake new file mode 100644 index 000000000..3567a2f43 --- /dev/null +++ b/Tests/SimpleInstall/PackageScript.cmake @@ -0,0 +1,10 @@ +MESSAGE("This is packaging script") +MESSAGE("It writes a file with all variables available in ${CMAKE_INSTALL_PREFIX}/AllVariables.txt") + +FILE(WRITE ${CMAKE_INSTALL_PREFIX}/AllVariables.txt "") +GET_CMAKE_PROPERTY(res VARIABLES) +FOREACH(var ${res}) + FILE(APPEND ${CMAKE_INSTALL_PREFIX}/AllVariables.txt + "${var} \"${${var}}\"\n") +ENDFOREACH(var ${res}) + diff --git a/Tests/SimpleInstall/PostInstall.cmake b/Tests/SimpleInstall/PostInstall.cmake new file mode 100644 index 000000000..52ea140a5 --- /dev/null +++ b/Tests/SimpleInstall/PostInstall.cmake @@ -0,0 +1,6 @@ +MESSAGE("In post install") +IF(PRE_INSTALL_DID_RUN) + MESSAGE("Pre and post install work fine") +ELSE(PRE_INSTALL_DID_RUN) + MESSAGE(FATAL_ERROR "Pre install did not run before post install") +ENDIF(PRE_INSTALL_DID_RUN) diff --git a/Tests/SimpleInstall/PreInstall.cmake b/Tests/SimpleInstall/PreInstall.cmake new file mode 100644 index 000000000..2ea2f7716 --- /dev/null +++ b/Tests/SimpleInstall/PreInstall.cmake @@ -0,0 +1,2 @@ +MESSAGE("This is in pre install") +SET(PRE_INSTALL_DID_RUN 1) diff --git a/Tests/SimpleInstall/TestSubDir/CMakeLists.txt b/Tests/SimpleInstall/TestSubDir/CMakeLists.txt new file mode 100644 index 000000000..4f6295300 --- /dev/null +++ b/Tests/SimpleInstall/TestSubDir/CMakeLists.txt @@ -0,0 +1,3 @@ +ADD_EXECUTABLE(TSD TSD.cxx TSD_utils.cxx) +INSTALL_FILES(/MyTest/include FILES TSD.h) +INSTALL_TARGETS(/MyTest/bin TSD) diff --git a/Tests/SimpleInstall/TestSubDir/TSD.cxx b/Tests/SimpleInstall/TestSubDir/TSD.cxx new file mode 100644 index 000000000..8fc38787a --- /dev/null +++ b/Tests/SimpleInstall/TestSubDir/TSD.cxx @@ -0,0 +1,10 @@ +#include <stdio.h> + +#include "TSD.h" + +int main() +{ + int res = TSD("TEST"); + printf("Hello from TSD\n"); + return res; +} diff --git a/Tests/SimpleInstall/TestSubDir/TSD.h b/Tests/SimpleInstall/TestSubDir/TSD.h new file mode 100644 index 000000000..6a3c1affa --- /dev/null +++ b/Tests/SimpleInstall/TestSubDir/TSD.h @@ -0,0 +1 @@ +int TSD(const char*); diff --git a/Tests/SimpleInstall/TestSubDir/TSD_utils.cxx b/Tests/SimpleInstall/TestSubDir/TSD_utils.cxx new file mode 100644 index 000000000..0277f05ae --- /dev/null +++ b/Tests/SimpleInstall/TestSubDir/TSD_utils.cxx @@ -0,0 +1,10 @@ +#include <string.h> + +int TSD(const char* foo) +{ + if ( strcmp(foo, "TEST") == 0 ) + { + return 0; + } + return 1; +} diff --git a/Tests/SimpleInstall/foo.c b/Tests/SimpleInstall/foo.c new file mode 100644 index 000000000..45d5b2bf2 --- /dev/null +++ b/Tests/SimpleInstall/foo.c @@ -0,0 +1,6 @@ +char* foo = "Foo"; + +int SomeFunctionInFoo() +{ + return 5; +} diff --git a/Tests/SimpleInstall/foo.h b/Tests/SimpleInstall/foo.h new file mode 100644 index 000000000..2708baffe --- /dev/null +++ b/Tests/SimpleInstall/foo.h @@ -0,0 +1,11 @@ +#ifdef __cplusplus +extern "C" { +#endif + +extern char* foo; +extern int SomeFunctionInFoo(); + +#ifdef __cplusplus +} +#endif + diff --git a/Tests/SimpleInstall/inst.cxx b/Tests/SimpleInstall/inst.cxx new file mode 100644 index 000000000..7f2962d00 --- /dev/null +++ b/Tests/SimpleInstall/inst.cxx @@ -0,0 +1,37 @@ +#include "foo.h" + +#ifdef STAGE_2 +# include <foo/lib1.h> +# include <foo/lib2renamed.h> +# include <lib3.h> +# include <old/lib2.h> +# include <old/lib3.h> +#else +# include "lib1.h" +# include "lib2.h" +#endif + +#include "lib4.h" + +#include <stdio.h> + +int main () +{ + if ( Lib1Func() != 2.0 ) + { + printf("Problem with lib1\n"); + return 1; + } + if ( Lib2Func() != 1.0 ) + { + printf("Problem with lib2\n"); + return 1; + } + if ( Lib4Func() != 4.0 ) + { + printf("Problem with lib4\n"); + return 1; + } + printf("The value of Foo: %s\n", foo); + return SomeFunctionInFoo()-5; +} diff --git a/Tests/SimpleInstall/inst2.cxx b/Tests/SimpleInstall/inst2.cxx new file mode 100644 index 000000000..c70b93af1 --- /dev/null +++ b/Tests/SimpleInstall/inst2.cxx @@ -0,0 +1,2 @@ +#define STAGE_2 +#include "inst.cxx" diff --git a/Tests/SimpleInstall/lib1.cxx b/Tests/SimpleInstall/lib1.cxx new file mode 100644 index 000000000..7aa905205 --- /dev/null +++ b/Tests/SimpleInstall/lib1.cxx @@ -0,0 +1,6 @@ +#include "lib1.h" + +float Lib1Func() +{ + return 2.0; +} diff --git a/Tests/SimpleInstall/lib1.h b/Tests/SimpleInstall/lib1.h new file mode 100644 index 000000000..0d64e76bc --- /dev/null +++ b/Tests/SimpleInstall/lib1.h @@ -0,0 +1 @@ +extern float Lib1Func(); diff --git a/Tests/SimpleInstall/lib2.cxx b/Tests/SimpleInstall/lib2.cxx new file mode 100644 index 000000000..dccc48b78 --- /dev/null +++ b/Tests/SimpleInstall/lib2.cxx @@ -0,0 +1,6 @@ +#include "lib2.h" + +float Lib2Func() +{ + return 1.0; +} diff --git a/Tests/SimpleInstall/lib2.h b/Tests/SimpleInstall/lib2.h new file mode 100644 index 000000000..ea5a6f7ea --- /dev/null +++ b/Tests/SimpleInstall/lib2.h @@ -0,0 +1,11 @@ +#ifdef _WIN32 +# ifdef test2_EXPORTS +# define CM_TEST_LIB_EXPORT __declspec( dllexport ) +# else +# define CM_TEST_LIB_EXPORT __declspec( dllimport ) +# endif +#else +# define CM_TEST_LIB_EXPORT +#endif + +CM_TEST_LIB_EXPORT float Lib2Func(); diff --git a/Tests/SimpleInstall/lib3.cxx b/Tests/SimpleInstall/lib3.cxx new file mode 100644 index 000000000..da8dbf942 --- /dev/null +++ b/Tests/SimpleInstall/lib3.cxx @@ -0,0 +1,6 @@ +#include "lib3.h" + +float Lib3Func() +{ + return 2.0; +} diff --git a/Tests/SimpleInstall/lib3.h b/Tests/SimpleInstall/lib3.h new file mode 100644 index 000000000..c250ed769 --- /dev/null +++ b/Tests/SimpleInstall/lib3.h @@ -0,0 +1,11 @@ +#ifdef _WIN32 +# ifdef test3_EXPORTS +# define CM_TEST_LIB_EXPORT __declspec( dllexport ) +# else +# define CM_TEST_LIB_EXPORT __declspec( dllimport ) +# endif +#else +# define CM_TEST_LIB_EXPORT +#endif + +CM_TEST_LIB_EXPORT float Lib3Func(); diff --git a/Tests/SimpleInstall/lib4.cxx b/Tests/SimpleInstall/lib4.cxx new file mode 100644 index 000000000..fbfa23aa4 --- /dev/null +++ b/Tests/SimpleInstall/lib4.cxx @@ -0,0 +1,7 @@ +#include "lib4.h" + +float Lib4Func() +{ + return 4.0; +} + diff --git a/Tests/SimpleInstall/lib4.h b/Tests/SimpleInstall/lib4.h new file mode 100644 index 000000000..4b94ea207 --- /dev/null +++ b/Tests/SimpleInstall/lib4.h @@ -0,0 +1,12 @@ +#ifdef _WIN32 +# ifdef test4_EXPORTS +# define CM_TEST_LIB_EXPORT __declspec( dllexport ) +# else +# define CM_TEST_LIB_EXPORT __declspec( dllimport ) +# endif +#else +# define CM_TEST_LIB_EXPORT +#endif + +CM_TEST_LIB_EXPORT float Lib4Func(); + diff --git a/Tests/SimpleInstall/scripts/.gitattributes b/Tests/SimpleInstall/scripts/.gitattributes new file mode 100644 index 000000000..5e3db2fb3 --- /dev/null +++ b/Tests/SimpleInstall/scripts/.gitattributes @@ -0,0 +1 @@ +sample_script crlf=input diff --git a/Tests/SimpleInstall/scripts/CMakeLists.txt b/Tests/SimpleInstall/scripts/CMakeLists.txt new file mode 100644 index 000000000..d46c1652e --- /dev/null +++ b/Tests/SimpleInstall/scripts/CMakeLists.txt @@ -0,0 +1 @@ +INSTALL_PROGRAMS(/MyTest/share/old3 "^sample_script(\\.bat)?$") diff --git a/Tests/SimpleInstall/scripts/sample_script b/Tests/SimpleInstall/scripts/sample_script new file mode 100755 index 000000000..81f9f5315 --- /dev/null +++ b/Tests/SimpleInstall/scripts/sample_script @@ -0,0 +1,2 @@ +#!/bin/sh +echo "Sample Script Output" diff --git a/Tests/SimpleInstall/scripts/sample_script.bat b/Tests/SimpleInstall/scripts/sample_script.bat new file mode 100755 index 000000000..64a77b5b0 --- /dev/null +++ b/Tests/SimpleInstall/scripts/sample_script.bat @@ -0,0 +1 @@ +@echo Sample Script Output
|