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