Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: third_party/protobuf/cmake/protobuf-module.cmake.in

Issue 2600753002: Reverts third_party/protobuf: Update to HEAD (f52e188fe4) (Closed)
Patch Set: Created 3 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Functions 1 if(PROTOBUF_SRC_ROOT_FOLDER)
2 message(AUTHOR_WARNING "Variable PROTOBUF_SRC_ROOT_FOLDER defined, but not"
3 " used in CONFIG mode")
4 endif()
2 5
3 function(PROTOBUF_GENERATE_CPP SRCS HDRS) 6 function(PROTOBUF_GENERATE_CPP SRCS HDRS)
4 if(NOT ARGN) 7 if(NOT ARGN)
5 message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files") 8 message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files")
6 return() 9 return()
7 endif() 10 endif()
8 11
9 if(PROTOBUF_GENERATE_CPP_APPEND_PATH) 12 if(PROTOBUF_GENERATE_CPP_APPEND_PATH)
10 # Create an include path for each file specified 13 # Create an include path for each file specified
11 foreach(FIL ${ARGN}) 14 foreach(FIL ${ARGN})
12 get_filename_component(ABS_FIL ${FIL} ABSOLUTE) 15 get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
13 get_filename_component(ABS_PATH ${ABS_FIL} PATH) 16 get_filename_component(ABS_PATH ${ABS_FIL} PATH)
14 list(FIND _protobuf_include_path ${ABS_PATH} _contains_already) 17 list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
15 if(${_contains_already} EQUAL -1) 18 if(${_contains_already} EQUAL -1)
16 list(APPEND _protobuf_include_path -I ${ABS_PATH}) 19 list(APPEND _protobuf_include_path -I ${ABS_PATH})
17 endif() 20 endif()
18 endforeach() 21 endforeach()
19 else() 22 else()
20 set(_protobuf_include_path -I ${CMAKE_CURRENT_SOURCE_DIR}) 23 set(_protobuf_include_path -I ${CMAKE_CURRENT_SOURCE_DIR})
21 endif() 24 endif()
22 25
23 if(DEFINED Protobuf_IMPORT_DIRS) 26 # Add well-known type protos include path
24 foreach(DIR ${Protobuf_IMPORT_DIRS}) 27 list(APPEND _protobuf_include_path
28 -I "${_PROTOBUF_IMPORT_PREFIX}/@CMAKE_INSTALL_INCLUDEDIR@")
29
30 if(DEFINED PROTOBUF_IMPORT_DIRS)
31 foreach(DIR ${PROTOBUF_IMPORT_DIRS})
25 get_filename_component(ABS_PATH ${DIR} ABSOLUTE) 32 get_filename_component(ABS_PATH ${DIR} ABSOLUTE)
26 list(FIND _protobuf_include_path ${ABS_PATH} _contains_already) 33 list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
27 if(${_contains_already} EQUAL -1) 34 if(${_contains_already} EQUAL -1)
28 list(APPEND _protobuf_include_path -I ${ABS_PATH}) 35 list(APPEND _protobuf_include_path -I ${ABS_PATH})
29 endif() 36 endif()
30 endforeach() 37 endforeach()
31 endif() 38 endif()
32 39
33 set(${SRCS}) 40 set(${SRCS})
34 set(${HDRS}) 41 set(${HDRS})
35 foreach(FIL ${ARGN}) 42 foreach(FIL ${ARGN})
36 get_filename_component(ABS_FIL ${FIL} ABSOLUTE) 43 get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
37 get_filename_component(FIL_WE ${FIL} NAME_WE) 44 get_filename_component(FIL_WE ${FIL} NAME_WE)
38 45
39 list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc") 46 list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc")
40 list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h") 47 list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h")
41 48
42 add_custom_command( 49 add_custom_command(
43 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc" 50 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc"
44 "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h" 51 "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h"
45 COMMAND ${Protobuf_PROTOC_EXECUTABLE} 52 COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
46 ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} ${_protobuf_include_path} ${AB S_FIL} 53 ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} ${_protobuf_include_path} ${AB S_FIL}
47 DEPENDS ${ABS_FIL} ${Protobuf_PROTOC_EXECUTABLE} 54 DEPENDS ${ABS_FIL} ${PROTOBUF_PROTOC_EXECUTABLE}
48 COMMENT "Running C++ protocol buffer compiler on ${FIL}" 55 COMMENT "Running C++ protocol buffer compiler on ${FIL}"
49 VERBATIM ) 56 VERBATIM)
50 endforeach() 57 endforeach()
51 58
52 set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE) 59 set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE)
53 set(${SRCS} ${${SRCS}} PARENT_SCOPE) 60 set(${SRCS} ${${SRCS}} PARENT_SCOPE)
54 set(${HDRS} ${${HDRS}} PARENT_SCOPE) 61 set(${HDRS} ${${HDRS}} PARENT_SCOPE)
55 endfunction() 62 endfunction()
56 63
57 function(PROTOBUF_GENERATE_PYTHON SRCS)
58 if(NOT ARGN)
59 message(SEND_ERROR "Error: PROTOBUF_GENERATE_PYTHON() called without any pro to files")
60 return()
61 endif()
62
63 if(PROTOBUF_GENERATE_CPP_APPEND_PATH)
64 # Create an include path for each file specified
65 foreach(FIL ${ARGN})
66 get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
67 get_filename_component(ABS_PATH ${ABS_FIL} PATH)
68 list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
69 if(${_contains_already} EQUAL -1)
70 list(APPEND _protobuf_include_path -I ${ABS_PATH})
71 endif()
72 endforeach()
73 else()
74 set(_protobuf_include_path -I ${CMAKE_CURRENT_SOURCE_DIR})
75 endif()
76
77 if(DEFINED Protobuf_IMPORT_DIRS)
78 foreach(DIR ${Protobuf_IMPORT_DIRS})
79 get_filename_component(ABS_PATH ${DIR} ABSOLUTE)
80 list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
81 if(${_contains_already} EQUAL -1)
82 list(APPEND _protobuf_include_path -I ${ABS_PATH})
83 endif()
84 endforeach()
85 endif()
86
87 set(${SRCS})
88 foreach(FIL ${ARGN})
89 get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
90 get_filename_component(FIL_WE ${FIL} NAME_WE)
91
92 list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}_pb2.py")
93 add_custom_command(
94 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}_pb2.py"
95 COMMAND ${Protobuf_PROTOC_EXECUTABLE} --python_out ${CMAKE_CURRENT_BINARY _DIR} ${_protobuf_include_path} ${ABS_FIL}
96 DEPENDS ${ABS_FIL} ${Protobuf_PROTOC_EXECUTABLE}
97 COMMENT "Running Python protocol buffer compiler on ${FIL}"
98 VERBATIM )
99 endforeach()
100
101 set(${SRCS} ${${SRCS}} PARENT_SCOPE)
102 endfunction()
103
104 # Environment
105
106 # Backwards compatibility
107 # Define camel case versions of input variables
108 foreach(UPPER
109 PROTOBUF_SRC_ROOT_FOLDER
110 PROTOBUF_IMPORT_DIRS
111 PROTOBUF_DEBUG
112 PROTOBUF_LIBRARY
113 PROTOBUF_PROTOC_LIBRARY
114 PROTOBUF_INCLUDE_DIR
115 PROTOBUF_PROTOC_EXECUTABLE
116 PROTOBUF_LIBRARY_DEBUG
117 PROTOBUF_PROTOC_LIBRARY_DEBUG
118 PROTOBUF_LITE_LIBRARY
119 PROTOBUF_LITE_LIBRARY_DEBUG
120 )
121 if (DEFINED ${UPPER})
122 string(REPLACE "PROTOBUF_" "Protobuf_" Camel ${UPPER})
123 if (NOT DEFINED ${Camel})
124 set(${Camel} ${${UPPER}})
125 endif()
126 endif()
127 endforeach()
128
129 if(DEFINED Protobuf_SRC_ROOT_FOLDER)
130 message(AUTHOR_WARNING "Variable Protobuf_SRC_ROOT_FOLDER defined, but not"
131 " used in CONFIG mode")
132 endif()
133
134 include(SelectLibraryConfigurations)
135
136 # Internal function: search for normal library as well as a debug one 64 # Internal function: search for normal library as well as a debug one
137 # if the debug one is specified also include debug/optimized keywords 65 # if the debug one is specified also include debug/optimized keywords
138 # in *_LIBRARIES variable 66 # in *_LIBRARIES variable
139 function(_protobuf_find_libraries name filename) 67 function(_protobuf_find_libraries name filename)
140 if(${name}_LIBRARIES) 68 get_target_property(${name}_LIBRARY lib${filename}
141 # Use result recorded by a previous call. 69 IMPORTED_LOCATION_RELEASE)
142 elseif(${name}_LIBRARY) 70 set(${name}_LIBRARY "${${name}_LIBRARY}" PARENT_SCOPE)
143 # Honor cache entry used by CMake 3.5 and lower. 71 get_target_property(${name}_LIBRARY_DEBUG lib${filename}
144 set(${name}_LIBRARIES "${${name}_LIBRARY}" PARENT_SCOPE) 72 IMPORTED_LOCATION_DEBUG)
145 else() 73 set(${name}_LIBRARY_DEBUG "${${name}_LIBRARY_DEBUG}" PARENT_SCOPE)
146 get_target_property(${name}_LIBRARY_RELEASE protobuf::lib${filename}
147 LOCATION_RELEASE)
148 get_target_property(${name}_LIBRARY_DEBUG protobuf::lib${filename}
149 LOCATION_DEBUG)
150 74
151 select_library_configurations(${name}) 75 if(NOT ${name}_LIBRARY_DEBUG)
152 set(${name}_LIBRARY ${${name}_LIBRARY} PARENT_SCOPE) 76 # There is no debug library
153 set(${name}_LIBRARIES ${${name}_LIBRARIES} PARENT_SCOPE) 77 set(${name}_LIBRARY_DEBUG ${${name}_LIBRARY} PARENT_SCOPE)
154 endif() 78 set(${name}_LIBRARIES ${${name}_LIBRARY} PARENT_SCOPE)
79 else()
80 # There IS a debug library
81 set(${name}_LIBRARIES
82 optimized ${${name}_LIBRARY}
83 debug ${${name}_LIBRARY_DEBUG}
84 PARENT_SCOPE
85 )
86 endif()
155 endfunction() 87 endfunction()
156 88
157 # Internal function: find threads library 89 # Internal function: find threads library
158 function(_protobuf_find_threads) 90 function(_protobuf_find_threads)
159 set(CMAKE_THREAD_PREFER_PTHREAD TRUE) 91 set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
160 find_package(Threads) 92 find_package(Threads)
161 if(Threads_FOUND) 93 if(Threads_FOUND)
162 list(APPEND PROTOBUF_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) 94 list(APPEND PROTOBUF_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
163 set(PROTOBUF_LIBRARIES "${PROTOBUF_LIBRARIES}" PARENT_SCOPE) 95 set(PROTOBUF_LIBRARIES "${PROTOBUF_LIBRARIES}" PARENT_SCOPE)
164 endif() 96 endif()
165 endfunction() 97 endfunction()
166 98
167 # 99 #
168 # Main. 100 # Main.
169 # 101 #
170 102
171 # By default have PROTOBUF_GENERATE_CPP macro pass -I to protoc 103 # By default have PROTOBUF_GENERATE_CPP macro pass -I to protoc
172 # for each directory where a proto file is referenced. 104 # for each directory where a proto file is referenced.
173 if(NOT DEFINED PROTOBUF_GENERATE_CPP_APPEND_PATH) 105 if(NOT DEFINED PROTOBUF_GENERATE_CPP_APPEND_PATH)
174 set(PROTOBUF_GENERATE_CPP_APPEND_PATH TRUE) 106 set(PROTOBUF_GENERATE_CPP_APPEND_PATH TRUE)
175 endif() 107 endif()
176 108
177 # The Protobuf library 109 # The Protobuf library
178 _protobuf_find_libraries(Protobuf protobuf) 110 _protobuf_find_libraries(PROTOBUF protobuf)
179 111
180 # The Protobuf Lite library 112 # The Protobuf Lite library
181 _protobuf_find_libraries(Protobuf_LITE protobuf-lite) 113 _protobuf_find_libraries(PROTOBUF_LITE protobuf-lite)
182 114
183 # The Protobuf Protoc Library 115 # The Protobuf Protoc Library
184 _protobuf_find_libraries(Protobuf_PROTOC protoc) 116 _protobuf_find_libraries(PROTOBUF_PROTOC protoc)
185 117
186 if(UNIX) 118 if(UNIX)
187 _protobuf_find_threads() 119 _protobuf_find_threads()
188 endif() 120 endif()
189 121
190 # Set the include directory 122 # Set the include directory
191 get_target_property(Protobuf_INCLUDE_DIRS protobuf::libprotobuf 123 set(PROTOBUF_INCLUDE_DIR "${_PROTOBUF_IMPORT_PREFIX}/@CMAKE_INSTALL_INCLUDEDIR@" )
192 INTERFACE_INCLUDE_DIRECTORIES)
193 124
194 # Set the protoc Executable 125 # Set the protoc Executable
195 get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc 126 get_target_property(PROTOBUF_PROTOC_EXECUTABLE protoc
196 IMPORTED_LOCATION_RELEASE) 127 IMPORTED_LOCATION_RELEASE)
197 if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}") 128 if(NOT PROTOBUF_PROTOC_EXECUTABLE)
198 get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc 129 get_target_property(PROTOBUF_PROTOC_EXECUTABLE protoc
199 IMPORTED_LOCATION_DEBUG) 130 IMPORTED_LOCATION_DEBUG)
200 endif() 131 endif()
201 132
202 # Version info variable 133 include(FindPackageHandleStandardArgs)
203 set(Protobuf_VERSION "@protobuf_VERSION@") 134 FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROTOBUF DEFAULT_MSG
135 PROTOBUF_LIBRARY PROTOBUF_INCLUDE_DIR)
204 136
205 include(FindPackageHandleStandardArgs) 137 if(PROTOBUF_FOUND)
206 FIND_PACKAGE_HANDLE_STANDARD_ARGS(Protobuf 138 set(PROTOBUF_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIR})
207 REQUIRED_VARS Protobuf_PROTOC_EXECUTABLE Protobuf_LIBRARIES Protobuf_INCLUDE _DIRS 139 endif()
208 VERSION_VAR Protobuf_VERSION
209 )
210
211 # Backwards compatibility
212 # Define upper case versions of output variables
213 foreach(Camel
214 Protobuf_VERSION
215 Protobuf_SRC_ROOT_FOLDER
216 Protobuf_IMPORT_DIRS
217 Protobuf_DEBUG
218 Protobuf_INCLUDE_DIRS
219 Protobuf_LIBRARIES
220 Protobuf_PROTOC_LIBRARIES
221 Protobuf_LITE_LIBRARIES
222 Protobuf_LIBRARY
223 Protobuf_PROTOC_LIBRARY
224 Protobuf_INCLUDE_DIR
225 Protobuf_PROTOC_EXECUTABLE
226 Protobuf_LIBRARY_DEBUG
227 Protobuf_PROTOC_LIBRARY_DEBUG
228 Protobuf_LITE_LIBRARY
229 Protobuf_LITE_LIBRARY_DEBUG
230 )
231 string(TOUPPER ${Camel} UPPER)
232 set(${UPPER} ${${Camel}})
233 endforeach()
OLDNEW
« no previous file with comments | « third_party/protobuf/cmake/protobuf-config.cmake.in ('k') | third_party/protobuf/cmake/protobuf-options.cmake » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698