summaryrefslogtreecommitdiff
path: root/doc/source/f2py/code
diff options
context:
space:
mode:
authorHenry Schreiner <henryschreineriii@gmail.com>2021-11-23 17:06:06 -0500
committerHenry Schreiner <henryschreineriii@gmail.com>2021-11-23 17:06:06 -0500
commit9f9cec1b37fbe298b792240ecc670ab34fcfbd84 (patch)
tree7a5de0c5dde6721f4c563ea27b109878c4e7eec1 /doc/source/f2py/code
parente94bbb87ba10ec2585f87af8e9a80afee2f89e04 (diff)
downloadnumpy-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.txt86
-rw-r--r--doc/source/f2py/code/pyproj_skbuild.toml6
-rw-r--r--doc/source/f2py/code/setup_skbuild.py2
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",
)