Imported Upstream version 3.25.0
[platform/upstream/cmake.git] / Tests / RunCMake / CXXModules / NinjaDependInfoBMIInstall.cmake
1 # Fake out that we have dyndep; we only need to generate, not actually build
2 # here.
3 set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)
4 set(CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE "")
5
6 enable_language(CXX)
7
8 if (NOT CMAKE_GENERATOR MATCHES "Ninja")
9   message(FATAL_ERROR
10     "This test requires a 'Ninja' generator to be used.")
11 endif ()
12
13 add_library(ninja-bmi-install-public)
14 target_sources(ninja-bmi-install-public
15   PRIVATE
16     sources/module-impl.cxx
17     sources/module-internal-part-impl.cxx
18     sources/module-part-impl.cxx
19     sources/module-use.cxx
20   PUBLIC
21     FILE_SET modules TYPE CXX_MODULES
22     BASE_DIRS
23       "${CMAKE_CURRENT_SOURCE_DIR}/sources"
24     FILES
25       sources/module.cxx
26       sources/module-part.cxx
27     FILE_SET internal_partitions TYPE CXX_MODULES FILES
28       sources/module-internal-part.cxx)
29 target_compile_features(ninja-bmi-install-public
30   PRIVATE
31     cxx_std_20)
32 set_property(TARGET ninja-bmi-install-public
33   PROPERTY EXPORT_NAME "with-public")
34
35 install(TARGETS ninja-bmi-install-public
36   FILE_SET modules
37     DESTINATION "lib/cxx"
38     COMPONENT "modules"
39   FILE_SET internal_partitions
40     DESTINATION "lib/cxx/internals"
41     COMPONENT "modules-internal"
42   CXX_MODULES_BMI
43     DESTINATION "lib/cxx/modules/$<CONFIG>"
44     COMPONENT "bmi")
45
46 add_library(ninja-bmi-install-private)
47 target_sources(ninja-bmi-install-private
48   PRIVATE
49     sources/module-impl.cxx
50     sources/module-internal-part-impl.cxx
51     sources/module-part-impl.cxx
52     sources/module-use.cxx
53   PRIVATE
54     FILE_SET modules TYPE CXX_MODULES
55     BASE_DIRS
56       "${CMAKE_CURRENT_SOURCE_DIR}/sources"
57     FILES
58       sources/module.cxx
59       sources/module-part.cxx
60     FILE_SET internal_partitions TYPE CXX_MODULES FILES
61       sources/module-internal-part.cxx)
62 target_compile_features(ninja-bmi-install-private
63   PRIVATE
64     cxx_std_20)
65 set_property(TARGET ninja-bmi-install-private
66   PROPERTY EXPORT_NAME "with-private")
67
68 set(CMAKE_INSTALL_MESSAGE LAZY)
69 install(TARGETS ninja-bmi-install-private
70   CXX_MODULES_BMI
71     DESTINATION "lib/cxx/modules/private/$<CONFIG>"
72     PERMISSIONS
73       OWNER_READ OWNER_WRITE
74       GROUP_READ
75       WORLD_READ
76     COMPONENT "bmi")