@@ -8,24 +8,54 @@ FILE (STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/package.xml" tesseract_python_version
88IF ("${tesseract_python_version1} " STREQUAL "" )
99MESSAGE (FATAL_ERROR "Could not read tesseract_python version." )
1010ENDIF ()
11- STRING (REGEX REPLACE "<version>([0-9]+\\ .[0-9]+\\ .[0-9]+)</version>" "\\ 1" tesseract_python_version ${tesseract_python_version1} )
11+ STRING (REGEX REPLACE "<version>([0-9]+\\ .[0-9]+\\ .[0-9]+)</version>" "\\ 1" tesseract_python_version2 ${tesseract_python_version1} )
12+ STRING (STRIP ${tesseract_python_version2} tesseract_python_version)
1213MESSAGE (STATUS "tesseract_python version: ${tesseract_python_version} " )
1314
15+
1416if (NOT MSVC )
15- #add_compile_options(-std=c++11 -Wall -Wextra -Wno-write-strings -Wno-unused-paramete -Wno-suggest-override)
16- add_compile_options (-std=c++11 -w)
17+ add_compile_options (-w)
1718else ()
1819 add_compile_options (/bigobj)
1920endif ()
2021
21- find_package (trajopt REQUIRED)
22- find_package (tesseract REQUIRED)
22+ find_package (cmake_common_scripts REQUIRED)
2323find_package (tesseract_motion_planners REQUIRED)
2424find_package (tesseract_common REQUIRED)
2525find_package (tesseract_geometry REQUIRED)
2626find_package (tesseract_visualization REQUIRED)
27+ find_package (tesseract_collision REQUIRED)
28+ find_package (tesseract_urdf REQUIRED)
29+ find_package (tesseract_kinematics REQUIRED)
30+ find_package (tesseract_environment REQUIRED)
31+ find_package (tesseract_scene_graph REQUIRED)
32+ find_package (tesseract_command_language REQUIRED)
33+ find_package (tesseract_time_parameterization REQUIRED)
34+ find_package (tesseract_process_managers REQUIRED)
2735find_package (PCL REQUIRED COMPONENTS core features filters io segmentation surface)
2836find_package (trajopt REQUIRED)
37+ find_package (TinyXML2 REQUIRED)
38+ find_package (opw_kinematics REQUIRED)
39+
40+ tesseract_variables()
41+
42+ include_directories (
43+ ${trajopt_INCLUDE_DIRS}
44+ ${tesseract_common_INCLUDE_DIRS}
45+ ${tesseract_geometry_INCLUDE_DIRS}
46+ ${tesseract_collision_INCLUDE_DIRS}
47+ ${tesseract_motion_planners_INCLUDE_DIRS}
48+ ${tesseract_kinematics_INCLUDE_DIRS}
49+ ${tesseract_urdf_INCLUDE_DIRS}
50+ ${tesseract_scene_graph_INCLUDE_DIRS}
51+ ${tesseract_environment_INCLUDE_DIRS}
52+ ${tesseract_command_language_INCLUDE_DIRS}
53+ ${tesseract_time_parameterization_INCLUDE_DIRS}
54+ ${tesseract_visualization_INCLUDE_DIRS}
55+ ${tesseract_process_managers_INCLUDE_DIRS}
56+ ${opw_kinematics_INCLUDE_DIRS}
57+ ${TinyXML2_INCLUDE_DIRS}
58+ )
2959
3060if (NOT PYTHON_VERSION)
3161 set (PYTHON_VERSION $ENV{ROS_PYTHON_VERSION} )
@@ -69,42 +99,32 @@ include(FindSWIG)
6999find_package (SWIG 4.0 REQUIRED)
70100include (UseSWIG)
71101
72- # Primary tesseract_python library
73-
74- set (SWIG_CXX_EXTENSION cxx)
75- set_property (SOURCE swig/tesseract_python.i PROPERTY CPLUSPLUS ON )
76- if (${PYTHON_VERSION_MAJOR} LESS 3)
77- set_property (SOURCE swig/tesseract_python.i PROPERTY SWIG_FLAGS -relativeimport -threads)
78- else ()
79- set_property (SOURCE swig/tesseract_python.i PROPERTY SWIG_FLAGS -relativeimport -threads -py3)
80- endif ()
81-
82- set (CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR} /python/tesseract)
83- set (SWIG_OUTFILE_DIR ${CMAKE_CURRENT_BINARY_DIR} )
84- swig_add_module(tesseract_python python swig/tesseract_python.i)
85- swig_link_libraries(tesseract_python tesseract::tesseract_motion_planners_trajopt tesseract::tesseract_motion_planners_core tesseract::tesseract_visualization tesseract::tesseract trajopt::trajopt ${PYTHON_LIBRARIES} ${EIGEN3_LIBRARIES} ${PYTHON_LIBRARIES} )
86- target_include_directories (${SWIG_MODULE_tesseract_python_REAL_NAME} PUBLIC
87- "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>"
88- "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /swig>"
89- "$<INSTALL_INTERFACE:include>" )
90- target_include_directories (${SWIG_MODULE_tesseract_python_REAL_NAME} SYSTEM PUBLIC
91- ${EIGEN3_INCLUDE_DIRS}
92- ${Boost_INCLUDE_DIRS}
93- ${TinyXML2_INCLUDE_DIRS}
94- ${PYTHON_INCLUDE_DIRS}
95- ${NUMPY_INCLUDE_DIR}
96- $<TARGET_PROPERTY:tesseract::tesseract,INTERFACE_INCLUDE_DIRECTORIES >)
97-
98- set_target_properties (${SWIG_MODULE_tesseract_python_REAL_NAME}
99- PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /python/tesseract)
100- set_target_properties (${SWIG_MODULE_tesseract_python_REAL_NAME}
101- PROPERTIES LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_BINARY_DIR} /python/tesseract)
102- set_target_properties (${SWIG_MODULE_tesseract_python_REAL_NAME}
103- PROPERTIES LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_CURRENT_BINARY_DIR} /python/tesseract)
104-
105- add_custom_command (TARGET ${SWIG_MODULE_tesseract_python_REAL_NAME} POST_BUILD COMMAND
106- ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR} /swig/__init__.py
107- $<SHELL_PATH:$<TARGET_FILE_DIR:${SWIG_MODULE_tesseract_python_REAL_NAME} >>/__init__.py)
102+ include (${CMAKE_CURRENT_SOURCE_DIR} /cmake/tesseract_python_module.cmake)
103+
104+ tesseract_python_module(tesseract_common_python SWIG_SRCS swig/tesseract_common_python.i PACKAGE tesseract_common LIBS tesseract::tesseract_common )
105+ tesseract_python_module(tesseract_geometry_python SWIG_SRCS swig/tesseract_geometry_python.i PACKAGE tesseract_geometry LIBS tesseract::tesseract_geometry )
106+ tesseract_python_module(tesseract_collision_python SWIG_SRCS swig/tesseract_collision_python.i PACKAGE tesseract_collision LIBS tesseract::tesseract_collision_core )
107+ tesseract_python_module(tesseract_collision_bullet_python SWIG_SRCS swig/tesseract_collision_bullet_python.i PACKAGE tesseract_collision_bullet LIBS tesseract::tesseract_collision_bullet )
108+ tesseract_python_module(tesseract_collision_fcl_python SWIG_SRCS swig/tesseract_collision_fcl_python.i PACKAGE tesseract_collision_fcl LIBS tesseract::tesseract_collision_fcl )
109+ tesseract_python_module(tesseract_scene_graph_python SWIG_SRCS swig/tesseract_scene_graph_python.i PACKAGE tesseract_scene_graph LIBS tesseract::tesseract_scene_graph )
110+ tesseract_python_module(tesseract_urdf_python SWIG_SRCS swig/tesseract_urdf_python.i PACKAGE tesseract_urdf LIBS tesseract::tesseract_urdf )
111+ tesseract_python_module(tesseract_kinematics_python SWIG_SRCS swig/tesseract_kinematics_python.i PACKAGE tesseract_kinematics LIBS tesseract::tesseract_kinematics_core )
112+ tesseract_python_module(tesseract_kinematics_kdl_python SWIG_SRCS swig/tesseract_kinematics_kdl_python.i PACKAGE tesseract_kinematics_kdl LIBS tesseract::tesseract_kinematics_kdl )
113+ tesseract_python_module(tesseract_kinematics_opw_python SWIG_SRCS swig/tesseract_kinematics_opw_python.i PACKAGE tesseract_kinematics_opw LIBS tesseract::tesseract_kinematics_opw )
114+ tesseract_python_module(tesseract_environment_python SWIG_SRCS swig/tesseract_environment_python.i PACKAGE tesseract_environment LIBS tesseract::tesseract_environment_core tesseract::tesseract_environment_kdl )
115+ tesseract_python_module(tesseract_command_language_python SWIG_SRCS swig/tesseract_command_language_python.i PACKAGE tesseract_command_language LIBS tesseract::tesseract_command_language)
116+ tesseract_python_module(tesseract_motion_planners_python SWIG_SRCS swig/tesseract_motion_planners_python.i PACKAGE tesseract_motion_planners LIBS tesseract::tesseract_motion_planners_simple tesseract::tesseract_motion_planners_core )
117+ tesseract_python_module(tesseract_motion_planners_simple_python SWIG_SRCS swig/tesseract_motion_planners_simple_python.i PACKAGE tesseract_motion_planners_simple LIBS tesseract::tesseract_motion_planners_simple )
118+ tesseract_python_module(tesseract_motion_planners_trajopt_python SWIG_SRCS swig/tesseract_motion_planners_trajopt_python.i PACKAGE tesseract_motion_planners_trajopt LIBS tesseract::tesseract_motion_planners_trajopt )
119+ tesseract_python_module(tesseract_motion_planners_ompl_python SWIG_SRCS swig/tesseract_motion_planners_ompl_python.i PACKAGE tesseract_motion_planners_ompl LIBS tesseract::tesseract_motion_planners_ompl )
120+ tesseract_python_module(tesseract_motion_planners_descartes_python SWIG_SRCS swig/tesseract_motion_planners_descartes_python.i PACKAGE tesseract_motion_planners_descartes LIBS tesseract::tesseract_motion_planners_descartes )
121+ tesseract_python_module(tesseract_time_parameterization_python SWIG_SRCS swig/tesseract_time_parameterization_python.i PACKAGE tesseract_time_parameterization LIBS tesseract::tesseract_time_parameterization )
122+ tesseract_python_module(tesseract_visualization_python SWIG_SRCS swig/tesseract_visualization_python.i PACKAGE tesseract_visualization LIBS tesseract::tesseract_visualization)
123+ tesseract_python_module(tesseract_process_managers_python SWIG_SRCS swig/tesseract_process_managers_python.i PACKAGE tesseract_process_managers LIBS tesseract::tesseract_process_managers )
124+
125+ configure_file (${CMAKE_CURRENT_SOURCE_DIR} /cmake/__package_init__.py.in ${CMAKE_CURRENT_BINARY_DIR} /python/tesseract/__init__.py @ONLY)
126+
127+ #install(CODE "MESSAGE(\"INSTALL TODO!\")")
108128
109129configure_file ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/setup.py.in" "${CMAKE_CURRENT_BINARY_DIR} /python/setup.py" @ONLY)
110130
@@ -124,7 +144,7 @@ if (${PYTHON_VERSION_MAJOR} LESS 3)
124144--root=/ --prefix=${CMAKE_INSTALL_PREFIX} ${SETUPTOOLS_ARG_EXTRA} --single-version-externally-managed WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /python)" )
125145else ()
126146 install (CODE "message(STATUS \" Running setup.py in ${CMAKE_CURRENT_BINARY_DIR} /python\" )
127- execute_process(COMMAND python3 setup.py install -f
147+ execute_process(COMMAND ${PYTHON_EXECUTABLE} setup.py install -f
128148 --root=/ --prefix=${CMAKE_INSTALL_PREFIX} ${SETUPTOOLS_ARG_EXTRA} --single-version-externally-managed WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /python)" )
129149endif ()
130150
@@ -146,7 +166,18 @@ endif()
146166if (TESSERACT_ENABLE_TESTING)
147167 enable_testing ()
148168
149- tesseract_add_run_tests_target(ENABLE ${TESSERACT_ENABLE_RUN_TESTING} )
169+ add_run_tests_target(ENABLE ${TESSERACT_ENABLE_RUN_TESTING} )
170+
171+ if (${TESSERACT_ENABLE_RUN_TESTING} )
172+ add_dependencies (run_tests _tesseract_common_python _tesseract_geometry_python _tesseract_collision_python
173+ _tesseract_collision_bullet_python _tesseract_collision_fcl_python _tesseract_scene_graph_python
174+ _tesseract_urdf_python _tesseract_kinematics_python _tesseract_kinematics_kdl_python
175+ _tesseract_kinematics_opw_python _tesseract_environment_python _tesseract_command_language_python
176+ _tesseract_motion_planners_python _tesseract_motion_planners_simple_python
177+ _tesseract_motion_planners_trajopt_python _tesseract_motion_planners_ompl_python
178+ _tesseract_motion_planners_descartes_python _tesseract_time_parameterization_python
179+ _tesseract_visualization_python)
180+ endif ()
150181
151182 add_test (NAME python-tests
152183 COMMAND ${PYTHON_EXECUTABLE} -m pytest -p no :cacheprovider
0 commit comments