Skip to content

Commit 6675823

Browse files
authored
Revert "Use modern cmake targets to avoid absolute paths to appear in binary archives (#160)" (#166)
This reverts commit a608556. Signed-off-by: Ivan Santiago Paunovic <[email protected]>
1 parent 3ce24ba commit 6675823

File tree

1 file changed

+38
-11
lines changed

1 file changed

+38
-11
lines changed

rosidl_generator_py/cmake/rosidl_generator_py_generate_interfaces.cmake

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ find_package(PythonInterp 3.6 REQUIRED)
2121

2222
find_package(python_cmake_module REQUIRED)
2323
find_package(PythonExtra MODULE REQUIRED)
24-
find_package(Python3 REQUIRED COMPONENTS Development NumPy)
2524

2625
# Get a list of typesupport implementations from valid rmw implementations.
2726
rosidl_generator_py_get_typesupports(_typesupport_impls)
@@ -166,23 +165,52 @@ set(rosidl_generator_py_suffix "__rosidl_generator_py")
166165
set(_target_name_lib "${rosidl_generate_interfaces_TARGET}${rosidl_generator_py_suffix}")
167166
add_library(${_target_name_lib} SHARED ${_generated_c_files})
168167
target_link_libraries(${_target_name_lib}
169-
PRIVATE
170168
${rosidl_generate_interfaces_TARGET}__rosidl_generator_c)
171169
add_dependencies(
172170
${_target_name_lib}
173171
${rosidl_generate_interfaces_TARGET}${_target_suffix}
174172
${rosidl_generate_interfaces_TARGET}__rosidl_typesupport_c
175173
)
174+
175+
target_link_libraries(
176+
${_target_name_lib}
177+
${PythonExtra_LIBRARIES}
178+
)
176179
target_include_directories(${_target_name_lib}
177180
PRIVATE
178181
${CMAKE_CURRENT_BINARY_DIR}/rosidl_generator_c
179182
${CMAKE_CURRENT_BINARY_DIR}/rosidl_generator_py
183+
${PythonExtra_INCLUDE_DIRS}
184+
)
185+
186+
# Check if numpy is in the include path
187+
find_file(_numpy_h numpy/numpyconfig.h
188+
PATHS ${PythonExtra_INCLUDE_DIRS}
180189
)
181190

182-
target_link_libraries(${_target_name_lib} PRIVATE Python3::NumPy Python3::Module)
191+
if(APPLE OR WIN32 OR NOT _numpy_h)
192+
# add include directory for numpy headers
193+
set(_python_code
194+
"import numpy"
195+
"print(numpy.get_include())"
196+
)
197+
execute_process(
198+
COMMAND "${PYTHON_EXECUTABLE}" "-c" "${_python_code}"
199+
OUTPUT_VARIABLE _output
200+
RESULT_VARIABLE _result
201+
OUTPUT_STRIP_TRAILING_WHITESPACE
202+
)
203+
if(NOT _result EQUAL 0)
204+
message(FATAL_ERROR
205+
"execute_process(${PYTHON_EXECUTABLE} -c '${_python_code}') returned "
206+
"error code ${_result}")
207+
endif()
208+
message(STATUS "Using numpy include directory: ${_output}")
209+
target_include_directories(${_target_name_lib} PUBLIC "${_output}")
210+
endif()
183211

184212
rosidl_get_typesupport_target(c_typesupport_target "${rosidl_generate_interfaces_TARGET}" "rosidl_typesupport_c")
185-
target_link_libraries(${_target_name_lib} PRIVATE ${c_typesupport_target})
213+
target_link_libraries(${_target_name_lib} ${c_typesupport_target})
186214

187215
foreach(_typesupport_impl ${_typesupport_impls})
188216
find_package(${_typesupport_impl} REQUIRED)
@@ -217,36 +245,35 @@ foreach(_typesupport_impl ${_typesupport_impls})
217245
endif()
218246
target_link_libraries(
219247
${_target_name}
220-
PRIVATE
221248
${_target_name_lib}
249+
${PythonExtra_LIBRARIES}
222250
${rosidl_generate_interfaces_TARGET}__${_typesupport_impl}
223-
Python3::Module
224251
)
225252

226253
target_include_directories(${_target_name}
227254
PUBLIC
228255
${CMAKE_CURRENT_BINARY_DIR}/rosidl_generator_c
229256
${CMAKE_CURRENT_BINARY_DIR}/rosidl_generator_py
257+
${PythonExtra_INCLUDE_DIRS}
230258
)
231259

232-
target_link_libraries(${_target_name} PRIVATE ${c_typesupport_target})
260+
target_link_libraries(${_target_name} ${c_typesupport_target})
233261

234262
ament_target_dependencies(${_target_name}
235-
PUBLIC
236263
"rosidl_runtime_c"
237264
"rosidl_typesupport_c"
238265
"rosidl_typesupport_interface"
239266
)
240267
foreach(_pkg_name ${rosidl_generate_interfaces_DEPENDENCY_PACKAGE_NAMES})
241-
ament_target_dependencies(${_target_name} PUBLIC
268+
ament_target_dependencies(${_target_name}
242269
${_pkg_name}
243270
)
244271
endforeach()
245272

246273
add_dependencies(${_target_name}
247274
${rosidl_generate_interfaces_TARGET}__${_typesupport_impl}
248275
)
249-
ament_target_dependencies(${_target_name} PUBLIC
276+
ament_target_dependencies(${_target_name}
250277
"rosidl_runtime_c"
251278
"rosidl_generator_py"
252279
)
@@ -261,7 +288,7 @@ set(PYTHON_EXECUTABLE ${_PYTHON_EXECUTABLE})
261288

262289
# Depend on rosidl_generator_py generated targets from our dependencies
263290
foreach(_pkg_name ${rosidl_generate_interfaces_DEPENDENCY_PACKAGE_NAMES})
264-
target_link_libraries(${_target_name_lib} PRIVATE ${${_pkg_name}_TARGETS${rosidl_generator_py_suffix}})
291+
target_link_libraries(${_target_name_lib} ${${_pkg_name}_TARGETS${rosidl_generator_py_suffix}})
265292
endforeach()
266293

267294
set_lib_properties("")

0 commit comments

Comments
 (0)