aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime Soto <jsoto@simverge.com>2018-10-09 03:22:07 -0400
committerRobert Schumacher <roschuma@microsoft.com>2018-10-09 00:22:07 -0700
commitc5f77be5c5815b6b4a530db24b676354e1090ae6 (patch)
treec2d1e9f5188117715b03556d984bf0bb5b5a2b02
parent3240aad3139d7fa1b85644406f37b1651a941c67 (diff)
downloadvcpkg-c5f77be5c5815b6b4a530db24b676354e1090ae6.tar.gz
vcpkg-c5f77be5c5815b6b4a530db24b676354e1090ae6.zip
[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
-rw-r--r--ports/yara/CMakeLists.txt55
-rw-r--r--ports/yara/CONTROL2
2 files changed, 46 insertions, 11 deletions
diff --git a/ports/yara/CMakeLists.txt b/ports/yara/CMakeLists.txt
index 783d322fb..89780ce42 100644
--- a/ports/yara/CMakeLists.txt
+++ b/ports/yara/CMakeLists.txt
@@ -17,12 +17,28 @@ include_directories(
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(
libyara_sources
libyara/ahocorasick.c
libyara/arena.c
libyara/atoms.c
libyara/compiler.c
+ libyara/endian.c
libyara/exec.c
libyara/exefiles.c
libyara/filemap.c
@@ -47,13 +63,14 @@ set(
libyara/object.c
libyara/parser.c
libyara/proc.c
- libyara/proc/windows.c
+ ${PROC_PLATFORM_SOURCE}
libyara/re.c
libyara/re_grammar.c
libyara/re_lexer.c
libyara/rules.c
libyara/scan.c
libyara/sizedstr.c
+ libyara/stopwatch.c
libyara/stream.c
libyara/strutils.c
libyara/threading.c
@@ -70,22 +87,40 @@ set( yarac_sources
yarac.c
)
-add_library(libyara ${libyara_sources})
-target_link_libraries(libyara PRIVATE OpenSSL::SSL OpenSSL::Crypto ${JANSSON_LIBRARY})
-target_compile_definitions(
- libyara
- PRIVATE
- -DHAVE_LIBCRYPTO -DUSE_WINDOWS_PROC
- -DCUCKOO_MODULE- DHASH_MODULE -DDOTNET_MODULE
+find_package(Threads REQUIRED)
+
+set(
+ libyara_dependencies
+ OpenSSL::SSL
+ 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(yarac ${yarac_sources})
-target_link_libraries(yarac PRIVATE libyara OpenSSL::SSL OpenSSL::Crypto ${JANSSON_LIBRARY})
-target_link_libraries(yara PRIVATE libyara OpenSSL::SSL OpenSSL::Crypto ${JANSSON_LIBRARY})
+target_link_libraries(yarac PRIVATE libyara ${libyara_dependencies})
+target_link_libraries(yara PRIVATE libyara ${libyara_dependencies})
install(
TARGETS libyara
diff --git a/ports/yara/CONTROL b/ports/yara/CONTROL
index 8772a00c6..fb29eaad0 100644
--- a/ports/yara/CONTROL
+++ b/ports/yara/CONTROL
@@ -1,4 +1,4 @@
Source: yara
-Version: e3439e4ead4ed5d3b75a0b46eaf15ddda2110bb9
+Version: e3439e4ead4ed5d3b75a0b46eaf15ddda2110bb9-1
Description: The pattern matching swiss knife
Build-Depends: openssl, jansson