1*6777b538SAndroid Build Coastguard Worker# This file contains backwards compatibility patches for various legacy functions and variables 2*6777b538SAndroid Build Coastguard Worker# Functions 3*6777b538SAndroid Build Coastguard Worker 4*6777b538SAndroid Build Coastguard Workerfunction(PROTOBUF_GENERATE_CPP SRCS HDRS) 5*6777b538SAndroid Build Coastguard Worker cmake_parse_arguments(protobuf_generate_cpp "" "EXPORT_MACRO" "" ${ARGN}) 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker set(_proto_files "${protobuf_generate_cpp_UNPARSED_ARGUMENTS}") 8*6777b538SAndroid Build Coastguard Worker if(NOT _proto_files) 9*6777b538SAndroid Build Coastguard Worker message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files") 10*6777b538SAndroid Build Coastguard Worker return() 11*6777b538SAndroid Build Coastguard Worker endif() 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker if(PROTOBUF_GENERATE_CPP_APPEND_PATH) 14*6777b538SAndroid Build Coastguard Worker set(_append_arg APPEND_PATH) 15*6777b538SAndroid Build Coastguard Worker endif() 16*6777b538SAndroid Build Coastguard Worker 17*6777b538SAndroid Build Coastguard Worker if(DEFINED Protobuf_IMPORT_DIRS) 18*6777b538SAndroid Build Coastguard Worker set(_import_arg IMPORT_DIRS ${Protobuf_IMPORT_DIRS}) 19*6777b538SAndroid Build Coastguard Worker endif() 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Worker set(_outvar) 22*6777b538SAndroid Build Coastguard Worker protobuf_generate(${_append_arg} LANGUAGE cpp EXPORT_MACRO ${protobuf_generate_cpp_EXPORT_MACRO} OUT_VAR _outvar ${_import_arg} PROTOS ${_proto_files}) 23*6777b538SAndroid Build Coastguard Worker 24*6777b538SAndroid Build Coastguard Worker set(${SRCS}) 25*6777b538SAndroid Build Coastguard Worker set(${HDRS}) 26*6777b538SAndroid Build Coastguard Worker foreach(_file ${_outvar}) 27*6777b538SAndroid Build Coastguard Worker if(_file MATCHES "cc$") 28*6777b538SAndroid Build Coastguard Worker list(APPEND ${SRCS} ${_file}) 29*6777b538SAndroid Build Coastguard Worker else() 30*6777b538SAndroid Build Coastguard Worker list(APPEND ${HDRS} ${_file}) 31*6777b538SAndroid Build Coastguard Worker endif() 32*6777b538SAndroid Build Coastguard Worker endforeach() 33*6777b538SAndroid Build Coastguard Worker set(${SRCS} ${${SRCS}} PARENT_SCOPE) 34*6777b538SAndroid Build Coastguard Worker set(${HDRS} ${${HDRS}} PARENT_SCOPE) 35*6777b538SAndroid Build Coastguard Workerendfunction() 36*6777b538SAndroid Build Coastguard Worker 37*6777b538SAndroid Build Coastguard Workerfunction(PROTOBUF_GENERATE_PYTHON SRCS) 38*6777b538SAndroid Build Coastguard Worker if(NOT ARGN) 39*6777b538SAndroid Build Coastguard Worker message(SEND_ERROR "Error: PROTOBUF_GENERATE_PYTHON() called without any proto files") 40*6777b538SAndroid Build Coastguard Worker return() 41*6777b538SAndroid Build Coastguard Worker endif() 42*6777b538SAndroid Build Coastguard Worker 43*6777b538SAndroid Build Coastguard Worker if(PROTOBUF_GENERATE_CPP_APPEND_PATH) 44*6777b538SAndroid Build Coastguard Worker set(_append_arg APPEND_PATH) 45*6777b538SAndroid Build Coastguard Worker endif() 46*6777b538SAndroid Build Coastguard Worker 47*6777b538SAndroid Build Coastguard Worker if(DEFINED Protobuf_IMPORT_DIRS) 48*6777b538SAndroid Build Coastguard Worker set(_import_arg IMPORT_DIRS ${Protobuf_IMPORT_DIRS}) 49*6777b538SAndroid Build Coastguard Worker endif() 50*6777b538SAndroid Build Coastguard Worker 51*6777b538SAndroid Build Coastguard Worker set(_outvar) 52*6777b538SAndroid Build Coastguard Worker protobuf_generate(${_append_arg} LANGUAGE python OUT_VAR _outvar ${_import_arg} PROTOS ${ARGN}) 53*6777b538SAndroid Build Coastguard Worker set(${SRCS} ${_outvar} PARENT_SCOPE) 54*6777b538SAndroid Build Coastguard Workerendfunction() 55*6777b538SAndroid Build Coastguard Worker 56*6777b538SAndroid Build Coastguard Worker# Environment 57*6777b538SAndroid Build Coastguard Worker 58*6777b538SAndroid Build Coastguard Worker# Backwards compatibility 59*6777b538SAndroid Build Coastguard Worker# Define camel case versions of input variables 60*6777b538SAndroid Build Coastguard Workerforeach(UPPER 61*6777b538SAndroid Build Coastguard Worker PROTOBUF_SRC_ROOT_FOLDER 62*6777b538SAndroid Build Coastguard Worker PROTOBUF_IMPORT_DIRS 63*6777b538SAndroid Build Coastguard Worker PROTOBUF_DEBUG 64*6777b538SAndroid Build Coastguard Worker PROTOBUF_LIBRARY 65*6777b538SAndroid Build Coastguard Worker PROTOBUF_PROTOC_LIBRARY 66*6777b538SAndroid Build Coastguard Worker PROTOBUF_INCLUDE_DIR 67*6777b538SAndroid Build Coastguard Worker PROTOBUF_PROTOC_EXECUTABLE 68*6777b538SAndroid Build Coastguard Worker PROTOBUF_LIBRARY_DEBUG 69*6777b538SAndroid Build Coastguard Worker PROTOBUF_PROTOC_LIBRARY_DEBUG 70*6777b538SAndroid Build Coastguard Worker PROTOBUF_LITE_LIBRARY 71*6777b538SAndroid Build Coastguard Worker PROTOBUF_LITE_LIBRARY_DEBUG 72*6777b538SAndroid Build Coastguard Worker ) 73*6777b538SAndroid Build Coastguard Worker if (DEFINED ${UPPER}) 74*6777b538SAndroid Build Coastguard Worker string(REPLACE "PROTOBUF_" "Protobuf_" Camel ${UPPER}) 75*6777b538SAndroid Build Coastguard Worker if (NOT DEFINED ${Camel}) 76*6777b538SAndroid Build Coastguard Worker set(${Camel} ${${UPPER}}) 77*6777b538SAndroid Build Coastguard Worker endif() 78*6777b538SAndroid Build Coastguard Worker endif() 79*6777b538SAndroid Build Coastguard Workerendforeach() 80*6777b538SAndroid Build Coastguard Worker 81*6777b538SAndroid Build Coastguard Workerif(DEFINED Protobuf_SRC_ROOT_FOLDER) 82*6777b538SAndroid Build Coastguard Worker message(AUTHOR_WARNING "Variable Protobuf_SRC_ROOT_FOLDER defined, but not" 83*6777b538SAndroid Build Coastguard Worker " used in CONFIG mode") 84*6777b538SAndroid Build Coastguard Workerendif() 85*6777b538SAndroid Build Coastguard Worker 86*6777b538SAndroid Build Coastguard Workerinclude(SelectLibraryConfigurations) 87*6777b538SAndroid Build Coastguard Worker 88*6777b538SAndroid Build Coastguard Worker# Internal function: search for normal library as well as a debug one 89*6777b538SAndroid Build Coastguard Worker# if the debug one is specified also include debug/optimized keywords 90*6777b538SAndroid Build Coastguard Worker# in *_LIBRARIES variable 91*6777b538SAndroid Build Coastguard Workerfunction(_protobuf_find_libraries name filename) 92*6777b538SAndroid Build Coastguard Worker if(${name}_LIBRARIES) 93*6777b538SAndroid Build Coastguard Worker # Use result recorded by a previous call. 94*6777b538SAndroid Build Coastguard Worker elseif(${name}_LIBRARY) 95*6777b538SAndroid Build Coastguard Worker # Honor cache entry used by CMake 3.5 and lower. 96*6777b538SAndroid Build Coastguard Worker set(${name}_LIBRARIES "${${name}_LIBRARY}" PARENT_SCOPE) 97*6777b538SAndroid Build Coastguard Worker elseif(TARGET protobuf::lib${filename}) 98*6777b538SAndroid Build Coastguard Worker get_target_property(${name}_LIBRARY_RELEASE protobuf::lib${filename} 99*6777b538SAndroid Build Coastguard Worker LOCATION_RELEASE) 100*6777b538SAndroid Build Coastguard Worker get_target_property(${name}_LIBRARY_RELWITHDEBINFO protobuf::lib${filename} 101*6777b538SAndroid Build Coastguard Worker LOCATION_RELWITHDEBINFO) 102*6777b538SAndroid Build Coastguard Worker get_target_property(${name}_LIBRARY_MINSIZEREL protobuf::lib${filename} 103*6777b538SAndroid Build Coastguard Worker LOCATION_MINSIZEREL) 104*6777b538SAndroid Build Coastguard Worker get_target_property(${name}_LIBRARY_DEBUG protobuf::lib${filename} 105*6777b538SAndroid Build Coastguard Worker LOCATION_DEBUG) 106*6777b538SAndroid Build Coastguard Worker 107*6777b538SAndroid Build Coastguard Worker select_library_configurations(${name}) 108*6777b538SAndroid Build Coastguard Worker set(${name}_LIBRARY ${${name}_LIBRARY} PARENT_SCOPE) 109*6777b538SAndroid Build Coastguard Worker set(${name}_LIBRARIES ${${name}_LIBRARIES} PARENT_SCOPE) 110*6777b538SAndroid Build Coastguard Worker endif() 111*6777b538SAndroid Build Coastguard Workerendfunction() 112*6777b538SAndroid Build Coastguard Worker 113*6777b538SAndroid Build Coastguard Worker# 114*6777b538SAndroid Build Coastguard Worker# Main. 115*6777b538SAndroid Build Coastguard Worker# 116*6777b538SAndroid Build Coastguard Worker 117*6777b538SAndroid Build Coastguard Worker# By default have PROTOBUF_GENERATE_CPP macro pass -I to protoc 118*6777b538SAndroid Build Coastguard Worker# for each directory where a proto file is referenced. 119*6777b538SAndroid Build Coastguard Workerif(NOT DEFINED PROTOBUF_GENERATE_CPP_APPEND_PATH) 120*6777b538SAndroid Build Coastguard Worker set(PROTOBUF_GENERATE_CPP_APPEND_PATH TRUE) 121*6777b538SAndroid Build Coastguard Workerendif() 122*6777b538SAndroid Build Coastguard Worker 123*6777b538SAndroid Build Coastguard Worker# The Protobuf library 124*6777b538SAndroid Build Coastguard Worker_protobuf_find_libraries(Protobuf protobuf) 125*6777b538SAndroid Build Coastguard Worker 126*6777b538SAndroid Build Coastguard Worker# The Protobuf Lite library 127*6777b538SAndroid Build Coastguard Worker_protobuf_find_libraries(Protobuf_LITE protobuf-lite) 128*6777b538SAndroid Build Coastguard Worker 129*6777b538SAndroid Build Coastguard Worker# The Protobuf Protoc Library 130*6777b538SAndroid Build Coastguard Worker_protobuf_find_libraries(Protobuf_PROTOC protoc) 131*6777b538SAndroid Build Coastguard Worker 132*6777b538SAndroid Build Coastguard Worker# Set the include directory 133*6777b538SAndroid Build Coastguard Workerget_target_property(Protobuf_INCLUDE_DIRS protobuf::libprotobuf 134*6777b538SAndroid Build Coastguard Worker INTERFACE_INCLUDE_DIRECTORIES) 135*6777b538SAndroid Build Coastguard Worker 136*6777b538SAndroid Build Coastguard Worker# Set the protoc Executable 137*6777b538SAndroid Build Coastguard Workerif(NOT Protobuf_PROTOC_EXECUTABLE AND TARGET protobuf::protoc) 138*6777b538SAndroid Build Coastguard Worker get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc 139*6777b538SAndroid Build Coastguard Worker IMPORTED_LOCATION_RELEASE) 140*6777b538SAndroid Build Coastguard Worker if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}") 141*6777b538SAndroid Build Coastguard Worker get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc 142*6777b538SAndroid Build Coastguard Worker IMPORTED_LOCATION_RELWITHDEBINFO) 143*6777b538SAndroid Build Coastguard Worker endif() 144*6777b538SAndroid Build Coastguard Worker if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}") 145*6777b538SAndroid Build Coastguard Worker get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc 146*6777b538SAndroid Build Coastguard Worker IMPORTED_LOCATION_MINSIZEREL) 147*6777b538SAndroid Build Coastguard Worker endif() 148*6777b538SAndroid Build Coastguard Worker if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}") 149*6777b538SAndroid Build Coastguard Worker get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc 150*6777b538SAndroid Build Coastguard Worker IMPORTED_LOCATION_DEBUG) 151*6777b538SAndroid Build Coastguard Worker endif() 152*6777b538SAndroid Build Coastguard Worker if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}") 153*6777b538SAndroid Build Coastguard Worker get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc 154*6777b538SAndroid Build Coastguard Worker IMPORTED_LOCATION_NOCONFIG) 155*6777b538SAndroid Build Coastguard Worker endif() 156*6777b538SAndroid Build Coastguard Workerendif() 157*6777b538SAndroid Build Coastguard Worker 158*6777b538SAndroid Build Coastguard Worker# Version info variable 159*6777b538SAndroid Build Coastguard Workerset(Protobuf_VERSION "@protobuf_VERSION@") 160*6777b538SAndroid Build Coastguard Worker 161*6777b538SAndroid Build Coastguard Workerinclude(FindPackageHandleStandardArgs) 162*6777b538SAndroid Build Coastguard WorkerFIND_PACKAGE_HANDLE_STANDARD_ARGS(Protobuf 163*6777b538SAndroid Build Coastguard Worker REQUIRED_VARS Protobuf_PROTOC_EXECUTABLE Protobuf_LIBRARIES Protobuf_INCLUDE_DIRS 164*6777b538SAndroid Build Coastguard Worker VERSION_VAR Protobuf_VERSION 165*6777b538SAndroid Build Coastguard Worker) 166*6777b538SAndroid Build Coastguard Worker 167*6777b538SAndroid Build Coastguard Worker# Backwards compatibility 168*6777b538SAndroid Build Coastguard Worker# Define upper case versions of output variables 169*6777b538SAndroid Build Coastguard Workerforeach(Camel 170*6777b538SAndroid Build Coastguard Worker Protobuf_VERSION 171*6777b538SAndroid Build Coastguard Worker Protobuf_SRC_ROOT_FOLDER 172*6777b538SAndroid Build Coastguard Worker Protobuf_IMPORT_DIRS 173*6777b538SAndroid Build Coastguard Worker Protobuf_DEBUG 174*6777b538SAndroid Build Coastguard Worker Protobuf_INCLUDE_DIRS 175*6777b538SAndroid Build Coastguard Worker Protobuf_LIBRARIES 176*6777b538SAndroid Build Coastguard Worker Protobuf_PROTOC_LIBRARIES 177*6777b538SAndroid Build Coastguard Worker Protobuf_LITE_LIBRARIES 178*6777b538SAndroid Build Coastguard Worker Protobuf_LIBRARY 179*6777b538SAndroid Build Coastguard Worker Protobuf_PROTOC_LIBRARY 180*6777b538SAndroid Build Coastguard Worker Protobuf_INCLUDE_DIR 181*6777b538SAndroid Build Coastguard Worker Protobuf_PROTOC_EXECUTABLE 182*6777b538SAndroid Build Coastguard Worker Protobuf_LIBRARY_DEBUG 183*6777b538SAndroid Build Coastguard Worker Protobuf_PROTOC_LIBRARY_DEBUG 184*6777b538SAndroid Build Coastguard Worker Protobuf_LITE_LIBRARY 185*6777b538SAndroid Build Coastguard Worker Protobuf_LITE_LIBRARY_DEBUG 186*6777b538SAndroid Build Coastguard Worker ) 187*6777b538SAndroid Build Coastguard Worker string(TOUPPER ${Camel} UPPER) 188*6777b538SAndroid Build Coastguard Worker set(${UPPER} ${${Camel}}) 189*6777b538SAndroid Build Coastguard Workerendforeach() 190