Skip to content

Commit ae8f9ef

Browse files
authored
Merge pull request #1 from cejkato2/unirec
Merge 'unirec' plugin into branch 'base2'
2 parents 27d2df4 + 19c7d44 commit ae8f9ef

File tree

14 files changed

+2180
-0
lines changed

14 files changed

+2180
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
cmake_minimum_required(VERSION 2.8.8)
2+
project(unirec)
3+
4+
# Description of the project
5+
set(UNIREC_DESCRIPTION
6+
"Output plugin for IPFIXcol2 that sends flow records in UniRec format into NEMEA modules."
7+
)
8+
9+
set(UNIREC_VERSION_MAJOR 1)
10+
set(UNIREC_VERSION_MINOR 0)
11+
set(UNIREC_VERSION_PATCH 0)
12+
set(UNIREC_VERSION
13+
${UNIREC_VERSION_MAJOR}.${UNIREC_VERSION_MINOR}.${UNIREC_VERSION_PATCH})
14+
15+
include(CheckCCompilerFlag)
16+
include(CheckCXXCompilerFlag)
17+
include(GNUInstallDirs)
18+
# Include custom FindXXX modules
19+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules")
20+
21+
# Find IPFIXcol and libnf
22+
find_package(IPFIXcol 2.0.0 REQUIRED)
23+
find_package(LibTrap REQUIRED)
24+
find_package(Unirec REQUIRED)
25+
26+
# Set default build type if not specified by user
27+
if (NOT CMAKE_BUILD_TYPE)
28+
set (CMAKE_BUILD_TYPE Release
29+
CACHE STRING "Choose type of build (Release/Debug/Coverage)." FORCE)
30+
endif()
31+
32+
# Hard coded definitions
33+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -std=gnu11")
34+
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
35+
set(CMAKE_C_FLAGS_DEBUG "-g -O0 -Wall -Wextra -pedantic")
36+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -std=gnu++11")
37+
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
38+
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wextra -pedantic")
39+
40+
# Header files for source code building
41+
include_directories(
42+
"${IPFIXCOL2_INCLUDE_DIRS}" # IPFIXcol2 header files
43+
"${LIBTRAP_INCLUDE_DIRS}" # libtrap header files
44+
"${UNIREC_INCLUDE_DIRS}" # unirec header files
45+
)
46+
47+
# Create a linkable module
48+
add_library(unirec-output MODULE
49+
configuration.c
50+
configuration.h
51+
unirecplugin.h
52+
unirecplugin.c
53+
translator.c
54+
translator.h
55+
fields.c
56+
fields.h
57+
)
58+
59+
target_link_libraries(unirec-output
60+
${LIBTRAP_LIBRARIES} # libtrap
61+
${UNIREC_LIBRARIES} # unirec
62+
)
63+
64+
install(
65+
TARGETS unirec-output
66+
LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/ipfixcol2/"
67+
)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# IPFIXCOL2_FOUND - System has IPFIXcol
2+
# IPFIXCOL2_INCLUDE_DIRS - The IPFIXcol include directories
3+
# IPFIXCOL2_DEFINITIONS - Compiler switches required for using IPFIXcol
4+
5+
# use pkg-config to get the directories and then use these values
6+
# in the find_path() and find_library() calls
7+
find_package(PkgConfig)
8+
pkg_check_modules(PC_IPFIXCOL QUIET ipfixcol2)
9+
set(IPFIXCOL2_DEFINITIONS ${PC_IPFIXCOL_CFLAGS_OTHER})
10+
11+
find_path(
12+
IPFIXCOL2_INCLUDE_DIR ipfixcol2.h
13+
HINTS ${PC_IPFIXCOL_INCLUDEDIR} ${PC_IPFIXCOL_INCLUDE_DIRS}
14+
PATH_SUFFIXES include
15+
)
16+
17+
if (PC_IPFIXCOL_VERSION)
18+
# Version extracted from pkg-config
19+
set(IPFIXCOL_VERSION_STRING ${PC_IPFIXCOL_VERSION})
20+
elseif(IPFIXCOL2_INCLUDE_DIR AND EXISTS "${IPFIXCOL2_INCLUDE_DIR}/ipfixcol2/api.h")
21+
# Try to extract library version from a header file
22+
file(STRINGS "${IPFIXCOL2_INCLUDE_DIR}/ipfixcol2/api.h" ipfixcol_version_str
23+
REGEX "^#define[\t ]+IPX_API_VERSION_STR[\t ]+\".*\"")
24+
25+
string(REGEX REPLACE "^#define[\t ]+IPX_API_VERSION_STR[\t ]+\"([^\"]*)\".*" "\\1"
26+
IPFIXCOL_VERSION_STRING "${ipfixcol_version_str}")
27+
unset(ipfixcol_version_str)
28+
endif()
29+
30+
# handle the QUIETLY and REQUIRED arguments and set IPFIXCOL2_FOUND to TRUE
31+
# if all listed variables are TRUE
32+
include(FindPackageHandleStandardArgs)
33+
find_package_handle_standard_args(IPFIXcol2
34+
REQUIRED_VARS IPFIXCOL2_INCLUDE_DIR
35+
VERSION_VAR IPFIXCOL_VERSION_STRING
36+
)
37+
38+
set(IPFIXCOL2_INCLUDE_DIRS ${IPFIXCOL2_INCLUDE_DIR})
39+
mark_as_advanced(IPFIXCOL2_INCLUDE_DIR)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# LIBTRAP_FOUND - System has libfds
2+
# LIBTRAP_INCLUDE_DIRS - The libfds include directories
3+
# LIBTRAP_LIBRARIES - The libraries needed to use libfds
4+
# LIBTRAP_DEFINITIONS - Compiler switches required for using libfds
5+
6+
# use pkg-config to get the directories and then use these values
7+
# in the find_path() and find_library() calls
8+
find_package(PkgConfig)
9+
pkg_check_modules(PC_LIBTRAP QUIET LibTrap)
10+
set(LIBTRAP_DEFINITIONS ${PC_LIBTRAP_CFLAGS_OTHER})
11+
12+
find_path(
13+
LIBTRAP_INCLUDE_DIR trap.h
14+
HINTS ${PC_LIBTRAP_INCLUDEDIR} ${PC_LIBTRAP_INCLUDE_DIRS}
15+
PATH_SUFFIXES include/libtrap
16+
)
17+
18+
find_library(
19+
LIBTRAP_LIBRARY NAMES trap
20+
HINTS ${PC_LIBTRAP_LIBDIR} ${PC_LIBTRAP_LIBRARY_DIRS}
21+
PATH_SUFFIXES lib lib64
22+
)
23+
24+
# handle the QUIETLY and REQUIRED arguments and set LIBLIBTRAP_FOUND to TRUE
25+
# if all listed variables are TRUE
26+
include(FindPackageHandleStandardArgs)
27+
find_package_handle_standard_args(libtrap
28+
REQUIRED_VARS LIBTRAP_LIBRARY LIBTRAP_INCLUDE_DIR
29+
VERSION_VAR LIBTRAP_VERSION_STRING
30+
)
31+
32+
set(LIBTRAP_LIBRARIES ${LIBTRAP_LIBRARY})
33+
set(LIBTRAP_INCLUDE_DIRS ${LIBTRAP_INCLUDE_DIR})
34+
mark_as_advanced(LIBTRAP_INCLUDE_DIR LIBTRAP_LIBRARIES)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# UNIREC_FOUND - System has libfds
2+
# UNIREC_INCLUDE_DIRS - The libfds include directories
3+
# UNIREC_LIBRARIES - The libraries needed to use libfds
4+
# UNIREC_DEFINITIONS - Compiler switches required for using libfds
5+
6+
# use pkg-config to get the directories and then use these values
7+
# in the find_path() and find_library() calls
8+
find_package(PkgConfig)
9+
pkg_check_modules(PC_UNIREC QUIET LibTrap)
10+
set(UNIREC_DEFINITIONS ${PC_UNIREC_CFLAGS_OTHER})
11+
12+
find_path(
13+
UNIREC_INCLUDE_DIR unirec.h
14+
HINTS ${PC_UNIREC_INCLUDEDIR} ${PC_UNIREC_INCLUDE_DIRS}
15+
PATH_SUFFIXES include/unirec
16+
)
17+
18+
find_library(
19+
UNIREC_LIBRARY NAMES unirec
20+
HINTS ${PC_UNIREC_LIBDIR} ${PC_UNIREC_LIBRARY_DIRS}
21+
PATH_SUFFIXES lib lib64
22+
)
23+
24+
# handle the QUIETLY and REQUIRED arguments and set LIBUNIREC_FOUND to TRUE
25+
# if all listed variables are TRUE
26+
include(FindPackageHandleStandardArgs)
27+
find_package_handle_standard_args(libtrap
28+
REQUIRED_VARS UNIREC_LIBRARY UNIREC_INCLUDE_DIR
29+
VERSION_VAR UNIREC_VERSION_STRING
30+
)
31+
32+
set(UNIREC_LIBRARIES ${UNIREC_LIBRARY})
33+
set(UNIREC_INCLUDE_DIRS ${UNIREC_INCLUDE_DIR})
34+
mark_as_advanced(UNIREC_INCLUDE_DIR UNIREC_LIBRARIES)

0 commit comments

Comments
 (0)