Python Wrapper CMake update
- Added python-install target variable for easy updating. - Fixed/Added all dependencies so that everything is built automatically. - Removed unnecessary install commandsrelease/4.3a0
							parent
							
								
									74591eece6
								
							
						
					
					
						commit
						59968fddc5
					
				| 
						 | 
				
			
			@ -43,7 +43,6 @@ function(wrap_and_install_library_cython interface_header extra_imports install_
 | 
			
		|||
  get_filename_component(module_name "${interface_header}" NAME_WE)
 | 
			
		||||
  set(generated_files_path "${GTSAM_CYTHON_INSTALL_PATH}/${module_name}")
 | 
			
		||||
  wrap_library_cython("${interface_header}" "${generated_files_path}" "${extra_imports}" "${libs}" "${dependencies}")
 | 
			
		||||
  # install_cython_wrapped_library("${interface_header}" "${generated_files_path}" "${install_path}")
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
function(set_up_required_cython_packages)
 | 
			
		||||
| 
						 | 
				
			
			@ -170,32 +169,13 @@ function(wrap_library_cython interface_header generated_files_path extra_imports
 | 
			
		|||
  cythonize(cythonize_${module_name} ${generated_pyx} ${module_name}
 | 
			
		||||
    ${generated_files_path} "${include_dirs}" "${libs}" ${interface_header} cython_wrap_${module_name}_pyx)
 | 
			
		||||
 | 
			
		||||
  add_dependencies(${python_install_target} cython_wrap_${module_name}_pyx)
 | 
			
		||||
 | 
			
		||||
  # distclean
 | 
			
		||||
  add_custom_target(wrap_${module_name}_cython_distclean
 | 
			
		||||
      COMMAND cmake -E remove_directory ${generated_files_path})
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
# Internal function that installs a wrap toolbox
 | 
			
		||||
function(install_cython_wrapped_library interface_header generated_files_path install_path)
 | 
			
		||||
  get_filename_component(module_name "${interface_header}" NAME_WE)
 | 
			
		||||
 | 
			
		||||
  # NOTE: only installs .pxd and .pyx and binary files (not .cpp) - the trailing slash on the directory name
 | 
			
		||||
  # here prevents creating the top-level module name directory in the destination.
 | 
			
		||||
  # Split up filename to strip trailing '/' in GTSAM_CYTHON_INSTALL_PATH/subdirectory if there is one
 | 
			
		||||
  get_filename_component(location "${install_path}" PATH)
 | 
			
		||||
  get_filename_component(name "${install_path}" NAME)
 | 
			
		||||
  message(STATUS "Installing Cython Toolbox to ${location}/${name}") #${GTSAM_CYTHON_INSTALL_PATH}"
 | 
			
		||||
 | 
			
		||||
  install(DIRECTORY "${generated_files_path}/" DESTINATION ${install_path}
 | 
			
		||||
      CONFIGURATIONS "${CMAKE_BUILD_TYPE}"
 | 
			
		||||
      PATTERN "build" EXCLUDE
 | 
			
		||||
      PATTERN "CMakeFiles" EXCLUDE
 | 
			
		||||
      PATTERN "Makefile" EXCLUDE
 | 
			
		||||
      PATTERN "*.cmake" EXCLUDE
 | 
			
		||||
      PATTERN "*.cpp" EXCLUDE
 | 
			
		||||
      PATTERN "*.py" EXCLUDE)
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
# Helper function to install Cython scripts and handle multiple build types where the scripts
 | 
			
		||||
# should be installed to all build type toolboxes
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -225,5 +205,5 @@ endfunction()
 | 
			
		|||
#  source_files: The source files to be installed.
 | 
			
		||||
#  dest_directory: The destination directory to install to.
 | 
			
		||||
function(install_cython_files source_files dest_directory)
 | 
			
		||||
    install(FILES "${source_files}" DESTINATION "${dest_directory}" CONFIGURATIONS "${CMAKE_BUILD_TYPE}")
 | 
			
		||||
    file(COPY "${source_files}" DESTINATION "${dest_directory}")
 | 
			
		||||
endfunction()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,8 @@ include(GtsamCythonWrap)
 | 
			
		|||
# Create the cython toolbox for the gtsam library
 | 
			
		||||
if (GTSAM_INSTALL_CYTHON_TOOLBOX)
 | 
			
		||||
  # Add the new make target command
 | 
			
		||||
  add_custom_target(python-install
 | 
			
		||||
  set(python_install_target python-install)
 | 
			
		||||
  add_custom_target(${python_install_target}
 | 
			
		||||
    COMMAND ${PYTHON_EXECUTABLE} ${GTSAM_CYTHON_INSTALL_PATH}/setup.py install
 | 
			
		||||
    WORKING_DIRECTORY ${GTSAM_CYTHON_INSTALL_FULLPATH})
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -27,9 +28,6 @@ if (GTSAM_INSTALL_CYTHON_TOOLBOX)
 | 
			
		|||
  configure_file(${PROJECT_SOURCE_DIR}/cython/gtsam_unstable/__init__.py ${GTSAM_CYTHON_INSTALL_PATH}/gtsam_unstable/__init__.py COPYONLY)
 | 
			
		||||
  configure_file(${PROJECT_SOURCE_DIR}/cython/setup.py.in ${GTSAM_CYTHON_INSTALL_PATH}/setup.py)
 | 
			
		||||
  install_cython_files("${PROJECT_BINARY_DIR}/cython/setup.py" "${GTSAM_CYTHON_INSTALL_PATH}")
 | 
			
		||||
  # install scripts and tests
 | 
			
		||||
  install_cython_scripts("${PROJECT_SOURCE_DIR}/cython/gtsam" "${GTSAM_CYTHON_INSTALL_PATH}" "*.py")
 | 
			
		||||
  install_cython_scripts("${PROJECT_SOURCE_DIR}/cython/gtsam_unstable" "${GTSAM_CYTHON_INSTALL_PATH}" "*.py")
 | 
			
		||||
 | 
			
		||||
  # Wrap gtsam
 | 
			
		||||
  add_custom_target(gtsam_header DEPENDS "../gtsam.h")
 | 
			
		||||
| 
						 | 
				
			
			@ -39,7 +37,7 @@ if (GTSAM_INSTALL_CYTHON_TOOLBOX)
 | 
			
		|||
                                  gtsam  # library to link with
 | 
			
		||||
                                  "wrap;cythonize_eigency;gtsam;gtsam_header"  # dependencies which need to be built before wrapping
 | 
			
		||||
                                  )
 | 
			
		||||
  add_dependencies(python-install gtsam gtsam_header)
 | 
			
		||||
  add_dependencies(${python_install_target} gtsam gtsam_header)
 | 
			
		||||
 | 
			
		||||
  # Wrap gtsam_unstable
 | 
			
		||||
  if(GTSAM_BUILD_UNSTABLE)
 | 
			
		||||
| 
						 | 
				
			
			@ -50,7 +48,11 @@ if (GTSAM_INSTALL_CYTHON_TOOLBOX)
 | 
			
		|||
                                    gtsam_unstable  # library to link with
 | 
			
		||||
                                    "gtsam_unstable;gtsam_unstable_header;cythonize_gtsam"  # dependencies to be built before wrapping
 | 
			
		||||
                                    )
 | 
			
		||||
    add_dependencies(python-install gtsam_unstable gtsam_unstable_header)
 | 
			
		||||
    add_dependencies(${python_install_target} gtsam_unstable gtsam_unstable_header)
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  # install scripts and tests
 | 
			
		||||
  install_cython_scripts("${PROJECT_SOURCE_DIR}/cython/gtsam" "${GTSAM_CYTHON_INSTALL_PATH}" "*.py")
 | 
			
		||||
  install_cython_scripts("${PROJECT_SOURCE_DIR}/cython/gtsam_unstable" "${GTSAM_CYTHON_INSTALL_PATH}" "*.py")
 | 
			
		||||
 | 
			
		||||
endif ()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,3 +36,5 @@ target_include_directories(cythonize_eigency_core PUBLIC
 | 
			
		|||
add_dependencies(cythonize_eigency_core cythonize_eigency_conversions)
 | 
			
		||||
add_custom_target(cythonize_eigency)
 | 
			
		||||
add_dependencies(cythonize_eigency cythonize_eigency_conversions cythonize_eigency_core)
 | 
			
		||||
 | 
			
		||||
add_dependencies(${python_install_target} cythonize_eigency)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue