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)
|