Skip to content

Commit

Permalink
Merge pull request #123 from pariterre/dev
Browse files Browse the repository at this point in the history
updated module imports in cmake
  • Loading branch information
pariterre committed May 14, 2020
2 parents c0cd264 + e44b0bf commit afe324f
Show file tree
Hide file tree
Showing 12 changed files with 79 additions and 3,260 deletions.
32 changes: 16 additions & 16 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ matrix:
- COMPILER=g++-7
- os: windows


before_install:
# Combine global build options with OS/compiler-dependent options
- export CMAKE_OPTIONS=${CMAKE_OPTIONS}" "${ENV_CMAKE_OPTIONS}
Expand All @@ -37,9 +38,11 @@ before_install:

install:
# Install test packages for Python3
- conda install python pytest numpy swig -cconda-forge
- conda create -n ezc3d
- conda activate ezc3d
- conda install python pytest numpy swig pkgconfig -c conda-forge
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
conda install lcov -c conda-forge;
conda install lcov cmake -c conda-forge;
fi

script:
Expand All @@ -49,16 +52,16 @@ script:
# Download, compile and test core
- mkdir -p build
- cd build
# Perform tests on all platform, but only perform code coverage on Linux
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
cmake ${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX= -DCMAKE_CXX_FLAGS=${CXX_FLAGS} -DCMAKE_BUILD_TYPE=Coverage -DBUILD_TESTS=ON -DBUILD_DOC=OFF -DBUILD_EXAMPLE=OFF -DUSE_MATRIX_FAST_ACCESSOR=OFF .. ;
make;
# Perform tests on all platform, but only perform code coverage on Linux
- if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then
cmake -G"Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX=/c/tools/miniconda3/envs/ezc3d/ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DBUILD_DOC=OFF -DBUILD_EXAMPLE=OFF -DUSE_MATRIX_FAST_ACCESSOR=OFF -DBINDER_PYTHON3=ON ..;
cmake --build ./ --config Release --target install;
elif [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
cmake ${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX=$HOME/miniconda/envs/ezc3d/ -DCMAKE_CXX_FLAGS=${CXX_FLAGS} -DCMAKE_BUILD_TYPE=Coverage -DBUILD_TESTS=ON -DBUILD_DOC=OFF -DBUILD_EXAMPLE=OFF -DUSE_MATRIX_FAST_ACCESSOR=OFF -DBINDER_PYTHON3=ON ..;
make install;
elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
cmake ${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX= -DCMAKE_CXX_FLAGS=${CXX_FLAGS} -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DBUILD_DOC=OFF -DBUILD_EXAMPLE=OFF -DUSE_MATRIX_FAST_ACCESSOR=OFF .. ;
make;
elif [[ "$TRAVIS_OS_NAME" == "windows" ]]; then
cmake -G"Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX=$ToolsDir/miniconda3/ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DBUILD_DOC=OFF -DBUILD_EXAMPLE=OFF -DUSE_MATRIX_FAST_ACCESSOR=OFF ..;
cmake --build ./ --config Release;
cmake ${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX=$HOME/miniconda/envs/ezc3d/ -DCMAKE_CXX_FLAGS=${CXX_FLAGS} -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DBUILD_DOC=OFF -DBUILD_EXAMPLE=OFF -DUSE_MATRIX_FAST_ACCESSOR=OFF -DBINDER_PYTHON3=ON ..;
make install;
fi
# Only do the coverage on Linux, but run the test anyway to get a nice output
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
Expand All @@ -85,12 +88,9 @@ script:
cd ../..;
fi
- ctest
- if [[ "$TRAVIS_OS_NAME" != "windows" ]]; then
cmake ${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX=$HOME/miniconda/ -DCMAKE_CXX_FLAGS=${CXX_FLAGS} -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DBUILD_DOC=OFF -DBUILD_EXAMPLE=OFF -DUSE_MATRIX_FAST_ACCESSOR=OFF -DBINDER_PYTHON3=ON -DPython3_EXECUTABLE=`which python` ..;
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
cmake ${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX=$HOME/miniconda/envs/ezc3d/ -DCMAKE_CXX_FLAGS=${CXX_FLAGS} -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DBUILD_DOC=OFF -DBUILD_EXAMPLE=OFF -DUSE_MATRIX_FAST_ACCESSOR=OFF ..;
make install;
else
cmake -G"Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX=$ToolsDir/miniconda3/ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_DOC=OFF -DBUILD_EXAMPLE=OFF -DUSE_MATRIX_FAST_ACCESSOR=OFF -DBINDER_PYTHON3=ON ..;
cmake --build ./ --config Release --target install;
fi
# Test the python binder
- pytest -v --color=yes ../test
Expand Down
4 changes: 1 addition & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
cmake_minimum_required(VERSION 3.8)
cmake_policy(SET CMP0048 NEW)
project(ezc3d VERSION 1.2.4)
set(EZC3D_NAME ${PROJECT_NAME})
set(CMAKE_CXX_STANDARD 11)

# Set some variables
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/modules)

# Set a default build type to 'Release' if none was specified
IF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
MESSAGE(STATUS "Setting build type to 'Release' as none was specified.")
Expand Down
8 changes: 7 additions & 1 deletion binding/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@

option(BINDER_PYTHON3 "Build Python SWIG module" OFF)
option(BINDER_MATLAB "Build Matlab module" OFF)

if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.13")
cmake_policy(SET CMP0078 NEW)
endif()
if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14")
cmake_policy(SET CMP0086 OLD)
endif()

# If at least one interface
if (BINDER_PYTHON3)
# Set up swig
Expand Down
87 changes: 55 additions & 32 deletions binding/python3/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,65 +1,88 @@
# Include python
find_package(PYTHON3 REQUIRED)
mark_as_advanced(CLEAR Python3_EXECUTABLE)
if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.13")
project(_${EZC3D_NAME})
else()
project(${EZC3D_NAME})
endif()

# Include python
find_package(Python3 REQUIRED
COMPONENTS Interpreter Development NumPy
)
include_directories(${Python3_INCLUDE_DIRS})

find_package(Numpy REQUIRED)

include_directories(${NUMPY_INCLUDES})
include_directories(${Python3_NumPy_INCLUDE_DIRS})
if(WIN32)
link_directories(${Python3_RUNTIME_LIBRARY_DIRS}/libs)
endif()
# For some reasons, target_include_directories later in the file sometime fails
include_directories(
${EZC3D_BINARY_DIR}/include
)

# Add swig module
set(CMAKE_SWIG_FLAGS "")
set(I_SOURCE_FILE ${PROJECT_NAME}_python.i)
set(I_SOURCE_FILE "${EZC3D_NAME}_python.i")

set_property(SOURCE ${I_SOURCE_FILE} PROPERTY CPLUSPLUS ON)
SWIG_ADD_LIBRARY(${PROJECT_NAME} TYPE MODULE LANGUAGE python SOURCES ${I_SOURCE_FILE})
swig_link_libraries(${PROJECT_NAME} ${PROJECT_NAME} ${PYTHON_LIBRARIES} ${NUMPY_LIBRARIES})
set_property(SOURCE "${I_SOURCE_FILE}"
PROPERTY CPLUSPLUS ON
)
SWIG_ADD_LIBRARY(${PROJECT_NAME}
TYPE MODULE
LANGUAGE "python"
SOURCES "${I_SOURCE_FILE}"
)
swig_link_libraries(${PROJECT_NAME}
"${EZC3D_NAME}"
"${Python3_LIBRARIES}"
)

if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.13")
set(PYTHON_PROJECT_NAME ${PROJECT_NAME})
else()
set(PYTHON_PROJECT_NAME _${PROJECT_NAME})
endif()

# Add headers
set_target_properties(_${PROJECT_NAME} PROPERTIES SWIG_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/../../include)
set_target_properties(${PYTHON_PROJECT_NAME} PROPERTIES
SWIG_INCLUDE_DIRECTORIES
"${CMAKE_CURRENT_SOURCE_DIR}/../../include;${EZC3D_BINARY_DIR}/include"
)

if(APPLE)
set_target_properties(_${PROJECT_NAME} PROPERTIES SUFFIX ".so")
set_property(TARGET _${PROJECT_NAME} APPEND PROPERTY LINK_FLAGS "-flat_namespace -undefined suppress")
set_target_properties(${PYTHON_PROJECT_NAME} PROPERTIES
SUFFIX ".so")
set_property(TARGET ${PYTHON_PROJECT_NAME} APPEND PROPERTY
LINK_FLAGS "-flat_namespace -undefined suppress")
endif()
set_target_properties(_${PROJECT_NAME} PROPERTIES
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${${PROJECT_NAME}_BIN_FOLDER}")
set_target_properties(_${PROJECT_NAME} PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
set_target_properties(${PYTHON_PROJECT_NAME} PROPERTIES
PREFIX ""
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${${EZC3D_NAME}_BIN_FOLDER}"
INSTALL_RPATH_USE_LINK_PATH TRUE
)

# Install to the proper directories
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py
DESTINATION ${Python3_SITELIB}/${PROJECT_NAME}
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/${EZC3D_NAME}.py"
DESTINATION "${Python3_SITELIB}/${EZC3D_NAME}"
)

INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py
DESTINATION ${Python3_SITELIB}/${PROJECT_NAME}
INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/__init__.py"
DESTINATION "${Python3_SITELIB}/${EZC3D_NAME}"
)


# Create the version file
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/_version.py.in ${CMAKE_CURRENT_BINARY_DIR}/_version.py)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/_version.py
DESTINATION ${Python3_SITELIB}/${PROJECT_NAME}
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/_version.py.in"
"${CMAKE_CURRENT_BINARY_DIR}/_version.py"
)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/_version.py"
DESTINATION "${Python3_SITELIB}/${EZC3D_NAME}"
)

# Check if swig has its version 3 or 4, to choose the right place to put the library
if(${SWIG_VERSION} MATCHES "^3(\.[0-9]*)*$")
set(PYTHON_INSTALL_DESTINATION ${Python3_SITELIB})
set(PYTHON_INSTALL_DESTINATION "${Python3_SITELIB}")
elseif(${SWIG_VERSION} MATCHES "^4(\.[0-9]*)*$")
set(PYTHON_INSTALL_DESTINATION ${Python3_SITELIB}/${PROJECT_NAME})
set(PYTHON_INSTALL_DESTINATION "${Python3_SITELIB}/${EZC3D_NAME}")
else()
message( FATAL_ERROR "Swig must be version 3 or 4" )
endif()

# Install the library
INSTALL(TARGETS _${PROJECT_NAME}
DESTINATION ${PYTHON_INSTALL_DESTINATION}
INSTALL(TARGETS ${PYTHON_PROJECT_NAME}
DESTINATION "${PYTHON_INSTALL_DESTINATION}"
)
32 changes: 0 additions & 32 deletions modules/CMakeFindFrameworks.cmake

This file was deleted.

Loading

0 comments on commit afe324f

Please sign in to comment.