89 lines
3.3 KiB
CMake
89 lines
3.3 KiB
CMake
# Copyright (C) 2021 Intel Corporation
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
include(ExternalProject)
|
|
|
|
option(INTEL_HEXL_PREBUILT OFF) # Set to ON/OFF to use prebuilt installation
|
|
message(STATUS "INTEL_HEXL_PREBUILT ${INTEL_HEXL_PREBUILT}")
|
|
|
|
if (INTEL_HEXL_PREBUILT) # Skip download from gitlab
|
|
find_package(HEXL 1.2.3
|
|
HINTS ${INTEL_HEXL_HINT_DIR}
|
|
REQUIRED)
|
|
if (NOT TARGET HEXL::hexl)
|
|
message(FATAL_ERROR, "Intel HEXL not found")
|
|
endif()
|
|
|
|
get_target_property(INTEL_HEXL_INCLUDE_DIR HEXL::hexl INTERFACE_INCLUDE_DIRECTORIES)
|
|
message(STATUS "INTEL_HEXL_INCLUDE_DIR: ${INTEL_HEXL_INCLUDE_DIR}")
|
|
|
|
get_target_property(INTEL_HEXL_LOCATION HEXL::hexl LOCATION)
|
|
message(STATUS "INTEL_HEXL_LOCATION: ${INTEL_HEXL_LOCATION}")
|
|
|
|
# TODO(fboemer): Use target_include_directories
|
|
include_directories(${INTEL_HEXL_INCLUDE_DIR})
|
|
else()
|
|
# ------------------------------------------------------------------------------
|
|
# Download and install Intel HEXL ...
|
|
# ------------------------------------------------------------------------------
|
|
set(INTEL_HEXL_GIT_REPO_URL https://github.com/intel/hexl)
|
|
set(INTEL_HEXL_GIT_LABEL main) # latest HEXL release is on "main"
|
|
|
|
set(INTEL_HEXL_DEBUG OFF) # Set to ON/OFF to toggle debugging
|
|
set(INTEL_HEXL_SHARED_LIB ${BUILD_SHARED}) # Set to ON/OFF to toggle shared library build
|
|
|
|
if (BUILD_SHARED AND BUILD_STATIC)
|
|
message(FATAL_ERROR "HEXL supports only shared or static build. Set either BUILD_SHARED=OFF or BUILD_STATIC=OFF")
|
|
endif()
|
|
|
|
message(STATUS "Downloading Intel HEXL")
|
|
ExternalProject_Add(
|
|
ext_intel_hexl
|
|
PREFIX ext_intel_hexl
|
|
GIT_REPOSITORY ${INTEL_HEXL_GIT_REPO_URL}
|
|
GIT_TAG ${INTEL_HEXL_GIT_LABEL}
|
|
CMAKE_ARGS
|
|
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
-DHEXL_DEBUG=${INTEL_HEXL_DEBUG}
|
|
-DHEXL_BENCHMARK=OFF
|
|
-DHEXL_COVERAGE=OFF
|
|
-DHEXL_TESTING=OFF
|
|
-DHEXL_SHARED_LIB=${INTEL_HEXL_SHARED_LIB}
|
|
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
|
|
UPDATE_COMMAND ""
|
|
EXCLUDE_FROM_ALL TRUE)
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
ExternalProject_Get_Property(ext_intel_hexl SOURCE_DIR BINARY_DIR)
|
|
|
|
if (INTEL_HEXL_SHARED_LIB)
|
|
add_library(HEXL::hexl SHARED IMPORTED)
|
|
if (INTEL_HEXL_DEBUG)
|
|
set_property(TARGET HEXL::hexl PROPERTY
|
|
IMPORTED_LOCATION ${CMAKE_INSTALL_PREFIX}/lib/libhexl_debug${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
else()
|
|
set_property(TARGET HEXL::hexl PROPERTY
|
|
IMPORTED_LOCATION ${CMAKE_INSTALL_PREFIX}/lib/libhexl${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
endif()
|
|
else()
|
|
add_library(HEXL::hexl STATIC IMPORTED)
|
|
if (INTEL_HEXL_DEBUG)
|
|
set_property(TARGET HEXL::hexl PROPERTY
|
|
IMPORTED_LOCATION ${CMAKE_INSTALL_PREFIX}/lib/libhexl_debug.a)
|
|
else()
|
|
set_property(TARGET HEXL::hexl PROPERTY
|
|
IMPORTED_LOCATION ${CMAKE_INSTALL_PREFIX}/lib/libhexl.a)
|
|
endif()
|
|
endif()
|
|
|
|
include_directories(${CMAKE_INSTALL_PREFIX}/include)
|
|
add_dependencies(HEXL::hexl ext_intel_hexl)
|
|
endif()
|
|
|
|
find_package(Threads REQUIRED)
|
|
target_link_libraries(HEXL::hexl INTERFACE Threads::Threads)
|
|
|
|
add_definitions(-DWITH_INTEL_HEXL)
|