diff options
author | Henry Schreiner <henryschreineriii@gmail.com> | 2021-11-23 17:06:06 -0500 |
---|---|---|
committer | Henry Schreiner <henryschreineriii@gmail.com> | 2021-11-23 17:06:06 -0500 |
commit | 9f9cec1b37fbe298b792240ecc670ab34fcfbd84 (patch) | |
tree | 7a5de0c5dde6721f4c563ea27b109878c4e7eec1 /doc/source/f2py/code | |
parent | e94bbb87ba10ec2585f87af8e9a80afee2f89e04 (diff) | |
download | numpy-9f9cec1b37fbe298b792240ecc670ab34fcfbd84.tar.gz |
fix: get scikit-build example working
Diffstat (limited to 'doc/source/f2py/code')
-rw-r--r-- | doc/source/f2py/code/CMakeLists_skbuild.txt | 86 | ||||
-rw-r--r-- | doc/source/f2py/code/pyproj_skbuild.toml | 6 | ||||
-rw-r--r-- | doc/source/f2py/code/setup_skbuild.py | 2 |
3 files changed, 49 insertions, 45 deletions
diff --git a/doc/source/f2py/code/CMakeLists_skbuild.txt b/doc/source/f2py/code/CMakeLists_skbuild.txt index 97bc5c744..3d092760b 100644 --- a/doc/source/f2py/code/CMakeLists_skbuild.txt +++ b/doc/source/f2py/code/CMakeLists_skbuild.txt @@ -1,6 +1,5 @@ ### setup project ### -cmake_minimum_required(VERSION 3.17.3) -set(CMAKE_CXX_STANDARD_REQUIRED ON) +cmake_minimum_required(VERSION 3.9) project(fibby VERSION 1.0 @@ -16,74 +15,81 @@ if(PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR) ) endif() -# Grab Python -find_package(Python3 3.9 REQUIRED - COMPONENTS Interpreter Development) - # Ensure scikit-build modules if (NOT SKBUILD) - # Kanged -->https://github.com/Kitware/torch_liberator/blob/master/CMakeLists.txt + find_package(PythonInterp 3.7 REQUIRED) + # Kanged --> https://github.com/Kitware/torch_liberator/blob/master/CMakeLists.txt # If skbuild is not the driver; include its utilities in CMAKE_MODULE_PATH execute_process( - COMMAND "${Python3_EXECUTABLE}" - -c "import os, skbuild; print(os.path.dirname(skbuild.__file__))" - OUTPUT_VARIABLE SKBLD_DIR - OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND "${PYTHON_EXECUTABLE}" + -c "import os, skbuild; print(os.path.dirname(skbuild.__file__))" + OUTPUT_VARIABLE SKBLD_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE ) - set(SKBLD_CMAKE_DIR "${SKBLD_DIR}/resources/cmake") - list(APPEND CMAKE_MODULE_PATH ${SKBLD_CMAKE_DIR}) + list(APPEND CMAKE_MODULE_PATH "${SKBLD_DIR}/resources/cmake") + message(STATUS "Looking in ${SKBLD_DIR}/resources/cmake for CMake modules") endif() # scikit-build style includes find_package(PythonExtensions REQUIRED) # for ${PYTHON_EXTENSION_MODULE_SUFFIX} -find_package(NumPy REQUIRED) # for ${NumPy_INCLUDE_DIRS} -find_package(F2PY REQUIRED) # for ${F2PY_INCLUDE_DIR} + +# Grab the variables from a local Python installation +# NumPy headers +execute_process( + COMMAND "${PYTHON_EXECUTABLE}" + -c "import numpy; print(numpy.get_include())" + OUTPUT_VARIABLE NumPy_INCLUDE_DIRS + OUTPUT_STRIP_TRAILING_WHITESPACE +) +# F2PY headers +execute_process( + COMMAND "${PYTHON_EXECUTABLE}" + -c "import numpy.f2py; print(numpy.f2py.get_include())" + OUTPUT_VARIABLE F2PY_INCLUDE_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE +) # Prepping the module set(f2py_module_name "fibby") set(fortran_src_file "${CMAKE_SOURCE_DIR}/fib1.f") -set(generated_module_file ${f2py_module_name}${PYTHON_EXTENSION_MODULE_SUFFIX}) +set(f2py_module_c "${f2py_module_name}module.c") # Target for enforcing dependencies -add_custom_target(${f2py_module_name} ALL +add_custom_target(genpyf DEPENDS "${fortran_src_file}" - ) - -# Custom command for generating .c +) add_custom_command( - OUTPUT "${f2py_module_name}module.c" - COMMAND ${F2PY_EXECUTABLE} - -m ${f2py_module_name} - ${fortran_src_file} - --lower - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS ${fortran_src_file} - ) + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${f2py_module_c}" + COMMAND ${PYTHON_EXECUTABLE} -m "numpy.f2py" + "${fortran_src_file}" + -m "fibby" + --lower # Important + DEPENDS fib1.f # Fortran source +) -add_library(${generated_module_file} MODULE +add_library(${CMAKE_PROJECT_NAME} MODULE "${f2py_module_name}module.c" "${F2PY_INCLUDE_DIR}/fortranobject.c" "${fortran_src_file}") -target_include_directories(${generated_module_file} PUBLIC - ${F2PY_INCLUDE_DIRS} +target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC + ${F2PY_INCLUDE_DIR} + ${NumPy_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS}) -set_target_properties(${generated_module_file} PROPERTIES SUFFIX "") -set_target_properties(${generated_module_file} PROPERTIES PREFIX "") +set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES SUFFIX "${PYTHON_EXTENSION_MODULE_SUFFIX}") +set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES PREFIX "") # Linker fixes if (UNIX) if (APPLE) - set_target_properties(${generated_module_file} PROPERTIES + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES LINK_FLAGS '-Wl,-dylib,-undefined,dynamic_lookup') else() - set_target_properties(${generated_module_file} PROPERTIES + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES LINK_FLAGS '-Wl,--allow-shlib-undefined') endif() endif() -if (SKBUILD) - install(TARGETS ${generated_module_file} DESTINATION fibby) -else() - install(TARGETS ${generated_module_file} DESTINATION ${CMAKE_SOURCE_DIR}/fibby) -endif() +add_dependencies(${CMAKE_PROJECT_NAME} genpyf) + +install(TARGETS ${CMAKE_PROJECT_NAME} DESTINATION fibby) diff --git a/doc/source/f2py/code/pyproj_skbuild.toml b/doc/source/f2py/code/pyproj_skbuild.toml index 6686d1736..bcd6ae99c 100644 --- a/doc/source/f2py/code/pyproj_skbuild.toml +++ b/doc/source/f2py/code/pyproj_skbuild.toml @@ -1,5 +1,3 @@ -[project] -requires-python = ">=3.7" - [build-system] -requires = ["setuptools>=42", "wheel", "scikit-build", "cmake>=3.18", "numpy>=1.21"] +requires = ["setuptools>=42", "wheel", "scikit-build", "cmake>=3.9", "numpy>=1.21"] +build-backend = "setuptools.build_meta" diff --git a/doc/source/f2py/code/setup_skbuild.py b/doc/source/f2py/code/setup_skbuild.py index 4dfc6af8b..28dcdcb1f 100644 --- a/doc/source/f2py/code/setup_skbuild.py +++ b/doc/source/f2py/code/setup_skbuild.py @@ -6,5 +6,5 @@ setup( description="a minimal example package (fortran version)", license="MIT", packages=['fibby'], - cmake_args=['-DSKBUILD=ON'] + python_requires=">=3.7", ) |