xref: /aosp_15_r20/external/cronet/third_party/protobuf/cmake/protobuf-module.cmake.in (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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