Skip to content

Commit a4ffd2f

Browse files
committed
Fix Issue #146
1 parent 21466c1 commit a4ffd2f

7 files changed

Lines changed: 43 additions & 66 deletions

File tree

CMakeLists.txt

Lines changed: 9 additions & 22 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

33
include(cmake/modules/mgis.cmake)
44
project("mfront-generic-interface")
@@ -32,31 +32,18 @@ option(enable-broken-boost-python-module-visibility-handling
3232
"workaround a bug in boost python which occurs on FreeBSD+clang. See https://github.com/boostorg/python/issues/173 for details" OFF)
3333

3434
if(enable-python-bindings)
35-
find_package(PythonLibs REQUIRED)
35+
find_package(Python REQUIRED COMPONENTS Interpreter Development NumPy)
3636
set(HAVE_PYTHON ON)
37-
get_filename_component(PYTHON_LIBRARY_PATH ${PYTHON_LIBRARIES} PATH)
38-
get_filename_component(PYTHON_LIBRARY_FULL ${PYTHON_LIBRARIES} NAME)
37+
get_filename_component(PYTHON_LIBRARY_PATH ${Python_LIBRARIES} PATH)
38+
get_filename_component(PYTHON_LIBRARY_FULL ${Python_LIBRARIES} NAME)
3939
string(REGEX REPLACE "lib(.+)\\.(.+)$" "\\1" PYTHON_LIBRARY ${PYTHON_LIBRARY_FULL})
40-
message(STATUS "found python ${PYTHONLIBS_VERSION_STRING}")
41-
message(STATUS "python include path ${PYTHON_INCLUDE_DIRS}")
40+
message(STATUS "found python ${Python_VERSION}")
41+
message(STATUS "python include path ${Python_INCLUDE_DIRS}")
4242
message(STATUS "python libraries path ${PYTHON_LIBRARY_PATH}")
4343
message(STATUS "python library ${PYTHON_LIBRARY}")
44-
string(REGEX REPLACE "[-a-z+]+.*$" "" PYTHONLIBS_VERSION_CLEANED "${PYTHONLIBS_VERSION_STRING}")
45-
find_package(PythonInterp ${PYTHONLIBS_VERSION_CLEANED} REQUIRED)
46-
message(STATUS "python interpreter ${PYTHON_EXECUTABLE}")
47-
if(NOT HAVE_PYTHON)
48-
message(FATAL_ERROR "python not found. python is mandatory for python bindings.")
49-
endif(NOT HAVE_PYTHON)
50-
# numpy detection
51-
execute_process(
52-
COMMAND "${PYTHON_EXECUTABLE}" -c
53-
"from __future__ import print_function\ntry: import numpy; print(numpy.get_include(), end='')\nexcept:pass\n"
54-
OUTPUT_VARIABLE NUMPY_INCLUDE_PATH)
55-
find_path(PYTHON_NUMPY_INCLUDE_DIR numpy/arrayobject.h
56-
HINTS "${NUMPY_INCLUDE_PATH}" "${PYTHON_INCLUDE_PATH}" NO_DEFAULT_PATH)
57-
if(NOT PYTHON_NUMPY_INCLUDE_DIR)
58-
message(FATAL_ERROR "numpy not found. numpy is mandatory for python bindings.")
59-
endif(NOT PYTHON_NUMPY_INCLUDE_DIR)
44+
message(STATUS "python interpreter ${Python_EXECUTABLE}")
45+
message(STATUS "Numpy version ${Python_NumPy_VERSION}")
46+
message(STATUS "Numpy header path ${Python_NumPy_INCLUDE_DIRS}")
6047
# boost python detection
6148
message(STATUS "Trying to find libboost_python-py${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}")
6249
# Fix a bug in FindBoost 1.70

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: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,8 @@ function(mgis_python_module name output_name)
2020
# include directories
2121
target_include_directories(${module}
2222
SYSTEM
23-
PRIVATE "${PROJECT_SOURCE_DIR}/bindings/python/include"
24-
PRIVATE "${Boost_INCLUDE_DIRS}"
25-
PRIVATE "${PYTHON_INCLUDE_DIRS}"
26-
PRIVATE "${PYTHON_NUMPY_INCLUDE_DIR}")
27-
if(NUMPY_INCLUDE_DIRS)
28-
target_include_directories(${module}
29-
SYSTEM PRIVATE "${NUMPY_INCLUDE_DIRS}")
30-
endif(NUMPY_INCLUDE_DIRS)
23+
PRIVATE "${PROJECT_SOURCE_DIR}/bindings/python/boost/include"
24+
PRIVATE "${Boost_INCLUDE_DIRS}")
3125
# Link flags for python modules.
3226
#
3327
# I removed links to the python library on MacOS system.
@@ -43,7 +37,7 @@ function(mgis_python_module name output_name)
4337
target_link_libraries(${module}
4438
PRIVATE
4539
MFrontGenericInterface
46-
${CONAN_LIBS} ${PYTHON_LIBRARIES})
40+
${CONAN_LIBS} Python::Python Python::NumPy)
4741
else(APPLE)
4842
target_link_libraries(${module}
4943
PRIVATE
@@ -63,7 +57,8 @@ function(mgis_python_module name output_name)
6357
target_link_libraries(${module}
6458
PRIVATE
6559
MFrontGenericInterface
66-
${Boost_NUMPY_LIBRARY} ${Boost_PYTHON_LIBRARY} ${PYTHON_LIBRARIES})
60+
${Boost_NUMPY_LIBRARY} ${Boost_PYTHON_LIBRARY}
61+
Python::Python Python::NumPy)
6762
endif(disable_python_library_linking)
6863
endif(MGIS_USES_CONAN)
6964
# installation

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

cmake/modules/compiler.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ elseif(((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR
145145
(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")) AND
146146
(NOT PATHSCALE_COMPILER))
147147
include(cmake/modules/clang.cmake)
148+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC")
149+
include(cmake/modules/nvhpc.cmake)
148150
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
149151
include(cmake/modules/intel.cmake)
150152
elseif((CMAKE_CXX_COMPILER_ID STREQUAL "PathScale") OR (PATHSCALE_COMPILER))

cmake/modules/nvhpc.cmake

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
if((NOT CMAKE_BUILD_TYPE) OR (CMAKE_BUILD_TYPE STREQUAL "Release"))
2+
set(OPTIMISATION_FLAGS "-O2 -DNDEBUG ${OPTIMISATION_FLAGS}")
3+
tfel_enable_cxx_compiler_flag(OPTIMISATION_FLAGS_MARCH "fast")
4+
endif((NOT CMAKE_BUILD_TYPE) OR (CMAKE_BUILD_TYPE STREQUAL "Release"))
5+
6+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
7+
add_definitions("-g")
8+
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
9+
10+
if(enable-fast-math)
11+
tfel_enable_cxx_compiler_flag(OPTIMISATION_FLAGS "ffinite-math-only")
12+
else(enable-fast-math)
13+
tfel_enable_cxx_compiler_flag(OPTIMISATION_FLAGS2 "ffinite-math-only")
14+
endif(enable-fast-math)

0 commit comments

Comments
 (0)