qiskit-aer/cmake/dependency_utils.cmake

61 lines
2.1 KiB
CMake

# This code is part of Qiskit.
#
# (C) Copyright IBM 2020
#
# This code is licensed under the Apache License, Version 2.0. You may
# obtain a copy of this license in the LICENSE.txt file in the root directory
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
#
# Any modifications or derivative works of this code must retain this
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.
macro(setup_dependencies)
# Defines AER_DEPENDENCY_PKG alias which refers to either conan-provided or system libraries.
if(DISABLE_CONAN)
_use_system_libraries()
else()
include(conan_utils)
setup_conan()
endif()
endmacro()
macro(_use_system_libraries)
# Use system libraries
_import_aer_system_dependency(nlohmann_json 3.1.1)
_import_aer_system_dependency(spdlog 1.9.2)
if(AER_THRUST_BACKEND AND NOT AER_THRUST_BACKEND STREQUAL "CUDA")
string(TOLOWER ${AER_THRUST_BACKEND} THRUST_BACKEND)
_import_aer_system_dependency(Thrust 1.9.5)
endif()
if(BUILD_TESTS)
_import_aer_system_dependency(Catch2 2.13.6)
endif()
if(APPLE)
# Fix linking. See https://stackoverflow.com/questions/54068035
link_directories(/usr/local/lib) #brew
link_directories(/opt/local/lib) #ports
endif()
endmacro()
macro(_import_aer_system_dependency package version)
# Arguments:
# package: name of package to search for using find_package()
# version: version of package to search for
find_package(${package} ${version} EXACT QUIET)
if(NOT ${package}_FOUND)
message(STATUS "${package} ${version} NOT found! Looking for any other version available.")
find_package(${package} REQUIRED)
message(STATUS "${package} version found: ${${package}_VERSION}. WARNING: This version may not work!!!")
endif()
string(TOLOWER ${package} PACKAGE_LOWER) # Conan use lowercase for every lib
add_library(AER_DEPENDENCY_PKG::${PACKAGE_LOWER} INTERFACE IMPORTED)
target_link_libraries(AER_DEPENDENCY_PKG::${PACKAGE_LOWER} PUBLIC INTERFACE ${package})
message(STATUS "Using system-provided ${PACKAGE_LOWER} library")
endmacro()