Skip to content

Commit 0d11d0a

Browse files
committed
cmake updates
1 parent 14610c7 commit 0d11d0a

6 files changed

Lines changed: 31 additions & 51 deletions

File tree

CMakeLists.txt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.0)
1+
cmake_minimum_required(VERSION 3.10)
22
string(CONCAT MFrontGenericInterfaceSupportDescription
33
"The MFrontGenericInterfaceSupport project provides "
44
"useful feature for solvers' developpers to "
@@ -40,13 +40,13 @@ option(enable-broken-boost-python-module-visibility-handling
4040
"workaround a bug in boost python which occurs on FreeBSD+clang. See https://github.com/boostorg/python/issues/173 for details" OFF)
4141

4242
if(enable-python-bindings)
43-
find_package(PythonLibs REQUIRED)
43+
find_package(Python REQUIRED COMPONENTS Interpreter Development NumPy)
4444
set(HAVE_PYTHON ON)
45-
get_filename_component(PYTHON_LIBRARY_PATH ${PYTHON_LIBRARIES} PATH)
46-
get_filename_component(PYTHON_LIBRARY_FULL ${PYTHON_LIBRARIES} NAME)
45+
get_filename_component(PYTHON_LIBRARY_PATH ${Python_LIBRARIES} PATH)
46+
get_filename_component(PYTHON_LIBRARY_FULL ${Python_LIBRARIES} NAME)
4747
string(REGEX REPLACE "lib(.+)\\.(.+)$" "\\1" PYTHON_LIBRARY ${PYTHON_LIBRARY_FULL})
48-
message(STATUS "found python ${PYTHONLIBS_VERSION_STRING}")
49-
message(STATUS "python include path ${PYTHON_INCLUDE_DIRS}")
48+
message(STATUS "found python ${Python_VERSION}")
49+
message(STATUS "python include path ${Python_INCLUDE_DIRS}")
5050
message(STATUS "python libraries path ${PYTHON_LIBRARY_PATH}")
5151
message(STATUS "python library ${PYTHON_LIBRARY}")
5252
string(REGEX REPLACE "[-a-z+]+.*$" "" PYTHONLIBS_VERSION_CLEANED "${PYTHONLIBS_VERSION_STRING}")
@@ -148,10 +148,14 @@ endif(enable-fenics-bindings)
148148
# julia-bindings (placed before compiler detection)
149149
option(enable-julia-bindings "enable julia bindings support" OFF)
150150
if(enable-julia-bindings)
151+
# The current version (0.16.0) of CxxWrap overrides the
152+
# CMAKE_CXX_STANDARD variables, so we reset it after
153+
# calling find_package to the current version
154+
set(_CMAKE_CXX_STANDARD "${CMAKE_CXX_STANDARD}")
151155
find_package(JlCxx REQUIRED)
156+
set(CMAKE_CXX_STANDARD "${_CMAKE_CXX_STANDARD}")
152157
endif(enable-julia-bindings)
153158

154-
155159
# summary
156160

157161
if(enable-c-bindings)

bindings/python/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22
if(MGIS_APPEND_SUFFIX)
33
if(WIN32)
44
set(MGIS_PYTHON_MODULES_INSTALL_DIRECTORY
5-
bin/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/mgis_${MGIS_SUFFIX_FOR_PYTHON_MODULES})
5+
bin/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/mgis_${MGIS_SUFFIX_FOR_PYTHON_MODULES})
66
else(WIN32)
77
set(MGIS_PYTHON_MODULES_INSTALL_DIRECTORY
8-
"lib${LIB_SUFFIX}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/mgis_${MGIS_SUFFIX_FOR_PYTHON_MODULES}")
8+
"lib${LIB_SUFFIX}/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/mgis_${MGIS_SUFFIX_FOR_PYTHON_MODULES}")
99
endif(WIN32)
1010
else(MGIS_APPEND_SUFFIX)
1111
if(WIN32)
1212
set(MGIS_PYTHON_MODULES_INSTALL_DIRECTORY
13-
"bin/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/mgis")
13+
"bin/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/mgis")
1414
else(WIN32)
1515
set(MGIS_PYTHON_MODULES_INSTALL_DIRECTORY
16-
"lib${LIB_SUFFIX}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/mgis")
16+
"lib${LIB_SUFFIX}/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/mgis")
1717
endif(WIN32)
1818
endif(MGIS_APPEND_SUFFIX)
1919

bindings/python/src/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ function(mgis_python_module name output_name)
7272
COMPONENT python_bindings)
7373
endfunction(mgis_python_module)
7474

75+
message(FATAL_ERROR "Boost_NUMPY_LIBRARY: ${Boost_NUMPY_LIBRARY}" )
76+
7577
mgis_python_module(mgis _mgis
7678
mgis-module.cxx
7779
ThreadPool.cxx)

bindings/python/src/NumPySupport.cxx

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,16 @@
1313
*/
1414

1515
#include <numpy/ndarrayobject.h>
16+
#include <boost/python/numpy.hpp>
1617
#include "MGIS/Raise.hxx"
1718
#include "MGIS/Python/NumPySupport.hxx"
1819

1920
namespace mgis::python {
2021

21-
#if PY_MAJOR_VERSION == 2
22-
static void wrapInitializeNumPy() { import_array(); }
23-
#else
24-
static void* wrapInitializeNumPy() {
25-
import_array();
26-
return nullptr;
27-
}
28-
#endif
29-
30-
void initializeNumPy() { wrapInitializeNumPy(); } // end of initializeNumPy
22+
void initializeNumPy() {
23+
Py_Initialize();
24+
boost::python::numpy::initialize();
25+
} // end of initializeNumPy
3126

3227
boost::python::object wrapInNumPyArray(std::span<double>& v) {
3328
npy_intp dims[1] = {static_cast<npy_intp>(v.size())};

bindings/python/tests/CMakeLists.txt

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,32 @@
11
# preparing the environment
22
add_custom_target(mgis_python_bindings_checkfiles)
3-
if(CMAKE_CONFIGURATION_TYPES)
4-
# add_custom_command(
5-
# TARGET mgis_python_bindings_checkfiles
6-
# foreach(conf ${CMAKE_CONFIGURATION_TYPES})
7-
# COMMAND ${CMAKE_COMMAND} -E remove_directory "${conf}/mgis"
8-
# COMMAND ${CMAKE_COMMAND} -E make_directory "${conf}/mgis"
9-
# COMMAND ${CMAKE_COMMAND} -E create_symlink "${PROJECT_SOURCE_DIR}/bindings/python/src/__init__.py" "${conf}/mgis/__init__.py"
10-
# COMMAND ${CMAKE_COMMAND} -E create_symlink "$<TARGET_FILE:py_mgis_behaviour>" "${conf}/mgis/$<TARGET_FILE_NAME:py_mgis_behaviour>"
11-
# endforeach(conf ${CMAKE_CONFIGURATION_TYPES})
12-
# )
13-
else(CMAKE_CONFIGURATION_TYPES)
3+
if(NOT CMAKE_CONFIGURATION_TYPES)
144
add_custom_command(
15-
TARGET mgis_python_bindings_checkfiles
5+
TARGET mgis_python_bindings_checkfiles POST_BUILD
166
COMMAND ${CMAKE_COMMAND} -E remove_directory mgis
177
COMMAND ${CMAKE_COMMAND} -E make_directory mgis
188
COMMAND ${CMAKE_COMMAND} -E create_symlink "${PROJECT_SOURCE_DIR}/bindings/python/mgis/__init__.py" "mgis/__init__.py"
199
COMMAND ${CMAKE_COMMAND} -E create_symlink "$<TARGET_FILE:py_mgis>" "mgis/$<TARGET_FILE_NAME:py_mgis>"
2010
COMMAND ${CMAKE_COMMAND} -E create_symlink "$<TARGET_FILE:py_mgis_behaviour>" "mgis/$<TARGET_FILE_NAME:py_mgis_behaviour>"
2111
COMMAND ${CMAKE_COMMAND} -E create_symlink "$<TARGET_FILE:py_mgis_model>" "mgis/$<TARGET_FILE_NAME:py_mgis_model>"
2212
)
23-
endif(CMAKE_CONFIGURATION_TYPES)
13+
endif(NOT CMAKE_CONFIGURATION_TYPES)
2414
add_dependencies(mgis_python_bindings_checkfiles py_mgis_behaviour)
2515
add_dependencies(check mgis_python_bindings_checkfiles)
2616

2717
# defining the tests
2818

2919
function(test_python_bindings test)
30-
if(CMAKE_CONFIGURATION_TYPES)
31-
foreach(conf ${CMAKE_CONFIGURATION_TYPES})
32-
add_test(NAME ${test}_${conf}_py
33-
COMMAND ${PYTHON_EXECUTABLE} ${test}.py "$<TARGET_FILE:BehaviourTest>"
34-
CONFIGURATION ${conf})
35-
set_tests_properties(${test}_${conf}_py
36-
PROPERTIES ENVIRONMENT
37-
PYTHONPATH=${PROJECT_BINARY_DIR}/bindings/python/tests/:$ENV{PYTHONPATH}
38-
MGIS_TEST_BEHAVIOURS_LIBRARY=$<TARGET_FILE:BehaviourTest>
39-
MGIS_TEST_MODELS_LIBRARY=$<TARGET_FILE:ModelTest>)
40-
endforeach(conf ${CMAKE_CONFIGURATION_TYPES})
41-
else(CMAKE_CONFIGURATION_TYPES)
20+
if(NOT CMAKE_CONFIGURATION_TYPES)
4221
add_test(NAME ${test}_py
43-
COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/${test}.py")
22+
COMMAND ${Python_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/${test}.py")
4423
set_property(TEST ${test}_py
4524
PROPERTY ENVIRONMENT
4625
PYTHONPATH=${PROJECT_BINARY_DIR}/bindings/python/tests:$ENV{PYTHONPATH}
4726
MGIS_TEST_BEHAVIOURS_LIBRARY=$<TARGET_FILE:BehaviourTest>
4827
MGIS_TEST_MODELS_LIBRARY=$<TARGET_FILE:ModelTest>
4928
MGIS_TEST_TFEL_VERSION=${TFEL_VERSION})
50-
endif(CMAKE_CONFIGURATION_TYPES)
29+
endif(NOT CMAKE_CONFIGURATION_TYPES)
5130
endfunction(test_python_bindings)
5231

5332
test_python_bindings(MFrontGenericBehaviourInterfaceTest)

cmake/modules/CodeCoverage.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,9 @@ ENDFUNCTION() # SETUP_TARGET_FOR_COVERAGE
165165
# Pass them in list form, e.g.: "-j;2" for -j 2
166166
FUNCTION(SETUP_TARGET_FOR_COVERAGE_COBERTURA _targetname _testrunner _outputname)
167167

168-
IF(NOT PYTHON_EXECUTABLE)
168+
IF(NOT Python_EXECUTABLE)
169169
MESSAGE(FATAL_ERROR "Python not found! Aborting...")
170-
ENDIF() # NOT PYTHON_EXECUTABLE
170+
ENDIF() # NOT Python_EXECUTABLE
171171

172172
IF(NOT GCOVR_PATH)
173173
MESSAGE(FATAL_ERROR "gcovr not found! Aborting...")
@@ -190,4 +190,4 @@ FUNCTION(SETUP_TARGET_FOR_COVERAGE_COBERTURA _targetname _testrunner _outputname
190190
COMMENT "Cobertura code coverage report saved in ${_outputname}.xml."
191191
)
192192

193-
ENDFUNCTION() # SETUP_TARGET_FOR_COVERAGE_COBERTURA
193+
ENDFUNCTION() # SETUP_TARGET_FOR_COVERAGE_COBERTURA

0 commit comments

Comments
 (0)