11cmake_minimum_required (VERSION 3.20 )
22
33project (BookkeepingApi
4- VERSION 0.0.1
5- LANGUAGES CXX
4+ VERSION 0.76.0
5+ LANGUAGES CXX
66)
77
8- find_package (Protobuf CONFIG REQUIRED )
8+ find_package (protobuf CONFIG REQUIRED )
99find_package (gRPC REQUIRED )
1010
11+ set (CMAKE_POSITION_INDEPENDENT_CODE ON )
1112set (CMAKE_INSTALL_LIBDIR lib)
1213set (LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR } /lib" )
1314set (EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR } /bin" )
@@ -16,82 +17,81 @@ set(CMAKE_BUILD_TYPE "RelWithDebInfo")
1617
1718# Generating c++ proto bindings and gRPC from proto files
1819
19- get_filename_component (PROTO_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } /../proto ABSOLUTE )
20-
21- set (PROTO_FILES "" )
22- set (PROTO_OUTPUT_NAMES "" )
23- set (PROTO_CPP_OUTPUT "" )
24- set (GRPC_CPP_OUTPUT "" )
25- set (PROTO_GENERATED_HEADERS_SRC "" )
26-
27- foreach (PROTO_NAME common flp run dplProcessExecution)
28- set (PROTO_FILE ${PROTO_DIRECTORY} /${PROTO_NAME} .proto)
29- get_filename_component (PROTO_OUTPUT_NAME ${PROTO_FILE} NAME_WE )
30- list (APPEND PROTO_FILES ${PROTO_FILE} )
31- list (APPEND PROTO_OUTPUT_NAMES ${PROTO_OUTPUT_NAME} .proto)
32- list (APPEND PROTO_CPP_OUTPUT ${CMAKE_CURRENT_BINARY_DIR } /${PROTO_OUTPUT_NAME} .pb.cc)
33- list (APPEND GRPC_CPP_OUTPUT ${CMAKE_CURRENT_BINARY_DIR } /${PROTO_OUTPUT_NAME} .grpc.pb.cc)
34- list (APPEND PROTO_GENERATED_HEADERS_SRC ${CMAKE_CURRENT_BINARY_DIR } /${PROTO_OUTPUT_NAME} .pb.h)
35- endforeach ()
36-
37- add_custom_command (
38- OUTPUT ${PROTO_CPP_OUTPUT} ${GRPC_CPP_OUTPUT}
39- COMMAND protobuf::protoc
40- ARGS --proto_path ${PROTO_DIRECTORY}
41- --cpp_out ${CMAKE_CURRENT_BINARY_DIR }
42- --grpc_out ${CMAKE_CURRENT_BINARY_DIR }
43- --plugin=protoc-gen-grpc=$<TARGET_FILE:gRPC::grpc_cpp_plugin>
44- ${PROTO_OUTPUT_NAMES}
45- DEPENDS ${PROTO_FILES}
46- COMMENT "Running protoc on ${PROTO_FILES} "
47- VERBATIM
20+ get_filename_component (PROTO_DIR ${CMAKE_CURRENT_SOURCE_DIR } /../proto ABSOLUTE )
21+ set (PROTO_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR } " )
22+
23+ add_library (BookkeepingProtos OBJECT
24+ ${PROTO_DIR} /common.proto
25+ ${PROTO_DIR} /flp.proto
26+ ${PROTO_DIR} /run.proto
27+ ${PROTO_DIR} /dplProcessExecution.proto
28+ )
29+
30+ target_link_libraries (BookkeepingProtos
31+ PUBLIC protobuf::libprotobuf
32+ PRIVATE gRPC::grpc++
33+ )
34+
35+ target_include_directories (BookkeepingProtos PUBLIC
36+ "$<BUILD_INTERFACE :${PROTO_OUT_DIR} >"
37+ )
38+
39+ protobuf_generate (
40+ TARGET BookkeepingProtos
41+ IMPORT_DIRS "${PROTO_DIR} "
42+ PROTOC_OUT_DIR "${PROTO_OUT_DIR} "
43+ )
44+
45+ protobuf_generate (
46+ TARGET BookkeepingProtos
47+ LANGUAGE grpc
48+ GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc
49+ PLUGIN "protoc-gen-grpc=\$ <TARGET_FILE:gRPC::grpc_cpp_plugin>"
50+ IMPORT_DIRS ${PROTO_DIR}
51+ PROTOC_OUT_DIR "${PROTO_OUT_DIR} "
4852)
4953
5054### LIBRARY
5155
5256add_library (BookkeepingApi SHARED
53- src/grpc/GrpcBkpClient.cxx
54- src/grpc/services/GrpcFlpServiceClient.cxx
55- src/BkpClientFactory.cxx
56-
57- ${PROTO_CPP_OUTPUT}
58- ${GRPC_CPP_OUTPUT}
57+ src/grpc/GrpcBkpClient.cxx
58+ src/grpc/services/GrpcFlpServiceClient.cxx
59+ src/BkpClientFactory.cxx
5960)
6061
6162target_include_directories (BookkeepingApi
62- PUBLIC $<INSTALL_INTERFACE :include > # public header once installed
63- $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include > # to build it
64- PRIVATE $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } > # because of the proto generated files
65- $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /src > # private headers
63+ PUBLIC $<INSTALL_INTERFACE :include > # public header once installed
64+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include > # to build it
65+ PRIVATE $<BUILD_INTERFACE :${PROTO_OUT_DIR } > # because of the proto generated files
66+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /src > # private headers
6667)
6768
6869target_link_libraries (BookkeepingApi
69- PRIVATE protobuf::libprotobuf
70- gRPC::grpc++
70+ PRIVATE BookkeepingProtos
71+ PRIVATE protobuf::libprotobuf
72+ PRIVATE gRPC::grpc++
7173)
7274
7375target_compile_features (BookkeepingApi PUBLIC cxx_std_17 )
7476
7577add_library (BookkeepingProtoApi SHARED
76- src/BkpProtoClientFactory.cxx
77- src/grpc/GrpcBkpProtoClient.cxx
78- src/grpc/services/GrpcRunProtoClient.cxx
79- src/grpc/services/GrpcDplProcessExecutionProtoClient.cxx
80-
81- ${PROTO_CPP_OUTPUT}
82- ${GRPC_CPP_OUTPUT}
78+ src/BkpProtoClientFactory.cxx
79+ src/grpc/GrpcBkpProtoClient.cxx
80+ src/grpc/services/GrpcRunProtoClient.cxx
81+ src/grpc/services/GrpcDplProcessExecutionProtoClient.cxx
8382)
8483
8584target_include_directories (BookkeepingProtoApi
86- PUBLIC $<INSTALL_INTERFACE :include > # public header once installed
87- $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include > # to build it
88- PRIVATE $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } > # because of the proto generated files
89- $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /src > # private headers
85+ PUBLIC $<INSTALL_INTERFACE :include > # public header once installed
86+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include > # to build it
87+ PRIVATE $<BUILD_INTERFACE :${PROTO_OUT_DIR } > # because of the proto generated files
88+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /src > # private headers
9089)
9190
9291target_link_libraries (BookkeepingProtoApi
93- PUBLIC protobuf::libprotobuf
94- PRIVATE gRPC::grpc++
92+ PUBLIC BookkeepingProtos
93+ PUBLIC protobuf::libprotobuf
94+ PRIVATE gRPC::grpc++
9595)
9696
9797target_compile_features (BookkeepingProtoApi PUBLIC cxx_std_17 )
@@ -101,79 +101,57 @@ target_compile_features(BookkeepingProtoApi PUBLIC cxx_std_17)
101101add_executable (exampleSpecificService example/exampleSpecificServices.cxx )
102102
103103target_link_libraries (exampleSpecificService
104- PUBLIC
105- BookkeepingApi
104+ PUBLIC BookkeepingApi
106105)
107106
108107add_executable (exampleProtoService example/exampleProtoServices.cxx )
109108
110109target_link_libraries (exampleProtoService
111- PUBLIC
112- BookkeepingProtoApi
110+ PUBLIC BookkeepingProtoApi
113111)
114112
115- target_include_directories (exampleProtoService PRIVATE $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } >)
113+ target_include_directories (exampleProtoService PRIVATE $<BUILD_INTERFACE :${PROTO_OUT_DIR } >)
116114
117115# PACKAGE INFO
118116
119117include (CMakePackageConfigHelpers )
120118
121119write_basic_package_version_file (${CMAKE_PROJECT_NAME } ConfigVersion.cmake
122- VERSION ${${CMAKE_PROJECT_NAME } _VERSION}
123- COMPATIBILITY SameMajorVersion )
120+ VERSION ${${CMAKE_PROJECT_NAME } _VERSION}
121+ COMPATIBILITY SameMajorVersion )
124122
125123configure_package_config_file (cmake/${CMAKE_PROJECT_NAME}Config.cmake.in
126- "${CMAKE_CURRENT_BINARY_DIR } /${CMAKE_PROJECT_NAME } Config.cmake"
127- INSTALL_DESTINATION
128- "${CMAKE_INSTALL_LIBDIR} /cmake/${CMAKE_PROJECT_NAME } " )
129-
130- #configure_package_config_file(cmake/BookkeepingProtoApiConfig.cmake.in
131- # "${CMAKE_CURRENT_BINARY_DIR}/BookkeepingProtoApiConfig.cmake"
132- # INSTALL_DESTINATION
133- # "${CMAKE_INSTALL_LIBDIR}/cmake/BookkeepingProtoApi")
124+ "${CMAKE_CURRENT_BINARY_DIR } /${CMAKE_PROJECT_NAME } Config.cmake"
125+ INSTALL_DESTINATION
126+ "${CMAKE_INSTALL_LIBDIR} /cmake/${CMAKE_PROJECT_NAME } " )
134127
135128### INSTALL
136-
137- # Install proto files
138- install (FILES ${PROTO_GENERATED_HEADERS_SRC}
139- DESTINATION include/BookkeepingApi
129+ install (FILES
130+ ${PROTO_OUT_DIR} /common.pb.h
131+ ${PROTO_OUT_DIR} /flp.pb.h
132+ ${PROTO_OUT_DIR} /run.pb.h
133+ ${PROTO_OUT_DIR} /dplProcessExecution.pb.h
134+ DESTINATION "include"
140135)
141136
142- install (TARGETS BookkeepingApi BookkeepingProtoApi
143- EXPORT BookkeepingApiTargets
144- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
145- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
146- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
137+ install (TARGETS BookkeepingProtos BookkeepingApi BookkeepingProtoApi
138+ EXPORT BookkeepingApiTargets
139+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
140+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
141+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
147142)
148143
149- #install(TARGETS BookkeepingProtoApi
150- # EXPORT BookkeepingProtoApiTargets
151- # LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
152- # ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
153- # RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
154- #)
155-
156144# Install headers
157145install (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } /include/BookkeepingApi
158- DESTINATION "include" )
146+ DESTINATION "include" )
159147
160148install (FILES ${CMAKE_CURRENT_BINARY_DIR } /${CMAKE_PROJECT_NAME } Config.cmake
161- ${CMAKE_CURRENT_BINARY_DIR } /${CMAKE_PROJECT_NAME } ConfigVersion.cmake
162- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${CMAKE_PROJECT_NAME } )
163-
164- #install(FILES ${CMAKE_CURRENT_BINARY_DIR}/BookkeepingProtoApiConfig.cmake
165- # ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
166- # DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/BookkeepingProtoApiConfig)
149+ ${CMAKE_CURRENT_BINARY_DIR } /${CMAKE_PROJECT_NAME } ConfigVersion.cmake
150+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${CMAKE_PROJECT_NAME } )
167151
168152# Export targets
169153install (EXPORT BookkeepingApiTargets
170- FILE BookkeepingApiTargets.cmake
171- NAMESPACE AliceO2::
172- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/BookkeepingApi
154+ FILE BookkeepingApiTargets.cmake
155+ NAMESPACE AliceO2::
156+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/BookkeepingApi
173157)
174-
175- #install(EXPORT BookkeepingProtoApiTargets
176- # FILE BookkeepingProtoApiTargets.cmake
177- # NAMESPACE AliceO2::
178- # DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/BookkeepingProtoApi
179- #)
0 commit comments