Browse Source

Another iteration of libraries detection rework.

tags/0.9.0
Vsevolod Stakhov 9 years ago
parent
commit
6fa3f56319
1 changed files with 101 additions and 43 deletions
  1. 101
    43
      CMakeLists.txt

+ 101
- 43
CMakeLists.txt View File

@@ -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)

Loading…
Cancel
Save