NinjaDependInfoExportFilesystemSafe.cmake 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. set(CMAKE_INTERMEDIATE_DIR_STRATEGY FULL CACHE STRING "" FORCE)
  2. # Fake out that we have dyndep; we only need to generate, not actually build
  3. # here.
  4. set(CMAKE_CXX_SCANDEP_SOURCE "")
  5. enable_language(CXX)
  6. if (NOT CMAKE_GENERATOR MATCHES "Ninja")
  7. message(FATAL_ERROR
  8. "This test requires a 'Ninja' generator to be used.")
  9. endif ()
  10. add_library(ninja-exports-public)
  11. target_sources(ninja-exports-public
  12. PRIVATE
  13. sources/module-impl.cxx
  14. sources/module-internal-part-impl.cxx
  15. sources/module-part-impl.cxx
  16. sources/module-use.cxx
  17. PUBLIC
  18. FILE_SET modules TYPE CXX_MODULES
  19. BASE_DIRS
  20. "${CMAKE_CURRENT_SOURCE_DIR}/sources"
  21. FILES
  22. sources/module.cxx
  23. sources/module-part.cxx
  24. FILE_SET internal_partitions TYPE CXX_MODULES FILES
  25. sources/module-internal-part.cxx)
  26. target_compile_features(ninja-exports-public
  27. PRIVATE
  28. cxx_std_20)
  29. set_property(TARGET ninja-exports-public
  30. PROPERTY EXPORT_NAME "with::public_")
  31. install(TARGETS ninja-exports-public
  32. EXPORT exp
  33. FILE_SET modules
  34. DESTINATION "lib/cxx"
  35. COMPONENT "modules"
  36. FILE_SET internal_partitions
  37. DESTINATION "lib/cxx/internals"
  38. COMPONENT "modules-internal")
  39. add_library(ninja-exports-private)
  40. target_sources(ninja-exports-private
  41. PRIVATE
  42. sources/module-impl.cxx
  43. sources/module-internal-part-impl.cxx
  44. sources/module-part-impl.cxx
  45. sources/module-use.cxx
  46. PRIVATE
  47. FILE_SET modules TYPE CXX_MODULES
  48. BASE_DIRS
  49. "${CMAKE_CURRENT_SOURCE_DIR}/sources"
  50. FILES
  51. sources/module.cxx
  52. sources/module-part.cxx
  53. FILE_SET internal_partitions TYPE CXX_MODULES FILES
  54. sources/module-internal-part.cxx)
  55. target_compile_features(ninja-exports-private
  56. PRIVATE
  57. cxx_std_20)
  58. set_property(TARGET ninja-exports-private
  59. PROPERTY EXPORT_NAME "with::private_")
  60. install(TARGETS ninja-exports-private
  61. EXPORT exp)
  62. # Test multiple build exports.
  63. export(EXPORT exp
  64. FILE "${CMAKE_BINARY_DIR}/lib/cmake/export1/export1-targets.cmake"
  65. NAMESPACE export1::
  66. CXX_MODULES_DIRECTORY "cxx-modules")
  67. export(EXPORT exp
  68. FILE "${CMAKE_BINARY_DIR}/lib/cmake/export2/export2-targets.cmake"
  69. CXX_MODULES_DIRECTORY "cxx-modules")
  70. # Test multiple install exports.
  71. install(EXPORT exp
  72. DESTINATION "lib/cmake/export1"
  73. NAMESPACE export1::
  74. CXX_MODULES_DIRECTORY "cxx-modules")
  75. install(EXPORT exp
  76. DESTINATION "lib/cmake/export2"
  77. CXX_MODULES_DIRECTORY "cxx-modules")