diff options
Diffstat (limited to 'cmake/libevent.cmake')
-rw-r--r-- | cmake/libevent.cmake | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/cmake/libevent.cmake b/cmake/libevent.cmake new file mode 100644 index 00000000000..54498e1bb15 --- /dev/null +++ b/cmake/libevent.cmake @@ -0,0 +1,89 @@ +# Copyright (C) 2011 Oracle and/or its affiliates. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +MACRO (MYSQL_USE_BUNDLED_LIBEVENT) + SET(LIBEVENT_LIBRARY event) + SET(LIBEVENT_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libevent) + SET(LIBEVENT_FOUND TRUE) + SET(WITH_LIBEVENT "bundled" CACHE STRING "Use bundled libevent") + ADD_SUBDIRECTORY(libevent) + GET_TARGET_PROPERTY(src libevent SOURCES) + FOREACH(file ${src}) + SET(LIBEVENT_SOURCES ${LIBEVENT_SOURCES} ${CMAKE_SOURCE_DIR}/libevent/${file}) + ENDFOREACH() +ENDMACRO() + +# MYSQL_CHECK_LIBEVENT +# +# Provides the following configure options: +# WITH_LIBEVENT_BUNDLED +# If this is set,we use bindled libevent +# If this is not set,search for system libevent. +# if system libevent is not found, use bundled copy +# LIBEVENT_LIBRARIES, LIBEVENT_INCLUDE_DIR and LIBEVENT_SOURCES +# are set after this macro has run + +MACRO (MYSQL_CHECK_LIBEVENT) + + IF (NOT WITH_LIBEVENT) + SET(WITH_LIBEVENT "bundled" CACHE STRING "By default use bundled libevent on this platform") + ENDIF() + + IF(WITH_LIBEVENT STREQUAL "bundled") + MYSQL_USE_BUNDLED_LIBEVENT() + ELSEIF(WITH_LIBEVENT STREQUAL "system" OR WITH_LIBEVENT STREQUAL "yes") + SET(LIBEVENT_FIND_QUIETLY TRUE) + + IF (NOT LIBEVENT_INCLUDE_PATH) + set(LIBEVENT_INCLUDE_PATH /usr/local/include /opt/local/include) + ENDIF() + + find_path(LIBEVENT_INCLUDE_DIR event.h PATHS ${LIBEVENT_INCLUDE_PATH}) + + if (NOT LIBEVENT_INCLUDE_DIR) + MESSAGE(SEND_ERROR "Cannot find appropriate event.h in /usr/local/include or /opt/local/include. Use bundled libevent") + endif() + + IF (NOT LIBEVENT_LIB_PATHS) + set(LIBEVENT_LIB_PATHS /usr/local/lib /opt/local/lib) + ENDIF() + + find_library(LIBEVENT_LIB event PATHS ${LIBEVENT_LIB_PATHS}) + + if (NOT LIBEVENT_LIB) + MESSAGE(SEND_ERROR "Cannot find appropriate event lib in /usr/local/lib or /opt/local/lib. Use bundled libevent") + endif() + + IF (LIBEVENT_LIB AND LIBEVENT_INCLUDE_DIR) + set(LIBEVENT_FOUND TRUE) + set(LIBEVENT_LIBS ${LIBEVENT_LIB}) + ELSE() + set(LIBEVENT_FOUND FALSE) + ENDIF() + + IF(LIBEVENT_FOUND) + SET(LIBEVENT_SOURCES "") + SET(LIBEVENT_LIBRARIES ${LIBEVENT_LIBS}) + SET(LIBEVENT_INCLUDE_DIRS ${LIBEVENT_INCLUDE_DIR}) + SET(LIBEVENT_DEFINES "-DHAVE_LIBEVENT") + ELSE() + IF(WITH_LIBEVENT STREQUAL "system") + MESSAGE(SEND_ERROR "Cannot find appropriate system libraries for libevent. Use bundled libevent") + ENDIF() + MYSQL_USE_BUNDLED_LIBEVENT() + ENDIF() + + ENDIF() +ENDMACRO() |