summaryrefslogtreecommitdiff
path: root/vendor/CMakeLists.txt
blob: ad13668e3f150e831dcb216ed5f5ee11fc93258a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# CMakeFiles for 3rd vendor library
cmake_minimum_required(VERSION 3.5)
include(ExternalProject)

set(VENDOR_ROOT ${CMAKE_BINARY_DIR}/vendor)
set(VENDOR_BUILD ${CMAKE_BINARY_DIR}/vendor/vbuild)

set(CMAKE_C_FLAGS "-std=c99 -fPIC -Wall") 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall")

# GoogleTest
ExternalProject_Add(GoogleTest PREFIX GoogleTest
                    URL ${CMAKE_CURRENT_SOURCE_DIR}/googletest-release-1.8.0.tar.gz
                    URL_MD5 16877098823401d1bf2ed7891d7dce36
                    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${VENDOR_BUILD} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})

ExternalProject_Get_Property(GoogleTest INSTALL_DIR)
file(MAKE_DIRECTORY ${VENDOR_BUILD}/include)

add_library(gtest_static STATIC IMPORTED GLOBAL)
set_property(TARGET gtest_static PROPERTY IMPORTED_LOCATION ${VENDOR_BUILD}/lib/libgtest.a)
set_property(TARGET gtest_static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${VENDOR_BUILD}/include)
set_property(TARGET gtest_static PROPERTY INTERFACE_LINK_LIBRARIES pthread)

# colm-0.14.7
ExternalProject_Add(colm PREFIX colm 
                    URL ${CMAKE_CURRENT_SOURCE_DIR}/colm-0.14.7.tar.gz
	                CONFIGURE_COMMAND ./autogen.sh && ./configure --prefix=${VENDOR_BUILD}
	                BUILD_COMMAND make	
	                INSTALL_COMMAND make install
	                BUILD_IN_SOURCE 1)

# ragel-7.0.4
ExternalProject_Add(ragel PREFIX ragel
                    URL ${CMAKE_CURRENT_SOURCE_DIR}/ragel-7.0.4.tar.gz
	                CONFIGURE_COMMAND ./autogen.sh && ./configure --prefix=${VENDOR_BUILD} --disable-manual --with-colm=${VENDOR_BUILD}
	                DEPENDS colm
	                BUILD_COMMAND make	
	                INSTALL_COMMAND make install
	                BUILD_IN_SOURCE 1)

if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64")
	set(HYPERSCAN_TGZ "hyperscan-5.4.2.tar.gz")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64")
	set(HYPERSCAN_TGZ "hyperscan-v5.4.2.aarch64.zip")
else()
	message(FATAL_ERROR "Unsupported architecture: ${CMAKE_SYSTEM_PROCESSOR}")
endif()					

message(STATUS "Using Hyperscan package: ${HYPERSCAN_TGZ}")
# HyperScan 5.4.2
ExternalProject_Add(hyperscan PREFIX hyperscan
                    URL ${CMAKE_CURRENT_SOURCE_DIR}/${HYPERSCAN_TGZ}
	                DEPENDS ragel
	                CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${VENDOR_BUILD} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC")

ExternalProject_Get_Property(hyperscan INSTALL_DIR)
file(MAKE_DIRECTORY ${VENDOR_BUILD}/include)

add_library(hyperscan_static STATIC IMPORTED GLOBAL)
add_dependencies(hyperscan_static hyperscan)
set_property(TARGET hyperscan_static PROPERTY IMPORTED_LOCATION ${VENDOR_BUILD}/lib64/libhs.a)
set_property(TARGET hyperscan_static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${VENDOR_BUILD}/include)

add_library(hyperscan_runtime_static STATIC IMPORTED GLOBAL)
add_dependencies(hyperscan_runtime_static hyperscan)
set_property(TARGET hyperscan_runtime_static PROPERTY IMPORTED_LOCATION ${VENDOR_BUILD}/lib64/libhs_runtime.a)
set_property(TARGET hyperscan_runtime_static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${VENDOR_BUILD}/include)

#pcre-8.45
ExternalProject_Add(pcre PREFIX pcre
                    URL ${CMAKE_CURRENT_SOURCE_DIR}/pcre-8.45.tar.gz
	                CONFIGURE_COMMAND ./configure --prefix=${VENDOR_BUILD}
	                BUILD_COMMAND make	
	                INSTALL_COMMAND make install
	                BUILD_IN_SOURCE 1)

ExternalProject_Get_Property(pcre INSTALL_DIR)
file(MAKE_DIRECTORY ${VENDOR_BUILD}/include)

#rulescan 3.0.1
ExternalProject_Add(rulescan PREFIX rulescan
                    URL ${CMAKE_CURRENT_SOURCE_DIR}/rulescan-3.0.1.tar.gz
	                CMAKE_ARGS 
						-DCMAKE_INSTALL_PREFIX=${VENDOR_BUILD} 
						-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} 
						-DCMAKE_C_FLAGS="-fPIC" 
						-DCMAKE_CXX_FLAGS="-fPIC"
						-DCMAKE_CXX_FLAGS="-Wno-error=narrowing")

ExternalProject_Get_Property(rulescan INSTALL_DIR)
file(MAKE_DIRECTORY ${VENDOR_BUILD}/include)

#merge librulescan.a and libpcre.a => librs.a
add_custom_command(OUTPUT ${VENDOR_BUILD}/lib/librs.a
                   COMMAND ar crsT ${VENDOR_BUILD}/lib/librs.a ${VENDOR_BUILD}/lib/libpcre.a ${VENDOR_BUILD}/lib/librulescan.a
                   DEPENDS pcre rulescan)
add_custom_target(_merge ALL DEPENDS ${VENDOR_BUILD}/lib/librs.a)

add_library(rulescan_static STATIC IMPORTED GLOBAL)
set_property(TARGET rulescan_static PROPERTY IMPORTED_LOCATION ${VENDOR_BUILD}/lib/librs.a)

# hiredis-1.1.0
ExternalProject_Add(hiredis PREFIX hiredis
                    URL ${CMAKE_CURRENT_SOURCE_DIR}/hiredis-1.1.0.tar.gz
		            CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${VENDOR_BUILD} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_C_FLAGS="-fPIC")

ExternalProject_Get_Property(hiredis INSTALL_DIR)
file(MAKE_DIRECTORY ${VENDOR_BUILD}/include)

add_library(hiredis-static STATIC IMPORTED GLOBAL)
add_dependencies(hiredis-static hiredis)

set_property(TARGET hiredis-static  PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${VENDOR_BUILD}/include)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set_property(TARGET hiredis-static  PROPERTY IMPORTED_LOCATION ${VENDOR_BUILD}/lib64/libhiredisd.a)
else()
set_property(TARGET hiredis-static  PROPERTY IMPORTED_LOCATION ${VENDOR_BUILD}/lib64/libhiredis.a)
endif()

#igraph-0.7.1
ExternalProject_Add(igraph PREFIX igraph
                    URL ${CMAKE_CURRENT_SOURCE_DIR}/igraph-0.7.1.tar.gz
                    URL_MD5 4f6e7c16b45fce8ed423516a9786e4e8
                    CONFIGURE_COMMAND ./configure --prefix=${VENDOR_BUILD} --disable-shared --with-pic
                    BUILD_COMMAND make
                    INSTALL_COMMAND make install
                    BUILD_IN_SOURCE 1)

ExternalProject_Get_Property(igraph INSTALL_DIR)
file(MAKE_DIRECTORY ${VENDOR_BUILD}/include)

add_library(igraph-static STATIC IMPORTED GLOBAL)
add_dependencies(igraph-static igraph)
set_property(TARGET igraph-static PROPERTY IMPORTED_LOCATION ${VENDOR_BUILD}/lib/libigraph.a)
set_property(TARGET igraph-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${VENDOR_BUILD}/include)