146 lines
5.0 KiB
CMake
146 lines
5.0 KiB
CMake
|
|
set (Protobuf_PROTOC_EXECUTABLE "${SPARK_BIN}/protoc")
|
|
set (PROTOBUF_INCLUDE_DIRS "${SPARK_INCLUDE}")
|
|
set (PROTOBUF_STATIC_LIB "libprotobuf")
|
|
|
|
function(Protobuf_Generate_Cpp SRCS HDRS)
|
|
|
|
set(${SRCS})
|
|
set(${HDRS})
|
|
|
|
foreach(FIL ${ARGN})
|
|
get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
|
|
get_filename_component(FIL_WE ${FIL} NAME_WE)
|
|
get_filename_component(FIL_DIR ${FIL} DIRECTORY)
|
|
if(FIL_DIR)
|
|
set(FIL_WE "${FIL_DIR}/${FIL_WE}")
|
|
endif()
|
|
|
|
list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc")
|
|
list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h"
|
|
COMMAND ${Protobuf_PROTOC_EXECUTABLE}
|
|
ARGS
|
|
--cpp_out=${CMAKE_BINARY_DIR}/src
|
|
-I ${PROTOBUF_INCLUDE_DIRS}
|
|
-I ${CMAKE_SOURCE_DIR}/src ${ABS_FIL}
|
|
DEPENDS ${ABS_FIL}
|
|
COMMENT "Running C++ protocol buffer compiler on ${FIL}"
|
|
VERBATIM )
|
|
endforeach()
|
|
|
|
set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE)
|
|
|
|
# remove some warnings from protobuf generated files
|
|
if (WIN32)
|
|
set_source_files_properties(${${SRCS}} PROPERTIES COMPILE_FLAGS "/wd4309 /wd4838")
|
|
else ()
|
|
set_source_files_properties(${${SRCS}} PROPERTIES COMPILE_FLAGS
|
|
"-Wno-unused-parameter -Wno-effc++ -Wno-pedantic -Wno-sign-compare -Wno-uninitialized")
|
|
endif()
|
|
|
|
set(${SRCS} ${${SRCS}} PARENT_SCOPE)
|
|
set(${HDRS} ${${HDRS}} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
|
|
function(Service_Compiler_Generate_Cpp SRCS HDRS)
|
|
|
|
set(${SRCS})
|
|
set(${HDRS})
|
|
|
|
foreach(FIL ${ARGN})
|
|
get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
|
|
get_filename_component(FIL_WE ${FIL} NAME_WE)
|
|
get_filename_component(FIL_DIR ${FIL} DIRECTORY)
|
|
if(FIL_DIR)
|
|
set(FIL_WE "${FIL_DIR}/${FIL_WE}")
|
|
endif()
|
|
|
|
list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc")
|
|
list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h")
|
|
|
|
list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.cc")
|
|
list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.h")
|
|
|
|
list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.cc")
|
|
list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.h")
|
|
|
|
set (TEMPLATES
|
|
${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/templates/cpp/client.pb.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/templates/cpp/client.pb.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/templates/cpp/server.pb.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/templates/cpp/server.pb.h)
|
|
|
|
if (WIN32)
|
|
add_custom_command(
|
|
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.cc"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.h"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.cc"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.h"
|
|
|
|
COMMAND SET PYTHONPATH=${SPARK_PYTHON}
|
|
COMMAND ${Protobuf_PROTOC_EXECUTABLE}
|
|
|
|
ARGS
|
|
--cpp_out=${CMAKE_BINARY_DIR}/src
|
|
--plugin=protoc-gen-service=${CMAKE_SOURCE_DIR}/src/lib/api/service_compiler/plugin.cmd
|
|
--service_out=lang=cpp:${CMAKE_BINARY_DIR}/src
|
|
-I ${PROTOBUF_INCLUDE_DIRS}
|
|
-I ${CMAKE_SOURCE_DIR}/src
|
|
${ABS_FIL}
|
|
|
|
DEPENDS ${ABS_FIL} ${TEMPLATES} ${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/plugin.py
|
|
|
|
COMMENT "Running C++ service compiler on ${FIL}"
|
|
VERBATIM )
|
|
else()
|
|
add_custom_command(
|
|
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.cc"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.h"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.cc"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.h"
|
|
|
|
COMMAND "PYTHONPATH=${SPARK_PYTHON}" ${Protobuf_PROTOC_EXECUTABLE}
|
|
|
|
ARGS
|
|
--cpp_out=${CMAKE_BINARY_DIR}/src
|
|
--plugin=protoc-gen-service=${CMAKE_SOURCE_DIR}/src/lib/api/service_compiler/plugin.py
|
|
--service_out=lang=cpp,make_file_name=${ABS_FIL}:${CMAKE_BINARY_DIR}/src
|
|
-I ${PROTOBUF_INCLUDE_DIRS}
|
|
-I ${CMAKE_SOURCE_DIR}/src
|
|
${ABS_FIL}
|
|
|
|
DEPENDS ${ABS_FIL} ${TEMPLATES} ${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/plugin.py
|
|
|
|
COMMENT "Running C++ service compiler on ${FIL}"
|
|
VERBATIM )
|
|
endif()
|
|
|
|
|
|
endforeach()
|
|
|
|
set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE)
|
|
|
|
# remove some warnings from protobuf generated files
|
|
if (WIN32)
|
|
set_source_files_properties(${${SRCS}} PROPERTIES COMPILE_FLAGS "/wd4309 /wd4838")
|
|
else ()
|
|
set_source_files_properties(${${SRCS}} PROPERTIES COMPILE_FLAGS
|
|
"-Wno-unused-parameter -Wno-effc++ -Wno-pedantic -Wno-sign-compare -Wno-uninitialized")
|
|
endif()
|
|
|
|
set(${SRCS} ${${SRCS}} PARENT_SCOPE)
|
|
set(${HDRS} ${${HDRS}} PARENT_SCOPE)
|
|
|
|
endfunction()
|