Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • develop protected
  • ti_lab_build
  • cross_platform
  • big_2017_api_change
  • VA_v2024a
  • VA_v2023b
  • VA_v2023a
  • before_VANet_update
  • VA_v2022a
  • before_cmake_rework
  • v2021.a
  • v2020.a
  • v2019.a
  • v2018.b
15 results

CMakeLists.txt

  • 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}
    )