-
Notifications
You must be signed in to change notification settings - Fork 621
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix CMakeLists.txt: fix incorrect file contents
Signed-off-by: HyeongSeok Kim <[email protected]>
- Loading branch information
Showing
1 changed file
with
33 additions
and
137 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,155 +1,51 @@ | ||
# SPDX-License-Identifier: BSD-3-Clause | ||
# Copyright (c) Contributors to the OpenEXR Project. | ||
# Copyright Contributors to the OpenEXR Project. | ||
|
||
# We require this to get object library link library support | ||
cmake_minimum_required(VERSION 3.14) | ||
message(STATUS "Building OpenEXR python bindings") | ||
|
||
if(POLICY CMP0074) | ||
# enable find_package(<Package>) to use <Package>_ROOT as a hint | ||
cmake_policy(SET CMP0074 NEW) | ||
if(NOT "${CMAKE_PROJECT_NAME}" STREQUAL "OpenEXR") | ||
cmake_minimum_required(VERSION 3.12) | ||
project(PyOpenEXR) | ||
find_package(OpenEXR) | ||
endif() | ||
|
||
if(POLICY CMP0077) | ||
# enable variables set outside to override options | ||
cmake_policy(SET CMP0077 NEW) | ||
endif() | ||
|
||
####################################### | ||
# Create project and include cmake | ||
# configuration files | ||
####################################### | ||
|
||
file(READ "src/lib/OpenEXRCore/openexr_version.h" VERSION_H) | ||
string(REGEX MATCH "VERSION_MAJOR ([0-9]*)" _ ${VERSION_H}) | ||
set(OPENEXR_VERSION_MAJOR ${CMAKE_MATCH_1}) | ||
string(REGEX MATCH "VERSION_MINOR ([0-9]*)" _ ${VERSION_H}) | ||
set(OPENEXR_VERSION_MINOR ${CMAKE_MATCH_1}) | ||
string(REGEX MATCH "VERSION_PATCH ([0-9]*)" _ ${VERSION_H}) | ||
set(OPENEXR_VERSION_PATCH ${CMAKE_MATCH_1}) | ||
|
||
project(OpenEXR VERSION ${OPENEXR_VERSION_MAJOR}.${OPENEXR_VERSION_MINOR}.${OPENEXR_VERSION_PATCH} LANGUAGES C CXX) | ||
|
||
set(OPENEXR_VERSION_RELEASE_TYPE "-dev" CACHE STRING "Extra version tag string for OpenEXR build, such as -dev, -beta1, etc.") | ||
|
||
set(OPENEXR_VERSION ${OpenEXR_VERSION}) | ||
set(OPENEXR_VERSION_API "${OpenEXR_VERSION_MAJOR}_${OpenEXR_VERSION_MINOR}") | ||
find_package(Python COMPONENTS Interpreter Development.Module REQUIRED) | ||
find_package(pybind11 CONFIG REQUIRED) | ||
|
||
# The SOVERSION (i.e. numerical component of SONAME) tracks the ABI | ||
# version. Increment this number whenever, and only when, the ABI changes in | ||
# non-backwards-compatible ways. | ||
# | ||
# The OpenEXR project policy is to append the library version | ||
# "major.minor.patch" to the SONAME to form the real shared library name. | ||
# For example, in "libOpenEXR.so.31.3.2.0", "libOpenEXR.so.31" is the SONAME | ||
# and ".3.2.0" identifies the corresponding library release. | ||
python_add_library (PyOpenEXR MODULE PyOpenEXR.cpp PyOpenEXR_old.cpp) | ||
|
||
set(OPENEXR_LIB_SOVERSION 99) | ||
set(OPENEXR_LIB_VERSION "${OPENEXR_LIB_SOVERSION}.${OPENEXR_VERSION}") # e.g. "31.3.2.0" | ||
target_link_libraries (PyOpenEXR PRIVATE "${Python_LIBRARIES}" OpenEXR::OpenEXR pybind11::headers) | ||
|
||
option(OPENEXR_INSTALL "Install OpenEXR libraries" ON) | ||
option(OPENEXR_INSTALL_TOOLS "Install OpenEXR tools" ON) | ||
# The python module should be called "OpenEXR.so", not "PyOpenEXR.so", | ||
# but "OpenEXR" is taken as a library name by the main lib, so specify | ||
# the name explicitly here. | ||
|
||
if(OPENEXR_INSTALL OR OPENEXR_INSTALL_TOOLS) | ||
# uninstall target | ||
if(NOT TARGET uninstall) | ||
configure_file( | ||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" | ||
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" | ||
IMMEDIATE @ONLY) | ||
add_custom_target(uninstall | ||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) | ||
endif() | ||
endif() | ||
|
||
include(cmake/LibraryDefine.cmake) | ||
include(cmake/OpenEXRSetup.cmake) | ||
add_subdirectory(cmake) | ||
message(STATUS "Configure ${OPENEXR_PACKAGE_NAME}, library API version: ${OPENEXR_LIB_VERSION}") | ||
|
||
# Hint: This can be set to enable custom find_package | ||
# search paths, probably best to set it when configuring | ||
# on the command line to cmake instead of setting it | ||
# here. | ||
###set(CMAKE_PREFIX_PATH "/prefix") | ||
set_target_properties (PyOpenEXR PROPERTIES OUTPUT_NAME "OpenEXR") | ||
|
||
####################################### | ||
# Add all source in subdirectories | ||
####################################### | ||
configure_file(Imath.py ${CMAKE_CURRENT_BINARY_DIR}/Imath.py COPYONLY) | ||
|
||
if(BUILD_TESTING AND NOT OPENEXR_IS_SUBPROJECT) | ||
# Enable testing *before* adding any subdirectories that may include tests | ||
enable_testing() | ||
set(PYTHON_INSTALL_DIR "python/OpenEXR") | ||
if(SKBUILD) | ||
set(PYTHON_INSTALL_DIR ${SKBUILD_PLATLIB_DIR}) | ||
endif() | ||
|
||
# Include these two modules without enable/disable options | ||
if (OPENEXR_BUILD_LIBS) | ||
add_subdirectory(src/lib) | ||
endif() | ||
install(TARGETS PyOpenEXR DESTINATION ${PYTHON_INSTALL_DIR} COMPONENT python) | ||
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Imath.py DESTINATION ${PYTHON_INSTALL_DIR} COMPONENT python) | ||
|
||
if(OPENEXR_BUILD_TOOLS AND OPENEXR_BUILD_LIBS) | ||
add_subdirectory(src/bin) | ||
endif() | ||
# Generate .pyi stub file using pybind11-stubgen. And install the generated .pyi file | ||
add_custom_command(TARGET PyOpenEXR POST_BUILD | ||
COMMAND PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR} pybind11-stubgen -o ${CMAKE_BINARY_DIR}/OpenEXR --ignore-all-errors OpenEXR | ||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | ||
COMMENT "Generating .pyi stub file" | ||
) | ||
install(FILES ${CMAKE_BINARY_DIR}/OpenEXR/OpenEXR.pyi DESTINATION ${PYTHON_INSTALL_DIR} COMPONENT python) | ||
|
||
# Tell CMake where to find the OpenEXRConfig.cmake file. Makes it possible to call | ||
# find_package(OpenEXR) in downstream projects | ||
set(OpenEXR_DIR "${CMAKE_CURRENT_BINARY_DIR}/cmake" CACHE PATH "" FORCE) | ||
# Add an empty OpenEXRTargets.cmake file for the config to use. | ||
# Can be empty since we already defined the targets in add_subdirectory | ||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cmake/OpenEXRTargets.cmake" "# Dummy file") | ||
if(BUILD_TESTING AND OPENEXR_TEST_PYTHON) | ||
|
||
if(OPENEXR_BUILD_EXAMPLES AND OPENEXR_BUILD_LIBS) | ||
add_subdirectory( src/examples ) | ||
endif() | ||
add_test(OpenEXR.PyOpenEXR pytest ${CMAKE_CURRENT_SOURCE_DIR}/tests) | ||
|
||
# If you want to use ctest to configure, build and | ||
# upload the results, cmake has builtin support for | ||
# submitting to CDash, or any server who speaks the | ||
# same protocol | ||
# | ||
# These settings will need to be set for your environment, | ||
# and then a script such as the example in | ||
# | ||
# cmake/SampleCTestScript.cmake | ||
# | ||
# edited and placed into the CI system, then run: | ||
# | ||
# cmake -S cmake/SampleCTestScript.cmake | ||
# | ||
# [or whatever you name the file you edit] | ||
# | ||
#set(CTEST_PROJECT_NAME "OpenEXR") | ||
#set(CTEST_NIGHTLY_START_TIME "01:01:01 UTC") | ||
#set(CTEST_DROP_METHOD "http") # there are others... | ||
#set(CTEST_DROP_SITE "open.cdash.org") | ||
#set(CTEST_DROP_LOCATION "/submit.php?project=MyProject") | ||
#set(CTEST_DROP_SITE_CDASH TRUE) | ||
include(CTest) | ||
set_tests_properties(OpenEXR.PyOpenEXR PROPERTIES | ||
ENVIRONMENT "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}" | ||
) | ||
|
||
if(BUILD_TESTING AND OPENEXR_BUILD_LIBS AND NOT OPENEXR_IS_SUBPROJECT) | ||
add_subdirectory(src/test) | ||
endif() | ||
|
||
# Including this module will add a `clang-format` target to the build if | ||
# the clang-format executable can be found. Only do this if we are top level | ||
if(NOT OPENEXR_IS_SUBPROJECT) | ||
include(cmake/clang-format.cmake) | ||
endif() | ||
|
||
option(OPENEXR_INSTALL_DOCS "Set ON to install tool manpages") | ||
if (OPENEXR_INSTALL_DOCS AND NOT OPENEXR_IS_SUBPROJECT) | ||
add_subdirectory(docs) | ||
endif() | ||
|
||
option(BUILD_WEBSITE "Set ON to build website source") | ||
if (BUILD_WEBSITE AND NOT OPENEXR_IS_SUBPROJECT) | ||
add_subdirectory(website) | ||
endif() | ||
|
||
if (OPENEXR_BUILD_LIBS AND NOT OPENEXR_IS_SUBPROJECT) | ||
# Even if not building the website, still make sure the website example code compiles. | ||
add_subdirectory(website/src) | ||
endif() | ||
|
||
if (OPENEXR_BUILD_PYTHON AND OPENEXR_BUILD_LIBS AND NOT OPENEXR_IS_SUBPROJECT) | ||
add_subdirectory(src/wrappers/python) | ||
endif() | ||
endif() |