@@ -19,40 +19,38 @@ if(INSTALL_GZ_MSGS_GEN_EXECUTABLE)
19
19
install (FILES $<TARGET_FILE:gz_msgs_gen> DESTINATION ${GZ_BIN_INSTALL_DIR} RENAME ign_msgs_gen PERMISSIONS OWNER_EXECUTE)
20
20
endif ()
21
21
22
- find_package (Python3 REQUIRED COMPONENTS Interpreter)
23
-
24
22
##################################################
25
23
# A function that calls protoc on a protobuf file
26
24
# Options:
27
- # GENERATE_RUBY - generates ruby code for the message if specified
25
+ # GENERATE_PYTHON - generates python code for the message if specified
28
26
# GENERATE_CPP - generates c++ code for the message if specified
29
27
# One value arguments:
30
28
# PROTO_PACKAGE - Protobuf package the file belongs to (e.g. ".gz.msgs")
31
29
# PROTOC_EXEC - Path to protoc
32
30
# INPUT_PROTO - Path to the input .proto file
33
31
# OUTPUT_CPP_DIR - Path where C++ files are saved
34
- # OUTPUT_RUBY_DIR - Path where Ruby files are saved
32
+ # OUTPUT_PYTHON_DIR - Path where Python files are saved
35
33
# OUTPUT_INCLUDES - A CMake variable name containing a list that the C++ header path should be appended to
36
34
# OUTPUT_CPP_HH_VAR - A CMake variable name containing a list that the C++ header path should be appended to
37
35
# OUTPUT_GZ_CPP_HH_VAR - A CMake variable name containing a list that the C++ header path should be appended to
38
36
# OUTPUT_CPP_CC_VAR - A Cmake variable name containing a list that the C++ source path should be appended to
39
- # OUTPUT_RUBY_VAR - A Cmake variable name containing a list that the ruby file should be apenned to
37
+ # OUTPUT_PYTHON_VAR - A Cmake variable name containing a list that the python file should be appended to
40
38
# Multi value arguments
41
39
# PROTO_PATH - Passed to protoc --proto_path
42
40
function (gz_msgs_protoc)
43
- set (options GENERATE_RUBY GENERATE_CPP)
41
+ set (options GENERATE_PYTHON GENERATE_CPP)
44
42
set (oneValueArgs
45
43
PROTO_PACKAGE
46
44
PROTOC_EXEC
47
45
INPUT_PROTO
48
46
OUTPUT_CPP_DIR
49
- OUTPUT_RUBY_DIR
47
+ OUTPUT_PYTHON_DIR
50
48
OUTPUT_INCLUDES
51
49
OUTPUT_CPP_HH_VAR
52
50
OUTPUT_GZ_CPP_HH_VAR
53
51
OUTPUT_DETAIL_CPP_HH_VAR
54
52
OUTPUT_CPP_CC_VAR
55
- OUTPUT_RUBY_VAR )
53
+ OUTPUT_PYTHON_VAR )
56
54
set (multiValueArgs PROTO_PATH)
57
55
58
56
cmake_parse_arguments (gz_msgs_protoc "${options} " "${oneValueArgs} " "${multiValueArgs} " ${ARGN} )
@@ -97,13 +95,13 @@ function(gz_msgs_protoc)
97
95
set (${gz_msgs_protoc_OUTPUT_CPP_CC_VAR} ${${gz_msgs_protoc_OUTPUT_CPP_CC_VAR} } PARENT_SCOPE)
98
96
endif ()
99
97
100
- if (gz_msgs_protoc_GENERATE_RUBY )
101
- file (MAKE_DIRECTORY ${gz_msgs_protoc_OUTPUT_RUBY_DIR } )
102
- set (output_ruby " ${gz_msgs_protoc_OUTPUT_RUBY_DIR}${proto_package_dir} / ${FIL_WE} _pb.rb" )
103
- list ( APPEND ${gz_msgs_protoc_OUTPUT_RUBY_VAR} ${output_ruby} )
104
- list (APPEND output_files ${output_ruby } )
105
- list (APPEND protoc_args "--ruby_out= ${gz_msgs_protoc_OUTPUT_RUBY_DIR} " )
106
- set (${gz_msgs_protoc_OUTPUT_RUBY_VAR } ${${gz_msgs_protoc_OUTPUT_RUBY_VAR } } PARENT_SCOPE)
98
+ if (gz_msgs_protoc_GENERATE_PYTHON )
99
+ file (MAKE_DIRECTORY ${gz_msgs_protoc_OUTPUT_PYTHON_DIR } )
100
+ # Note: Both proto2 and proto3 use the _pb2.py suffix (https://protobuf.dev/reference/python/python-generated/#invocation )
101
+ set (output_python " ${gz_msgs_protoc_OUTPUT_PYTHON_DIR}${proto_package_dir} / ${FIL_WE} _pb2.py" )
102
+ list (APPEND ${gz_msgs_protoc_OUTPUT_PYTHON_VAR} ${output_python } )
103
+ list (APPEND output_files ${output_python} )
104
+ set (${gz_msgs_protoc_OUTPUT_PYTHON_VAR } ${${gz_msgs_protoc_OUTPUT_PYTHON_VAR } } PARENT_SCOPE)
107
105
endif ()
108
106
109
107
@@ -120,10 +118,10 @@ function(gz_msgs_protoc)
120
118
--output -cpp-path "${gz_msgs_protoc_OUTPUT_CPP_DIR} " )
121
119
endif ()
122
120
123
- if (${gz_msgs_protoc_GENERATE_RUBY } )
121
+ if (${gz_msgs_protoc_GENERATE_PYTHON } )
124
122
list (APPEND GENERATE_ARGS
125
- --generate-ruby
126
- --output -ruby -path "${gz_msgs_protoc_OUTPUT_RUBY_DIR } " )
123
+ --generate-python
124
+ --output -python -path "${gz_msgs_protoc_OUTPUT_PYTHON_DIR } " )
127
125
endif ()
128
126
129
127
add_custom_command (
@@ -151,15 +149,15 @@ foreach(proto_file ${proto_files})
151
149
PROTO_PACKAGE
152
150
.gz.msgs
153
151
GENERATE_CPP
154
- GENERATE_RUBY
152
+ GENERATE_PYTHON
155
153
INPUT_PROTO
156
154
${proto_file}
157
155
PROTOC_EXEC
158
156
protobuf::protoc
159
157
OUTPUT_CPP_DIR
160
158
"${PROJECT_BINARY_DIR} /include"
161
- OUTPUT_RUBY_DIR
162
- "${PROJECT_BINARY_DIR} /ruby "
159
+ OUTPUT_PYTHON_DIR
160
+ "${PROJECT_BINARY_DIR} /python "
163
161
OUTPUT_INCLUDES
164
162
gen_includes
165
163
OUTPUT_CPP_HH_VAR
@@ -170,8 +168,8 @@ foreach(proto_file ${proto_files})
170
168
gen_ign_headers
171
169
OUTPUT_CPP_CC_VAR
172
170
gen_sources
173
- OUTPUT_RUBY_VAR
174
- gen_ruby_scripts
171
+ OUTPUT_PYTHON_VAR
172
+ gen_python_scripts
175
173
PROTO_PATH
176
174
"${PROJECT_SOURCE_DIR} /proto" )
177
175
endforeach ()
@@ -193,11 +191,22 @@ if(MSVC)
193
191
add_definitions (/bigobj)
194
192
endif ()
195
193
196
- set_source_files_properties (${gen_headers} ${gen_ign_headers} ${gen_detail_headers} ${gen_sources} ${gen_ruby_scripts }
194
+ set_source_files_properties (${gen_headers} ${gen_ign_headers} ${gen_detail_headers} ${gen_sources} ${gen_python_scripts }
197
195
PROPERTIES GENERATED TRUE )
198
196
199
- message (STATUS "Installing Ruby messages to ${CMAKE_INSTALL_PREFIX} /${GZ_LIB_INSTALL_DIR} /ruby/gz/${GZ_DESIGNATION}${PROJECT_VERSION_MAJOR} " )
200
- install (FILES ${gen_ruby_scripts} DESTINATION ${CMAKE_INSTALL_PREFIX} /${GZ_LIB_INSTALL_DIR} /ruby/gz/${GZ_DESIGNATION}${PROJECT_VERSION_MAJOR} )
197
+ if (USE_SYSTEM_PATHS_FOR_PYTHON_INSTALLATION)
198
+ if (USE_DIST_PACKAGES_FOR_PYTHON)
199
+ string (REPLACE "site-packages" "dist-packages" GZ_PYTHON_INSTALL_PATH ${Python3_SITELIB} )
200
+ else ()
201
+ # Python3_SITELIB might use dist-packages in some platforms
202
+ string (REPLACE "dist-packages" "site-packages" GZ_PYTHON_INSTALL_PATH ${Python3_SITELIB} )
203
+ endif ()
204
+ else ()
205
+ # If not a system installation, respect local paths
206
+ set (GZ_PYTHON_INSTALL_PATH ${GZ_LIB_INSTALL_DIR} /python)
207
+ endif ()
208
+ message (STATUS "Installing Python messages to ${GZ_PYTHON_INSTALL_PATH} /gz/${GZ_DESIGNATION}${PROJECT_VERSION_MAJOR} " )
209
+ install (FILES ${gen_python_scripts} DESTINATION ${GZ_PYTHON_INSTALL_PATH} /gz/${GZ_DESIGNATION}${PROJECT_VERSION_MAJOR} )
201
210
202
211
# Install gz/msgs
203
212
gz_install_includes(
0 commit comments