agent/native/building/cmake/elastic_conan_export.cmake (74 lines of code) (raw):
include(CMakeParseArguments)
function(elastic_conan_export)
set(oneValueArgs PATH REFERENCE PROFILE)
cmake_parse_arguments(_elastic_conan_export "" "${oneValueArgs}" "" ${ARGN} )
message(STATUS "conan export path: ${_elastic_conan_export_PATH} ref: ${_elastic_conan_export_REFERENCE} profile: ${_elastic_conan_export_PROFILE}" )
execute_process(COMMAND ${CONAN_CMD} export ${_elastic_conan_export_PATH} ${_elastic_conan_export_REFERENCE} )
endfunction()
function(elastic_conan_create)
set(oneValueArgs PATH REFERENCE PROFILE)
cmake_parse_arguments(_elastic_conan_create "" "${oneValueArgs}" "" ${ARGN} )
execute_process(COMMAND ${CONAN_CMD} search --raw ${_elastic_conan_create_REFERENCE}
RESULT_VARIABLE return_code
OUTPUT_QUIET
ERROR_QUIET
)
if ("${return_code}" STREQUAL 0)
message(STATUS "Package ${_elastic_conan_create_REFERENCE} already installed")
return()
endif()
message(STATUS "${CONAN_CMD} create --build=missing -pr ${_elastic_conan_create_PROFILE} ${_elastic_conan_create_PATH} ${_elastic_conan_create_REFERENCE}" )
execute_process(COMMAND ${CONAN_CMD} create --build=missing -pr ${_elastic_conan_create_PROFILE} ${_elastic_conan_create_PATH} ${_elastic_conan_create_REFERENCE}
COMMAND_ERROR_IS_FATAL ANY
)
endfunction()
function(elastic_conan_alias)
set(oneValueArgs PATH REFERENCE TARGET)
cmake_parse_arguments(_elastic_conan_alias "" "${oneValueArgs}" "" ${ARGN} )
message(STATUS "${CONAN_CMD} alias ${_elastic_conan_alias_REFERENCE} ${_elastic_conan_alias_TARGET}")
execute_process(COMMAND ${CONAN_CMD} alias ${_elastic_conan_alias_REFERENCE} ${_elastic_conan_alias_TARGET}
COMMAND_ERROR_IS_FATAL ANY
)
endfunction()
function(conan_update_remote)
# Update a remote
# Arguments URL and NAME are required, INDEX, COMMAND and VERIFY_SSL are optional
# Example usage:
# conan_add_remote(NAME bincrafters INDEX 1
# URL https://api.bintray.com/conan/bincrafters/public-conan
# VERIFY_SSL True)
set(oneValueArgs URL NAME INDEX COMMAND VERIFY_SSL)
cmake_parse_arguments(CONAN "" "${oneValueArgs}" "" ${ARGN})
if(DEFINED CONAN_INDEX)
set(CONAN_INDEX_ARG "-i ${CONAN_INDEX}")
endif()
if(DEFINED CONAN_COMMAND)
set(CONAN_CMD ${CONAN_COMMAND})
else()
conan_check(REQUIRED DETECT_QUIET)
endif()
set(CONAN_VERIFY_SSL_ARG "True")
if(DEFINED CONAN_VERIFY_SSL)
set(CONAN_VERIFY_SSL_ARG ${CONAN_VERIFY_SSL})
endif()
message(STATUS "Conan: Updating ${CONAN_NAME} remote repository (${CONAN_URL}) verify ssl (${CONAN_VERIFY_SSL_ARG})")
execute_process(COMMAND ${CONAN_CMD} remote update ${CONAN_NAME} ${CONAN_INDEX_ARG} ${CONAN_URL} ${CONAN_VERIFY_SSL_ARG}
RESULT_VARIABLE return_code)
if(NOT "${return_code}" STREQUAL "0")
message(FATAL_ERROR "Conan remote failed='${return_code}'")
endif()
endfunction()
function(conan_remove_remote)
# Update a remote
# Argument NAME is required
# Example usage:
# conan_remove_remote(NAME bincrafters)
set(oneValueArgs NAME)
cmake_parse_arguments(CONAN "" "${oneValueArgs}" "" ${ARGN})
message(STATUS "Conan: Removing ${CONAN_NAME} remote repository")
execute_process(COMMAND ${CONAN_CMD} remote remove ${CONAN_NAME}
RESULT_VARIABLE return_code)
if(NOT "${return_code}" STREQUAL "0")
message(FATAL_ERROR "Conan remote failed='${return_code}'")
endif()
endfunction()