aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-05-11 14:17:15 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-05-11 14:17:15 +0100
commit6fa3f563190107571408739f903bab4bb8a8ecde (patch)
tree6fa43320d9cebc06568de61441a243f8faec1939 /CMakeLists.txt
parent6d95cb903a5ac0134d66b74ea3aed6e86717e696 (diff)
downloadrspamd-6fa3f563190107571408739f903bab4bb8a8ecde.tar.gz
rspamd-6fa3f563190107571408739f903bab4bb8a8ecde.zip
Another iteration of libraries detection rework.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt144
1 files changed, 101 insertions, 43 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bd35976a9..80df09ba8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -194,55 +194,106 @@ ENDFUNCTION(INSTALL_IF_NOT_EXISTS)
# Process required package by using FindPackage and calling for INCLUDE_DIRECTORIES and
# setting list of required libraries
MACRO(ProcessPackage var _name0)
- PKG_SEARCH_MODULE(${var} "${_name0}" ${ARGN})
- IF(${var}_FOUND)
- SET(WITH_${var} 1)
- IF(ENABLE_STATIC MATCHES "ON")
- SET(_XPREFIX "${var}_STATIC")
- ELSE(ENABLE_STATIC MATCHES "ON")
- SET(_XPREFIX "${var}")
- ENDIF(ENABLE_STATIC MATCHES "ON")
- FOREACH(_arg ${${_XPREFIX}_INCLUDE_DIRS})
- INCLUDE_DIRECTORIES("${_arg}")
- SET(${var}_INCLUDE_DIR "${_arg}")
- ENDFOREACH(_arg ${${_XPREFIX}_INCLUDE_DIRS})
- FOREACH(_arg ${${_XPREFIX}_LIBRARY_DIRS})
- LINK_DIRECTORIES("${_arg}")
- ENDFOREACH(_arg ${${_XPREFIX}_LIBRARY_DIRS})
- # Handle other CFLAGS and LDFLAGS
- FOREACH(_arg ${${_XPREFIX}_CFLAGS_OTHER})
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_arg}")
- ENDFOREACH(_arg ${${_XPREFIX}_CFLAGS_OTHER})
- FOREACH(_arg ${${_XPREFIX}_LDFLAGS_OTHER})
- SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${_arg}")
- ENDFOREACH(_arg ${${_XPREFIX}_LDFLAGS_OTHER})
- LIST(APPEND RSPAMD_REQUIRED_LIBRARIES "${${_XPREFIX}_LIBRARIES}")
- ELSE(${var}_FOUND)
- # Try some more heuristic
+ IF(NOT RSPAMD_SEARCH_PATH)
+ PKG_SEARCH_MODULE(${var} "${_name0}" ${ARGN})
+ IF(${var}_FOUND)
+ SET(WITH_${var} 1)
+ IF(ENABLE_STATIC MATCHES "ON")
+ SET(_XPREFIX "${var}_STATIC")
+ ELSE(ENABLE_STATIC MATCHES "ON")
+ SET(_XPREFIX "${var}")
+ ENDIF(ENABLE_STATIC MATCHES "ON")
+ FOREACH(_arg ${${_XPREFIX}_INCLUDE_DIRS})
+ INCLUDE_DIRECTORIES("${_arg}")
+ SET(${var}_INCLUDE_DIR "${_arg}")
+ ENDFOREACH(_arg ${${_XPREFIX}_INCLUDE_DIRS})
+ FOREACH(_arg ${${_XPREFIX}_LIBRARY_DIRS})
+ LINK_DIRECTORIES("${_arg}")
+ ENDFOREACH(_arg ${${_XPREFIX}_LIBRARY_DIRS})
+ # Handle other CFLAGS and LDFLAGS
+ FOREACH(_arg ${${_XPREFIX}_CFLAGS_OTHER})
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_arg}")
+ ENDFOREACH(_arg ${${_XPREFIX}_CFLAGS_OTHER})
+ FOREACH(_arg ${${_XPREFIX}_LDFLAGS_OTHER})
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${_arg}")
+ ENDFOREACH(_arg ${${_XPREFIX}_LDFLAGS_OTHER})
+ LIST(APPEND RSPAMD_REQUIRED_LIBRARIES "${${_XPREFIX}_LIBRARIES}")
+ ELSE(${var}_FOUND)
+ # Try some more heuristic
+ FIND_LIBRARY(_lib NAMES "${_name0}" ${ARGN}
+ HINTS
+ "${RSPAMD_SEARCH_PATH}"
+ PATH_SUFFIXES lib64 lib
+ PATHS ${RSPAMD_DEFAULT_LIBRARY_PATHS})
+ IF(NOT _lib)
+ MESSAGE(FATAL_ERROR "Packages ${_name0} ${ARGN} could not be found, no library")
+ ENDIF(NOT _lib)
+
+
+ FIND_PATH(_incl "${_name0}.h"
+ HINTS "${RSPAMD_SEARCH_PATH}"
+ PATH_SUFFIXES "include" "include/${_name0}" ${ARGN}
+ PATHS ${RSPAMD_DEFAULT_INCLUDE_PATHS})
+ IF(NOT _incl)
+ MESSAGE(FATAL_ERROR "Packages ${_name0} ${ARGN} could not be found, no header")
+ ENDIF(NOT _incl)
+ GET_FILENAME_COMPONENT(_lib_path "${_lib}" PATH)
+ INCLUDE_DIRECTORIES("${_incl}")
+ LINK_DIRECTORIES("${_lib_path}")
+ MESSAGE(STATUS "Found ${_name0} ${ARGN} in '${_lib_path}' (library) and '${_incl}' (include).")
+ ENDIF(${var}_FOUND)
+ ELSE(NOT RSPAMD_SEARCH_PATH)
+ # Try heuristic first
FIND_LIBRARY(_lib NAMES "${_name0}" ${ARGN}
HINTS
"${RSPAMD_SEARCH_PATH}"
PATH_SUFFIXES lib64 lib
PATHS ${RSPAMD_DEFAULT_LIBRARY_PATHS})
- IF(NOT _lib)
- MESSAGE(FATAL_ERROR "Packages ${_name0} ${ARGN} could not be found, no library")
- ENDIF(NOT _lib)
+ IF(_lib)
+ FIND_PATH(_incl "${_name0}.h"
+ HINTS "${RSPAMD_SEARCH_PATH}"
+ PATH_SUFFIXES "include" "include/${_name0}" ${ARGN}
+ PATHS ${RSPAMD_DEFAULT_INCLUDE_PATHS})
+ IF(_incl)
+ GET_FILENAME_COMPONENT(_lib_path "${_lib}" PATH)
+ INCLUDE_DIRECTORIES("${_incl}")
+ LINK_DIRECTORIES("${_lib_path}")
+ MESSAGE(STATUS "Found ${_name0} ${ARGN} in '${_lib_path}' (library) and '${_incl}' (include).")
+ ENDIF(_incl)
+ ENDIF(_lib)
-
- FIND_PATH(_incl "${_name0}.h"
- HINTS "${RSPAMD_SEARCH_PATH}"
- PATH_SUFFIXES "include" "include/${_name0}" ${ARGN}
- PATHS ${RSPAMD_DEFAULT_INCLUDE_PATHS})
- IF(NOT _incl)
- MESSAGE(FATAL_ERROR "Packages ${_name0} ${ARGN} could not be found, no header")
- ENDIF(NOT _incl)
- GET_FILENAME_COMPONENT(_lib_path "${_lib}" PATH)
- INCLUDE_DIRECTORIES("${_incl}")
- LINK_DIRECTORIES("${_lib_path}")
- MESSAGE(STATUS "Found ${_name0} ${ARGN} in '${_lib_path}' (library) and '${_incl}' (include).")
- UNSET(_lib CACHE)
- UNSET(_incl CACHE)
- ENDIF(${var}_FOUND)
+ IF(NOT _incl OR NOT _lib)
+ PKG_SEARCH_MODULE(${var} "${_name0}" ${ARGN})
+ IF(${var}_FOUND)
+ SET(WITH_${var} 1)
+ IF(ENABLE_STATIC MATCHES "ON")
+ SET(_XPREFIX "${var}_STATIC")
+ ELSE(ENABLE_STATIC MATCHES "ON")
+ SET(_XPREFIX "${var}")
+ ENDIF(ENABLE_STATIC MATCHES "ON")
+ FOREACH(_arg ${${_XPREFIX}_INCLUDE_DIRS})
+ INCLUDE_DIRECTORIES("${_arg}")
+ SET(${var}_INCLUDE_DIR "${_arg}")
+ ENDFOREACH(_arg ${${_XPREFIX}_INCLUDE_DIRS})
+ FOREACH(_arg ${${_XPREFIX}_LIBRARY_DIRS})
+ LINK_DIRECTORIES("${_arg}")
+ ENDFOREACH(_arg ${${_XPREFIX}_LIBRARY_DIRS})
+ # Handle other CFLAGS and LDFLAGS
+ FOREACH(_arg ${${_XPREFIX}_CFLAGS_OTHER})
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_arg}")
+ ENDFOREACH(_arg ${${_XPREFIX}_CFLAGS_OTHER})
+ FOREACH(_arg ${${_XPREFIX}_LDFLAGS_OTHER})
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${_arg}")
+ ENDFOREACH(_arg ${${_XPREFIX}_LDFLAGS_OTHER})
+ LIST(APPEND RSPAMD_REQUIRED_LIBRARIES "${${_XPREFIX}_LIBRARIES}")
+ ELSE(${var}_FOUND)
+ MESSAGE(FATAL_ERROR "Packages ${_name0} ${ARGN} could not be found")
+ ENDIF(${var}_FOUND)
+ ENDIF(NOT _incl OR NOT _lib)
+ ENDIF(NOT RSPAMD_SEARCH_PATH)
+ # Cleanup
+ UNSET(_lib CACHE)
+ UNSET(_incl CACHE)
ENDMACRO(ProcessPackage name)
MACRO(ADD_PRECOMPILED_HEADER _target _input)
@@ -395,6 +446,13 @@ ENDIF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
IF(ENABLE_LUAJIT MATCHES "ON")
ProcessPackage(LUAJIT luajit)
SET(WITH_LUA 1)
+ FindLua(5 1)
+ IF(NOT LUA_FOUND)
+ MESSAGE(FATAL_ERROR "Lua not found, lua support is required for working")
+ ELSE(NOT LUA_FOUND)
+ SET(WITH_LUA 1)
+ INCLUDE_DIRECTORIES("${LUA_INCLUDE_DIR}")
+ ENDIF(NOT LUA_FOUND)
ELSE(ENABLE_LUAJIT MATCHES "ON")
FindLua(5 2)
IF(NOT LUA_FOUND)