libddwaf-src 2.1.0

Source distribution and build integration for DataDog/libddwaf
Documentation
# Packaging

install(FILES ${libddwaf_SOURCE_DIR}/include/ddwaf.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(EXPORT libddwaf-config DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/libddwaf)

if(APPLE AND NOT CMAKE_OSX_ARCHITECTURES STREQUAL "")
    set(LIBDDWAF_PACKAGE_PROCESSOR ${CMAKE_OSX_ARCHITECTURES} CACHE STRING "Alternative processor for packaging purposes")
else()
    set(LIBDDWAF_PACKAGE_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR} CACHE STRING "Alternative processor for packaging purposes")
endif()

if (MSVC)
    string(REPLACE "\\" "/" CPACK_PACKAGE_DIRECTORY "${CPACK_PACKAGE_DIRECTORY}")
endif()

set(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
set(CPACK_PACKAGE_VENDOR "datadog")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "DataDog WAF Library")
set(CPACK_RESOURCE_FILE_README "${libddwaf_SOURCE_DIR}/README.md")
set(CPACK_GENERATOR "TGZ")
set(CPACK_SOURCE_GENERATOR "TGZ")

## Package name
if(GIT_COMMIT)
    set(DDWAF_VERSION ${CMAKE_PROJECT_VERSION})
    string(SUBSTRING "${GIT_COMMIT}" 0 7 SHORT_BUILD_ID)
else()
    execute_process(COMMAND git describe --exact-match --tags HEAD
        WORKING_DIRECTORY ${libddwaf_SOURCE_DIR}
        OUTPUT_VARIABLE DDWAF_VERSION
        OUTPUT_STRIP_TRAILING_WHITESPACE
        ERROR_QUIET
    )

    if (NOT DDWAF_VERSION)
        set(DDWAF_VERSION ${CMAKE_PROJECT_VERSION})
        execute_process(COMMAND git rev-parse --short HEAD
            WORKING_DIRECTORY ${libddwaf_SOURCE_DIR}
            OUTPUT_VARIABLE SHORT_BUILD_ID
            OUTPUT_STRIP_TRAILING_WHITESPACE
        )
    endif()
endif()

set(CPACK_PACKAGE_FILE_NAME ${CMAKE_PROJECT_NAME}-${DDWAF_VERSION}-${CMAKE_SYSTEM_NAME}-${LIBDDWAF_PACKAGE_PROCESSOR})
if (SHORT_BUILD_ID)
    set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}-${SHORT_BUILD_ID})
endif()
string(TOLOWER ${CPACK_PACKAGE_FILE_NAME} CPACK_PACKAGE_FILE_NAME)

set(CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION TRUE)

include(CPack)