Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python: cmake-generated wrappers for executables #2741

Closed
wants to merge 12 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ include(FindFFTW)
include(CompilerCache)
include(ECMEnableSanitizers)

find_package(Python3 COMPONENTS Interpreter)

use_compiler_cache()

if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git AND NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks/pre-commit)
Expand Down
35 changes: 35 additions & 0 deletions cmake/FindCommands.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
file(
GLOB CPP_COMMAND_FILES
${CMAKE_SOURCE_DIR}/cmd/*.cpp
)

file(
GLOB PYTHON_ROOT_ENTRIES
${CMAKE_SOURCE_DIR}/python/mrtrix3/*/
)

set(MRTRIX_COMMAND_LIST "")
foreach(CPP_COMMAND_FILE ${CPP_COMMAND_FILES})
get_filename_component(CPP_COMMAND_NAME ${CPP_COMMAND_FILE} NAME_WE)
if(MRTRIX_COMMAND_LIST STREQUAL "")
set(MRTRIX_COMMAND_LIST "\"${CPP_COMMAND_NAME}\"")
else()
set(MRTRIX_COMMAND_LIST "${MRTRIX_COMMAND_LIST},\n \"${CPP_COMMAND_NAME}\"")
endif()
endforeach()
foreach(PYTHON_ROOT_ENTRY ${PYTHON_ROOT_ENTRIES})
if(IS_DIRECTORY ${PYTHON_ROOT_ENTRY})
get_filename_component(PYTHON_COMMAND_NAME ${PYTHON_ROOT_ENTRY} NAME)
set(MRTRIX_COMMAND_LIST "${MRTRIX_COMMAND_LIST},\n \"${PYTHON_COMMAND_NAME}\"")
endif()
endforeach()
set(MRTRIX_COMMAND_PATH ${CMAKE_CURRENT_BUILD_DIR}/bin)
message(VERBOSE "Completed FindCommands() function")
message(VERBOSE "MRtrix3 executables location: ${MRTRIX_COMMAND_PATH}")
message(VERBOSE "List of MRtrix3 commands: ${MRTRIX_COMMAND_LIST}")

configure_file(
${SRC}
${DST}
@ONLY
)
3 changes: 1 addition & 2 deletions cmake/FindVersion.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,8 @@ if(NOT MRTRIX_VERSION)
message(STATUS "Failed to determine version from Git, using default base version: ${MRTRIX_BASE_VERSION}")
endif()


configure_file(
${SRC}
${DST}
@ONLY
)
)
71 changes: 1 addition & 70 deletions python/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,71 +1,2 @@
set(PYTHON_VERSION_FILE ${CMAKE_CURRENT_SOURCE_DIR}/lib/mrtrix3/_version.py)
add_subdirectory(mrtrix3)

find_package(Git QUIET)

file(GLOB_RECURSE PYTHON_BIN_FILES
${CMAKE_CURRENT_SOURCE_DIR}/bin/*
)

file(GLOB_RECURSE PYTHON_LIB_FILES
${CMAKE_CURRENT_SOURCE_DIR}/lib/*
)

add_custom_target(Python SOURCES
${PYTHON_BIN_FILES}
)

# We generate the version file at configure time,
# so tools like Pylint can run without building the project
execute_process(
COMMAND ${CMAKE_COMMAND}
-D GIT_EXECUTABLE=${GIT_EXECUTABLE}
-D MRTRIX_BASE_VERSION=${MRTRIX_BASE_VERSION}
-D DST=${PYTHON_VERSION_FILE}
-D SRC=${CMAKE_CURRENT_SOURCE_DIR}/lib/mrtrix3/_version.py.in
-P ${PROJECT_SOURCE_DIR}/cmake/FindVersion.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

add_custom_target(CopyPythonFiles ALL)
set(PYTHON_BUILD_BIN_FILES "")

foreach(BIN_FILE ${PYTHON_BIN_FILES})
get_filename_component(BIN_FILE_NAME ${BIN_FILE} NAME)
set(DST_BIN_FILE ${PROJECT_BINARY_DIR}/bin/${BIN_FILE_NAME})
add_custom_command(
TARGET CopyPythonFiles
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${BIN_FILE} ${DST_BIN_FILE}
DEPENDS ${BIN_FILE}
)
list(APPEND PYTHON_BUILD_BIN_FILES ${DST_BIN_FILE})
endforeach()

add_custom_command(
TARGET CopyPythonFiles
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CMAKE_CURRENT_SOURCE_DIR}/lib" "${PROJECT_BINARY_DIR}/lib"
)

set_target_properties(CopyPythonFiles
PROPERTIES ADDITIONAL_CLEAN_FILES
"${PYTHON_BUILD_BIN_FILES};${PROJECT_BINARY_DIR}/lib"
)

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/
DESTINATION ${CMAKE_INSTALL_BINDIR}
USE_SOURCE_PERMISSIONS
PATTERN "__pycache__" EXCLUDE
PATTERN ".pyc" EXCLUDE
)

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib/
DESTINATION ${CMAKE_INSTALL_LIBDIR}
USE_SOURCE_PERMISSIONS
PATTERN "__pycache__" EXCLUDE
PATTERN "*.py.in" EXCLUDE
PATTERN ".pyc" EXCLUDE
)

install(FILES ${PYTHON_VERSION_FILE}
DESTINATION ${CMAKE_INSTALL_LIBDIR}/mrtrix3
)
52 changes: 0 additions & 52 deletions python/bin/blend

This file was deleted.

143 changes: 0 additions & 143 deletions python/bin/convert_bruker

This file was deleted.

Loading