mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-24 02:20:37 +00:00
A future user of position_in_partition.idl doesn't need full_position and so doesn't want to include full_position.hh to fix compile errors when including position_in_partition.idl.hh. Extract it to a separate idl file: it has a single user in a storage_proxy VERB.
90 lines
2.3 KiB
CMake
90 lines
2.3 KiB
CMake
find_package(Python3 COMPONENTS QUIET REQUIRED Interpreter)
|
|
|
|
# Create C++ bindings for IDL serializers
|
|
function(compile_idl input)
|
|
cmake_parse_arguments(parsed_args "" "SOURCES;OUT_DIR" "" ${ARGN})
|
|
get_filename_component(basename ${input} NAME_WE)
|
|
get_filename_component(directory ${input} DIRECTORY)
|
|
set(input "${CMAKE_CURRENT_SOURCE_DIR}/${input}")
|
|
if(directory)
|
|
set(directory "${parsed_args_OUT_DIR}/${directory}")
|
|
file(MAKE_DIRECTORY "${directory}")
|
|
else()
|
|
set(directory "${parsed_args_OUT_DIR}")
|
|
endif()
|
|
set(idl_compiler "${CMAKE_SOURCE_DIR}/idl-compiler.py")
|
|
set(output "${directory}/${basename}.dist.hh")
|
|
add_custom_command(
|
|
OUTPUT ${output}
|
|
COMMAND ${Python3_EXECUTABLE} ${idl_compiler} --ns ser -f ${input} -o ${output}
|
|
DEPENDS ${idl_compiler} ${input})
|
|
set(${parsed_args_SOURCES} ${output} PARENT_SCOPE)
|
|
endfunction(compile_idl)
|
|
|
|
set(idl_headers
|
|
gossip_digest.idl.hh
|
|
uuid.idl.hh
|
|
range.idl.hh
|
|
keys.idl.hh
|
|
read_command.idl.hh
|
|
token.idl.hh
|
|
ring_position.idl.hh
|
|
result.idl.hh
|
|
frozen_mutation.idl.hh
|
|
reconcilable_result.idl.hh
|
|
streaming.idl.hh
|
|
paging_state.idl.hh
|
|
frozen_schema.idl.hh
|
|
repair.idl.hh
|
|
replay_position.idl.hh
|
|
mutation.idl.hh
|
|
query.idl.hh
|
|
idl_test.idl.hh
|
|
commitlog.idl.hh
|
|
tracing.idl.hh
|
|
consistency_level.idl.hh
|
|
cache_temperature.idl.hh
|
|
view.idl.hh
|
|
messaging_service.idl.hh
|
|
paxos.idl.hh
|
|
raft.idl.hh
|
|
raft_storage.idl.hh
|
|
group0.idl.hh
|
|
hinted_handoff.idl.hh
|
|
sstables.idl.hh
|
|
storage_proxy.idl.hh
|
|
storage_service.idl.hh
|
|
group0_state_machine.idl.hh
|
|
mapreduce_request.idl.hh
|
|
replica_exception.idl.hh
|
|
per_partition_rate_limit_info.idl.hh
|
|
position_in_partition.idl.hh
|
|
full_position.idl.hh
|
|
experimental/broadcast_tables_lang.idl.hh
|
|
join_node.idl.hh
|
|
utils.idl.hh
|
|
gossip.idl.hh
|
|
migration_manager.idl.hh
|
|
node_ops.idl.hh
|
|
tasks.idl.hh
|
|
)
|
|
|
|
foreach(idl_header ${idl_headers})
|
|
compile_idl(${idl_header}
|
|
OUT_DIR "${scylla_gen_build_dir}/idl"
|
|
SOURCES srcs)
|
|
list(APPEND idl_sources ${srcs})
|
|
endforeach()
|
|
|
|
add_custom_target(idl-sources
|
|
DEPENDS ${idl_sources})
|
|
add_library(idl INTERFACE)
|
|
add_dependencies(idl idl-sources)
|
|
target_include_directories(idl
|
|
INTERFACE
|
|
${scylla_gen_build_dir})
|
|
|
|
# *.idl.hh headers are not C++ headers but the ones
|
|
# to be processed by the idl compiler, so we don't
|
|
# check their self-containness.
|