summaryrefslogtreecommitdiff
path: root/cmake/FindMySQL.cmake
blob: 453ea43fce9a66b095705203b9ff046e70208f1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# - Find MySQL
# 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_FOUND, If false, do not try to use MySQL.
#
# Copyright (c) 2006, Jaroslaw Staniek, <js@iidea.pl>
# Lot of adustmens by Michal Cihar <michal@cihar.com>
#
# vim: expandtab sw=4 ts=4 sts=4:
#
# Redistribution and use is allowed according to the terms of the BSD license.


if(UNIX)
    set(MYSQL_CONFIG_PREFER_PATH "$ENV{MYSQL_HOME}/bin" CACHE FILEPATH
        "preferred path to MySQL (mysql_config)")
    find_program(MYSQL_CONFIG mysql_config
        ${MYSQL_CONFIG_PREFER_PATH}
        /usr/local/mysql/bin/
        /usr/local/bin/
        /usr/bin/
        )

    if(MYSQL_CONFIG)
        message(STATUS "Using mysql-config: ${MYSQL_CONFIG}")
        # set INCLUDE_DIR
        exec_program(${MYSQL_CONFIG}
            ARGS --include
            OUTPUT_VARIABLE MY_TMP)

        string(REGEX REPLACE "-I([^ ]+)( .*)?" "\\1" MY_TMP "${MY_TMP}")

        set(MYSQL_ADD_INCLUDE_DIR ${MY_TMP} CACHE FILEPATH INTERNAL)

        # set LIBRARY_DIR
        exec_program(${MYSQL_CONFIG}
            ARGS --libs
            OUTPUT_VARIABLE MY_TMP)

        set(MYSQL_ADD_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_ADD_LIBRARIES "${LIB}")
        endforeach(LIB ${MYSQL_LIBS})

        set(MYSQL_ADD_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_ADD_LIBRARY_PATH "${LIB}")
        endforeach(LIB ${MYSQL_LIBS})

    else(MYSQL_CONFIG)
        set(MYSQL_ADD_LIBRARIES "")
        list(APPEND MYSQL_ADD_LIBRARIES "mysqlclient")
    endif(MYSQL_CONFIG)
else(UNIX)
    if (WIN32)
        set(MYSQL_ADD_LIBRARIES "")
        list(APPEND MYSQL_ADD_LIBRARIES "mysqlclient")
    endif (WIN32)
    set(MYSQL_ADD_INCLUDE_DIR "c:/msys/local/include" CACHE FILEPATH INTERNAL)
    set(MYSQL_ADD_LIBRARY_PATH "c:/msys/local/lib" CACHE FILEPATH INTERNAL)
ENDIF(UNIX)

if (WIN32)
    find_path(MYSQL_INCLUDE_DIR mysql.h
        /usr/local/include
        /usr/local/include/mysql
        /usr/local/mysql/include
        /usr/local/mysql/include/mysql
        /usr/include
        /usr/include/mysql
        $ENV{MYSQL_DIR}/include
        $ENV{ProgramFiles}/MySQL/*/include
        $ENV{SystemDrive}/MySQL/*/include
        "C:/Program Files/MySQL/*/include"
        ${MYSQL_ADD_INCLUDE_DIR}
    )
else()
    find_path(MYSQL_INCLUDE_DIR mysql.h
        /usr/local/include
        /usr/local/include/mysql
        /usr/local/mysql/include
        /usr/local/mysql/include/mysql
        /usr/include
        /usr/include/mysql
        ${MYSQL_ADD_INCLUDE_DIR}
    )
endif()

set(TMP_MYSQL_LIBRARIES "")

foreach(LIB ${MYSQL_ADD_LIBRARIES})
    if (WIN32)
        find_library("MYSQL_LIBRARIES_${LIB}" NAMES ${LIB}
            PATHS
            ${MYSQL_ADD_LIBRARY_PATH}
            /usr/lib/mysql
            /usr/local/lib
            /usr/local/lib/mysql
            /usr/local/mysql/lib
            $ENV{MYSQL_DIR}/lib/opt
            $ENV{ProgramFiles}/MySQL/*/lib
            $ENV{SystemDrive}/MySQL/*/lib
            "C:/Program Files/MySQL/*/lib"
            $ENV{ProgramFiles}/MySQL/*/lib/opt
            $ENV{SystemDrive}/MySQL/*/lib/opt
            "C:/Program Files/MySQL/*/lib/opt"
        )
    endif()
    list(APPEND TMP_MYSQL_LIBRARIES "${MYSQL_LIBRARIES_${LIB}}")
endforeach(LIB ${MYSQL_ADD_LIBRARIES})

if (TMP_MYSQL_LIBRARIES)
    set(MYSQL_LIBRARIES ${TMP_MYSQL_LIBRARIES} CACHE FILEPATH "MySQL Libraries" FORCE)
else (TMP_MYSQL_LIBRARIES)
    set(MYSQL_LIBRARIES ${TMP_MYSQL_LIBRARIES} CACHE FILEPATH "MySQL Libraries")
endif (TMP_MYSQL_LIBRARIES)


if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
    include(MacroCheckLibraryWorks)
    CHECK_LIBRARY_WORKS("mysql.h" "mysql_errno(0);" "${MYSQL_INCLUDE_DIR}" "${MYSQL_LIBRARIES}" "MYSQL_WORKS")

    set(MYSQL_FOUND ${MYSQL_WORKS} CACHE INTERNAL "MySQL found")
    message(STATUS "Found MySQL: ${MYSQL_INCLUDE_DIR}, ${MYSQL_LIBRARIES}")
else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
    set(MYSQL_FOUND FALSE CACHE INTERNAL "MySQL found")
    message(STATUS "MySQL not found.")
endif(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)

mark_as_advanced(MYSQL_INCLUDE_DIR MYSQL_LIBRARIES)