]> git.ipfire.org Git - thirdparty/sarg.git/blame - CMakeLists.txt
Report any error while reading the day summary file
[thirdparty/sarg.git] / CMakeLists.txt
CommitLineData
b3695c67
FM
1CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
2PROJECT(sarg C)
3SET(sarg_VERSION 2)
d5db6e96 4SET(sarg_REVISION "3.3-pre1")
e3af0ae9 5SET(sarg_BUILD "")
8ae67eff 6SET(sarg_BUILDDATE "Jan-06-2012")
b3695c67
FM
7
8INCLUDE(AddFileDependencies)
9INCLUDE(CheckIncludeFile)
10INCLUDE(CheckLibraryExists)
11INCLUDE(CheckFunctionExists)
12INCLUDE(CheckTypeSize)
13INCLUDE(CheckSymbolExists)
9c7c6346 14INCLUDE(CheckCCompilerFlag)
a50c6319 15INCLUDE(CheckStructHasMember)
b3695c67
FM
16
17DEFINE_PROPERTY(GLOBAL PROPERTY enable-htmldir BRIEF_DOCS "--enable-htmldir=htmldir"
18 FULL_DOCS "Select htmldir as the root of your WWW documents")
19
20SET(PACKAGE_NAME "sarg")
594c9da4 21SET(PACKAGE_VERSION "${sarg_VERSION}.${sarg_REVISION}${sarg_BUILD}")
b3695c67
FM
22
23MACRO(SET_ABS_SOURCE VAR DOC)
24 IF(${VAR} AND NOT ${VAR}_SOURCE)
25 SET(PATH "${${VAR}}")
26 IF(NOT IS_ABSOLUTE ${PATH})
969129f9 27 SET(PATH "${CMAKE_INSTALL_PREFIX}/${PATH}")
b3695c67 28 ENDIF(NOT IS_ABSOLUTE ${PATH})
969129f9 29 GET_FILENAME_COMPONENT(SOURCE_PATH "${PATH}" ABSOLUTE)
b3695c67
FM
30 SET(${VAR}_SOURCE "${SOURCE_PATH}" CACHE PATH "${DOC}")
31 ENDIF(${VAR} AND NOT ${VAR}_SOURCE)
32ENDMACRO(SET_ABS_SOURCE VAR DOC)
33
34SET_ABS_SOURCE(SYSCONFDIR "The full path of the configuration directory to be compiled in the program")
35SET_ABS_SOURCE(LANGDIR "The full path of the language directory to be compiled in the program")
36SET_ABS_SOURCE(FONTDIR "The full path of the fonts directory to be compiled in the program")
37SET_ABS_SOURCE(IMAGEDIR "The full path of the images directory to be compiled in the program")
38
39SET(SYSCONFDIR "etc/sarg" CACHE PATH "The configuration directory relative to the install directory")
40SET(BINDIR "bin" CACHE PATH "The directory to install the exec relative to the install directory")
5f700f9c 41SET(MANDIR "share/man/man1" CACHE PATH "The directory to copy the man page relative to the install directory")
b3695c67
FM
42SET(LANGDIR "share/sarg/languages" CACHE PATH "The directory to copy the languages files relative to the install directory")
43SET(FONTDIR "share/sarg/fonts" CACHE PATH "The directory to copy the fonts relative to the install directory")
44SET(IMAGEDIR "share/sarg/images" CACHE PATH "The directory to copy the images files relative to the install directory")
7bbc1de4 45SET(SARGPHPDIR "share/sarg/sarg-php" CACHE PATH "The directory to copy sarg-php relative to the install directory")
b3695c67
FM
46
47# Sources to compile
48INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}") #Make it find this config.h before the one in src/include
49INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include")
50SET(SRC util.c log.c report.c topuser.c email.c sort.c html.c
9dc20988 51 index.c getconf.c usage.c decomp.c ip2name.c
b3695c67
FM
52 useragent.c exclude.c convlog.c totday.c repday.c datafile.c
53 indexonly.c splitlog.c lastlog.c topsites.c siteuser.c css.c
c36c7384 54 smartfilter.c denied.c authfail.c charset.c
330b1c52 55 redirector.c auth.c download.c grepday.c
8988b90d 56 dansguardian_log.c dansguardian_report.c realtime.c btree_cache.c
22715352 57 usertab.c userinfo.c longline.c url.c)
b3695c67
FM
58
59FOREACH(f ${SRC})
60 ADD_FILE_DEPENDENCIES(${f} ${CMAKE_BINARY_DIR}/config.h ${CMAKE_SOURCE_DIR}/include/conf.h ${CMAKE_SOURCE_DIR}/include/info.h ${CMAKE_SOURCE_DIR}/include/defs.h)
61ENDFOREACH(f)
62
63ADD_EXECUTABLE(sarg ${SRC})
64
b3695c67
FM
65SET_TARGET_PROPERTIES(sarg PROPERTIES VERSION "${sarg_VERSION}.${sarg_REVISION}.${sarg_BUILD}")
66
d25d4e6a 67SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "$ENV{CFLAGS} -Wall -Wno-sign-compare")
0a4e18e1
FM
68SET_TARGET_PROPERTIES(sarg PROPERTIES LINK_FLAGS "$ENV{LDFLAGS}")
69
d25d4e6a
FM
70CHECK_C_COMPILER_FLAG("-Wextra" HAVE_WEXTRA)
71IF(HAVE_WEXTRA)
72 # Not supported by gcc 3.3
73 GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
74 SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -Wextra -Wno-unused-parameter")
75ENDIF(HAVE_WEXTRA)
76
9c7c6346
FM
77CHECK_C_COMPILER_FLAG("-Werror=implicit-function-declaration" HAVE_WERROR_IMPLICIT_FUNCTION)
78IF(HAVE_WERROR_IMPLICIT_FUNCTION)
79 GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
80 SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -Werror=implicit-function-declaration")
81ENDIF(HAVE_WERROR_IMPLICIT_FUNCTION)
82
83CHECK_C_COMPILER_FLAG("-Werror=format" HAVE_WERROR_FORMAT)
84IF(HAVE_WERROR_FORMAT)
85 GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
86 SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -Werror=format")
87ENDIF(HAVE_WERROR_FORMAT)
88
b3695c67
FM
89# Required header files
90CHECK_INCLUDE_FILE(stdio.h HAVE_STDIO_H)
91CHECK_INCLUDE_FILE(stdlib.h HAVE_STDLIB_H)
92CHECK_INCLUDE_FILE(string.h HAVE_STRING_H)
93CHECK_INCLUDE_FILE(strings.h HAVE_STRINGS_H)
94CHECK_INCLUDE_FILE(sys/time.h HAVE_SYS_TIME_H)
95CHECK_INCLUDE_FILE(time.h HAVE_TIME_H)
96CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
97CHECK_INCLUDE_FILE(sys/dirent.h HAVE_SYS_DIRENT_H)
98CHECK_INCLUDE_FILE(dirent.h HAVE_DIRENT_H)
a50c6319 99CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H)
b3695c67
FM
100CHECK_INCLUDE_FILE(sys/socket.h HAVE_SYS_SOCKET_H)
101CHECK_INCLUDE_FILE(netdb.h HAVE_NETDB_H)
102CHECK_INCLUDE_FILE(arpa/inet.h HAVE_ARPA_INET_H)
b3695c67
FM
103CHECK_INCLUDE_FILE(netinet/in.h HAVE_NETINET_H)
104CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H)
105CHECK_INCLUDE_FILE(ctype.h HAVE_CTYPE_H)
106CHECK_INCLUDE_FILE(errno.h HAVE_ERRNO_H)
107CHECK_INCLUDE_FILE(sys/resource.h HAVE_SYS_RESOURCE_H)
108CHECK_INCLUDE_FILE(sys/wait.h HAVE_SYS_WAIT_H)
109CHECK_INCLUDE_FILE(stdarg.h HAVE_STDARG_H)
110CHECK_INCLUDE_FILE(inttypes.h HAVE_INTTYPES_H)
111CHECK_INCLUDE_FILE(limits.h HAVE_LIMITS_H)
8988b90d 112CHECK_INCLUDE_FILE(math.h HAVE_MATH_H)
a1de61fe 113CHECK_INCLUDE_FILE(locale.h HAVE_LOCALE_H)
e6414a9d 114CHECK_INCLUDE_FILE(execinfo.h HAVE_EXECINFO_H)
eca2cec9 115CHECK_INCLUDE_FILE(libintl.h HAVE_LIBINTL_H)
d5d021c5 116CHECK_INCLUDE_FILE(libgen.h HAVE_LIBGEN_H)
06b39c87 117CHECK_INCLUDE_FILE(stdbool.h HAVE_STDBOOL_H)
9b179eb0 118CHECK_INCLUDE_FILE(getopt.h HAVE_GETOPT_H)
72a23a7a 119CHECK_INCLUDE_FILE(fcntl.h HAVE_FCNTL_H)
9b179eb0
FM
120
121IF(!HAVE_GETOPT_H)
122 MESSAGE(SEND_ERROR "getopt.h is required to compile sarg")
123ENDIF(!HAVE_GETOPT_H)
b3695c67 124
e9b33b57
FM
125# Windows need lib wsock32 and ws2_32
126IF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
127 CHECK_INCLUDE_FILE(windows.h HAVE_WINDOWS_H)
128 CHECK_INCLUDE_FILE(winsock.h HAVE_WINSOCK_H)
129 CHECK_INCLUDE_FILE(ws2tcpip.h HAVE_WS2TCPIP_H)
130
131 FIND_LIBRARY(WSOCK_LIB NAMES wsock32 DOC "The winsock library")
132 IF(WSOCK_LIB)
133 TARGET_LINK_LIBRARIES(sarg wsock32)
134 LIST(APPEND CMAKE_REQUIRED_LIBRARIES wsock32)
135 ENDIF(WSOCK_LIB)
136
137 FIND_LIBRARY(WSOCK2_LIB NAMES ws2_32 DOC "The winsock 2 library")
138 IF(WSOCK2_LIB)
139 TARGET_LINK_LIBRARIES(sarg ws2_32)
140 LIST(APPEND CMAKE_REQUIRED_LIBRARIES ws2_32)
141 ENDIF(WSOCK2_LIB)
142
143 ADD_DEFINITIONS(-DWINDOWS)
144ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
145
b3695c67 146CHECK_FUNCTION_EXISTS(bzero HAVE_BZERO)
e6414a9d 147CHECK_FUNCTION_EXISTS(backtrace HAVE_BACKTRACE)
b5f13803 148CHECK_FUNCTION_EXISTS(symlink HAVE_SYMLINK)
463f8e09 149CHECK_FUNCTION_EXISTS(lstat HAVE_LSTAT)
72c27633 150CHECK_FUNCTION_EXISTS(getnameinfo HAVE_GETNAMEINFO)
4afbb7a5 151CHECK_FUNCTION_EXISTS(getaddrinfo HAVE_GETADDRINFO)
e9b33b57 152CHECK_FUNCTION_EXISTS(inet_aton HAVE_INET_ATON)
b3695c67 153
a50c6319
FM
154CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" ss_len sys/socket.h HAVE_SOCKADDR_SA_LEN)
155
b3695c67
FM
156# Find gd
157CHECK_INCLUDE_FILE(gd.h HAVE_GD_H)
158IF(HAVE_GD_H)
159 CHECK_INCLUDE_FILE(gdfontl.h HAVE_GDFONTL_H)
160 CHECK_INCLUDE_FILE(gdfontt.h HAVE_GDFONTT_H)
161 CHECK_INCLUDE_FILE(gdfonts.h HAVE_GDFONTS_H)
162 CHECK_INCLUDE_FILE(gdfontmb.h HAVE_GDFONTMB_H)
163 CHECK_INCLUDE_FILE(gdfontg.h HAVE_GDFONTG_H)
a1de61fe 164 FIND_LIBRARY(GD_LIBRARY NAMES gd bgd DOC "The GD library")
b3695c67 165 IF(GD_LIBRARY)
2824ec9b 166 #CHECK_LIBRARY_EXISTS(gd gdImagePng "." HAVE_GD_LIB)
a1de61fe 167 TARGET_LINK_LIBRARIES(sarg ${GD_LIBRARY})
2824ec9b
FM
168 SET(HAVE_GD_LIB GD_LIBRARY CACHE PATH DOC "True IF GD was found")
169 SET(HAVE_GD_LIB CACHE BOOL DOC "True IF must use GD")
b3695c67
FM
170 ENDIF(GD_LIBRARY)
171ENDIF(HAVE_GD_H)
172
173# Find iconv
174OPTION(ENABLE_ICONV "Enable the usage of iconv" ON)
175IF(ENABLE_ICONV)
176 CHECK_INCLUDE_FILE(iconv.h HAVE_ICONV_H)
177 IF(HAVE_ICONV_H)
463f8e09
FM
178 FIND_PATH(ICONV_INCLUDE_PATH NAMES iconv.h)
179 FIND_LIBRARY(ICONV_LIBRARY NAMES iconv DOC "The ICONV library")
180 IF(ICONV_LIBRARY)
181 TARGET_LINK_LIBRARIES(sarg ${ICONV_LIBRARY})
182 ENDIF(ICONV_LIBRARY)
b3695c67 183 CHECK_FUNCTION_EXISTS(iconv_open HAVE_ICONV)
b3695c67 184
b8642c01
FM
185 IF(NOT USE_CONST_ICONV)
186 SET(ICONV_CONST_FILE ${CMAKE_BINARY_DIR}/consticonv.c)
187 FILE(WRITE ${ICONV_CONST_FILE} "
b3695c67 188#include <iconv.h>
b8642c01
FM
189#ifdef __CLASSIC_C__
190int main(){
191 int ac;
192 char*av[];
b3695c67 193#else
b8642c01 194int main(int ac, char*av[]){
b3695c67 195#endif
b8642c01
FM
196 iconv_t localtoutf=(iconv_t)-1;
197 const char *str=\"\";
198 char *sstr=\"\";
199 size_t slen=0, sslen=0;
200
201 iconv (localtoutf, (const char **)&str, &slen, &sstr, &sslen);
202 if(ac > 1000)
203 {
204 return *av[0];
205 }
206 return 0;
207}
b3695c67 208")
b8642c01
FM
209 TRY_COMPILE(USE_CONST_ICONV ${CMAKE_BINARY_DIR} ${ICONV_CONST_FILE} CMAKE_FLAGS -DLINK_LIBRARIES="iconv")
210 FILE(REMOVE ${ICONV_CONST_FILE})
211 IF(USE_CONST_ICONV)
212 SET(ICONV_CONST "const" CACHE STRING "The type of char to use with iconv")
213 MESSAGE(STATUS "iconv requires const char **")
214 ELSEIF(USE_CONST_ICONV)
215 SET(ICONV_CONST "" CACHE STRING "The type of char to use with iconv")
216 MESSAGE(STATUS "iconv requires char **")
217 ENDIF(USE_CONST_ICONV)
218 SET(USE_CONST_ICONV TRUE CACHE BOOL "Use const char ** with iconv")
219 ENDIF(NOT USE_CONST_ICONV)
b3695c67
FM
220 ENDIF(HAVE_ICONV_H)
221ENDIF(ENABLE_ICONV)
222
965c4a6f
FM
223# Find ldap
224CHECK_INCLUDE_FILE(ldap.h HAVE_LDAP_H)
225IF(HAVE_LDAP_H)
226 FIND_LIBRARY(LDAP_LIBRARY NAMES ldap DOC "The ldap library")
227 IF(LDAP_LIBRARY)
228 TARGET_LINK_LIBRARIES(sarg ${LDAP_LIBRARY})
229 SET(HAVE_LDAP LDAP_LIBRARY CACHE PATH DOC "True if LDAP was found")
230 SET(HAVE_LDAP CACHE BOOL DOC "True if must use LDAP")
231 ENDIF(LDAP_LIBRARY)
232ENDIF(HAVE_LDAP_H)
233
b3695c67
FM
234# Support for large files
235OPTION(ENABLE_LARGEFILE "Enable the usage of large files" ON)
236IF(ENABLE_LARGEFILE)
237 IF(LFS_SEARCHED MATCHES "^LFS_SEARCHED$")
238 SET(SEARCH_LARGEFILE TRUE)
239 ENDIF(LFS_SEARCHED MATCHES "^LFS_SEARCHED$")
240ENDIF(ENABLE_LARGEFILE)
241
242IF(SEARCH_LARGEFILE)
243 SET(LFS_SEARCHED TRUE CACHE INTERNAL "LFS has been searched")
244 MESSAGE(STATUS "Looking for large file support")
245 SET(LFS_FILE "${CMAKE_BINARY_DIR}/lfsfopen64.c")
246 FILE(WRITE ${LFS_FILE} "
247#include <stdio.h>
248int main(void)
249{
250FILE *f = fopen64 (\"/tmp/foo\",\"r\");
251return(0);
252}
253")
254 TRY_COMPILE(HAVE_FOPEN64 ${CMAKE_BINARY_DIR} ${LFS_FILE} COMPILE_DEFINITIONS "-Wall -Werror")
255 IF(HAVE_FOPEN64)
256 MESSAGE(STATUS "Looking for large file support - found")
257 ELSE(HAVE_FOPEN64)
258 SET(LFS_NEED_DEFINE FALSE CACHE BOOL "Does LFS require _LARGEFILE64_SOURCE ?")
259 MESSAGE(STATUS "Looking for large file support with _LARGEFILE64_SOURCE")
260 FILE(WRITE ${LFS_FILE} "
261#define _LARGEFILE64_SOURCE
262#include <stdio.h>
263int main(void)
264{
265FILE *f = fopen64 (\"/tmp/foo\",\"r\");
266return(0);
267}
268")
269 TRY_COMPILE(HAVE_FOPEN64 ${CMAKE_BINARY_DIR} ${LFS_FILE} OUTPUT_VARIABLE LFS_OUTPUT)
270 IF(HAVE_FOPEN64)
271 MESSAGE(STATUS "Looking for large file support with _LARGEFILE64_SOURCE - found")
272 SET(LFS_NEED_DEFINE TRUE CACHE BOOL "Does LFS require _LARGEFILE64_SOURCE ?" FORCE)
273 ELSE(HAVE_FOPEN64)
274 MESSAGE("Failed with output ${LFS_OUTPUT}")
275 ENDIF(HAVE_FOPEN64)
276 ENDIF(HAVE_FOPEN64)
277 FILE(REMOVE ${LFS_FILE})
278ENDIF(SEARCH_LARGEFILE)
279
280IF(LFS_NEED_DEFINE)
281 ADD_DEFINITIONS(-D_LARGEFILE64_SOURCE)
282ENDIF(LFS_NEED_DEFINE)
283
b3695c67
FM
284# Find rlim_t
285IF(HAVE_SYS_RESOURCE_H)
286 SET(CMAKE_EXTRA_INCLUDE_FILES "sys/resource.h")
287ENDIF(HAVE_SYS_RESOURCE_H)
288CHECK_TYPE_SIZE(rlim_t RLIM_T)
289IF(HAVE_RLIM_T)
290 IF(RLIM_T STREQUAL 4)
291 SET(RLIM_STRING "%d")
292 ELSEIF(RLIM_T STREQUAL 8)
293 SET(RLIM_STRING "%lli")
294 ELSE(RLIM_T STREQUAL 4)
295 MESSAGE("Unknown rlim_t size")
296 ENDIF(RLIM_T STREQUAL 4)
eca2cec9
FM
297#ELSE(HAVE_RLIM_T)
298# MESSAGE("Cannot detect the size of your system's rlim_t type")
b3695c67
FM
299ENDIF(HAVE_RLIM_T)
300
b3695c67 301CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP)
e112fa1f 302IF(NOT HAVE_MKSTEMP)
b3695c67 303 # MingW provide mkstemps in libiberty but doesn't declare it in any header file
9a2efbd0 304 FIND_LIBRARY(IBERTY_LIB NAMES iberty DOC "The library of mingw containing mkstemps")
b3695c67
FM
305 IF(IBERTY_LIB)
306 TARGET_LINK_LIBRARIES(sarg iberty)
307 ENDIF(IBERTY_LIB)
e112fa1f 308ENDIF(NOT HAVE_MKSTEMP)
b3695c67 309
eca2cec9
FM
310# Gettext and friends
311IF(NOT HAVE_LC_MESSAGES)
d25d4e6a 312 SET(FILES)
eca2cec9
FM
313 IF(HAVE_LOCALE_H)
314 LIST(APPEND FILES "locale.h")
315 ENDIF(HAVE_LOCALE_H)
316 IF(HAVE_LIBINTL_H)
317 LIST(APPEND FILES "libintl.h")
318 ENDIF(HAVE_LIBINTL_H)
319 LIST(LENGTH FILES NFILES)
320 IF(NFILES GREATER 0)
eca2cec9
FM
321 CHECK_SYMBOL_EXISTS(LC_MESSAGES "${FILES}" HAVE_LC_MESSAGES)
322 ENDIF(NFILES GREATER 0)
323ENDIF(NOT HAVE_LC_MESSAGES)
324
b3695c67 325# System particularities
e112fa1f 326IF(CMAKE_SYSTEM_NAME STREQUAL "solaris")
b3695c67
FM
327 TARGET_LINK_LIBRARIES(sarg socket nsl)
328 #SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_DEFINITIONS="-DSOLARIS ${COMPILE_DEFINITIONS}")
329 ADD_DEFINITIONS(-DSOLARIS)
e112fa1f 330ENDIF(CMAKE_SYSTEM_NAME STREQUAL "solaris")
b3695c67 331
05b90947
FM
332OPTION(ENABLE_EXTRA_PROTECT "Enable compile and runtime extra protections" OFF)
333IF(ENABLE_EXTRA_PROTECT)
9c7c6346
FM
334 GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
335 SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -fstack-protector -D_FORTIFY_SOURCE=2 -Werror")
53aaf897 336
d9c45e9c 337 CHECK_C_COMPILER_FLAG("-Wformat -Werror=format-security" HAVE_WERROR_FORMAT_SECURITY)
9c7c6346
FM
338 IF(HAVE_WERROR_FORMAT_SECURITY)
339 GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
d9c45e9c 340 SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -Wformat -Werror=format-security")
9c7c6346 341 ENDIF(HAVE_WERROR_FORMAT_SECURITY)
53aaf897
FM
342
343 CHECK_C_COMPILER_FLAG("-Wempty-body" HAVE_EMPTY_BODY)
344 IF(HAVE_EMPTY_BODY)
345 GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
346 SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -Wempty-body")
347 ENDIF(HAVE_EMPTY_BODY)
05b90947
FM
348ENDIF(ENABLE_EXTRA_PROTECT)
349
e9b33b57
FM
350# Compile sarg for debugging
351OPTION(ENABLE_DEBUG "Compile sarg with debugging symbols" OFF)
352IF(ENABLE_DEBUG)
353 GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
354 SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -g")
355ENDIF(ENABLE_DEBUG)
356
04a01ed3
FM
357# Enable double check of the data written in the reports
358OPTION(ENABLE_DOUBLE_CHECK_DATA "Make sarg double check the data it manipulates and output a warning if an error is found" OFF)
359
b3695c67
FM
360# Save the configuration for the project
361CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/include/config.h.in" "${CMAKE_BINARY_DIR}/config.h" @ONLY)
362
363# Installation of the project
364INSTALL(TARGETS sarg DESTINATION "${BINDIR}")
6798f0a7
FM
365INSTALL(FILES sarg.conf DESTINATION "${SYSCONFDIR}" RENAME sarg.conf.exemple)
366INSTALL(FILES exclude_codes user_limit_block css.tpl DESTINATION "${SYSCONFDIR}")
b3695c67 367INSTALL(FILES sarg.1 DESTINATION "${MANDIR}")
a1de61fe
FM
368INSTALL(DIRECTORY languages/ DESTINATION "${LANGDIR}" PATTERN ".svn" EXCLUDE)
369INSTALL(DIRECTORY images/ DESTINATION "${IMAGEDIR}" PATTERN ".svn" EXCLUDE)
370INSTALL(DIRECTORY fonts/ DESTINATION "${FONTDIR}" FILES_MATCHING PATTERN "*.ttf" PATTERN ".svn" EXCLUDE)
7bbc1de4 371INSTALL(DIRECTORY sarg-php/ DESTINATION "${SARGPHPDIR}" PATTERN ".svn" EXCLUDE)
b3695c67
FM
372
373# Package creation
374SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Squid Analysis Report Generator")
375SET(CPACK_PACKAGE_VERSION_MAJOR "${sarg_VERSION}")
376SET(CPACK_PACKAGE_VERSION_MINOR "${sarg_REVISION}")
377SET(CPACK_PACKAGE_VERSION_PATCH "${sarg_BUILD}")
378SET(CPACK_GENERATOR TGZ)
379SET(CPACK_SOURCE_GENERATOR TGZ)
a1de61fe 380SET(CPACK_SOURCE_IGNORE_FILES "/.svn/" "/debian/" "/html/" "Makefile$" "config\\\\.log$" "config\\\\.status$" ".*~$" "\\\\.o$")
b3695c67 381INCLUDE(CPack)