mirror of
https://github.com/boostorg/python.git
synced 2026-01-19 04:22:16 +00:00
Add CMakeLists.txt
This commit is contained in:
176
CMakeLists.txt
Normal file
176
CMakeLists.txt
Normal file
@@ -0,0 +1,176 @@
|
||||
# Copyright 2020, 2021 Peter Dimov
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# https://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
cmake_minimum_required(VERSION 3.14...3.20)
|
||||
|
||||
project(boost_python VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
|
||||
|
||||
find_package(Python REQUIRED COMPONENTS Development OPTIONAL_COMPONENTS NumPy)
|
||||
|
||||
if(Python_NumPy_FOUND)
|
||||
message(STATUS "Boost.Python: using Python ${Python_VERSION} with NumPy at ${Python_NumPy_INCLUDE_DIRS}")
|
||||
else()
|
||||
message(STATUS "Boost.Python: using Python ${Python_VERSION} without NumPy")
|
||||
endif()
|
||||
|
||||
# boost_pythonXY
|
||||
|
||||
set(_pyver ${Python_VERSION_MAJOR}${Python_VERSION_MINOR})
|
||||
set(_boost_python boost_python${_pyver})
|
||||
|
||||
add_library(${_boost_python}
|
||||
src/dict.cpp
|
||||
src/errors.cpp
|
||||
src/exec.cpp
|
||||
src/import.cpp
|
||||
src/list.cpp
|
||||
src/long.cpp
|
||||
src/module.cpp
|
||||
src/object_operators.cpp
|
||||
src/object_protocol.cpp
|
||||
src/slice.cpp
|
||||
src/str.cpp
|
||||
src/tuple.cpp
|
||||
src/wrapper.cpp
|
||||
src/converter/from_python.cpp
|
||||
src/converter/registry.cpp
|
||||
src/converter/type_id.cpp
|
||||
src/converter/builtin_converters.cpp
|
||||
src/converter/arg_to_python_base.cpp
|
||||
src/object/enum.cpp
|
||||
src/object/class.cpp
|
||||
src/object/function.cpp
|
||||
src/object/inheritance.cpp
|
||||
src/object/life_support.cpp
|
||||
src/object/pickle_support.cpp
|
||||
src/object/iterator.cpp
|
||||
src/object/stl_iterator.cpp
|
||||
src/object_protocol.cpp
|
||||
src/object_operators.cpp
|
||||
src/object/function_doc_signature.cpp
|
||||
)
|
||||
|
||||
add_library(Boost::python${_pyver} ALIAS ${_boost_python})
|
||||
|
||||
target_include_directories(${_boost_python} PUBLIC include)
|
||||
|
||||
target_link_libraries(${_boost_python}
|
||||
PUBLIC
|
||||
Boost::align
|
||||
Boost::bind
|
||||
Boost::config
|
||||
Boost::conversion
|
||||
Boost::core
|
||||
Boost::detail
|
||||
Boost::foreach
|
||||
Boost::function
|
||||
Boost::iterator
|
||||
Boost::lexical_cast
|
||||
Boost::mpl
|
||||
Boost::numeric_conversion
|
||||
Boost::preprocessor
|
||||
Boost::smart_ptr
|
||||
Boost::static_assert
|
||||
Boost::tuple
|
||||
Boost::type_traits
|
||||
Boost::utility
|
||||
|
||||
Python::Module
|
||||
|
||||
PRIVATE
|
||||
Boost::graph
|
||||
Boost::integer
|
||||
Boost::property_map
|
||||
)
|
||||
|
||||
target_compile_definitions(${_boost_python}
|
||||
PUBLIC BOOST_PYTHON_NO_LIB
|
||||
PRIVATE BOOST_PYTHON_SOURCE
|
||||
)
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
target_compile_definitions(${_boost_python} PUBLIC BOOST_PYTHON_DYN_LINK)
|
||||
else()
|
||||
target_compile_definitions(${_boost_python} PUBLIC BOOST_PYTHON_STATIC_LINK BOOST_PYTHON_STATIC_LIB)
|
||||
endif()
|
||||
|
||||
# Boost::python alias
|
||||
|
||||
add_library(boost_python INTERFACE)
|
||||
add_library(Boost::python ALIAS boost_python)
|
||||
target_link_libraries(boost_python INTERFACE Boost::python${_pyver})
|
||||
|
||||
# Installation
|
||||
|
||||
if(BOOST_SUPERPROJECT_VERSION AND NOT CMAKE_VERSION VERSION_LESS 3.13)
|
||||
boost_install(TARGETS ${_boost_python} boost_python VERSION ${BOOST_SUPERPROJECT_VERSION} HEADER_DIRECTORY include)
|
||||
endif()
|
||||
|
||||
if(Python_NumPy_FOUND)
|
||||
|
||||
# boost_numpyXY
|
||||
|
||||
set(_boost_numpy boost_numpy${_pyver})
|
||||
|
||||
add_library(${_boost_numpy}
|
||||
src/numpy/dtype.cpp
|
||||
src/numpy/matrix.cpp
|
||||
src/numpy/ndarray.cpp
|
||||
src/numpy/numpy.cpp
|
||||
src/numpy/scalars.cpp
|
||||
src/numpy/ufunc.cpp
|
||||
)
|
||||
|
||||
add_library(Boost::numpy${_pyver} ALIAS ${_boost_numpy})
|
||||
|
||||
target_include_directories(${_boost_numpy} PUBLIC include)
|
||||
|
||||
target_link_libraries(${_boost_numpy}
|
||||
PUBLIC
|
||||
Boost::config
|
||||
Boost::core
|
||||
Boost::detail
|
||||
Boost::mpl
|
||||
Boost::python
|
||||
Boost::smart_ptr
|
||||
|
||||
Python::NumPy
|
||||
)
|
||||
|
||||
target_compile_definitions(${_boost_numpy}
|
||||
PUBLIC BOOST_NUMPY_NO_LIB
|
||||
PRIVATE BOOST_NUMPY_SOURCE
|
||||
)
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
target_compile_definitions(${_boost_numpy} PUBLIC BOOST_NUMPY_DYN_LINK)
|
||||
else()
|
||||
target_compile_definitions(${_boost_numpy} PUBLIC BOOST_NUMPY_STATIC_LINK BOOST_NUMPY_STATIC_LIB)
|
||||
endif()
|
||||
|
||||
# Boost::numpy alias
|
||||
|
||||
add_library(boost_numpy INTERFACE)
|
||||
add_library(Boost::numpy ALIAS boost_numpy)
|
||||
target_link_libraries(boost_numpy INTERFACE Boost::numpy${_pyver})
|
||||
|
||||
# Installation
|
||||
|
||||
if(BOOST_SUPERPROJECT_VERSION AND NOT CMAKE_VERSION VERSION_LESS 3.13)
|
||||
boost_install(TARGETS ${_boost_numpy} boost_numpy VERSION ${BOOST_SUPERPROJECT_VERSION})
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
unset(_pyver)
|
||||
unset(_boost_python)
|
||||
unset(_boost_numpy)
|
||||
|
||||
# Testing
|
||||
|
||||
if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
|
||||
|
||||
add_subdirectory(test)
|
||||
|
||||
endif()
|
||||
Reference in New Issue
Block a user