Blame opae-libs/cmake/modules/OPAECompiler.cmake

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 534379
    if(OPAE_ADD_STATIC_LIBRARY_COMPONENT)
Packit 534379
        if(OPAE_ADD_STATIC_LIBRARY_DESTINATION)
Packit 534379
            set(dest ${OPAE_ADD_STATIC_LIBRARY_DESTINATION})
Packit 534379
        else(OPAE_ADD_STATIC_LIBRARY_DESTINATION)
Packit 534379
            set(dest ${OPAE_LIB_INSTALL_DIR})
Packit 534379
        endif(OPAE_ADD_STATIC_LIBRARY_DESTINATION)
Packit 534379
Packit 534379
        install(TARGETS ${OPAE_ADD_STATIC_LIBRARY_TARGET}
Packit 534379
                ARCHIVE DESTINATION ${dest}
Packit 534379
                COMPONENT ${OPAE_ADD_STATIC_LIBRARY_COMPONENT})
Packit 534379
    endif(OPAE_ADD_STATIC_LIBRARY_COMPONENT)
Packit 534379
endfunction()