clamav: fix compilation without libiconv-stub
Ported similar patch from hidapi. Signed-off-by: Rosen Penev <rosenp@gmail.com>
This commit is contained in:
parent
f9813b3401
commit
598bf7936a
2 changed files with 63 additions and 2 deletions
|
@ -70,8 +70,6 @@ CMAKE_OPTIONS += \
|
||||||
-DENABLE_EXAMPLES=OFF \
|
-DENABLE_EXAMPLES=OFF \
|
||||||
-DENABLE_UNRAR=OFF \
|
-DENABLE_UNRAR=OFF \
|
||||||
-DENABLE_SYSTEMD=OFF \
|
-DENABLE_SYSTEMD=OFF \
|
||||||
-DIconv_INCLUDE_DIR=$(ICONV_PREFIX)/include \
|
|
||||||
-DIconv_LIBRARY=$(ICONV_PREFIX)/lib/libiconv.$(if $(ICONV_FULL),so,a) \
|
|
||||||
-DHAVE_SYSTEM_LFS_FTS=O$(if $(CONFIG_USE_GLIBC),N,FF)
|
-DHAVE_SYSTEM_LFS_FTS=O$(if $(CONFIG_USE_GLIBC),N,FF)
|
||||||
|
|
||||||
TARGET_CXXFLAGS += -ffunction-sections -fdata-sections -fno-rtti -flto
|
TARGET_CXXFLAGS += -ffunction-sections -fdata-sections -fno-rtti -flto
|
||||||
|
|
63
net/clamav/patches/020-iconv.patch
Normal file
63
net/clamav/patches/020-iconv.patch
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -448,7 +448,7 @@ endif()
|
||||||
|
|
||||||
|
# libclamav feature dependencies
|
||||||
|
if(NOT WIN32)
|
||||||
|
- find_package(Iconv REQUIRED)
|
||||||
|
+ find_package(Iconv)
|
||||||
|
# Set variable required by libclamav to use iconv
|
||||||
|
set(HAVE_ICONV 1)
|
||||||
|
endif()
|
||||||
|
--- a/libclamav/CMakeLists.txt
|
||||||
|
+++ b/libclamav/CMakeLists.txt
|
||||||
|
@@ -536,10 +536,39 @@ if(ENABLE_SHARED_LIB)
|
||||||
|
ClamAV::win32_compat
|
||||||
|
wsock32 ws2_32 )
|
||||||
|
else()
|
||||||
|
+ if(Iconv_FOUND)
|
||||||
|
+ if(NOT Iconv_IS_BUILT_IN)
|
||||||
|
+ target_link_libraries(clamav PRIVATE Iconv::Iconv)
|
||||||
|
+ set(CMAKE_REQUIRED_LIBRARIES "Iconv::Iconv")
|
||||||
|
+ endif()
|
||||||
|
+ else()
|
||||||
|
+ # Sometime the build environment is not setup
|
||||||
|
+ # in a way CMake can find Iconv on its own by default.
|
||||||
|
+ # But if we simply link against iconv (-liconv), the build may succeed
|
||||||
|
+ # due to other compiler/link flags.
|
||||||
|
+ set(CMAKE_REQUIRED_LIBRARIES "iconv")
|
||||||
|
+ check_c_source_compiles("
|
||||||
|
+ #include <stddef.h>
|
||||||
|
+ #include <iconv.h>
|
||||||
|
+ int main() {
|
||||||
|
+ char *a, *b;
|
||||||
|
+ size_t i, j;
|
||||||
|
+ iconv_t ic;
|
||||||
|
+ ic = iconv_open(\"to\", \"from\");
|
||||||
|
+ iconv(ic, &a, &i, &b, &j);
|
||||||
|
+ iconv_close(ic);
|
||||||
|
+ }
|
||||||
|
+ "
|
||||||
|
+ Iconv_EXPLICITLY_AT_ENV)
|
||||||
|
+ if(Iconv_EXPLICITLY_AT_ENV)
|
||||||
|
+ target_link_libraries(clamav PRIVATE iconv)
|
||||||
|
+ else()
|
||||||
|
+ message(FATAL_ERROR "Iconv is not found, make sure to provide it in the build environment")
|
||||||
|
+ endif()
|
||||||
|
+ endif()
|
||||||
|
target_link_libraries( clamav
|
||||||
|
PUBLIC
|
||||||
|
Threads::Threads
|
||||||
|
- Iconv::Iconv
|
||||||
|
${CMAKE_DL_LIBS}
|
||||||
|
m )
|
||||||
|
endif()
|
||||||
|
@@ -556,8 +585,6 @@ if(ENABLE_SHARED_LIB)
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
set_target_properties( clamav PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )
|
||||||
|
- else()
|
||||||
|
- target_link_libraries( clamav PUBLIC Iconv::Iconv )
|
||||||
|
endif()
|
||||||
|
if(WIN32)
|
||||||
|
install( TARGETS clamav DESTINATION . COMPONENT libraries )
|
Loading…
Reference in a new issue