NinjaDependInfoExportFilesystemSafe.cmake 2.3 KB

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