# Copyright (C) 2020-2021 Cisco Systems, Inc. and/or its affiliates. All rights reserved.

cmake_minimum_required( VERSION 3.12...3.13 )

if(WIN32)
    add_definitions(-DWIN32_LEAN_AND_MEAN)
    add_definitions(-DHAVE_STRUCT_TIMESPEC)

    # Windows compatibility headers
    include_directories(${CMAKE_SOURCE_DIR}/win32/compat)
endif()

# The freshclam executable.
add_executable( freshclam-bin )
target_sources( freshclam-bin
    PRIVATE
        freshclam.c
        execute.c
        execute.h
        notify.c
        notify.h )
if(WIN32)
    target_sources( freshclam-bin PRIVATE ${CMAKE_SOURCE_DIR}/win32/res/freshclam.rc )
endif()
set_target_properties( freshclam-bin PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
target_link_libraries(freshclam-bin
    PRIVATE
        ClamAV::libfreshclam
        ClamAV::libclamav
        ClamAV::shared )
if(WIN32)
    install(TARGETS freshclam-bin DESTINATION ${CMAKE_INSTALL_PREFIX})
else()
    install(TARGETS freshclam-bin DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()

# Install an empty database directory
if(WIN32)
    INSTALL(CODE "FILE(MAKE_DIRECTORY \${ENV}\${CMAKE_INSTALL_PREFIX}/database)")
else()
    INSTALL(CODE "FILE(MAKE_DIRECTORY \${ENV}\${CMAKE_INSTALL_PREFIX}/share/clamav)")
endif()

# now we rename resman-bin executable to resman using target properties
set_target_properties( freshclam-bin
        PROPERTIES OUTPUT_NAME freshclam )

if(SYSTEMD_FOUND)
    configure_file(
        ${CMAKE_CURRENT_SOURCE_DIR}/clamav-freshclam.service.in
        ${CMAKE_CURRENT_BINARY_DIR}/clamav-freshclam.service @ONLY)
    install(
        FILES ${CMAKE_CURRENT_BINARY_DIR}/clamav-freshclam.service
        DESTINATION ${SYSTEMD_UNIT_DIR})
endif()