From 46f30a2fc1589c167202b8dcfc8719053c91779a Mon Sep 17 00:00:00 2001 From: def Date: Sat, 22 Jul 2017 21:53:55 +0200 Subject: [PATCH] Fix mysql cmake build --- CMakeLists.txt | 2 +- cmake/FindMySQL.cmake | 71 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 59 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b89821d93..5e1b0231c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ endfunction() show_dependency_status("Curl" ${CURL_FOUND} "${CURL_LIBRARY}") show_dependency_status("Freetype" ${FREETYPE_FOUND} "${FREETYPE_LIBRARY}") if(MYSQL) - show_dependency_status("MySQL" ${MYSQL_FOUND} "") + show_dependency_status("MySQL" ${MYSQL_FOUND} "${MYSQL_LIBRARY}") endif() show_dependency_status("Ogg" ${OGG_FOUND} "${OGG_INCLUDEDIR}") show_dependency_status("Opus" ${OPUS_FOUND} "${OPUS_INCLUDEDIR}") diff --git a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake index 95b79ab24..1507131fa 100644 --- a/cmake/FindMySQL.cmake +++ b/cmake/FindMySQL.cmake @@ -1,24 +1,69 @@ +find_program(MYSQL_CONFIG + NAMES mysql_config +) -find_path(MYSQL_INCLUDE_DIR +if(MYSQL_CONFIG) + exec_program(${MYSQL_CONFIG} + ARGS --include + OUTPUT_VARIABLE MY_TMP + ) + + string(REGEX REPLACE "-I([^ ]*)( .*)?" "\\1" MY_TMP "${MY_TMP}") + + set(MYSQL_CONFIG_INCLUDE_DIR ${MY_TMP} CACHE FILEPATH INTERNAL) + + exec_program(${MYSQL_CONFIG} + ARGS --libs_r + OUTPUT_VARIABLE MY_TMP + ) + + set(MYSQL_CONFIG_LIBRARIES "") + + string(REGEX MATCHALL "-l[^ ]*" MYSQL_LIB_LIST "${MY_TMP}") + foreach(LIB ${MYSQL_LIB_LIST}) + string(REGEX REPLACE "[ ]*-l([^ ]*)" "\\1" LIB "${LIB}") + list(APPEND MYSQL_CONFIG_LIBRARIES "${LIB}") + endforeach(LIB ${MYSQL_LIBS}) + + set(MYSQL_CONFIG_LIBRARY_PATH "") + + string(REGEX MATCHALL "-L[^ ]*" MYSQL_LIBDIR_LIST "${MY_TMP}") + foreach(LIB ${MYSQL_LIBDIR_LIST}) + string(REGEX REPLACE "[ ]*-L([^ ]*)" "\\1" LIB "${LIB}") + list(APPEND MYSQL_CONFIG_LIBRARY_PATH "${LIB}") + endforeach(LIB ${MYSQL_LIBS}) +endif(MYSQL_CONFIG) + +set_extra_dirs(MYSQL mysql) + +find_path(MYSQL_INCLUDEDIR NAMES "mysql.h" - PATHS - "/usr/include/mysql" - "/usr/local/include/mysql" + HINTS ${MYSQL_CONFIG_INCLUDE_DIR} + PATHS ${EXTRA_MYSQL_INCLUDEDIR} ) find_library(MYSQL_LIBRARY NAMES "mysqlclient" "mysqlclient_r" "mariadbclient" - PATHS - "/usr/lib/mysql" - "/usr/lib64/mysql" - "/usr/local/lib/mysql" - "/usr/local/lib64/mysql" + HINTS ${MYSQL_CONFIG_LIBRARY_PATH} + PATHS ${EXTRA_MYSQL_LIBDIR} +) + +find_path(MYSQL_CPPCONN_INCLUDEDIR + NAMES "mysql_connection.h" + HINTS ${MYSQL_CONFIG_INCLUDE_DIR} + PATHS ${EXTRA_MYSQL_INCLUDEDIR} +) + +find_library(MYSQL_CPPCONN_LIBRARY + NAMES "mysqlcppconn" "mysqlcppconn-static" + HINTS ${MYSQL_CONFIG_LIBRARY_PATH} + PATHS ${EXTRA_MYSQL_LIBDIR} ) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(MySQL DEFAULT_MSG MYSQL_LIBRARY MYSQL_INCLUDE_DIR) +find_package_handle_standard_args(MySQL DEFAULT_MSG MYSQL_LIBRARY MYSQL_INCLUDEDIR) -set(MYSQL_INCLUDE_DIRS ${MYSQL_INCLUDE_DIR}) -set(MYSQL_LIBRARIES ${MYSQL_LIBRARY}) +set(MYSQL_LIBRARIES ${MYSQL_LIBRARY} ${MYSQL_CPPCONN_LIBRARY}) +set(MYSQL_INCLUDE_DIRS ${MYSQL_INCLUDEDIR} ${MYSQL_CPPCONN_INCLUDEDIR}) -mark_as_advanced(MYSQL_INCLUDE_DIR MYSQL_LIBRARY) +mark_as_advanced(MYSQL_INCLUDEDIR MYSQL_LIBRARY)