|
Packit |
534379 |
#!/usr/bin/cmake -P
|
|
Packit |
534379 |
## Copyright(c) 2017-2020, Intel Corporation
|
|
Packit |
534379 |
##
|
|
Packit |
534379 |
## Redistribution and use in source and binary forms, with or without
|
|
Packit |
534379 |
## modification, are permitted provided that the following conditions are met:
|
|
Packit |
534379 |
##
|
|
Packit |
534379 |
## * Redistributions of source code must retain the above copyright notice,
|
|
Packit |
534379 |
## this list of conditions and the following disclaimer.
|
|
Packit |
534379 |
## * Redistributions in binary form must reproduce the above copyright notice,
|
|
Packit |
534379 |
## this list of conditions and the following disclaimer in the documentation
|
|
Packit |
534379 |
## and/or other materials provided with the distribution.
|
|
Packit |
534379 |
## * Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
534379 |
## may be used to endorse or promote products derived from this software
|
|
Packit |
534379 |
## without specific prior written permission.
|
|
Packit |
534379 |
##
|
|
Packit |
534379 |
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
534379 |
## AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
534379 |
## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
Packit |
534379 |
## ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
Packit |
534379 |
## LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
Packit |
534379 |
## CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
Packit |
534379 |
## SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
Packit |
534379 |
## INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
Packit |
534379 |
## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
Packit |
534379 |
## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
Packit |
534379 |
## POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
534379 |
|
|
Packit |
534379 |
include(CheckCCompilerFlag)
|
|
Packit |
534379 |
include(CheckCXXCompilerFlag)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
if(NOT CMAKE_C_COMPILER)
|
|
Packit |
534379 |
message("-- No C compiler was found. Please install the gcc package for your distribution:
|
|
Packit |
534379 |
DEB: apt install gcc
|
|
Packit |
534379 |
RPM: yum install gcc")
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
if(NOT CMAKE_CXX_COMPILER)
|
|
Packit |
534379 |
message("-- No C++ compiler was found. Please install the g++ package for your distribution:
|
|
Packit |
534379 |
DEB: apt install g++
|
|
Packit |
534379 |
RPM: yum install gcc-c++")
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
|
Packit |
534379 |
find_package(Threads)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
############################################################################
|
|
Packit |
534379 |
## Set the default build type to Release with debug info. ##################
|
|
Packit |
534379 |
############################################################################
|
|
Packit |
534379 |
if(CMAKE_BUILD_TYPE STREQUAL "")
|
|
Packit |
534379 |
set(CMAKE_BUILD_TYPE RelWithDebInfo
|
|
Packit |
534379 |
CACHE STRING
|
|
Packit |
534379 |
"Type of build: {Debug Release RelWithDebInfo MinSizeRel Coverage}"
|
|
Packit |
534379 |
FORCE)
|
|
Packit |
534379 |
function(opae_coverage_build)
|
|
Packit |
534379 |
endfunction()
|
|
Packit |
534379 |
elseif(CMAKE_BUILD_TYPE STREQUAL "Coverage")
|
|
Packit |
534379 |
find_program(OPAE_GCOV_EXECUTABLE gcov)
|
|
Packit |
534379 |
if(NOT OPAE_GCOV_EXECUTABLE)
|
|
Packit |
534379 |
message(FATAL_ERROR "Coverage requested, but gcov not found. Aborting...")
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
find_program(OPAE_LCOV_EXECUTABLE lcov)
|
|
Packit |
534379 |
find_program(OPAE_GENHTML_EXECUTABLE genhtml)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# example:
|
|
Packit |
534379 |
# opae_coverage_build(TARGET opae-c SOURCE a.c b.c)
|
|
Packit |
534379 |
function(opae_coverage_build)
|
|
Packit |
534379 |
set(options )
|
|
Packit |
534379 |
set(oneValueArgs TARGET)
|
|
Packit |
534379 |
set(multiValueArgs SOURCE)
|
|
Packit |
534379 |
cmake_parse_arguments(OPAE_COVERAGE_BUILD "${options}"
|
|
Packit |
534379 |
"${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set_property(SOURCE ${OPAE_COVERAGE_BUILD_SOURCE} APPEND_STRING PROPERTY COMPILE_FLAGS
|
|
Packit |
534379 |
" -g -O0 -Wall -Wextra -Werror -pthread --coverage -fprofile-arcs -ftest-coverage")
|
|
Packit |
534379 |
target_link_libraries(${OPAE_COVERAGE_BUILD_TARGET} "-lgcov")
|
|
Packit |
534379 |
endfunction()
|
|
Packit |
534379 |
else()
|
|
Packit |
534379 |
function(opae_coverage_build)
|
|
Packit |
534379 |
endfunction()
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set(CMAKE_C_FLAGS_DEBUG "-g -O0 -Wall -Wextra -Werror -pthread")
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wextra -Werror -pthread")
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set(CMAKE_C_FLAGS_RELEASE "-O2 -Wall -Wextra -Werror -pthread")
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -Wall -Wextra -Werror -pthread")
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-g -O2 -Wall -Wextra -Werror -pthread")
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -O2 -Wall -Wextra -Werror -pthread")
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set(CMAKE_C_FLAGS_MINSIZEREL "-Os -Wall -Wextra -Werror -pthread")
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -Wall -Wextra -Werror -pthread")
|
|
Packit |
534379 |
|
|
Packit |
534379 |
############################################################################
|
|
Packit |
534379 |
## Enable defensive options for Release builds. ############################
|
|
Packit |
534379 |
############################################################################
|
|
Packit |
534379 |
if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
|
Packit |
534379 |
# C options
|
|
Packit |
534379 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat -Wformat-security")
|
|
Packit |
534379 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -D_FORTIFY_SOURCE=2")
|
|
Packit |
534379 |
if(GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
|
|
Packit |
534379 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-strong")
|
|
Packit |
534379 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -z noexecstack -z relro -z now")
|
|
Packit |
534379 |
else()
|
|
Packit |
534379 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-all")
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# C++ options
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat -Wformat-security")
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -D_FORTIFY_SOURCE=2")
|
|
Packit |
534379 |
if(GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong")
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -z noexecstack -z relro -z now")
|
|
Packit |
534379 |
else()
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-all")
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# Linker options
|
|
Packit |
534379 |
if (NOT ${CMAKE_C_COMPILER} MATCHES "clang")
|
|
Packit |
534379 |
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pie")
|
|
Packit |
534379 |
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# Check if support for C++ 11/14/0x is available
|
|
Packit |
534379 |
check_cxx_compiler_flag("-std=c++14" COMPILER_SUPPORTS_CXX14)
|
|
Packit |
534379 |
check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11)
|
|
Packit |
534379 |
check_cxx_compiler_flag("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
|
|
Packit |
534379 |
if(COMPILER_SUPPORTS_CXX14)
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
|
|
Packit |
534379 |
set(CMAKE_CXX_STANDARD 14)
|
|
Packit |
534379 |
elseif(COMPILER_SUPPORTS_CXX11)
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|
Packit |
534379 |
set(CMAKE_CXX_STANDARD 11)
|
|
Packit |
534379 |
elseif(COMPILER_SUPPORTS_CXX0X)
|
|
Packit |
534379 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# If building on a 32-bit system, make sure off_t can store offsets > 2GB.
|
|
Packit |
534379 |
if(CMAKE_COMPILER_IS_GNUCC)
|
|
Packit |
534379 |
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
Packit |
534379 |
add_definitions(-D_LARGEFILE_SOURCE)
|
|
Packit |
534379 |
add_definitions(-D_FILE_OFFSET_BITS=64)
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
macro(set_install_rpath target_name)
|
|
Packit |
534379 |
if(OPAE_INSTALL_RPATH)
|
|
Packit |
534379 |
set_target_properties(${target_name} PROPERTIES
|
|
Packit |
534379 |
INSTALL_RPATH "\$ORIGIN/../${OPAE_LIB_INSTALL_DIR}"
|
|
Packit |
534379 |
INSTALL_RPATH_USE_LINK_PATH TRUE
|
|
Packit |
534379 |
SKIP_BUILD_RPATH FALSE
|
|
Packit |
534379 |
BUILD_WITH_INSTALL_RPATH FALSE)
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
endmacro()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
function(opae_add_subdirectory directory_name)
|
|
Packit |
534379 |
get_filename_component(full_dir_path "${directory_name}" REALPATH)
|
|
Packit |
534379 |
if(EXISTS "${full_dir_path}" AND IS_DIRECTORY "${full_dir_path}" AND EXISTS "${full_dir_path}/CMakeLists.txt")
|
|
Packit |
534379 |
add_subdirectory(${directory_name})
|
|
Packit |
534379 |
else()
|
|
Packit |
534379 |
message("Directory or CMakeLists.txt not found: ${full_dir_path}")
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
endfunction()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# example:
|
|
Packit |
534379 |
# opae_add_executable(TARGET fpgaconf SOURCE a.c b.c LIBS opae-c)
|
|
Packit |
534379 |
function(opae_add_executable)
|
|
Packit |
534379 |
set(options )
|
|
Packit |
534379 |
set(oneValueArgs TARGET COMPONENT DESTINATION)
|
|
Packit |
534379 |
set(multiValueArgs SOURCE LIBS)
|
|
Packit |
534379 |
cmake_parse_arguments(OPAE_ADD_EXECUTABLE "${options}"
|
|
Packit |
534379 |
"${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
add_executable(${OPAE_ADD_EXECUTABLE_TARGET} ${OPAE_ADD_EXECUTABLE_SOURCE})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_include_directories(${OPAE_ADD_EXECUTABLE_TARGET} PUBLIC
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${OPAE_LIBS_ROOT}/include>
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
|
|
Packit |
534379 |
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
Packit |
534379 |
PRIVATE ${OPAE_LIBS_ROOT}
|
|
Packit |
534379 |
PUBLIC ${libjson-c_INCLUDE_DIRS}
|
|
Packit |
534379 |
PUBLIC ${libuuid_INCLUDE_DIRS})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set_property(TARGET ${OPAE_ADD_EXECUTABLE_TARGET} PROPERTY C_STANDARD 99)
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_ADD_EXECUTABLE_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
HAVE_CONFIG_H=1)
|
|
Packit |
534379 |
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_ADD_EXECUTABLE_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
LIBOPAE_DEBUG=1)
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_link_libraries(${OPAE_ADD_EXECUTABLE_TARGET} ${OPAE_ADD_EXECUTABLE_LIBS})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_coverage_build(TARGET ${OPAE_ADD_EXECUTABLE_TARGET} SOURCE ${OPAE_ADD_EXECUTABLE_SOURCE})
|
|
Packit |
534379 |
set_install_rpath(${OPAE_ADD_EXECUTABLE_TARGET})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
if(OPAE_ADD_EXECUTABLE_COMPONENT)
|
|
Packit |
534379 |
if(OPAE_ADD_EXECUTABLE_DESTINATION)
|
|
Packit |
534379 |
set(dest ${OPAE_ADD_EXECUTABLE_DESTINATION})
|
|
Packit |
534379 |
else(OPAE_ADD_EXECUTABLE_DESTINATION)
|
|
Packit |
534379 |
set(dest bin)
|
|
Packit |
534379 |
endif(OPAE_ADD_EXECUTABLE_DESTINATION)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
install(TARGETS ${OPAE_ADD_EXECUTABLE_TARGET}
|
|
Packit |
534379 |
RUNTIME DESTINATION ${dest}
|
|
Packit |
534379 |
COMPONENT ${OPAE_ADD_EXECUTABLE_COMPONENT})
|
|
Packit |
534379 |
endif(OPAE_ADD_EXECUTABLE_COMPONENT)
|
|
Packit |
534379 |
endfunction()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# example:
|
|
Packit |
534379 |
# opae_add_shared_library(TARGET opae-c SOURCE a.c b.c LIBS dl)
|
|
Packit |
534379 |
function(opae_add_shared_library)
|
|
Packit |
534379 |
set(options )
|
|
Packit |
534379 |
set(oneValueArgs TARGET VERSION SOVERSION COMPONENT DESTINATION)
|
|
Packit |
534379 |
set(multiValueArgs SOURCE LIBS)
|
|
Packit |
534379 |
cmake_parse_arguments(OPAE_ADD_SHARED_LIBRARY "${options}"
|
|
Packit |
534379 |
"${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
add_library(${OPAE_ADD_SHARED_LIBRARY_TARGET} SHARED ${OPAE_ADD_SHARED_LIBRARY_SOURCE})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_include_directories(${OPAE_ADD_SHARED_LIBRARY_TARGET} PUBLIC
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${OPAE_LIBS_ROOT}/include>
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
|
|
Packit |
534379 |
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
Packit |
534379 |
PRIVATE ${OPAE_LIBS_ROOT}
|
|
Packit |
534379 |
PUBLIC ${libjson-c_INCLUDE_DIRS}
|
|
Packit |
534379 |
PUBLIC ${libuuid_INCLUDE_DIRS})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set_property(TARGET ${OPAE_ADD_SHARED_LIBRARY_TARGET} PROPERTY C_STANDARD 99)
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_ADD_SHARED_LIBRARY_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
HAVE_CONFIG_H=1)
|
|
Packit |
534379 |
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_ADD_SHARED_LIBRARY_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
LIBOPAE_DEBUG=1)
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
if(OPAE_ADD_SHARED_LIBRARY_VERSION AND OPAE_ADD_SHARED_LIBRARY_SOVERSION)
|
|
Packit |
534379 |
set_target_properties(${OPAE_ADD_SHARED_LIBRARY_TARGET} PROPERTIES
|
|
Packit |
534379 |
VERSION ${OPAE_ADD_SHARED_LIBRARY_VERSION}
|
|
Packit |
534379 |
SOVERSION ${OPAE_ADD_SHARED_LIBRARY_SOVERSION})
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_link_libraries(${OPAE_ADD_SHARED_LIBRARY_TARGET} ${OPAE_ADD_SHARED_LIBRARY_LIBS})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_coverage_build(TARGET ${OPAE_ADD_SHARED_LIBRARY_TARGET} SOURCE ${OPAE_ADD_SHARED_LIBRARY_SOURCE})
|
|
Packit |
534379 |
set_install_rpath(${OPAE_ADD_SHARED_LIBRARY_TARGET})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
if(OPAE_ADD_SHARED_LIBRARY_COMPONENT)
|
|
Packit |
534379 |
if(OPAE_ADD_SHARED_LIBRARY_DESTINATION)
|
|
Packit |
534379 |
set(dest ${OPAE_ADD_SHARED_LIBRARY_DESTINATION})
|
|
Packit |
534379 |
else(OPAE_ADD_SHARED_LIBRARY_DESTINATION)
|
|
Packit |
534379 |
set(dest ${OPAE_LIB_INSTALL_DIR})
|
|
Packit |
534379 |
endif(OPAE_ADD_SHARED_LIBRARY_DESTINATION)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
install(TARGETS ${OPAE_ADD_SHARED_LIBRARY_TARGET}
|
|
Packit |
534379 |
LIBRARY DESTINATION ${dest}
|
|
Packit |
534379 |
COMPONENT ${OPAE_ADD_SHARED_LIBRARY_COMPONENT})
|
|
Packit |
534379 |
endif(OPAE_ADD_SHARED_LIBRARY_COMPONENT)
|
|
Packit |
534379 |
endfunction()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# example:
|
|
Packit |
534379 |
# opae_add_module_library(TARGET xfpga SOURCE a.c b.c LIBS opae-c)
|
|
Packit |
534379 |
function(opae_add_module_library)
|
|
Packit |
534379 |
set(options )
|
|
Packit |
534379 |
set(oneValueArgs TARGET COMPONENT DESTINATION)
|
|
Packit |
534379 |
set(multiValueArgs SOURCE LIBS)
|
|
Packit |
534379 |
cmake_parse_arguments(OPAE_ADD_MODULE_LIBRARY "${options}"
|
|
Packit |
534379 |
"${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
add_library(${OPAE_ADD_MODULE_LIBRARY_TARGET} MODULE ${OPAE_ADD_MODULE_LIBRARY_SOURCE})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_include_directories(${OPAE_ADD_MODULE_LIBRARY_TARGET} PUBLIC
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${OPAE_LIBS_ROOT}/include>
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
|
|
Packit |
534379 |
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
Packit |
534379 |
PRIVATE ${OPAE_LIBS_ROOT}
|
|
Packit |
534379 |
PUBLIC ${libjson-c_INCLUDE_DIRS}
|
|
Packit |
534379 |
PUBLIC ${libuuid_INCLUDE_DIRS})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set_property(TARGET ${OPAE_ADD_MODULE_LIBRARY_TARGET} PROPERTY C_STANDARD 99)
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_ADD_MODULE_LIBRARY_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
HAVE_CONFIG_H=1)
|
|
Packit |
534379 |
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_ADD_MODULE_LIBRARY_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
LIBOPAE_DEBUG=1)
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_link_libraries(${OPAE_ADD_MODULE_LIBRARY_TARGET} ${OPAE_ADD_MODULE_LIBRARY_LIBS})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_coverage_build(TARGET ${OPAE_ADD_MODULE_LIBRARY_TARGET} SOURCE ${OPAE_ADD_MODULE_LIBRARY_SOURCE})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
if(OPAE_ADD_MODULE_LIBRARY_COMPONENT)
|
|
Packit |
534379 |
if(OPAE_ADD_MODULE_LIBRARY_DESTINATION)
|
|
Packit |
534379 |
set(dest ${OPAE_ADD_MODULE_LIBRARY_DESTINATION})
|
|
Packit |
534379 |
else(OPAE_ADD_MODULE_LIBRARY_DESTINATION)
|
|
Packit |
534379 |
set(dest ${OPAE_LIB_INSTALL_DIR}/opae)
|
|
Packit |
534379 |
endif(OPAE_ADD_MODULE_LIBRARY_DESTINATION)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
install(TARGETS ${OPAE_ADD_MODULE_LIBRARY_TARGET}
|
|
Packit |
534379 |
LIBRARY DESTINATION ${dest}
|
|
Packit |
534379 |
COMPONENT ${OPAE_ADD_MODULE_LIBRARY_COMPONENT})
|
|
Packit |
534379 |
endif(OPAE_ADD_MODULE_LIBRARY_COMPONENT)
|
|
Packit |
534379 |
endfunction()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# example:
|
|
Packit |
534379 |
# opae_add_static_library(TARGET sometarget SOURCE ${SRC})
|
|
Packit |
534379 |
function(opae_add_static_library)
|
|
Packit |
534379 |
set(options )
|
|
Packit |
534379 |
set(oneValueArgs TARGET COMPONENT DESTINATION)
|
|
Packit |
534379 |
set(multiValueArgs SOURCE LIBS)
|
|
Packit |
534379 |
cmake_parse_arguments(OPAE_ADD_STATIC_LIBRARY "${options}"
|
|
Packit |
534379 |
"${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
add_library(${OPAE_ADD_STATIC_LIBRARY_TARGET} STATIC ${OPAE_ADD_STATIC_LIBRARY_SOURCE})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_include_directories(${OPAE_ADD_STATIC_LIBRARY_TARGET} PUBLIC
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${OPAE_LIBS_ROOT}/include>
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
|
|
Packit |
534379 |
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set_property(TARGET ${OPAE_ADD_STATIC_LIBRARY_TARGET} PROPERTY C_STANDARD 99)
|
|
Packit |
534379 |
set_property(TARGET ${OPAE_ADD_STATIC_LIBRARY_TARGET}
|
|
Packit |
534379 |
PROPERTY
|
|
Packit |
534379 |
POSITION_INDEPENDENT_CODE ON)
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_ADD_STATIC_LIBRARY_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
PIC=1
|
|
Packit |
534379 |
HAVE_CONFIG_H=1)
|
|
Packit |
534379 |
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_ADD_STATIC_LIBRARY_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
LIBOPAE_DEBUG=1)
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_link_libraries(${OPAE_ADD_STATIC_LIBRARY_TARGET}
|
|
Packit |
534379 |
${OPAE_ADD_STATIC_LIBRARY_LIBS})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_coverage_build(TARGET ${OPAE_ADD_STATIC_LIBRARY_TARGET} SOURCE ${OPAE_ADD_STATIC_LIBRARY_SOURCE})
|
|
Packit |
534379 |
|
|
Packit Service |
c388c9 |
if(OPAE_ADD_STATIC_LIBRARY_COMPONENT)
|
|
Packit Service |
c388c9 |
if(OPAE_ADD_STATIC_LIBRARY_DESTINATION)
|
|
Packit Service |
c388c9 |
set(dest ${OPAE_ADD_STATIC_LIBRARY_DESTINATION})
|
|
Packit Service |
c388c9 |
else(OPAE_ADD_STATIC_LIBRARY_DESTINATION)
|
|
Packit Service |
c388c9 |
set(dest ${OPAE_LIB_INSTALL_DIR})
|
|
Packit Service |
c388c9 |
endif(OPAE_ADD_STATIC_LIBRARY_DESTINATION)
|
|
Packit Service |
c388c9 |
|
|
Packit Service |
c388c9 |
install(TARGETS ${OPAE_ADD_STATIC_LIBRARY_TARGET}
|
|
Packit Service |
c388c9 |
ARCHIVE DESTINATION ${dest}
|
|
Packit Service |
c388c9 |
COMPONENT ${OPAE_ADD_STATIC_LIBRARY_COMPONENT})
|
|
Packit Service |
c388c9 |
endif(OPAE_ADD_STATIC_LIBRARY_COMPONENT)
|
|
Packit |
534379 |
endfunction()
|