View difference between Paste ID: U6d6uwFy and ynqX66up
SHOW: | | - or go back to the newest paste.
1
# Licensed to the Apache Software Foundation (ASF) under one or more
2
# contributor license agreements.  See the NOTICE file distributed with
3
# this work for additional information regarding copyright ownership.
4
# The ASF licenses this file to You under the Apache License, Version 2.0
5
# (the "License"); you may not use this file except in compliance with
6
# the License.  You may obtain a copy of the License at
7
#
8
#     http://www.apache.org/licenses/LICENSE-2.0
9
#
10
# Unless required by applicable law or agreed to in writing, software
11
# distributed under the License is distributed on an "AS IS" BASIS,
12
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
# See the License for the specific language governing permissions and
14
# limitations under the License.
15
#
16
CMAKE_MINIMUM_REQUIRED(VERSION 3.15)
17
18
PROJECT(mod_security2 C)
19
20
IF(NOT EXISTS ${CMAKE_INSTALL_PREFIX}/lib/libhttpd.lib)
21
  MESSAGE(FATAL_ERROR "libhttpd.lib was not found in prefix ${CMAKE_INSTALL_PREFIX}")
22
ENDIF()
23
24
# Select APR trunk (libapr-2.lib) if it exists in PREFIX/lib; otherwise, select
25
# APR 1.x + APR-util 1.x
26
#
27
IF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/libapr-2.lib")
28
  SET(apr_libraries
29
    ${CMAKE_INSTALL_PREFIX}/lib/libapr-2.lib)
30
ELSEIF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/libapr-1.lib")
31
  SET(apr_libraries
32
    ${CMAKE_INSTALL_PREFIX}/lib/libapr-1.lib
33
    ${CMAKE_INSTALL_PREFIX}/lib/libaprutil-1.lib)
34
ELSE()
35
  MESSAGE(FATAL_ERROR "APR libraries were not found in prefix ${CMAKE_INSTALL_PREFIX}")
36
ENDIF()
37
38
IF(EXISTS ${CMAKE_INSTALL_PREFIX}/lib/pcre2-8.lib)
39
  SET(pcre_libraries
40
    ${CMAKE_INSTALL_PREFIX}/lib/pcre2-8.lib)
41
ELSE()
42
  MESSAGE(FATAL_ERROR "pcre2-8.lib was not found in prefix ${CMAKE_INSTALL_PREFIX}")
43
ENDIF()
44
45
IF(EXISTS ${CMAKE_INSTALL_PREFIX}/lib/libxml2.lib)
46
  SET(xml2_libraries
47
    ${CMAKE_INSTALL_PREFIX}/lib/libxml2.lib)
48
ELSE()
49
  MESSAGE(FATAL_ERROR "libxml2.lib was not found in prefix ${CMAKE_INSTALL_PREFIX}")
50
ENDIF()
51
52
IF(EXISTS ${CMAKE_INSTALL_PREFIX}/lib/lua55.lib)
53
  SET(lua_libraries
54
    ${CMAKE_INSTALL_PREFIX}/lib/lua55.lib)
55
ELSEIF(EXISTS "${CMAKE_INSTALL_PREFIX}/lib/lua54.lib")
56
  SET(lua_libraries
57
    ${CMAKE_INSTALL_PREFIX}/lib/lua54.lib)
58
ELSE()
59
MESSAGE(FATAL_ERROR "LUA libraries were not found in prefix ${CMAKE_INSTALL_PREFIX}")
60
ENDIF()
61
62
IF(EXISTS ${CMAKE_INSTALL_PREFIX}/lib/libcurl_imp.lib)
63
  SET(curl_libraries
64
    ${CMAKE_INSTALL_PREFIX}/lib/libcurl_imp.lib)
65
ELSE()
66
  MESSAGE(FATAL_ERROR "libcurl_imp.lib was not found in prefix ${CMAKE_INSTALL_PREFIX}")
67
ENDIF()
68
69
IF(EXISTS ${CMAKE_INSTALL_PREFIX}/lib/yajl.lib)
70
  SET(yajl_libraries
71
    ${CMAKE_INSTALL_PREFIX}/lib/yajl.lib)
72
ELSE()
73
  MESSAGE(FATAL_ERROR "yajl.lib was not found in prefix ${CMAKE_INSTALL_PREFIX}")
74
ENDIF()
75
76
# Extra libraries.
77
#
78
SET(extra_libraries ws2_32.lib iphlpapi.lib)
79
80
# Miscellaneous options.
81
#
82
OPTION(INSTALL_PDB "Install .pdb file (if generated)" OFF)
83
84
SET(mod_security2_sources
85
    apache2/mod_security2.c
86
    apache2/apache2_config.c
87
    apache2/apache2_io.c
88
    apache2/apache2_util.c
89
    apache2/re.c
90
    apache2/re_operators.c
91
    apache2/re_actions.c
92
    apache2/re_tfns.c
93
    apache2/re_variables.c
94
    apache2/msc_logging.c
95
    apache2/msc_xml.c
96
    apache2/msc_multipart.c
97
    apache2/modsecurity.c
98
    apache2/msc_parsers.c
99
    apache2/msc_util.c
100
    apache2/msc_pcre.c
101
    apache2/persist_dbm.c
102
    apache2/msc_reqbody.c
103
    apache2/msc_geo.c
104
    apache2/msc_gsb.c
105
    apache2/msc_crypt.c
106
    apache2/msc_tree.c
107
    apache2/msc_unicode.c
108
    apache2/acmp.c
109
    apache2/msc_lua.c
110
    apache2/msc_release.c
111
    apache2/msc_status_engine.c
112
    apache2/msc_remote_rules.c
113
    apache2/msc_json.c
114-
    apache2/libinjection/libinjection_html5.c
114+
    apache2/others/libinjection/src/libinjection_html5.c
115-
    apache2/libinjection/libinjection_sqli.c
115+
    apache2/others/libinjection/src/libinjection_sqli.c
116-
    apache2/libinjection/libinjection_xss.c
116+
    apache2/others/libinjection/src/libinjection_xss.c
117
)
118
119
SET(mlogc_sources
120
    mlogc/mlogc.c
121
)
122
123
INCLUDE_DIRECTORIES(${CMAKE_INSTALL_PREFIX}/include
124
  ${CMAKE_INSTALL_PREFIX}/include/libxml2
125
  ${CMAKE_SOURCE_DIR}/apache2
126
)
127
128
ADD_LIBRARY(mod_security2 SHARED ${mod_security2_sources})
129
130
ADD_EXECUTABLE(mlogc ${mlogc_sources})
131
132
# Configure mlogc file substituting PERL macro in target file as we go.
133
#
134
set(PERL "perl")
135
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/mlogc/mlogc-batch-load.pl.in
136
  mlogc-batch-load.pl @ONLY
137
)
138
139
# Define extra macros to pass to C compiler.
140
#
141
ADD_DEFINITIONS(-DWITH_PCRE_JIT -DWITH_PCRE_STUDY -DWITH_PCRE2
142
  -DWITH_LUA -DWITH_CURL -DWITH_REMOTE_RULES -DWITH_YAJL)
143
144
SET_TARGET_PROPERTIES(mod_security2 PROPERTIES SUFFIX .so)
145
TARGET_LINK_LIBRARIES(mod_security2 ${CMAKE_INSTALL_PREFIX}/lib/libhttpd.lib
146
  ${apr_libraries} ${pcre_libraries} ${xml2_libraries} ${lua_libraries}
147
  ${curl_libraries} ${yajl_libraries} ${extra_libraries})
148
149
TARGET_LINK_LIBRARIES(mlogc ${apr_libraries} ${pcre_libraries} ${curl_libraries}
150
  ${extra_libraries})
151
152
INSTALL(TARGETS mod_security2 RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/modules)
153
154
INSTALL(TARGETS mlogc RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
155
156
INSTALL(FILES ${CMAKE_BINARY_DIR}/mod_security2.exp ${CMAKE_BINARY_DIR}/mod_security2.lib 
157
  DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
158
159
# Install extra configuration support files, if present.
160
#
161
INSTALL(FILES modsecurity.conf-recommended unicode.mapping
162
  OPTIONAL DESTINATION ${CMAKE_INSTALL_PREFIX}/conf/extra)
163
164
INSTALL(FILES ${CMAKE_SOURCE_DIR}/mlogc/mlogc-default.conf
165
  OPTIONAL DESTINATION ${CMAKE_INSTALL_PREFIX}/conf)
166
167
INSTALL(FILES ${CMAKE_BINARY_DIR}/mlogc-batch-load.pl
168
  OPTIONAL DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
169
170
IF(INSTALL_PDB)
171
  INSTALL(FILES ${CMAKE_BINARY_DIR}/mod_security2.pdb DESTINATION modules
172
    CONFIGURATIONS RelWithDebInfo Debug)
173
174
  INSTALL(FILES ${CMAKE_BINARY_DIR}/mlogc.pdb DESTINATION bin
175
    CONFIGURATIONS RelWithDebInfo Debug)
176
ENDIF()
177