kde-extraapps/amarok/cmake/modules/FindMySQLAmarok.cmake
2015-01-31 00:30:50 +00:00

115 lines
4.4 KiB
CMake

# - Find MySQL / MySQL Embedded
# Find the MySQL includes and client library
# This module defines
# MYSQL_INCLUDE_DIR, where to find mysql.h
# MYSQL_LIBRARIES, the libraries needed to use MySQL.
# MYSQL_EMBEDDED_LIBRARIES, the libraries needed to use MySQL Embedded.
# MYSQL_FOUND, If false, do not try to use MySQL.
# MYSQL_EMBEDDED_FOUND, If false, do not try to use MySQL Embedded.
# Copyright (c) 2006, Jaroslaw Staniek, <js@iidea.pl>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
if(NOT WIN32)
find_program(MYSQLCONFIG_EXECUTABLE NAMES mysql_config mysql_config5 HINTS ${BIN_INSTALL_DIR})
endif(NOT WIN32)
find_path(MYSQL_INCLUDE_DIR mysql.h PATH_SUFFIXES mysql mysql5/mysql)
if(MYSQLCONFIG_EXECUTABLE)
exec_program(${MYSQLCONFIG_EXECUTABLE} ARGS --cflags RETURN_VALUE _return_VALUE OUTPUT_VARIABLE MYSQL_CFLAGS)
exec_program(${MYSQLCONFIG_EXECUTABLE} ARGS --libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE MYSQL_LIBRARIES)
exec_program(${MYSQLCONFIG_EXECUTABLE} ARGS --libmysqld-libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE MYSQL_EMBEDDED_LIBSTEMP)
set(MYSQL_EMBEDDED_CFLAGS ${MYSQL_CFLAGS})
if(MYSQL_EMBEDDED_LIBSTEMP)
set( HAVE_MYSQL_EMBEDDED true )
endif(MYSQL_EMBEDDED_LIBSTEMP)
find_library(MYSQLD_PIC_SEPARATE
mysqld_pic
PATH_SUFFIXES mysql
)
if(MYSQLD_PIC_SEPARATE)
string(REPLACE "lmysqld" "lmysqld_pic" MYSQL_EMBEDDED_LIBRARIES ${MYSQL_EMBEDDED_LIBSTEMP})
# append link directory to variable as mysql_config is not always (since Ubuntu 12.04?)
# reporting this directory with when being called with --libs
get_filename_component(MYSQL_EMBEDDED_LIB_DIR_TMP "${MYSQLD_PIC_SEPARATE}" PATH)
set(MYSQL_EMBEDDED_LIBRARIES "${MYSQL_EMBEDDED_LIBRARIES} -L${MYSQL_EMBEDDED_LIB_DIR_TMP}")
else(MYSQLD_PIC_SEPARATE)
set(MYSQL_EMBEDDED_LIBRARIES ${MYSQL_EMBEDDED_LIBSTEMP})
endif(MYSQLD_PIC_SEPARATE)
if (UNIX)
# libmysqld wants -lpthread, but it is very likely it does not say that
# explicitly in --libmysqld-libs
find_package(Threads)
set(MYSQL_EMBEDDED_LIBRARIES "${MYSQL_EMBEDDED_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}")
endif(UNIX)
else(MYSQLCONFIG_EXECUTABLE)
if(WIN32)
set(MYSQL_CLIENT_LIBRARY_NAME libmysql)
else(WIN32)
set(MYSQL_CLIENT_LIBRARY_NAME mysqlclient)
endif(WIN32)
find_library(MYSQL_LIBRARIES NAMES ${MYSQL_CLIENT_LIBRARY_NAME}
PATHS
~/usr/lib/mysql
/opt/mysql/mysql/lib
usr/mysql/lib/mysql
opt/local/lib/mysql5/mysql
opt/mysqle/lib/mysql
usr/lib/mysql
usr/lib64/mysql
usr/lib64
usr/local/lib/mysql
opt/local/lib/mysql
opt/ports/lib/mysql5/mysql
)
find_library(MYSQL_EMBEDDED_LIBRARIES NAMES mysqld_pic mysqld libmysqld
PATHS
~/usr/lib/mysql
/opt/local/lib/mysql5/mysql
/opt/mysqle/lib/mysql
/usr/lib/mysql
/usr/lib64/mysql
/usr/local/lib/mysql
/opt/mysql/lib/mysql
/opt/local/lib/mysql
/opt/ports/lib/mysql5/mysql
)
macro_push_required_vars()
set( CMAKE_REQUIRED_INCLUDES ${MYSQL_INCLUDE_DIR} )
set( CMAKE_REQUIRED_LIBRARIES ${MYSQL_EMBEDDED_LIBRARIES} )
include_directories( ${MYSQL_INCLUDE_DIR} )
check_cxx_source_compiles( "#if (defined(_WIN32) || defined(_WIN64))\n#define __LCC__\n#endif\n#include <mysql.h>\nint main() { int i = MYSQL_OPT_USE_EMBEDDED_CONNECTION; }" HAVE_MYSQL_EMBEDDED )
macro_pop_required_vars()
endif(MYSQLCONFIG_EXECUTABLE)
if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
set(MYSQL_FOUND TRUE)
message(STATUS "Found MySQL: ${MYSQL_INCLUDE_DIR}, ${MYSQL_LIBRARIES}")
else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
set(MYSQL_FOUND FALSE)
message(STATUS "MySQL not found.")
endif(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
if(MYSQL_INCLUDE_DIR AND MYSQL_EMBEDDED_LIBRARIES AND HAVE_MYSQL_EMBEDDED)
set(MYSQL_EMBEDDED_FOUND TRUE)
message(STATUS "Found MySQL Embedded: ${MYSQL_INCLUDE_DIR}, ${MYSQL_EMBEDDED_LIBRARIES}")
else(MYSQL_INCLUDE_DIR AND MYSQL_EMBEDDED_LIBRARIES AND HAVE_MYSQL_EMBEDDED)
set(MYSQL_EMBEDDED_FOUND FALSE)
message(STATUS "MySQL Embedded not found.")
endif(MYSQL_INCLUDE_DIR AND MYSQL_EMBEDDED_LIBRARIES AND HAVE_MYSQL_EMBEDDED)
mark_as_advanced(MYSQL_INCLUDE_DIR MYSQL_LIBRARIES MYSQL_EMBEDDED_LIBRARIES)