Select Git revision
CMakeLists.txt

Pascal Palenda authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
CMakeLists.txt 2.24 KiB
cmake_minimum_required (VERSION 3.26 FATAL_ERROR)
project (
VAPython
LANGUAGES CXX C
VERSION 2024.0
)
find_program(HATCH_EXECUTABLE "hatch")
if (HATCH_EXECUTABLE)
set(VAPYTHON_BUILD_COMMAND hatch build -t wheel)
else ()
set (VAPYTHON_BUILD_COMMAND echo "hatch not found, skipping build for VAPython")
endif ()
add_custom_target(${PROJECT_NAME} COMMAND ${VAPYTHON_BUILD_COMMAND} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
set_property (TARGET ${PROJECT_NAME} PROPERTY FOLDER "Bindings/VA")
# prepare the install folder name
math (EXPR RELEASE_LETTER "${PROJECT_VERSION_MINOR}+97")
string (ASCII ${RELEASE_LETTER} RELEASE_LETTER)
set (VA_PYTHON_OUTPUT_FOLDER "VAPython_v${PROJECT_VERSION_MAJOR}${RELEASE_LETTER}")
# Readme
install (
FILES "README.md" "LICENSE.md" "CHANGELOG.md"
DESTINATION ${VA_PYTHON_OUTPUT_FOLDER}
COMPONENT ${PROJECT_NAME}
)
# Transfer variables into the install script
install (CODE "set(VA_PYTHON_OUTPUT_FOLDER \"${VA_PYTHON_OUTPUT_FOLDER}\")" COMPONENT ${PROJECT_NAME})
install (CODE "set(VA_PYTHON_PACKAGE_PATH \"${CMAKE_CURRENT_SOURCE_DIR}\")" COMPONENT ${PROJECT_NAME})
install (CODE "set(VA_PYTHON_PACKAGE_WHEEL \"vapython-${PROJECT_VERSION}-py3-none-any.whl\")" COMPONENT ${PROJECT_NAME})
install (CODE "set(VA_PYTHON_PACKAGE_WHEEL_FINAL \"vapython-v${PROJECT_VERSION_MAJOR}${RELEASE_LETTER}-py3-none-any.whl\")" COMPONENT ${PROJECT_NAME})
# during install create a wheel from the content of the python folder and include it in the install
install (
CODE [[
find_package(Python3 COMPONENTS Interpreter)
if (Python3_Interpreter_FOUND)
execute_process(
COMMAND ${Python3_EXECUTABLE} -m build --wheel ${VA_PYTHON_PACKAGE_PATH}
RESULT_VARIABLE _result
)
if (NOT _result EQUAL 0)
message(FATAL_ERROR "Failed to create wheel")
endif ()
else ()
message(FATAL_ERROR "Python3 not found")
endif ()
set(_wheel "${VA_PYTHON_PACKAGE_PATH}/dist/${VA_PYTHON_PACKAGE_WHEEL}")
set(_wheel_final "${VA_PYTHON_PACKAGE_PATH}/dist/${VA_PYTHON_PACKAGE_WHEEL_FINAL}")
if (NOT EXISTS "${_wheel}")
message(FATAL_ERROR "Wheel not found")
endif ()
file(COPY_FILE ${_wheel} ${_wheel_final})
file(INSTALL ${_wheel_final} DESTINATION ${CMAKE_INSTALL_PREFIX}/${VA_PYTHON_OUTPUT_FOLDER}/)
]]
COMPONENT ${PROJECT_NAME}
)