159 lines
5.1 KiB
CMake
159 lines
5.1 KiB
CMake
|
# Copyright (C) 2020-2022 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
|
||
|
|
||
|
if(WIN32)
|
||
|
add_definitions(-DWIN32_LEAN_AND_MEAN)
|
||
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||
|
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
|
||
|
add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
|
||
|
|
||
|
# Windows compatibility headers
|
||
|
include_directories(${CMAKE_SOURCE_DIR}/win32/compat)
|
||
|
endif()
|
||
|
|
||
|
# not using an object library for the sake of Xcode compatibility
|
||
|
# See: https://cmake.org/pipermail/cmake/2016-May/063479.html
|
||
|
set(LIBFRESHCLAM_SOURCES
|
||
|
libfreshclam.c
|
||
|
libfreshclam_internal.c
|
||
|
libfreshclam_internal.h
|
||
|
dns.c
|
||
|
dns.h
|
||
|
)
|
||
|
|
||
|
if(ENABLE_SHARED_LIB)
|
||
|
# The libfreshclam shared library.
|
||
|
add_library( freshclam SHARED )
|
||
|
target_sources( freshclam
|
||
|
PRIVATE
|
||
|
${LIBFRESHCLAM_SOURCES}
|
||
|
PUBLIC
|
||
|
libfreshclam.h )
|
||
|
if(WIN32)
|
||
|
target_sources( freshclam PRIVATE libfreshclam_main.c)
|
||
|
endif()
|
||
|
target_include_directories( freshclam
|
||
|
PRIVATE
|
||
|
${CMAKE_BINARY_DIR} # For clamav-config.h
|
||
|
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} )
|
||
|
|
||
|
target_link_libraries( freshclam
|
||
|
PUBLIC
|
||
|
ClamAV::common
|
||
|
CURL::libcurl
|
||
|
OpenSSL::SSL
|
||
|
OpenSSL::Crypto )
|
||
|
if(APPLE)
|
||
|
target_link_libraries( freshclam
|
||
|
PUBLIC
|
||
|
resolv
|
||
|
${APPLE_CORE_FOUNDATION}
|
||
|
${APPLE_SECURITY} )
|
||
|
elseif(UNIX)
|
||
|
if(HAVE_RESOLV_H AND NOT C_BSD) # BSD appears to have libresolv inside libc
|
||
|
target_link_libraries( freshclam
|
||
|
PUBLIC
|
||
|
resolv )
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
if(WIN32)
|
||
|
set_target_properties(freshclam PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||
|
endif()
|
||
|
set_target_properties(freshclam PROPERTIES
|
||
|
COMPILE_FLAGS "${WARNCFLAGS}"
|
||
|
VERSION ${LIBFRESHCLAM_VERSION} SOVERSION ${LIBFRESHCLAM_SOVERSION})
|
||
|
if(WIN32)
|
||
|
install(TARGETS freshclam DESTINATION . COMPONENT libraries)
|
||
|
install(FILES $<TARGET_PDB_FILE:freshclam> DESTINATION . OPTIONAL COMPONENT libraries)
|
||
|
# Also install shared library (DLL) dependencies
|
||
|
install(CODE [[
|
||
|
file(GET_RUNTIME_DEPENDENCIES
|
||
|
LIBRARIES
|
||
|
$<TARGET_FILE:ClamAV::libfreshclam>
|
||
|
RESOLVED_DEPENDENCIES_VAR _r_deps
|
||
|
UNRESOLVED_DEPENDENCIES_VAR _u_deps
|
||
|
DIRECTORIES
|
||
|
$<TARGET_FILE_DIR:CURL::libcurl>
|
||
|
$<TARGET_FILE_DIR:OpenSSL::SSL>
|
||
|
$<TARGET_FILE_DIR:OpenSSL::Crypto>
|
||
|
)
|
||
|
foreach(_file ${_r_deps})
|
||
|
string(TOLOWER ${_file} _file_lower)
|
||
|
if(NOT ${_file_lower} MATCHES "c:[\\/]windows[\\/]system32.*")
|
||
|
file(INSTALL
|
||
|
DESTINATION "${CMAKE_INSTALL_PREFIX}"
|
||
|
TYPE SHARED_LIBRARY
|
||
|
FOLLOW_SYMLINK_CHAIN
|
||
|
FILES "${_file}"
|
||
|
)
|
||
|
endif()
|
||
|
endforeach()
|
||
|
#message("UNRESOLVED_DEPENDENCIES_VAR: ${_u_deps}")
|
||
|
]]
|
||
|
COMPONENT libraries)
|
||
|
else()
|
||
|
install(TARGETS freshclam DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries)
|
||
|
endif()
|
||
|
|
||
|
add_library( ClamAV::libfreshclam ALIAS freshclam )
|
||
|
endif()
|
||
|
|
||
|
if(ENABLE_STATIC_LIB)
|
||
|
# The freshclam static library.
|
||
|
add_library(freshclam_static STATIC)
|
||
|
target_sources(freshclam_static
|
||
|
PRIVATE
|
||
|
${LIBFRESHCLAM_SOURCES}
|
||
|
PUBLIC
|
||
|
libfreshclam.h )
|
||
|
if(WIN32)
|
||
|
target_sources( freshclam_static PRIVATE libfreshclam_main.c)
|
||
|
endif()
|
||
|
target_include_directories( freshclam_static
|
||
|
PRIVATE
|
||
|
${CMAKE_BINARY_DIR} # For clamav-config.h
|
||
|
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} )
|
||
|
|
||
|
target_link_libraries( freshclam_static
|
||
|
PUBLIC
|
||
|
ClamAV::common
|
||
|
CURL::libcurl
|
||
|
OpenSSL::SSL
|
||
|
OpenSSL::Crypto )
|
||
|
if(APPLE)
|
||
|
target_link_libraries( freshclam_static
|
||
|
PUBLIC
|
||
|
resolv
|
||
|
${APPLE_CORE_FOUNDATION}
|
||
|
${APPLE_SECURITY} )
|
||
|
elseif(UNIX)
|
||
|
if(HAVE_RESOLV_H AND NOT C_BSD) # BSD appears to have libresolv inside libc
|
||
|
target_link_libraries( freshclam_static
|
||
|
PUBLIC
|
||
|
resolv )
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
set_target_properties(freshclam_static PROPERTIES
|
||
|
ARCHIVE_OUTPUT_NAME freshclam_static
|
||
|
COMPILE_FLAGS "${WARNCFLAGS}"
|
||
|
VERSION ${LIBFRESHCLAM_VERSION} SOVERSION ${LIBFRESHCLAM_SOVERSION})
|
||
|
target_compile_definitions(freshclam_static PUBLIC freshclam_staticLIB)
|
||
|
if(WIN32)
|
||
|
install(TARGETS freshclam_static DESTINATION . COMPONENT libraries)
|
||
|
else()
|
||
|
install(TARGETS freshclam_static DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries)
|
||
|
endif()
|
||
|
|
||
|
add_library( ClamAV::libfreshclam_static ALIAS freshclam_static )
|
||
|
if(NOT ENABLE_SHARED_LIB)
|
||
|
add_library( ClamAV::libfreshclam ALIAS freshclam_static )
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
install(
|
||
|
FILES
|
||
|
libfreshclam.h
|
||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||
|
COMPONENT libraries)
|