Skip to content

Commit 76ac586

Browse files
committed
TCP input: add missing CMake dependency on Lz4
This seemed to mostly work because libfds depends on Lz4 and so we would mostly find Lz4.h in the default system include path on Linux. On FreeBSD though, Lz4.h is in a path that is not a part of the includes that CMake would use by default, which revealed this issue.
1 parent e9c367e commit 76ac586

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

CMakeModules/FindLibLz4.cmake

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# LIBLZ4_FOUND - System has LZ4
2+
# LIBLZ4_INCLUDE_DIRS - The LZ4 include directories
3+
# LIBLZ4_LIBRARIES - The libraries needed to use LZ4
4+
5+
find_path(
6+
LZ4_INCLUDE_DIR lz4.h
7+
PATH_SUFFIXES include
8+
)
9+
10+
find_library(
11+
LZ4_LIBRARY
12+
NAMES lz4 liblz4
13+
PATH_SUFFIXES lib lib64
14+
)
15+
16+
set(LZ4_HEADER_FILE "${LZ4_INCLUDE_DIR}/lz4.h")
17+
if (LZ4_INCLUDE_DIR AND EXISTS ${LZ4_HEADER_FILE})
18+
# Try to extract library version from the header file
19+
file(STRINGS ${LZ4_HEADER_FILE} lz4_major_define
20+
REGEX "^#define[\t ]+LZ4_VERSION_MAJOR[\t ]+[0-9]+"
21+
LIMIT_COUNT 1
22+
)
23+
file(STRINGS ${LZ4_HEADER_FILE} lz4_minor_define
24+
REGEX "^#define[\t ]+LZ4_VERSION_MINOR[\t ]+[0-9]+"
25+
LIMIT_COUNT 1
26+
)
27+
file(STRINGS ${LZ4_HEADER_FILE} lz4_release_define
28+
REGEX "^#define[\t ]+LZ4_VERSION_RELEASE[\t ]+[0-9]+"
29+
LIMIT_COUNT 1
30+
)
31+
32+
string(REGEX REPLACE "^#define[\t ]+LZ4_VERSION_MAJOR[\t ]+([0-9]+).*" "\\1"
33+
lz4_major_num ${lz4_major_define})
34+
string(REGEX REPLACE "^#define[\t ]+LZ4_VERSION_MINOR[\t ]+([0-9]+).*" "\\1"
35+
lz4_minor_num ${lz4_minor_define})
36+
string(REGEX REPLACE "^#define[\t ]+LZ4_VERSION_RELEASE[\t ]+([0-9]+).*" "\\1"
37+
lz4_release_num ${lz4_release_define})
38+
39+
set(LZ4_VERSION_STRING "${lz4_major_num}.${lz4_minor_num}.${lz4_release_num}")
40+
endif()
41+
unset(LZ4_HEADER_FILE)
42+
43+
# Handle the REQUIRED arguments and set LIBLZ4_FOUND to TRUE if all listed
44+
# variables are TRUE
45+
include(FindPackageHandleStandardArgs)
46+
find_package_handle_standard_args(LibLz4
47+
REQUIRED_VARS LZ4_LIBRARY LZ4_INCLUDE_DIR
48+
VERSION_VAR LZ4_VERSION_STRING
49+
)
50+
51+
set(LIBLZ4_LIBRARIES ${LZ4_LIBRARY})
52+
set(LIBLZ4_INCLUDE_DIRS ${LZ4_INCLUDE_DIR})
53+
mark_as_advanced(LZ4_INCLUDE_DIR LZ4_LIBRARY)

src/plugins/input/tcp/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ add_library(tcp-input MODULE
1515
src/IpxPlugin.cpp
1616
)
1717

18+
find_package(LibLz4 REQUIRED)
19+
include_directories(${LIBLZ4_INCLUDE_DIRS})
20+
target_link_libraries(tcp-input ${LIBLZ4_LIBRARIES})
21+
1822
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_HOST_SYSTEM_NAME STREQUAL "OpenBSD")
1923
find_package(LibEpollShim REQUIRED)
2024
include_directories(

0 commit comments

Comments
 (0)