Skip to content

Commit

Permalink
ENH: Support "compiling" source file exclusively to .pyc
Browse files Browse the repository at this point in the history
Introduce the option CTK_COMPILE_PYTHON_SCRIPT_SKIP_SCRIPT_COPY
to support disabling the copy of `*.py` script into the build
directory.

Update CMake function `ctkFunctionAddCompilePythonScriptTargets` to
accept a new parameter called `SKIP_SCRIPT_COPY`.

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
  • Loading branch information
MujassimJamal and jcfr committed Mar 20, 2024
1 parent fb72e1a commit d55c93e
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 deletions.
1 change: 1 addition & 0 deletions CMake/CTKConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ set(CTK_LIBRARY_DIRS ${CTK_LIBRARY_DIR})

# CTK specific variables
set(CTK_CMAKE_DEBUG_POSTFIX "@CMAKE_DEBUG_POSTFIX@")
set(CTK_COMPILE_PYTHON_SCRIPT_SKIP_SCRIPT_COPY "@CTK_COMPILE_PYTHON_SCRIPT_SKIP_SCRIPT_COPY@")

# Import CTK targets
if(NOT TARGET CTKCore)
Expand Down
15 changes: 12 additions & 3 deletions CMake/ctkMacroCompilePythonScript.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ include(${CTK_CMAKE_DIR}/ctkMacroParseArguments.cmake)

set(CTK_PYTHON_COMPILE_FILE_SCRIPT_DIR "${CMAKE_BINARY_DIR}/CMakeFiles")

# Setting this option to TRUE disable the copy of ".py" files into the
# destination directory associated with ctkMacroCompilePythonScript.
if(NOT DEFINED CTK_COMPILE_PYTHON_SCRIPT_SKIP_SCRIPT_COPY)
set(CTK_COMPILE_PYTHON_SCRIPT_SKIP_SCRIPT_COPY FALSE)
endif()

#! \ingroup CMakeAPI
macro(ctkMacroCompilePythonScript)
ctkMacroParseArguments(MY
Expand Down Expand Up @@ -98,7 +104,7 @@ macro(ctkMacroCompilePythonScript)
USE_SOURCE_PERMISSIONS)

if(NOT MY_GLOBAL_TARGET)
ctkFunctionAddCompilePythonScriptTargets(${target})
ctkFunctionAddCompilePythonScriptTargets(${target} ${CTK_COMPILE_PYTHON_SCRIPT_SKIP_SCRIPT_COPY})
endif()
endmacro()

Expand Down Expand Up @@ -182,8 +188,11 @@ function(_ctk_add_compile_python_directories_target target)
endif()
endfunction()

function(ctkFunctionAddCompilePythonScriptTargets target)
_ctk_add_copy_python_files_target(${target} Script ${ARGN})
function(ctkFunctionAddCompilePythonScriptTargets target SKIP_SCRIPT_COPY)
# Skip defining the target CopySlicerPythonScriptFiles when the argument SKIP_SCRIPT_COPY is set to True
if(NOT ${SKIP_SCRIPT_COPY})
_ctk_add_copy_python_files_target(${target} Script ${ARGN})
endif()
_ctk_add_copy_python_files_target(${target} Resource ${ARGN})
_ctk_add_compile_python_directories_target(${target})
endfunction()
6 changes: 6 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -744,6 +744,12 @@ ctk_enable_option(Python_Wrapping "Wrap CTK classes using Qt meta-object system
CTK_LIB_Scripting/Python/Core)
mark_as_superbuild(CTK_ENABLE_Python_Wrapping)

include(CMakeDependentOption)
cmake_dependent_option(
CTK_COMPILE_PYTHON_SCRIPT_SKIP_SCRIPT_COPY "Disable copy of .py files when using ctkMacroCompilePythonScript()" OFF
"CTK_ENABLE_Python_Wrapping" OFF)
mark_as_superbuild(CTK_COMPILE_PYTHON_SCRIPT_SKIP_SCRIPT_COPY)

# Build examples
# Create the logical expression containing the minimum set of required options
# for the CTK_BUILD_EXAMPLES option to be ON
Expand Down

0 comments on commit d55c93e

Please sign in to comment.