[yara] Remove Windows-only assumptions in CMakeLists.txt (#4431)

* [yara] Remove Windows-only assumptions in CMakeLists.txt

Fixes x64-linux build. Addresses GitHub vcpkg issue #4411.

Defines `libyara_dependencies` and `libyara_definitions` CMake variables
to simplify calls to `target_link_libraries` and
`target_compile_definitions`, respectively.

Replaces `USE_WINDOWS_PROC` definition with platform-specific definition
(e.g., `USE_LINUX_PROC`) based on how `proc_interface` is defined in
configure.ac. Currently supports only Windows, Linux, and Darwin.
Replaces libyara/proc/windows.c source file with platform-specific
source file from libyara/proc.

Adds missing libyara/endian.c and libyara/stopwatch.c source files to
`libyara_sources` variable. Addresses missing byte-swap symbols
(`_yr_bswap16`, `_yr_bswap32`, and `_yr_bswap64`).

Adds `find_package` call for `Threads`, setting pthread as preferred
threads library in Linux. Adds `Threads::Threads` as a libyara dependency.
Addresses missing thread and semaphore symbols.

Adds `m` (math library) as a dependency if building with GCC to address
missing `log2` symbol.

* [yara] Bump control version
This commit is contained in:
Jaime Soto 2018-10-09 03:22:07 -04:00 committed by Robert Schumacher
parent 3240aad313
commit c5f77be5c5
2 changed files with 46 additions and 11 deletions

View File

@ -17,12 +17,28 @@ include_directories(
libyara/include libyara/include
) )
set(PROC_PLATFORM_SOURCE "libyara/proc/none.c")
set(PROC_PLATFORM_INTERFACE "USE_NO_PROC")
if(APPLE AND CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(PROC_PLATFORM_SOURCE "libyara/proc/mach.c")
set(PROC_PLATFORM_INTERFACE "USE_MACH_PROC")
elseif(WIN32 OR MINGW OR CYGWIN)
set(PROC_PLATFORM_SOURCE "libyara/proc/windows.c")
set(PROC_PLATFORM_INTERFACE "USE_WINDOWS_PROC")
elseif(UNIX AND CMAKE_SYSTEM_NAME MATCHES "Linux")
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
set(PROC_PLATFORM_SOURCE "libyara/proc/linux.c")
set(PROC_PLATFORM_INTERFACE "USE_LINUX_PROC")
endif()
set( set(
libyara_sources libyara_sources
libyara/ahocorasick.c libyara/ahocorasick.c
libyara/arena.c libyara/arena.c
libyara/atoms.c libyara/atoms.c
libyara/compiler.c libyara/compiler.c
libyara/endian.c
libyara/exec.c libyara/exec.c
libyara/exefiles.c libyara/exefiles.c
libyara/filemap.c libyara/filemap.c
@ -47,13 +63,14 @@ set(
libyara/object.c libyara/object.c
libyara/parser.c libyara/parser.c
libyara/proc.c libyara/proc.c
libyara/proc/windows.c ${PROC_PLATFORM_SOURCE}
libyara/re.c libyara/re.c
libyara/re_grammar.c libyara/re_grammar.c
libyara/re_lexer.c libyara/re_lexer.c
libyara/rules.c libyara/rules.c
libyara/scan.c libyara/scan.c
libyara/sizedstr.c libyara/sizedstr.c
libyara/stopwatch.c
libyara/stream.c libyara/stream.c
libyara/strutils.c libyara/strutils.c
libyara/threading.c libyara/threading.c
@ -70,22 +87,40 @@ set( yarac_sources
yarac.c yarac.c
) )
add_library(libyara ${libyara_sources})
target_link_libraries(libyara PRIVATE OpenSSL::SSL OpenSSL::Crypto ${JANSSON_LIBRARY}) find_package(Threads REQUIRED)
target_compile_definitions(
libyara set(
PRIVATE libyara_dependencies
-DHAVE_LIBCRYPTO -DUSE_WINDOWS_PROC OpenSSL::SSL
-DCUCKOO_MODULE- DHASH_MODULE -DDOTNET_MODULE OpenSSL::Crypto
Threads::Threads
${JANSSON_LIBRARY}
) )
if("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
list(APPEND libyara_dependencies m)
endif()
set(
libyara_definitions
-DHAVE_LIBCRYPTO
-D${PROC_PLATFORM_INTERFACE}
-DCUCKOO_MODULE
-DHASH_MODULE
-DDOTNET_MODULE
)
add_library(libyara ${libyara_sources})
target_link_libraries(libyara PRIVATE ${libyara_dependencies})
target_compile_definitions(libyara PRIVATE ${libyara_definitions})
add_executable(yara ${yara_sources}) add_executable(yara ${yara_sources})
add_executable(yarac ${yarac_sources}) add_executable(yarac ${yarac_sources})
target_link_libraries(yarac PRIVATE libyara OpenSSL::SSL OpenSSL::Crypto ${JANSSON_LIBRARY}) target_link_libraries(yarac PRIVATE libyara ${libyara_dependencies})
target_link_libraries(yara PRIVATE libyara OpenSSL::SSL OpenSSL::Crypto ${JANSSON_LIBRARY}) target_link_libraries(yara PRIVATE libyara ${libyara_dependencies})
install( install(
TARGETS libyara TARGETS libyara

View File

@ -1,4 +1,4 @@
Source: yara Source: yara
Version: e3439e4ead4ed5d3b75a0b46eaf15ddda2110bb9 Version: e3439e4ead4ed5d3b75a0b46eaf15ddda2110bb9-1
Description: The pattern matching swiss knife Description: The pattern matching swiss knife
Build-Depends: openssl, jansson Build-Depends: openssl, jansson