diff options
Diffstat (limited to 'Tests/SimpleInstallS2')
28 files changed, 605 insertions, 0 deletions
diff --git a/Tests/SimpleInstallS2/CMakeLists.txt b/Tests/SimpleInstallS2/CMakeLists.txt new file mode 100644 index 0000000..4cf7355 --- /dev/null +++ b/Tests/SimpleInstallS2/CMakeLists.txt @@ -0,0 +1,396 @@ +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() + message(SEND_ERROR "Stage 1 did not run install script 2.") + endif() + + if(CYGWIN OR MINGW) + set(LIBPATHS ${LIBPATHS} "${CMAKE_INSTALL_PREFIX}/MyTest/bin") + endif() + 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() + message(SEND_ERROR "test1 not found in lib/static!") + endif() + + # 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() + if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/include/Debug/lib1release.h") + message(FATAL_ERROR "Release-configuration file installed for Debug!") + endif() + + # 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() + if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/CVS") + message(FATAL_ERROR "Directory installation installed CVS directory.") + endif() + if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS") + message(FATAL_ERROR "Directory installation installed CVS directory.") + endif() + if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CMakeLists.txt") + message(FATAL_ERROR "Directory installation installed CMakeLists.txt.") + endif() + if(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/alt/TestSubDir/TSD.h") + message(FATAL_ERROR "Directory installation did not install alternate TSD.h") + endif() + if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/alt/TestSubDir/TSD.cxx") + message(FATAL_ERROR "Directory installation installed alternate TSD.cxx") + endif() + + # Check that scripts properly installed. + if(WIN32 AND NOT CYGWIN) + set(BAT .bat) + else() + set(BAT) + endif() + 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}" STREQUAL "0") + message(FATAL_ERROR + "Sample script [${CUR_SCRIPT}] failed: [${SAMPLE_SCRIPT_RESULT}]") + endif() + if(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output") + message(FATAL_ERROR + "Bad sample script [${CUR_SCRIPT}] output: [${SAMPLE_SCRIPT_OUTPUT}]") + endif() + endforeach() + + # 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() + file(GLOB EMPTY_FILES "${CMAKE_INSTALL_PREFIX}/MyTest/share/empty/*") + if(EMPTY_FILES) + message(FATAL_ERROR "Empty directory installed [${EMPTY_FILES}].") + endif() + + # 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() + +else() + # 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() + + # 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() + + 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/$<1:foo>$<0:/wrong>) + install(FILES lib2.h + DESTINATION $<1:MyTest/include/foo>$<0:/wrong> + 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 $<1:scripts/>$<0:/wrong> DESTINATION $<1:MyTest/share>$<0:/wrong> + 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 $<1:scripts/>$<0:/wrong> DESTINATION $<1:MyTest/share/alt>$<0:/wrong> + COMPONENT Development + USE_SOURCE_PERMISSIONS + PATTERN "CVS" EXCLUDE + REGEX "\\.txt$" EXCLUDE + ) + install( + DIRECTORY TestSubDir DESTINATION $<1:MyTest/share/alt>$<0:/wrong> + 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() + +if(CMAKE_CONFIGURATION_TYPES) + set(SI_CONFIG --config $<CONFIGURATION>) +else() + set(SI_CONFIG) +endif() + +# 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() +endif() +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() + # execute_process(COMMAND ${file_command} ${found_compress} + # OUTPUT_VARIABLE output) + # set(SKIP_TZ FALSE) + # if("${output}" MATCHES "script") + # set(SKIP_TZ TRUE) + # endif() + # if("${output}" MATCHES "dummy.sh") + # set(SKIP_TZ TRUE) + # endif() + # if(NOT SKIP_TZ) + # message("compress found and it was not a script") + # message("output from file command: [${output}]") + # list(APPEND CPACK_GENERATOR "TZ") + # else() + # message("compress found, but it was a script so dont use it") + # message("output from file command: [${output}]") + # endif() + # endif() + find_program(found_bz2 + NAMES bzip2) + if(found_bz2) + list(APPEND CPACK_GENERATOR "TBZ2") + endif() +endif() + +set(CPACK_PACKAGE_EXECUTABLES "SimpleInstall" "Simple Install") +set(CMAKE_INSTALL_MFC_LIBRARIES 1) +set(CMAKE_INSTALL_DEBUG_LIBRARIES 1) +set(CMAKE_INSTALL_UCRT_LIBRARIES 1) +include(InstallRequiredSystemLibraries) + +if(CTEST_TEST_CPACK) + set(package_command COMMAND + ${CMAKE_COMMAND} --build . --target package ${SI_CONFIG} + ) + + # 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() + set(package_command) +endif() + +include(CPack) + +set(install_command COMMAND + ${CMAKE_COMMAND} --build . --target install ${SI_CONFIG} + ) + +add_custom_command( + TARGET ${install_target} + POST_BUILD + ${install_command} + ${package_command} + COMMENT "Install Project" + ) diff --git a/Tests/SimpleInstallS2/InstallScript1.cmake b/Tests/SimpleInstallS2/InstallScript1.cmake new file mode 100644 index 0000000..ef9da57 --- /dev/null +++ b/Tests/SimpleInstallS2/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() diff --git a/Tests/SimpleInstallS2/InstallScript2.cmake b/Tests/SimpleInstallS2/InstallScript2.cmake new file mode 100644 index 0000000..c1d20a3 --- /dev/null +++ b/Tests/SimpleInstallS2/InstallScript2.cmake @@ -0,0 +1,14 @@ +message("This is install script 2.") +if(INSTALL_SCRIPT_1_DID_RUN) + message("Install script ordering works.") +else() + message(FATAL_ERROR "Install script 1 did not run before install script 2.") +endif() +if(INSTALL_CODE_DID_RUN) + message("Install code ordering works.") +else() + message(FATAL_ERROR "Install script 2 did not run after install code.") +endif() +file(WRITE "${CMAKE_INSTALL_PREFIX}/MyTest/InstallScriptOut.cmake" + "set(CMAKE_INSTALL_SCRIPT_DID_RUN 1)\n" + ) diff --git a/Tests/SimpleInstallS2/InstallScript3.cmake b/Tests/SimpleInstallS2/InstallScript3.cmake new file mode 100644 index 0000000..6485156 --- /dev/null +++ b/Tests/SimpleInstallS2/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() + +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() +endif() diff --git a/Tests/SimpleInstallS2/InstallScript4.cmake b/Tests/SimpleInstallS2/InstallScript4.cmake new file mode 100644 index 0000000..34d0a73 --- /dev/null +++ b/Tests/SimpleInstallS2/InstallScript4.cmake @@ -0,0 +1,22 @@ +message("This is install script 4.") +if(INSTALL_SCRIPT_3_DID_RUN) + message("Install script ordering works.") +else() + message(FATAL_ERROR "Install script 3 did not run before install script 4.") +endif() +if(INSTALL_CODE_WITH_COMPONENT_DID_RUN) + message("Install code ordering works.") +else() + message(FATAL_ERROR "Install script 4 did not run after install with component code.") +endif() + +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() +endif() + +file(WRITE "${CMAKE_INSTALL_PREFIX}/MyTest/InstallScript4Out.cmake" + "set(CMAKE_INSTALL_SCRIPT_4_DID_RUN 1)\n" + ) diff --git a/Tests/SimpleInstallS2/PackageScript.cmake b/Tests/SimpleInstallS2/PackageScript.cmake new file mode 100644 index 0000000..53b7909 --- /dev/null +++ b/Tests/SimpleInstallS2/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() + diff --git a/Tests/SimpleInstallS2/PostInstall.cmake b/Tests/SimpleInstallS2/PostInstall.cmake new file mode 100644 index 0000000..d616221 --- /dev/null +++ b/Tests/SimpleInstallS2/PostInstall.cmake @@ -0,0 +1,6 @@ +message("In post install") +if(PRE_INSTALL_DID_RUN) + message("Pre and post install work fine") +else() + message(FATAL_ERROR "Pre install did not run before post install") +endif() diff --git a/Tests/SimpleInstallS2/PreInstall.cmake b/Tests/SimpleInstallS2/PreInstall.cmake new file mode 100644 index 0000000..7a9851e --- /dev/null +++ b/Tests/SimpleInstallS2/PreInstall.cmake @@ -0,0 +1,2 @@ +message("This is in pre install") +set(PRE_INSTALL_DID_RUN 1) diff --git a/Tests/SimpleInstallS2/TestSubDir/CMakeLists.txt b/Tests/SimpleInstallS2/TestSubDir/CMakeLists.txt new file mode 100644 index 0000000..860e104 --- /dev/null +++ b/Tests/SimpleInstallS2/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/SimpleInstallS2/TestSubDir/TSD.cxx b/Tests/SimpleInstallS2/TestSubDir/TSD.cxx new file mode 100644 index 0000000..8fc3878 --- /dev/null +++ b/Tests/SimpleInstallS2/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/SimpleInstallS2/TestSubDir/TSD.h b/Tests/SimpleInstallS2/TestSubDir/TSD.h new file mode 100644 index 0000000..6a3c1af --- /dev/null +++ b/Tests/SimpleInstallS2/TestSubDir/TSD.h @@ -0,0 +1 @@ +int TSD(const char*); diff --git a/Tests/SimpleInstallS2/TestSubDir/TSD_utils.cxx b/Tests/SimpleInstallS2/TestSubDir/TSD_utils.cxx new file mode 100644 index 0000000..0f32894 --- /dev/null +++ b/Tests/SimpleInstallS2/TestSubDir/TSD_utils.cxx @@ -0,0 +1,9 @@ +#include <string.h> + +int TSD(const char* foo) +{ + if (strcmp(foo, "TEST") == 0) { + return 0; + } + return 1; +} diff --git a/Tests/SimpleInstallS2/foo.c b/Tests/SimpleInstallS2/foo.c new file mode 100644 index 0000000..45d5b2b --- /dev/null +++ b/Tests/SimpleInstallS2/foo.c @@ -0,0 +1,6 @@ +char* foo = "Foo"; + +int SomeFunctionInFoo() +{ + return 5; +} diff --git a/Tests/SimpleInstallS2/foo.h b/Tests/SimpleInstallS2/foo.h new file mode 100644 index 0000000..216cdf6 --- /dev/null +++ b/Tests/SimpleInstallS2/foo.h @@ -0,0 +1,10 @@ +#ifdef __cplusplus +extern "C" { +#endif + +extern char* foo; +extern int SomeFunctionInFoo(); + +#ifdef __cplusplus +} +#endif diff --git a/Tests/SimpleInstallS2/inst.cxx b/Tests/SimpleInstallS2/inst.cxx new file mode 100644 index 0000000..ecf061c --- /dev/null +++ b/Tests/SimpleInstallS2/inst.cxx @@ -0,0 +1,34 @@ +#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/SimpleInstallS2/inst2.cxx b/Tests/SimpleInstallS2/inst2.cxx new file mode 100644 index 0000000..c70b93a --- /dev/null +++ b/Tests/SimpleInstallS2/inst2.cxx @@ -0,0 +1,2 @@ +#define STAGE_2 +#include "inst.cxx" diff --git a/Tests/SimpleInstallS2/lib1.cxx b/Tests/SimpleInstallS2/lib1.cxx new file mode 100644 index 0000000..7aa9052 --- /dev/null +++ b/Tests/SimpleInstallS2/lib1.cxx @@ -0,0 +1,6 @@ +#include "lib1.h" + +float Lib1Func() +{ + return 2.0; +} diff --git a/Tests/SimpleInstallS2/lib1.h b/Tests/SimpleInstallS2/lib1.h new file mode 100644 index 0000000..0d64e76 --- /dev/null +++ b/Tests/SimpleInstallS2/lib1.h @@ -0,0 +1 @@ +extern float Lib1Func(); diff --git a/Tests/SimpleInstallS2/lib2.cxx b/Tests/SimpleInstallS2/lib2.cxx new file mode 100644 index 0000000..dccc48b --- /dev/null +++ b/Tests/SimpleInstallS2/lib2.cxx @@ -0,0 +1,6 @@ +#include "lib2.h" + +float Lib2Func() +{ + return 1.0; +} diff --git a/Tests/SimpleInstallS2/lib2.h b/Tests/SimpleInstallS2/lib2.h new file mode 100644 index 0000000..a3ed758 --- /dev/null +++ b/Tests/SimpleInstallS2/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/SimpleInstallS2/lib3.cxx b/Tests/SimpleInstallS2/lib3.cxx new file mode 100644 index 0000000..da8dbf9 --- /dev/null +++ b/Tests/SimpleInstallS2/lib3.cxx @@ -0,0 +1,6 @@ +#include "lib3.h" + +float Lib3Func() +{ + return 2.0; +} diff --git a/Tests/SimpleInstallS2/lib3.h b/Tests/SimpleInstallS2/lib3.h new file mode 100644 index 0000000..df11327 --- /dev/null +++ b/Tests/SimpleInstallS2/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/SimpleInstallS2/lib4.cxx b/Tests/SimpleInstallS2/lib4.cxx new file mode 100644 index 0000000..fbede5c --- /dev/null +++ b/Tests/SimpleInstallS2/lib4.cxx @@ -0,0 +1,6 @@ +#include "lib4.h" + +float Lib4Func() +{ + return 4.0; +} diff --git a/Tests/SimpleInstallS2/lib4.h b/Tests/SimpleInstallS2/lib4.h new file mode 100644 index 0000000..71425a5 --- /dev/null +++ b/Tests/SimpleInstallS2/lib4.h @@ -0,0 +1,11 @@ +#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/SimpleInstallS2/scripts/.gitattributes b/Tests/SimpleInstallS2/scripts/.gitattributes new file mode 100644 index 0000000..5e3db2f --- /dev/null +++ b/Tests/SimpleInstallS2/scripts/.gitattributes @@ -0,0 +1 @@ +sample_script crlf=input diff --git a/Tests/SimpleInstallS2/scripts/CMakeLists.txt b/Tests/SimpleInstallS2/scripts/CMakeLists.txt new file mode 100644 index 0000000..ec34e8c --- /dev/null +++ b/Tests/SimpleInstallS2/scripts/CMakeLists.txt @@ -0,0 +1 @@ +install_programs(/MyTest/share/old3 "^sample_script(\\.bat)?$") diff --git a/Tests/SimpleInstallS2/scripts/sample_script b/Tests/SimpleInstallS2/scripts/sample_script new file mode 100755 index 0000000..81f9f53 --- /dev/null +++ b/Tests/SimpleInstallS2/scripts/sample_script @@ -0,0 +1,2 @@ +#!/bin/sh +echo "Sample Script Output" diff --git a/Tests/SimpleInstallS2/scripts/sample_script.bat b/Tests/SimpleInstallS2/scripts/sample_script.bat new file mode 100755 index 0000000..64a77b5 --- /dev/null +++ b/Tests/SimpleInstallS2/scripts/sample_script.bat @@ -0,0 +1 @@ +@echo Sample Script Output
|