cmake_minimum_required( VERSION 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() # 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::libclamunrar_iface_iface ALIAS clamunrar_iface_iface ) if(ENABLE_UNRAR) # 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.cpp ) target_include_directories( clamunrar_iface PRIVATE "${CMAKE_BINARY_DIR}" # For clamav-config.h $ $ ) set_target_properties( clamunrar_iface PROPERTIES COMPILE_FLAGS "${WARNCXXFLAGS} ${CXX1XCXXFLAGS}" ) 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::libclamunrar PUBLIC ClamAV::libclamunrar_iface_iface) if(WIN32) install(TARGETS clamunrar_iface DESTINATION ${CMAKE_INSTALL_PREFIX}) else() install(TARGETS clamunrar_iface DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() add_library( ClamAV::libclamunrar_iface ALIAS clamunrar_iface ) endif()