1 set(common_options_srcs build_options.cc)
2 set(legacy_options_headers)
5 # to mimic the behavior of file(CONFIGURE ...)
6 file(GENERATE OUTPUT configure_file.cmake
7 CONTENT "configure_file(\${input_file} \${output_file} @ONLY)")
8 function(file_configure input_file output_file)
10 -D input_file=${input_file}
11 -D output_file=${output_file})
12 file(STRINGS ${input_file} subvars REGEX "@[^@]+@")
13 foreach(line ${subvars})
14 string(REGEX REPLACE ".*@([^@]+)@.*" "\\1"
17 list(APPEND cmake_defs -D ${var}=${value})
19 add_custom_command(OUTPUT ${output_file}
20 COMMAND ${CMAKE_COMMAND} ${cmake_defs} -P configure_file.cmake
25 function(add_options name)
26 set(yaml_in_file ${CMAKE_CURRENT_SOURCE_DIR}/${name}.yaml.in)
27 set(yaml_file ${CMAKE_CURRENT_BINARY_DIR}/${name}.yaml)
28 file_configure("${yaml_in_file}"
30 list(APPEND options_yamls ${yaml_file})
31 set(options_yamls ${options_yamls} PARENT_SCOPE)
32 set(cc_file "${name}_options.cc")
33 set(h_file "${PROJECT_BINARY_DIR}/include/${name}_legacy_options.h")
34 add_custom_command(PRE_BUILD
35 OUTPUT ${cc_file} ${h_file}
36 COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/y2c.py
42 list(APPEND common_options_srcs ${cc_file})
43 set(common_options_srcs ${common_options_srcs} PARENT_SCOPE)
44 list(APPEND legacy_options_headers ${h_file})
45 set(legacy_options_headers ${legacy_options_headers} PARENT_SCOPE)
48 set(osd_erasure_code_plugins "jerasure" "lrc")
49 if(WITH_EC_ISA_PLUGIN)
50 list(APPEND osd_erasure_code_plugins "isa")
52 string(REPLACE ";" " " osd_erasure_code_plugins "${osd_erasure_code_plugins}")
55 "/etc/ceph/$cluster.$name.keyring"
56 "/etc/ceph/$cluster.keyring"
58 "/etc/ceph/keyring.bin")
60 list(APPEND keyring_paths
61 "/usr/local/etc/ceph/$cluster.$name.keyring"
62 "/usr/local/etc/ceph/$cluster.keyring"
63 "/usr/local/etc/ceph/keyring"
64 "/usr/local/etc/ceph/keyring.bin")
66 string(REPLACE ";" "," keyring_paths "${keyring_paths}")
68 set(ms_bind_retry_count 3)
69 set(ms_bind_retry_delay 5)
71 # FreeBSD does not use SO_REAUSEADDR so allow for a bit more time per default
72 set(ms_bind_retry_count 6)
73 set(ms_bind_retry_delay 6)
76 set(mgr_disabled_modules "")
78 # https://tracker.ceph.com/issues/45147
79 if(Python3_VERSION VERSION_EQUAL 3.8)
80 set(mgr_disabled_modules "diskprediction_local")
81 message(STATUS "mgr module disabled for ${Python3_VERSION}: ${mgr_disabled_modules}")
86 add_options(cephfs-mirror)
90 add_options(mds-client)
94 add_options(rbd-mirror)
95 add_options(immutable-object-cache)
96 add_options(ceph-exporter)
98 # if set to empty string, system default luarocks package location (if exist) will be used
99 set(rgw_luarocks_location "")
100 if(WITH_RADOSGW_LUA_PACKAGES)
101 set(rgw_luarocks_location "/tmp/luarocks")
105 add_library(common-options-objs OBJECT
106 ${common_options_srcs})
107 add_custom_target(legacy-option-headers
108 DEPENDS ${legacy_options_headers})
111 add_ceph_test(validate-options
112 ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/validate-options.py ${options_yamls})