From 9c28b4c4cd2ecf828beebb7d6fca7eb5fad75e1e Mon Sep 17 00:00:00 2001
From: jcarpent <jcarpent@laas.fr>
Date: Mon, 25 Jul 2016 09:39:33 +0200
Subject: [PATCH] [CMake] Move python to a dedicated directory

---
 CMakeLists.txt                               |  41 +----
 bindings/CMakeLists.txt                      |  17 +++
 bindings/python/CMakeLists.txt               | 148 +++++++++++++++++++
 {src => bindings}/python/__init__.py         |   0
 {src => bindings}/python/algorithms.hpp      |   0
 {src => bindings}/python/data.hpp            |   0
 {src => bindings}/python/eigen_container.hpp |   0
 {src => bindings}/python/explog.hpp          |   0
 {src => bindings}/python/explog.py           |   0
 {src => bindings}/python/force.hpp           |   0
 {src => bindings}/python/frame.hpp           |   0
 {src => bindings}/python/geometry-data.hpp   |   0
 {src => bindings}/python/geometry-model.hpp  |   0
 {src => bindings}/python/geometry-object.hpp |   0
 {src => bindings}/python/handler.hpp         |   0
 {src => bindings}/python/inertia.hpp         |   0
 {src => bindings}/python/joint-derived.hpp   |   0
 {src => bindings}/python/joint.hpp           |   0
 {src => bindings}/python/joints-models.hpp   |   0
 {src => bindings}/python/joints-variant.hpp  |   0
 {src => bindings}/python/model.hpp           |   0
 {src => bindings}/python/module.cpp          |   0
 {src => bindings}/python/motion.hpp          |   0
 {src => bindings}/python/parsers.hpp         |   0
 {src => bindings}/python/python.cpp          |   0
 {src => bindings}/python/python.hpp          |   0
 {src => bindings}/python/robot_wrapper.py    |   0
 {src => bindings}/python/romeo_wrapper.py    |   0
 {src => bindings}/python/rpy.py              |   0
 {src => bindings}/python/se3.hpp             |   0
 {src => bindings}/python/utils.py            |   0
 src/CMakeLists.txt                           |  76 ----------
 32 files changed, 169 insertions(+), 113 deletions(-)
 create mode 100644 bindings/CMakeLists.txt
 create mode 100644 bindings/python/CMakeLists.txt
 rename {src => bindings}/python/__init__.py (100%)
 rename {src => bindings}/python/algorithms.hpp (100%)
 rename {src => bindings}/python/data.hpp (100%)
 rename {src => bindings}/python/eigen_container.hpp (100%)
 rename {src => bindings}/python/explog.hpp (100%)
 rename {src => bindings}/python/explog.py (100%)
 rename {src => bindings}/python/force.hpp (100%)
 rename {src => bindings}/python/frame.hpp (100%)
 rename {src => bindings}/python/geometry-data.hpp (100%)
 rename {src => bindings}/python/geometry-model.hpp (100%)
 rename {src => bindings}/python/geometry-object.hpp (100%)
 rename {src => bindings}/python/handler.hpp (100%)
 rename {src => bindings}/python/inertia.hpp (100%)
 rename {src => bindings}/python/joint-derived.hpp (100%)
 rename {src => bindings}/python/joint.hpp (100%)
 rename {src => bindings}/python/joints-models.hpp (100%)
 rename {src => bindings}/python/joints-variant.hpp (100%)
 rename {src => bindings}/python/model.hpp (100%)
 rename {src => bindings}/python/module.cpp (100%)
 rename {src => bindings}/python/motion.hpp (100%)
 rename {src => bindings}/python/parsers.hpp (100%)
 rename {src => bindings}/python/python.cpp (100%)
 rename {src => bindings}/python/python.hpp (100%)
 rename {src => bindings}/python/robot_wrapper.py (100%)
 rename {src => bindings}/python/romeo_wrapper.py (100%)
 rename {src => bindings}/python/rpy.py (100%)
 rename {src => bindings}/python/se3.hpp (100%)
 rename {src => bindings}/python/utils.py (100%)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f9fcd87d0..5478746fa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -194,40 +194,6 @@ SET(${PROJECT_NAME}_ALGORITHM_HEADERS
   algorithm/copy.hpp
   )
 
-
-IF(BUILD_PYTHON_INTERFACE)
-  SET(${PROJECT_NAME}_PYTHON_HEADERS
-    python/eigen_container.hpp
-    python/handler.hpp
-    python/python.hpp
-    python/se3.hpp
-    python/force.hpp
-    python/motion.hpp
-    python/inertia.hpp
-    python/joints-models.hpp
-    python/joints-variant.hpp
-    python/joint.hpp
-    python/joint-derived.hpp
-    python/frame.hpp
-    python/model.hpp
-    python/data.hpp
-    python/algorithms.hpp
-    python/parsers.hpp
-    python/explog.hpp
-    )
-
-
-LIST(APPEND ${PROJECT_NAME}_PYTHON_HEADERS
-  python/geometry-object.hpp
-  python/geometry-model.hpp
-  python/geometry-data.hpp
-  )
-
-
-ELSE(BUILD_PYTHON_INTERFACE)
-  SET(${PROJECT_NAME}_PYTHON_HEADERS "")
-ENDIF(BUILD_PYTHON_INTERFACE)
-
 SET(${PROJECT_NAME}_PARSERS_HEADERS
   parsers/sample-models.hpp
   parsers/utils.hpp
@@ -279,7 +245,6 @@ IF(LUA5_1_FOUND)
   LIST(APPEND CFLAGS_DEPENDENCIES "-DWITH_LUA")
 ENDIF(LUA5_1_FOUND)
 
-
 SET(HEADERS
   ${${PROJECT_NAME}_MATH_HEADERS}
   ${${PROJECT_NAME}_TOOLS_HEADERS}
@@ -288,7 +253,6 @@ SET(HEADERS
   ${${PROJECT_NAME}_MULTIBODY_HEADERS}
   ${${PROJECT_NAME}_PARSERS_HEADERS}
   ${${PROJECT_NAME}_ALGORITHM_HEADERS}
-  ${${PROJECT_NAME}_PYTHON_HEADERS}
   exception.hpp
   assert.hpp
  )
@@ -307,7 +271,6 @@ MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/parsers")
 MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/parsers/urdf")
 MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/tools")
 MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/algorithm")
-MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/python")
 
 FOREACH(header ${HEADERS})
   GET_FILENAME_COMPONENT(headerName ${header} NAME)
@@ -321,6 +284,10 @@ FOREACH(header ${HEADERS})
 ENDFOREACH(header)
 
 ADD_SUBDIRECTORY(src)
+
+# --- BINDINGS -----------------------------------------------------------------
+ADD_SUBDIRECTORY(bindings)
+
 # --- EXECUTABLES --------------------------------------------------------------
 # --- EXECUTABLES --------------------------------------------------------------
 # --- EXECUTABLES --------------------------------------------------------------
diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt
new file mode 100644
index 000000000..5d9271606
--- /dev/null
+++ b/bindings/CMakeLists.txt
@@ -0,0 +1,17 @@
+#
+# Copyright (c) 2016 CNRS
+#
+# This file is part of Pinocchio
+# pinocchio is free software: you can redistribute it
+# and/or modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation, either version
+# 3 of the License, or (at your option) any later version.
+# pinocchio is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Lesser Public License for more details. You should have
+# received a copy of the GNU Lesser General Public License along with
+# pinocchio If not, see
+# <http://www.gnu.org/licenses/>.
+
+ADD_SUBDIRECTORY(python)
diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt
new file mode 100644
index 000000000..05f928c5a
--- /dev/null
+++ b/bindings/python/CMakeLists.txt
@@ -0,0 +1,148 @@
+# 
+# Copyright (c) 2015-2016 CNRS
+# Copyright (c) 2015 Wandercraft, 86 rue de Paris 91400 Orsay, France.
+# 
+# This file is part of Pinocchio
+# Pinocchio is free software: you can redistribute it
+# and/or modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation, either version
+# 3 of the License, or (at your option) any later version.
+# Pinocchio is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Lesser Public License for more details. You should have
+# received a copy of the GNU Lesser General Public License along with
+# Pinocchio If not, see
+# <http://www.gnu.org/licenses/>.
+
+MACRO(ADD_GROUP GROUP_NAME FILENAMES)
+  FOREACH(filename ${${FILENAMES}})
+    GET_FILENAME_COMPONENT(filenamePath ${filename} PATH)
+    IF(NOT (filenamePath STREQUAL ""))
+      STRING(REGEX REPLACE "/" "\\\\" filenamePath ${filenamePath}) 
+      SOURCE_GROUP("${GROUP_NAME}\\${filenamePath}" FILES ${filename})
+    ELSE()
+      SOURCE_GROUP("${GROUP_NAME}" FILES ${filename})
+    ENDIF()
+  ENDFOREACH()
+ENDMACRO(ADD_GROUP) 
+
+MACRO(ADD_HEADER_GROUP FILENAMES)
+  ADD_GROUP("Header Files" ${FILENAMES})
+ENDMACRO(ADD_HEADER_GROUP FILENAMES)
+
+MACRO(ADD_SOURCE_GROUP FILENAMES)
+  ADD_GROUP("Source Files" ${FILENAMES})
+ENDMACRO(ADD_SOURCE_GROUP FILENAMES)
+
+IF(BUILD_PYTHON_INTERFACE)
+  # --- Collect header files
+  SET(${PROJECT_NAME}_PYTHON_HEADERS
+    eigen_container.hpp
+    handler.hpp
+    python.hpp
+    se3.hpp
+    force.hpp
+    motion.hpp
+    inertia.hpp
+    joints-models.hpp
+    joints-variant.hpp
+    joint.hpp
+    joint-derived.hpp
+    frame.hpp
+    model.hpp
+    data.hpp
+    algorithms.hpp
+    parsers.hpp
+    explog.hpp
+    geometry-object.hpp
+    geometry-model.hpp
+    geometry-data.hpp
+    )
+
+  LIST(APPEND HEADERS ${${PROJECT_NAME}_PYTHON_HEADERS})
+  LIST(REMOVE_DUPLICATES HEADERS)
+
+  MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/bindings/python")
+  FOREACH(header ${${PROJECT_NAME}_PYTHON_HEADERS})
+    GET_FILENAME_COMPONENT(headerName ${header} NAME)
+    GET_FILENAME_COMPONENT(headerPath ${header} PATH)
+    EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E ${LINK}
+      ${${PROJECT_NAME}_SOURCE_DIR}/bindings/python/${header}
+      ${${PROJECT_NAME}_BINARY_DIR}/include/${PROJECT_NAME}/bindings/python/${header})
+    INSTALL(FILES ${${PROJECT_NAME}_SOURCE_DIR}/bindings/python/${header}
+      DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME}/bindings/python
+            PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE)
+  ENDFOREACH(header)
+
+  MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}")
+  
+  # --- COMPILE WRAPPER
+  SET(PYWRAP ${PROJECT_NAME}_pywrap)
+  ADD_LIBRARY(${PYWRAP} SHARED module.cpp python.cpp)
+  PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} eigenpy)
+
+  IF(URDFDOM_FOUND)
+    PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} urdfdom)
+  ENDIF(URDFDOM_FOUND)
+  IF(HPP_FCL_FOUND)
+    PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} hpp-fcl)
+  ENDIF(HPP_FCL_FOUND)
+  IF(LUA5_1_FOUND)
+    PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} lua5.1)
+  ENDIF(LUA5_1_FOUND)
+
+  TARGET_LINK_LIBRARIES(${PYWRAP} ${PROJECT_NAME} ${Boost_LIBRARIES})
+  TARGET_LINK_BOOST_PYTHON(${PYWRAP})
+
+  IF(APPLE)
+    # We need to change the extension for python bindings
+    SET_TARGET_PROPERTIES(${PYWRAP} PROPERTIES SUFFIX ".so")
+  ENDIF(APPLE)
+
+  SET_TARGET_PROPERTIES(${PYWRAP} PROPERTIES
+    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/python/${PROJECT_NAME}")
+
+  INSTALL(FILES
+    "${CMAKE_BINARY_DIR}/lib/python/${PROJECT_NAME}/lib${PYWRAP}.so"
+    DESTINATION ${PYTHON_SITELIB}/${PROJECT_NAME})
+  
+  # --- INSTALL SCRIPTS 
+  SET(PYTHON_FILES
+    __init__.py
+    utils.py
+    robot_wrapper.py
+    romeo_wrapper.py
+    rpy.py
+    explog.py
+    )
+  
+  FOREACH(python ${PYTHON_FILES})
+    GET_FILENAME_COMPONENT(pythonFile ${python} NAME)
+    EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E ${LINK}
+      ${${PROJECT_NAME}_SOURCE_DIR}/bindings/python/${python}
+      ${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile})
+      
+    # Tag pyc file as generated.
+    SET_SOURCE_FILES_PROPERTIES(
+      "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c"
+      PROPERTIES GENERATED TRUE)
+      
+    EXECUTE_PROCESS(COMMAND
+      ${PYTHON_EXECUTABLE} -m py_compile
+      ${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile})
+      
+    # Clean generated files.
+    SET_PROPERTY(
+      DIRECTORY APPEND PROPERTY
+      ADDITIONAL_MAKE_CLEAN_FILES
+      "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c")
+      
+    INSTALL(FILES
+      "${${PROJECT_NAME}_SOURCE_DIR}/bindings/python/${python}"
+      "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c"
+      DESTINATION ${PYTHON_SITELIB}/${PROJECT_NAME})
+  ENDFOREACH(python)
+
+ENDIF(BUILD_PYTHON_INTERFACE)
+
diff --git a/src/python/__init__.py b/bindings/python/__init__.py
similarity index 100%
rename from src/python/__init__.py
rename to bindings/python/__init__.py
diff --git a/src/python/algorithms.hpp b/bindings/python/algorithms.hpp
similarity index 100%
rename from src/python/algorithms.hpp
rename to bindings/python/algorithms.hpp
diff --git a/src/python/data.hpp b/bindings/python/data.hpp
similarity index 100%
rename from src/python/data.hpp
rename to bindings/python/data.hpp
diff --git a/src/python/eigen_container.hpp b/bindings/python/eigen_container.hpp
similarity index 100%
rename from src/python/eigen_container.hpp
rename to bindings/python/eigen_container.hpp
diff --git a/src/python/explog.hpp b/bindings/python/explog.hpp
similarity index 100%
rename from src/python/explog.hpp
rename to bindings/python/explog.hpp
diff --git a/src/python/explog.py b/bindings/python/explog.py
similarity index 100%
rename from src/python/explog.py
rename to bindings/python/explog.py
diff --git a/src/python/force.hpp b/bindings/python/force.hpp
similarity index 100%
rename from src/python/force.hpp
rename to bindings/python/force.hpp
diff --git a/src/python/frame.hpp b/bindings/python/frame.hpp
similarity index 100%
rename from src/python/frame.hpp
rename to bindings/python/frame.hpp
diff --git a/src/python/geometry-data.hpp b/bindings/python/geometry-data.hpp
similarity index 100%
rename from src/python/geometry-data.hpp
rename to bindings/python/geometry-data.hpp
diff --git a/src/python/geometry-model.hpp b/bindings/python/geometry-model.hpp
similarity index 100%
rename from src/python/geometry-model.hpp
rename to bindings/python/geometry-model.hpp
diff --git a/src/python/geometry-object.hpp b/bindings/python/geometry-object.hpp
similarity index 100%
rename from src/python/geometry-object.hpp
rename to bindings/python/geometry-object.hpp
diff --git a/src/python/handler.hpp b/bindings/python/handler.hpp
similarity index 100%
rename from src/python/handler.hpp
rename to bindings/python/handler.hpp
diff --git a/src/python/inertia.hpp b/bindings/python/inertia.hpp
similarity index 100%
rename from src/python/inertia.hpp
rename to bindings/python/inertia.hpp
diff --git a/src/python/joint-derived.hpp b/bindings/python/joint-derived.hpp
similarity index 100%
rename from src/python/joint-derived.hpp
rename to bindings/python/joint-derived.hpp
diff --git a/src/python/joint.hpp b/bindings/python/joint.hpp
similarity index 100%
rename from src/python/joint.hpp
rename to bindings/python/joint.hpp
diff --git a/src/python/joints-models.hpp b/bindings/python/joints-models.hpp
similarity index 100%
rename from src/python/joints-models.hpp
rename to bindings/python/joints-models.hpp
diff --git a/src/python/joints-variant.hpp b/bindings/python/joints-variant.hpp
similarity index 100%
rename from src/python/joints-variant.hpp
rename to bindings/python/joints-variant.hpp
diff --git a/src/python/model.hpp b/bindings/python/model.hpp
similarity index 100%
rename from src/python/model.hpp
rename to bindings/python/model.hpp
diff --git a/src/python/module.cpp b/bindings/python/module.cpp
similarity index 100%
rename from src/python/module.cpp
rename to bindings/python/module.cpp
diff --git a/src/python/motion.hpp b/bindings/python/motion.hpp
similarity index 100%
rename from src/python/motion.hpp
rename to bindings/python/motion.hpp
diff --git a/src/python/parsers.hpp b/bindings/python/parsers.hpp
similarity index 100%
rename from src/python/parsers.hpp
rename to bindings/python/parsers.hpp
diff --git a/src/python/python.cpp b/bindings/python/python.cpp
similarity index 100%
rename from src/python/python.cpp
rename to bindings/python/python.cpp
diff --git a/src/python/python.hpp b/bindings/python/python.hpp
similarity index 100%
rename from src/python/python.hpp
rename to bindings/python/python.hpp
diff --git a/src/python/robot_wrapper.py b/bindings/python/robot_wrapper.py
similarity index 100%
rename from src/python/robot_wrapper.py
rename to bindings/python/robot_wrapper.py
diff --git a/src/python/romeo_wrapper.py b/bindings/python/romeo_wrapper.py
similarity index 100%
rename from src/python/romeo_wrapper.py
rename to bindings/python/romeo_wrapper.py
diff --git a/src/python/rpy.py b/bindings/python/rpy.py
similarity index 100%
rename from src/python/rpy.py
rename to bindings/python/rpy.py
diff --git a/src/python/se3.hpp b/bindings/python/se3.hpp
similarity index 100%
rename from src/python/se3.hpp
rename to bindings/python/se3.hpp
diff --git a/src/python/utils.py b/bindings/python/utils.py
similarity index 100%
rename from src/python/utils.py
rename to bindings/python/utils.py
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9eee54a07..0947423cd 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -109,79 +109,3 @@ IF(UNIX)
     INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib)
 ENDIF(UNIX)
 
-# ----------------------------------------------------
-# --- PYTHON -----------------------------------------
-# ----------------------------------------------------
-IF(BUILD_PYTHON_INTERFACE)
-  MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}")
-  
-  # --- COMPILE WRAPPER
-  SET(PYWRAP ${PROJECT_NAME}_pywrap)
-  ADD_LIBRARY(${PYWRAP} SHARED python/module.cpp python/python.cpp)
-  PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} eigenpy)
-
-  IF(URDFDOM_FOUND)
-    PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} urdfdom)
-  ENDIF(URDFDOM_FOUND)
-  IF(HPP_FCL_FOUND)
-    PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} hpp-fcl)
-    ADD_TARGET_CFLAGS (${PYWRAP} "-DWITH_HPP_FCL")
-  ENDIF(HPP_FCL_FOUND)
-  IF(LUA5_1_FOUND)
-    PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} lua5.1)
-  ENDIF(LUA5_1_FOUND)
-
-  TARGET_LINK_LIBRARIES(${PYWRAP} ${PROJECT_NAME} ${Boost_LIBRARIES})
-  TARGET_LINK_BOOST_PYTHON(${PYWRAP})
-
-  IF(APPLE)
-    # We need to change the extension for python bindings
-    SET_TARGET_PROPERTIES(${PYWRAP} PROPERTIES SUFFIX ".so")
-  ENDIF(APPLE)
-
-  SET_TARGET_PROPERTIES(${PYWRAP} PROPERTIES
-    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/python/${PROJECT_NAME}")
-
-  INSTALL(FILES
-    "${CMAKE_BINARY_DIR}/lib/python/${PROJECT_NAME}/lib${PYWRAP}.so"
-    DESTINATION ${PYTHON_SITELIB}/${PROJECT_NAME})
-  
-  # --- INSTALL SCRIPTS 
-  SET(PYTHON_FILES
-    python/__init__.py
-    python/utils.py
-    python/robot_wrapper.py
-    python/romeo_wrapper.py
-    python/rpy.py
-    python/explog.py
-    )
-  
-  FOREACH(python ${PYTHON_FILES})
-    GET_FILENAME_COMPONENT(pythonFile ${python} NAME)
-    EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E ${LINK}
-      ${${PROJECT_NAME}_SOURCE_DIR}/src/${python}
-      ${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile})
-      
-    # Tag pyc file as generated.
-    SET_SOURCE_FILES_PROPERTIES(
-      "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c"
-      PROPERTIES GENERATED TRUE)
-      
-    EXECUTE_PROCESS(COMMAND
-      ${PYTHON_EXECUTABLE} -m py_compile
-      ${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile})
-      
-    # Clean generated files.
-    SET_PROPERTY(
-      DIRECTORY APPEND PROPERTY
-      ADDITIONAL_MAKE_CLEAN_FILES
-      "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c")
-      
-    INSTALL(FILES
-      "${${PROJECT_NAME}_SOURCE_DIR}/src/${python}"
-      "${${PROJECT_NAME}_BINARY_DIR}/lib/python/${PROJECT_NAME}/${pythonFile}c"
-      DESTINATION ${PYTHON_SITELIB}/${PROJECT_NAME})
-  ENDFOREACH(python)
-
-ENDIF(BUILD_PYTHON_INTERFACE)
-
-- 
GitLab