CMakeLists.txt 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #
  2. # local copy
  3. #
  4. if( WIN32 )
  5. message( STATUS "Detecting local MYSQL" )
  6. # external_mysql
  7. message( STATUS "Creating target external_mysql" )
  8. if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
  9. set( _URL "${CMAKE_CURRENT_SOURCE_DIR}/mysql-5.5.24-winx64-libmysql.tar.gz" )
  10. set( _URL_MD5 "36ae333e56ff6ae99de13edf893a1792" )
  11. elseif( CMAKE_SIZEOF_VOID_P EQUAL 4 )
  12. set( _URL "${CMAKE_CURRENT_SOURCE_DIR}/mysql-5.5.24-win32-libmysql.tar.gz" )
  13. set( _URL_MD5 "e9abe2055bba07995c89e66c7c6d1e2c" )
  14. else()
  15. message( FATAL_ERROR "Not supported: CMAKE_SIZEOF_VOID_P=${CMAKE_SIZEOF_VOID_P}" )
  16. endif()
  17. set( _INSTALL_DIR "${CMAKE_BINARY_DIR}/external/mysql" )
  18. message( STATUS "Using URL=${_URL}" )
  19. message( STATUS "Using URL_MD5=${_URL_MD5}" )
  20. message( STATUS "Using INSTALL_DIR=${_INSTALL_DIR}" )
  21. include(ExternalProject)
  22. ExternalProject_Add( external_mysql
  23. URL "${_URL}"
  24. URL_MD5 "${_URL_MD5}"
  25. SOURCE_DIR "${_INSTALL_DIR}"
  26. CONFIGURE_COMMAND ""
  27. BUILD_COMMAND ""
  28. INSTALL_COMMAND ""
  29. )
  30. set( TARGET_LIST ${TARGET_LIST} external_mysql CACHE INTERNAL "" )
  31. message( STATUS "Creating target external_mysql - done" )
  32. # libmysql
  33. message( STATUS "Creating import shared library libmysql" )
  34. add_library( libmysql SHARED IMPORTED GLOBAL )
  35. set_target_properties( libmysql PROPERTIES
  36. IMPORTED_LOCATION "${_INSTALL_DIR}/lib/libmysql.dll"
  37. IMPORTED_IMPLIB "${_INSTALL_DIR}/lib/libmysql.lib" )
  38. message( STATUS "Creating import shared library libmysql - done" )
  39. set( HAVE_LOCAL_MYSQL ON
  40. CACHE BOOL "mysql client is available as a local copy" )
  41. set( MYSQL_LOCAL_DEPENDENCIES external_mysql
  42. CACHE STRING "local mysql dependencies" )
  43. set( MYSQL_LOCAL_LIBRARIES libmysql
  44. CACHE PATH "local mysql libraries" )
  45. set( MYSQL_LOCAL_INCLUDE_DIRS "${_INSTALL_DIR}/include"
  46. CACHE PATH "local mysql include directories" )
  47. set( MYSQL_LOCAL_DEFINITIONS
  48. CACHE STRING "local mysql definitions" )
  49. mark_as_advanced( HAVE_LOCAL_MYSQL )
  50. mark_as_advanced( MYSQL_LOCAL_DEPENDENCIES )
  51. mark_as_advanced( MYSQL_LOCAL_LIBRARIES )
  52. mark_as_advanced( MYSQL_LOCAL_INCLUDE_DIRS )
  53. mark_as_advanced( MYSQL_LOCAL_DEFINITIONS )
  54. message( STATUS "Detecting local MYSQL - done" )
  55. else( WIN32 )
  56. message( STATUS "Skipping local MYSQL (requires WIN32)" )
  57. endif( WIN32 )
  58. #
  59. # system
  60. #
  61. message( STATUS "Detecting system MYSQL" )
  62. unset( MYSQL_LIBRARIES CACHE )
  63. unset( MYSQL_INCLUDE_DIRS CACHE )
  64. find_package( MYSQL )
  65. set( MYSQL_SYSTEM_LIBRARIES "${MYSQL_LIBRARIES}"
  66. CACHE PATH "system mysql libraries" )
  67. set( MYSQL_SYSTEM_INCLUDE_DIRS "${MYSQL_INCLUDE_DIRS}"
  68. CACHE PATH "system mysql include directories" )
  69. mark_as_advanced( MYSQL_SYSTEM_LIBRARIES )
  70. mark_as_advanced( MYSQL_SYSTEM_INCLUDE_DIRS )
  71. if( MYSQL_SYSTEM_LIBRARIES AND MYSQL_SYSTEM_INCLUDE_DIRS )
  72. set( HAVE_SYSTEM_MYSQL ON
  73. CACHE BOOL "mysql client is available on the system" )
  74. mark_as_advanced( HAVE_SYSTEM_MYSQL )
  75. else()
  76. unset( HAVE_SYSTEM_MYSQL CACHE )
  77. endif()
  78. message( STATUS "Detecting system MYSQL - done" )
  79. #
  80. # configure
  81. #
  82. CONFIGURE_WITH_LOCAL_OR_SYSTEM( MYSQL )
  83. if( WITH_LOCAL_MYSQL AND INSTALL_COMPONENT_RUNTIME )
  84. install( FILES "${_INSTALL_DIR}/lib/libmysql.dll"
  85. DESTINATION "."
  86. COMPONENT Runtime_base )
  87. endif( WITH_LOCAL_MYSQL AND INSTALL_COMPONENT_RUNTIME )