# Copyright (C) 2019-2022 Cisco Systems, Inc. and/or its affiliates. All rights reserved. if(WIN32) add_definitions(-DWIN32_LEAN_AND_MEAN) # Windows compatibility headers include_directories(${CMAKE_SOURCE_DIR}/win32/compat) endif() # Move public headers to a dedicated INTERFACE library # # An interface is required because libclamav objects will depend on the # interface to put unrar_iface.h in the include path, but we don't want to link # with it. # libclamunrar_iface will be dynamically loaded at run time, if enabled. add_library(clamunrar_iface_iface INTERFACE) target_sources(clamunrar_iface_iface INTERFACE unrar_iface.h ) target_include_directories( clamunrar_iface_iface INTERFACE $ ) add_library( ClamAV::libunrar_iface_iface ALIAS clamunrar_iface_iface ) if(ENABLE_UNRAR) # not using an object library for the sake of Xcode compatibility # See: https://cmake.org/pipermail/cmake/2016-May/063479.html set(UNRAR_IFACE_SOURCES unrar_iface.cpp unrar_iface.h ) if(ENABLE_SHARED_LIB) # The clamunrar_iface SHARED library. add_library( clamunrar_iface SHARED ) set_target_properties(clamunrar_iface PROPERTIES VERSION ${LIBCLAMAV_VERSION} SOVERSION ${LIBCLAMAV_SOVERSION}) target_sources( clamunrar_iface PRIVATE ${UNRAR_IFACE_SOURCES} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/unrar_iface.h ) target_include_directories( clamunrar_iface PRIVATE ${CMAKE_BINARY_DIR} # For clamav-config.h $ $ ) set_target_properties( clamunrar_iface PROPERTIES COMPILE_FLAGS "${WARNCXXFLAGS} ${CXX1XCXXFLAGS}" ) if (APPLE AND CLAMAV_SIGN_FILE) set_target_properties( clamunrar_iface PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY} XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID} ) endif() if(WIN32) set_target_properties(clamunrar_iface PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) endif() # Private (internal-only) dependencies. target_link_libraries( clamunrar_iface PRIVATE ClamAV::libunrar PUBLIC ClamAV::libunrar_iface_iface) if(WIN32) install(TARGETS clamunrar_iface DESTINATION . COMPONENT libraries) install( FILES $ DESTINATION . OPTIONAL COMPONENT libraries ) else() install(TARGETS clamunrar_iface DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) endif() add_library( ClamAV::libunrar_iface ALIAS clamunrar_iface ) endif() if(ENABLE_STATIC_LIB) # The clamunrar_iface static library. add_library( clamunrar_iface_static STATIC) target_sources( clamunrar_iface_static PRIVATE ${UNRAR_IFACE_SOURCES} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/unrar_iface.h ) target_include_directories( clamunrar_iface_static PRIVATE ${CMAKE_BINARY_DIR} # For clamav-config.h $ $ ) # Public (forwarded) dependencies. target_link_libraries( clamunrar_iface_static PRIVATE ClamAV::libunrar_static ) add_library( ClamAV::libunrar_iface_static ALIAS clamunrar_iface_static ) if(NOT ENABLE_SHARED_LIB) add_library( ClamAV::libunrar_iface ALIAS clamunrar_iface_static ) endif() endif() endif()