]> git.ipfire.org Git - thirdparty/sarg.git/blobdiff - CMakeLists.txt
Automated replacement of the translated strings by a gettext macro
[thirdparty/sarg.git] / CMakeLists.txt
index b85aacf236118efe0730ad6feaa23afcb7cfef80..bcd378ead78da5f2a08d3d8c583c14a6273ded3b 100755 (executable)
@@ -1,9 +1,9 @@
 CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
 PROJECT(sarg C)
 SET(sarg_VERSION 2)
-SET(sarg_REVISION 2)
-SET(sarg_BUILD "6")
-SET(sarg_BUILDDATE "Nov-27-2009")
+SET(sarg_REVISION "3rc1")
+SET(sarg_BUILD "")
+SET(sarg_BUILDDATE "Mar-02-2010")
 
 INCLUDE(AddFileDependencies)
 INCLUDE(CheckIncludeFile)
@@ -11,12 +11,13 @@ INCLUDE(CheckLibraryExists)
 INCLUDE(CheckFunctionExists)
 INCLUDE(CheckTypeSize)
 INCLUDE(CheckSymbolExists)
+INCLUDE(CheckCCompilerFlag)
 
 DEFINE_PROPERTY(GLOBAL PROPERTY enable-htmldir BRIEF_DOCS "--enable-htmldir=htmldir"
                         FULL_DOCS "Select htmldir as the root of your WWW documents")
 
 SET(PACKAGE_NAME "sarg")
-SET(PACKAGE_VERSION "${sarg_VERSION}.${sarg_REVISION}.${sarg_BUILD}")
+SET(PACKAGE_VERSION "${sarg_VERSION}.${sarg_REVISION}${sarg_BUILD}")
 
 MACRO(SET_ABS_SOURCE VAR DOC)
    IF(${VAR} AND NOT ${VAR}_SOURCE)
@@ -40,6 +41,7 @@ SET(MANDIR "share/man" CACHE PATH "The directory to copy the man page relative t
 SET(LANGDIR "share/sarg/languages" CACHE PATH "The directory to copy the languages files relative to the install directory")
 SET(FONTDIR "share/sarg/fonts" CACHE PATH "The directory to copy the fonts relative to the install directory")
 SET(IMAGEDIR "share/sarg/images" CACHE PATH "The directory to copy the images files relative to the install directory")
+SET(SARGPHPDIR "share/sarg/sarg-php" CACHE PATH "The directory to copy sarg-php relative to the install directory")
 
 # Sources to compile
 INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}") #Make it find this config.h before the one in src/include
@@ -48,9 +50,10 @@ SET(SRC util.c log.c report.c topuser.c email.c sort.c html.c
        totger.c index.c getconf.c usage.c decomp.c ip2name.c
        useragent.c exclude.c convlog.c totday.c repday.c datafile.c
        indexonly.c splitlog.c lastlog.c topsites.c siteuser.c css.c
-       smartfilter.c denied.c authfail.c language.c charset.c
+       smartfilter.c denied.c authfail.c charset.c
        squidguard_log.c squidguard_report.c auth.c download.c grepday.c
-       dansguardian_log.c dansguardian_report.c realtime.c)
+       dansguardian_log.c dansguardian_report.c realtime.c btree_cache.c
+       usertab.c userinfo.c)
 
 FOREACH(f ${SRC})
    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)
@@ -58,9 +61,30 @@ ENDFOREACH(f)
 
 ADD_EXECUTABLE(sarg ${SRC})
 
-SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAG "${CFLAGS} -Wall -Wextra -Werror=implicit-function-declaration -Werror=format")
 SET_TARGET_PROPERTIES(sarg PROPERTIES VERSION "${sarg_VERSION}.${sarg_REVISION}.${sarg_BUILD}")
 
+SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "$ENV{CFLAGS} -Wall -Wno-sign-compare")
+SET_TARGET_PROPERTIES(sarg PROPERTIES LINK_FLAGS "$ENV{LDFLAGS}")
+
+CHECK_C_COMPILER_FLAG("-Wextra" HAVE_WEXTRA)
+IF(HAVE_WEXTRA)
+   # Not supported by gcc 3.3
+   GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
+   SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -Wextra -Wno-unused-parameter")
+ENDIF(HAVE_WEXTRA)
+
+CHECK_C_COMPILER_FLAG("-Werror=implicit-function-declaration" HAVE_WERROR_IMPLICIT_FUNCTION)
+IF(HAVE_WERROR_IMPLICIT_FUNCTION)
+   GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
+   SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -Werror=implicit-function-declaration")
+ENDIF(HAVE_WERROR_IMPLICIT_FUNCTION)
+
+CHECK_C_COMPILER_FLAG("-Werror=format" HAVE_WERROR_FORMAT)
+IF(HAVE_WERROR_FORMAT)
+   GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
+   SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -Werror=format")
+ENDIF(HAVE_WERROR_FORMAT)
+
 # Required header files
 CHECK_INCLUDE_FILE(stdio.h HAVE_STDIO_H)
 CHECK_INCLUDE_FILE(stdlib.h HAVE_STDLIB_H)
@@ -84,8 +108,15 @@ CHECK_INCLUDE_FILE(sys/wait.h HAVE_SYS_WAIT_H)
 CHECK_INCLUDE_FILE(stdarg.h HAVE_STDARG_H)
 CHECK_INCLUDE_FILE(inttypes.h HAVE_INTTYPES_H)
 CHECK_INCLUDE_FILE(limits.h HAVE_LIMITS_H)
+CHECK_INCLUDE_FILE(math.h HAVE_MATH_H)
+CHECK_INCLUDE_FILE(locale.h HAVE_LOCALE_H)
+CHECK_INCLUDE_FILE(execinfo.h HAVE_EXECINFO_H)
+CHECK_INCLUDE_FILE(libintl.h HAVE_LIBINTL_H)
 
 CHECK_FUNCTION_EXISTS(bzero HAVE_BZERO)
+CHECK_FUNCTION_EXISTS(backtrace HAVE_BACKTRACE)
+CHECK_FUNCTION_EXISTS(symlink HAVE_SYMLINK)
+CHECK_FUNCTION_EXISTS(lstat HAVE_LSTAT)
 
 # Find gd
 CHECK_INCLUDE_FILE(gd.h HAVE_GD_H)
@@ -95,10 +126,10 @@ IF(HAVE_GD_H)
    CHECK_INCLUDE_FILE(gdfonts.h HAVE_GDFONTS_H)
    CHECK_INCLUDE_FILE(gdfontmb.h HAVE_GDFONTMB_H)
    CHECK_INCLUDE_FILE(gdfontg.h HAVE_GDFONTG_H)
-   FIND_LIBRARY(GD_LIBRARY NAMES gd DOC "The GD library")
+   FIND_LIBRARY(GD_LIBRARY NAMES gd bgd DOC "The GD library")
    IF(GD_LIBRARY)
       #CHECK_LIBRARY_EXISTS(gd gdImagePng "." HAVE_GD)
-      TARGET_LINK_LIBRARIES(sarg gd)
+      TARGET_LINK_LIBRARIES(sarg ${GD_LIBRARY})
       SET(HAVE_GD GD_LIBRARY CACHE PATH DOC "True IF GD was found")
       SET(HAVE_GD CACHE BOOL DOC "True IF must use GD")
    ENDIF(GD_LIBRARY)
@@ -109,11 +140,12 @@ OPTION(ENABLE_ICONV "Enable the usage of iconv" ON)
 IF(ENABLE_ICONV)
    CHECK_INCLUDE_FILE(iconv.h HAVE_ICONV_H)
    IF(HAVE_ICONV_H)
+      FIND_PATH(ICONV_INCLUDE_PATH NAMES iconv.h)
+      FIND_LIBRARY(ICONV_LIBRARY NAMES iconv DOC "The ICONV library")
+      IF(ICONV_LIBRARY)
+         TARGET_LINK_LIBRARIES(sarg ${ICONV_LIBRARY})
+      ENDIF(ICONV_LIBRARY)
       CHECK_FUNCTION_EXISTS(iconv_open HAVE_ICONV)
-      IF(!HAVE_ICONV)
-         FIND_PATH(ICONV_INCLUDE_PATH NAMES iconv.h)
-         FIND_LIBRARY(ICONV_LIBRARY NAMES iconv DOC "The ICONV library")
-      ENDIF(!HAVE_ICONV)
 
       SET(ICONV_CONST_FILE ${CMAKE_BINARY_DIR}/consticonv.c)
       FILE(WRITE ${ICONV_CONST_FILE} "
@@ -137,6 +169,17 @@ size_t iconv();
    ENDIF(HAVE_ICONV_H)
 ENDIF(ENABLE_ICONV)
 
+# Find ldap
+CHECK_INCLUDE_FILE(ldap.h HAVE_LDAP_H)
+IF(HAVE_LDAP_H)
+   FIND_LIBRARY(LDAP_LIBRARY NAMES ldap DOC "The ldap library")
+   IF(LDAP_LIBRARY)
+      TARGET_LINK_LIBRARIES(sarg ${LDAP_LIBRARY})
+      SET(HAVE_LDAP LDAP_LIBRARY CACHE PATH DOC "True if LDAP was found")
+      SET(HAVE_LDAP CACHE BOOL DOC "True if must use LDAP")
+   ENDIF(LDAP_LIBRARY)
+ENDIF(HAVE_LDAP_H)
+
 # Support for large files
 OPTION(ENABLE_LARGEFILE "Enable the usage of large files" ON)
 IF(ENABLE_LARGEFILE)
@@ -187,18 +230,6 @@ IF(LFS_NEED_DEFINE)
    ADD_DEFINITIONS(-D_LARGEFILE64_SOURCE)
 ENDIF(LFS_NEED_DEFINE)
 
-# Find off_t size
-CHECK_TYPE_SIZE(off_t OFF_T)
-IF(HAVE_OFF_T)
-   IF(OFF_T STREQUAL 4)
-      SET(OFFSET_STRING "\"%d\"")
-   elseif(OFF_T STREQUAL 8)
-      SET(OFFSET_STRING "\"%\"PRId64")
-   ENDIF(OFF_T STREQUAL 4)
-ELSE(HAVE_OFF_T)
-   MESSAGE(FATAL_ERROR Need off_t to compile the program)
-ENDIF(HAVE_OFF_T)
-
 # Find rlim_t
 IF(HAVE_SYS_RESOURCE_H)
    SET(CMAKE_EXTRA_INCLUDE_FILES "sys/resource.h")
@@ -212,8 +243,8 @@ IF(HAVE_RLIM_T)
    ELSE(RLIM_T STREQUAL 4)
       MESSAGE("Unknown rlim_t size")
    ENDIF(RLIM_T STREQUAL 4)
-ELSE(HAVE_RLIM_T)
-   MESSAGE("Cannot detect the size of your system's rlim_t type")
+#ELSE(HAVE_RLIM_T)
+#   MESSAGE("Cannot detect the size of your system's rlim_t type")
 ENDIF(HAVE_RLIM_T)
 
 # Windows need lib wsock32
@@ -238,6 +269,21 @@ IF(NOT HAVE_MKSTEMP)
    ENDIF(IBERTY_LIB)
 ENDIF(NOT HAVE_MKSTEMP)
 
+# Gettext and friends
+IF(NOT HAVE_LC_MESSAGES)
+   SET(FILES)
+   IF(HAVE_LOCALE_H)
+      LIST(APPEND FILES "locale.h")
+   ENDIF(HAVE_LOCALE_H)
+   IF(HAVE_LIBINTL_H)
+      LIST(APPEND FILES "libintl.h")
+   ENDIF(HAVE_LIBINTL_H)
+   LIST(LENGTH FILES NFILES)
+   IF(NFILES GREATER 0)
+      CHECK_SYMBOL_EXISTS(LC_MESSAGES "${FILES}" HAVE_LC_MESSAGES)
+   ENDIF(NFILES GREATER 0)
+ENDIF(NOT HAVE_LC_MESSAGES)
+
 # System particularities
 IF(CMAKE_SYSTEM_NAME STREQUAL "solaris")
    TARGET_LINK_LIBRARIES(sarg socket nsl)
@@ -247,7 +293,13 @@ ENDIF(CMAKE_SYSTEM_NAME STREQUAL "solaris")
 
 OPTION(ENABLE_EXTRA_PROTECT "Enable compile and runtime extra protections" OFF)
 IF(ENABLE_EXTRA_PROTECT)
-   SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAG "${CFLAGS} -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=2 -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter")
+   GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
+   SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -fstack-protector -D_FORTIFY_SOURCE=2 -Werror")
+   CHECK_C_COMPILER_FLAG("-Wformat -Werror=format-security" HAVE_WERROR_FORMAT_SECURITY)
+   IF(HAVE_WERROR_FORMAT_SECURITY)
+      GET_TARGET_PROPERTY(TMPCFLAGS sarg COMPILE_FLAGS)
+      SET_TARGET_PROPERTIES(sarg PROPERTIES COMPILE_FLAGS "${TMPCFLAGS} -Wformat -Werror=format-security")
+   ENDIF(HAVE_WERROR_FORMAT_SECURITY)
 ENDIF(ENABLE_EXTRA_PROTECT)
 
 # Save the configuration for the project
@@ -258,9 +310,10 @@ INSTALL(TARGETS sarg DESTINATION "${BINDIR}")
 INSTALL(FILES sarg.conf DESTINATION "${SYSCONFDIR}" RENAME sarg.conf.exemple)
 INSTALL(FILES exclude_codes user_limit_block css.tpl DESTINATION "${SYSCONFDIR}")
 INSTALL(FILES sarg.1 DESTINATION "${MANDIR}")
-INSTALL(DIRECTORY languages/ DESTINATION "${LANGDIR}" PATTERN "CVS" EXCLUDE)
-INSTALL(DIRECTORY images/ DESTINATION "${IMAGEDIR}" PATTERN "CVS" EXCLUDE)
-INSTALL(DIRECTORY fonts/ DESTINATION "${FONTDIR}" FILES_MATCHING PATTERN "*.ttf" PATTERN "CVS" EXCLUDE)
+INSTALL(DIRECTORY languages/ DESTINATION "${LANGDIR}" PATTERN ".svn" EXCLUDE)
+INSTALL(DIRECTORY images/ DESTINATION "${IMAGEDIR}" PATTERN ".svn" EXCLUDE)
+INSTALL(DIRECTORY fonts/ DESTINATION "${FONTDIR}" FILES_MATCHING PATTERN "*.ttf" PATTERN ".svn" EXCLUDE)
+INSTALL(DIRECTORY sarg-php/ DESTINATION "${SARGPHPDIR}" PATTERN ".svn" EXCLUDE)
 
 # Package creation
 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Squid Analysis Report Generator")
@@ -269,5 +322,5 @@ SET(CPACK_PACKAGE_VERSION_MINOR "${sarg_REVISION}")
 SET(CPACK_PACKAGE_VERSION_PATCH "${sarg_BUILD}")
 SET(CPACK_GENERATOR TGZ)
 SET(CPACK_SOURCE_GENERATOR TGZ)
-SET(CPACK_SOURCE_IGNORE_FILES "/CVS/" "/debian/" "/html/" "Makefile$" "config\\\\.log$" "config\\\\.status$" ".*~$" "\\\\.o$")
+SET(CPACK_SOURCE_IGNORE_FILES "/.svn/" "/debian/" "/html/" "Makefile$" "config\\\\.log$" "config\\\\.status$" ".*~$" "\\\\.o$")
 INCLUDE(CPack)