You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
4.2 KiB
98 lines
4.2 KiB
#*****************************************************************************
|
|
# Copyright 2023 NVIDIA Corporation. All rights reserved.
|
|
#*****************************************************************************
|
|
include_guard(GLOBAL)
|
|
|
|
unset(PYTHON_VERSION)
|
|
|
|
|
|
if (EXISTS "${BASE_DIRECTORY}/nvpro_core/OV")
|
|
message(STATUS "Packman is available, toggle off USE_PACKMAN to disable")
|
|
option(USE_PACKMAN "Enable to use packman dependencies where possible" ON)
|
|
else()
|
|
option(USE_PACKMAN "Enable to use packman dependencies where possible" OFF)
|
|
endif()
|
|
|
|
if (WIN32)
|
|
set(PACKMAN_PLATFORM "windows-x86_64" CACHE INTERNAL "")
|
|
set(PACKMAN_COMMAND "packman.cmd" CACHE INTERNAL "")
|
|
elseif (UNIX)
|
|
set(PACKMAN_PLATFORM "linux-${CMAKE_HOST_SYSTEM_PROCESSOR}" CACHE INTERNAL "")
|
|
set(PACKMAN_COMMAND "packman" CACHE INTERNAL "")
|
|
endif()
|
|
|
|
if (DEBUG)
|
|
set(PACKMAN_CONFIG "debug" CACHE INTERNAL "")
|
|
else()
|
|
set(PACKMAN_CONFIG "release" CACHE INTERNAL "")
|
|
endif()
|
|
|
|
# Configure all-deps file
|
|
function(configure_all_deps_file)
|
|
set(oneValueArgs ALL_DEPS_FILEPATH PYTHON_VERSION_STRING)
|
|
cmake_parse_arguments(PACKMAN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
if (NOT DEFINED PACKMAN_ALL_DEPS_FILEPATH)
|
|
set(PACKMAN_ALL_DEPS_FILEPATH "${BASE_DIRECTORY}/nvpro_core/OV/all-deps.packman.xml")
|
|
message(STATUS "Using default packman all-deps ${PACKMAN_ALL_DEPS_FILEPATH}")
|
|
else()
|
|
message(STATUS "Using custom packman all-deps ${PACKMAN_ALL_DEPS_FILEPATH}")
|
|
endif()
|
|
|
|
if (NOT DEFINED PACKMAN_PYTHON_VERSION_STRING)
|
|
set(PACKMAN_PYTHON_VERSION_STRING "py37")
|
|
message(WARNING "PYTHON_VERSION_STRING not defined, defaulting to py37 (none, py37, py310)")
|
|
endif()
|
|
|
|
message(STATUS "PACKMAN_PYTHON_VERSION_STRING ${PACKMAN_PYTHON_VERSION_STRING}")
|
|
message(STATUS "PACKMAN_ALL_DEPS_FILEPATH ${PACKMAN_ALL_DEPS_FILEPATH}")
|
|
|
|
set(PYTHON_VERSION ${PACKMAN_PYTHON_VERSION_STRING} CACHE INTERNAL "")
|
|
|
|
file(MAKE_DIRECTORY "${BASE_DIRECTORY}/nvpro_core/OV/downloaded")
|
|
configure_file(
|
|
"${PACKMAN_ALL_DEPS_FILEPATH}"
|
|
"${BASE_DIRECTORY}/nvpro_core/OV/downloaded/all-deps.packman.xml"
|
|
@ONLY
|
|
)
|
|
endfunction()
|
|
|
|
# Use packman to pull dependencies from ${BASE_DIRECTORY}/nvpro_core/OV/${PACKMAN_DEPENDENCY_FILE} where DEPENDENCY_FILE is an arg
|
|
function(pull_dependencies)
|
|
set(oneValueArgs DEPENDENCY_FILE COMMAND)
|
|
cmake_parse_arguments(PACKMAN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
if (NOT EXISTS ${BASE_DIRECTORY}/nvpro_core/OV/packman/${PACKMAN_COMMAND})
|
|
message(FATAL_ERROR "PACKMAN_COMMAND \"${BASE_DIRECTORY}/nvpro_core/OV/packman/${PACKMAN_COMMAND}\" does not exist!")
|
|
endif()
|
|
|
|
if (NOT EXISTS ${BASE_DIRECTORY}/nvpro_core/OV/${PACKMAN_DEPENDENCY_FILE})
|
|
message(FATAL_ERROR "PACKMAN_DEPENDENCY_FILE \"${BASE_DIRECTORY}/nvpro_core/OV/${PACKMAN_DEPENDENCY_FILE}\" does not exist!")
|
|
endif()
|
|
|
|
message(STATUS "Pulling dependencies from ${PACKMAN_DEPENDENCY_FILE}...")
|
|
message(STATUS " Platform: ${PACKMAN_PLATFORM}")
|
|
message(STATUS " Config: ${PACKMAN_CONFIG}")
|
|
message(STATUS " Python: ${PYTHON_VERSION}")
|
|
|
|
file(MAKE_DIRECTORY "${BASE_DIRECTORY}/nvpro_core/OV/downloaded")
|
|
configure_file(
|
|
"${BASE_DIRECTORY}/nvpro_core/OV/${PACKMAN_DEPENDENCY_FILE}"
|
|
"${BASE_DIRECTORY}/nvpro_core/OV/downloaded/${PACKMAN_DEPENDENCY_FILE}"
|
|
@ONLY
|
|
)
|
|
|
|
message(STATUS "execute_process(COMMAND ${BASE_DIRECTORY}/nvpro_core/OV/packman/${PACKMAN_COMMAND} pull ${BASE_DIRECTORY}/nvpro_core/OV/downloaded/${PACKMAN_DEPENDENCY_FILE} -p \"${PACKMAN_PLATFORM}\" -t config=${PACKMAN_CONFIG}
|
|
WORKING_DIRECTORY ${BASE_DIRECTORY}/nvpro_core/OV/downloaded
|
|
RESULT_VARIABLE PACKMAN_RESULT)")
|
|
|
|
execute_process(COMMAND "${BASE_DIRECTORY}/nvpro_core/OV/packman/${PACKMAN_COMMAND}" pull "${BASE_DIRECTORY}/nvpro_core/OV/downloaded/${PACKMAN_DEPENDENCY_FILE}" -p "${PACKMAN_PLATFORM}" -t config=${PACKMAN_CONFIG}
|
|
WORKING_DIRECTORY "${BASE_DIRECTORY}/nvpro_core/OV/downloaded"
|
|
RESULT_VARIABLE PACKMAN_RESULT)
|
|
|
|
if (${PACKMAN_RESULT} EQUAL 0)
|
|
message(STATUS "Packman result: success")
|
|
else()
|
|
message(FATAL_ERROR "Packman result: ${PACKMAN_RESULT}")
|
|
endif()
|
|
endfunction()
|
|
|