CMakeLists.txt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #
  2. # local copy
  3. #
  4. if( WIN32 )
  5. message( STATUS "Detecting local MYSQL" )
  6. find_path( LOCAL_MYSQL_INCLUDE_DIRS "mysql.h"
  7. PATHS "${CMAKE_CURRENT_SOURCE_DIR}/include"
  8. NO_DEFAULT_PATH )
  9. find_library( LOCAL_MYSQL_LIBRARIES
  10. NAMES libmysql
  11. PATHS "${CMAKE_CURRENT_SOURCE_DIR}/lib"
  12. NO_DEFAULT_PATH )
  13. mark_as_advanced( LOCAL_MYSQL_LIBRARIES )
  14. mark_as_advanced( LOCAL_MYSQL_INCLUDE_DIRS )
  15. if( LOCAL_MYSQL_LIBRARIES AND LOCAL_MYSQL_INCLUDE_DIRS )
  16. if( EXISTS "${LOCAL_MYSQL_INCLUDE_DIRS}/mysql_version.h" )
  17. file( STRINGS "${LOCAL_MYSQL_INCLUDE_DIRS}/mysql_version.h" MYSQL_VERSION_H REGEX "^#define MYSQL_SERVER_VERSION[ \t]+\"[^\"]+\".*$" )
  18. string( REGEX REPLACE "^.*MYSQL_SERVER_VERSION[ \t]+\"([^\"]+)\".*$" "\\1" MYSQL_SERVER_VERSION "${MYSQL_VERSION_H}" )
  19. message( STATUS "Found MYSQL: ${LOCAL_MYSQL_LIBRARIES} (found version ${MYSQL_SERVER_VERSION})" )
  20. else()
  21. message( STATUS "Found MYSQL: ${LOCAL_MYSQL_LIBRARIES}" )
  22. endif()
  23. set( HAVE_LOCAL_MYSQL ON
  24. CACHE BOOL "mysql client is available as a local copy")
  25. else()
  26. foreach( _VAR LOCAL_MYSQL_LIBRARIES LOCAL_MYSQL_INCLUDE_DIRS )
  27. if( NOT "${_VAR}" )
  28. set( MISSING_VARS ${MISSING_VARS} ${_VAR} )
  29. endif()
  30. endforeach()
  31. message( STATUS "Could NOT find MYSQL (missing: ${MISSING_VARS})" )
  32. unset( HAVE_LOCAL_MYSQL CACHE )
  33. endif()
  34. message( STATUS "Detecting local MYSQL - done" )
  35. endif( WIN32 )
  36. #
  37. # system
  38. #
  39. message( STATUS "Detecting system MYSQL" )
  40. find_program( MYSQL_CONFIG_EXECUTABLE "mysql_config" )
  41. mark_as_advanced( MYSQL_CONFIG_EXECUTABLE )
  42. if( MYSQL_CONFIG_EXECUTABLE )
  43. # use mysql_config data
  44. message( "Found mysql_config: ${MYSQL_CONFIG_EXECUTABLE}" )
  45. execute_process( COMMAND "${MYSQL_CONFIG_EXECUTABLE} --libs"
  46. OUTPUT_VARIABLE MYSQL_LIBRARIES )
  47. execute_process( COMMAND "${MYSQL_CONFIG_EXECUTABLE} --include"
  48. OUTPUT_VARIABLE MYSQL_INCLUDE_DIRS )
  49. execute_process( COMMAND "${MYSQL_CONFIG_EXECUTABLE} --version"
  50. OUTPUT_VARIABLE MYSQL_VERSION )
  51. message( STATUS "Found MYSQL: ${MYSQL_LIBRARIES} (found version ${MYSQL_VERSION})" )
  52. else()
  53. # find mysql package
  54. set( CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_MODULE_PATH} )
  55. find_package( MYSQL )
  56. endif()
  57. set( SYSTEM_MYSQL_LIBRARIES "${MYSQL_LIBRARIES}"
  58. CACHE PATH "system mysql libraries" )
  59. set( SYSTEM_MYSQL_INCLUDE_DIRS "${MYSQL_INCLUDE_DIRS}"
  60. CACHE PATH "system mysql include directories" )
  61. mark_as_advanced( SYSTEM_MYSQL_LIBRARIES )
  62. mark_as_advanced( SYSTEM_MYSQL_INCLUDE_DIRS )
  63. if( SYSTEM_MYSQL_LIBRARIES AND SYSTEM_MYSQL_INCLUDE_DIRS )
  64. set( HAVE_SYSTEM_MYSQL ON
  65. CACHE BOOL "mysql client is available on the system" )
  66. endif()
  67. message( STATUS "Detecting system MYSQL - done" )
  68. # options
  69. #
  70. # configure
  71. #
  72. unset( MYSQL_LIBRARIES CACHE )
  73. unset( MYSQL_INCLUDE_DIRS CACHE )
  74. if( HAVE_LOCAL_MYSQL )
  75. set( USE_LOCAL_MYSQL ON
  76. CACHE BOOL "use local copy of mysql" )
  77. else()
  78. unset( USE_LOCAL_MYSQL CACHE )
  79. endif()
  80. if( USE_LOCAL_MYSQL )
  81. message( STATUS "Configuring for local MYSQL" )
  82. set( MYSQL_LIBRARIES ${LOCAL_MYSQL_LIBRARIES} )
  83. set( MYSQL_INCLUDE_DIRS ${LOCAL_MYSQL_INCLUDE_DIRS} )
  84. message( STATUS "Configuring for local MYSQL - done" )
  85. elseif( HAVE_SYSTEM_MYSQL )
  86. message( STATUS "Configuring for system MYSQL" )
  87. set( MYSQL_LIBRARIES ${SYSTEM_MYSQL_LIBRARIES} )
  88. set( MYSQL_INCLUDE_DIRS ${SYSTEM_MYSQL_INCLUDE_DIRS} )
  89. message( STATUS "Configuring for system MYSQL - done" )
  90. endif()
  91. if( USE_LOCAL_MYSQL OR HAVE_SYSTEM_MYSQL )
  92. set( USE_MYSQL ON
  93. CACHE BOOL "use mysql" )
  94. else()
  95. unset( USE_MYSQL CACHE )
  96. endif()
  97. set( MYSQL_LIBRARIES ${MYSQL_LIBRARIES}
  98. CACHE PATH "mysql libraries" )
  99. set( MYSQL_INCLUDE_DIRS ${MYSQL_INCLUDE_DIRS}
  100. CACHE PATH "mysql include directories" )
  101. mark_as_advanced( MYSQL_LIBRARIES )
  102. mark_as_advanced( MYSQL_INCLUDE_DIRS )