test.cmake 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. set(CMAKE_BUILD_WITH_INSTALL_RPATH 1)
  2. # PGI compiler doesn't add build id to binaries by default
  3. if(CMAKE_CXX_COMPILER_ID STREQUAL "PGI")
  4. string(APPEND CMAKE_EXE_LINKER_FLAGS "-Wl,--build-id")
  5. string(APPEND CMAKE_SHARED_LINKER_FLAGS "-Wl,--build-id")
  6. endif()
  7. if(NOT RunCMake_SUBTEST_SUFFIX STREQUAL "no_components")
  8. set(CPACK_RPM_COMPONENT_INSTALL "ON")
  9. endif()
  10. set(CMAKE_BUILD_TYPE Debug)
  11. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test_lib.hpp"
  12. "int test_lib();\n")
  13. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test_lib.cpp"
  14. "#include \"test_lib.hpp\"\nint test_lib() {return 0;}\n")
  15. add_library(test_lib SHARED "${CMAKE_CURRENT_BINARY_DIR}/test_lib.cpp")
  16. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
  17. "#include \"test_lib.hpp\"\nint main() {return test_lib();}\n")
  18. add_executable(test_prog "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
  19. target_link_libraries(test_prog test_lib)
  20. install(TARGETS test_prog DESTINATION foo COMPONENT applications)
  21. if(RunCMake_SUBTEST_SUFFIX STREQUAL "valid"
  22. OR RunCMake_SUBTEST_SUFFIX STREQUAL "no_main_component"
  23. OR RunCMake_SUBTEST_SUFFIX STREQUAL "no_debuginfo")
  24. install(FILES CMakeLists.txt DESTINATION bar COMPONENT headers)
  25. install(TARGETS test_lib DESTINATION bas COMPONENT libs)
  26. # test that we correctly handle empty dir in non main component
  27. install(DIRECTORY DESTINATION empty_dir COMPONENT libs)
  28. elseif(RunCMake_SUBTEST_SUFFIX STREQUAL "one_component"
  29. OR RunCMake_SUBTEST_SUFFIX STREQUAL "one_component_no_debuginfo")
  30. set(CPACK_COMPONENTS_ALL applications)
  31. endif()
  32. set(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE ON)
  33. if(RunCMake_SUBTEST_SUFFIX STREQUAL "valid"
  34. OR RunCMake_SUBTEST_SUFFIX STREQUAL "one_component_main"
  35. OR RunCMake_SUBTEST_SUFFIX STREQUAL "no_debuginfo")
  36. set(CPACK_RPM_MAIN_COMPONENT "applications")
  37. set(CPACK_RPM_APPLICATIONS_FILE_NAME "RPM-DEFAULT")
  38. endif()
  39. if(RunCMake_SUBTEST_SUFFIX STREQUAL "valid"
  40. OR RunCMake_SUBTEST_SUFFIX STREQUAL "no_main_component"
  41. OR RunCMake_SUBTEST_SUFFIX STREQUAL "one_component")
  42. set(CPACK_RPM_APPLICATIONS_DEBUGINFO_PACKAGE ON)
  43. set(CPACK_RPM_LIBS_DEBUGINFO_PACKAGE ON)
  44. endif()
  45. set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/src")