if (USE_MARIADB) add_definitions(-DUSE_MARIADB) message( STATUS "Using MariaDB include/lib" ) set ( MY_INCLUDE_DIR ${MARIADB_INCLUDE_DIR} ) set ( MY_LIB ${MARIADB_LIBRARIES} ws2_32 shlwapi ) else (USE_MARIADB) message( STATUS "Using MySQL include/lib" ) set ( MY_INCLUDE_DIR ${MYSQL_INCLUDE_DIR} ) set ( MY_LIB ${MYSQL_LIBRARIES} ) endif (USE_MARIADB) include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${GenericRdbms_IncludeDirs} ) if (MSVC) add_definitions( -D_WINDOWS -DFDORDBMS_EXPORTS -D_USRDLL -DMYSQL_EXPORTS -D_LIB -D_CRT_SECURE_NO_DEPRECATE) # Original vcxproj files also suppresses inheritance via dominance warning (C4250) add_definitions(/wd4250) msvc_use_mbcs() else (MSVC) if (UNIX) add_definitions(-DCMAKE_BUILD) endif (UNIX) endif (MSVC) add_subdirectory( Driver ) add_subdirectory( SchemaMgr ) set( FdoMySQL_LIB_SRCS Fdo/FdoRdbmsMySqlConnectionCapabilities.cpp Fdo/FdoRdbmsMySqlFilterCapabilities.cpp Fdo/FdoRdbmsMySqlFilterProcessor.cpp Fdo/FdoRdbmsMySqlGeometryCapabilities.cpp Fdo/FdoRdbmsMySqlConnection.cpp Fdo/FdoRdbmsMySqlCommandCapabilities.cpp Fdo/FdoRdbmsMySqlConnectionInfo.cpp MySql.cpp ) msvc_add_precompiled_header("stdafx.h" "stdafx.cpp" FdoMySQL_LIB_SRCS) generate_windows_dll_rc("MySql" "FDO Provider for MySQL" "FDO Provider for MySQL Component" "MySQLProvider" "MySQLProvider.dll" FdoMySQL_LIB_SRCS) add_library( MySQLProvider${FDO_VERSION_SUFFIX} SHARED ${FdoMySQL_LIB_SRCS} ) if (WIN32) # HACK: Something in this dependency chain wants the opposite MSVCRT? For now, take their warning # suggestion and put in /NODEFAULTLIB set_target_properties( MySQLProvider PROPERTIES LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"MSVCRT\"" ) set_target_properties( MySQLProvider PROPERTIES LINK_FLAGS_RELEASE "/NODEFAULTLIB:\"MSVCRTD\"" ) set_target_properties( MySQLProvider PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/NODEFAULTLIB:\"MSVCRTD\"" ) set_target_properties( MySQLProvider PROPERTIES LINK_FLAGS_MINSIZEREL "/NODEFAULTLIB:\"MSVCRTD\"" ) target_link_libraries( MySQLProvider ${MY_LIB} FDO FDOCommon FDOGeometry FDOSpatial ExpressionEngine RdbmsOverrides MySQLOverrides FdoRdbmsGeneric rdbi MySQLDriver Gdbi LongTransactionManager LockManager genericrdbms_util MySQLSchemaMgr geometry_fgf GrdSchemaMgr ProvidersCommon SchemaMgr ) msvc_target_install_private( MySQLProvider ${FDO_COMPONENT} TRUE) else (WIN32) target_link_libraries( MySQLProvider${FDO_VERSION_SUFFIX} -Wl,-whole-archive FdoRdbmsGeneric rdbi MySQLDriver Gdbi LongTransactionManager LockManager genericrdbms_util MySQLSchemaMgr geometry_fgf GrdSchemaMgr ProvidersCommon SchemaMgr -Wl,-no-whole-archive ) target_link_libraries( MySQLProvider${FDO_VERSION_SUFFIX} ${MY_LIB} ${ZLIB_LIBRARIES} FDO${FDO_VERSION_SUFFIX} ExpressionEngine${FDO_VERSION_SUFFIX} RdbmsOverrides${FDO_VERSION_SUFFIX} MySQLOverrides${FDO_VERSION_SUFFIX} ) install( TARGETS MySQLProvider${FDO_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${FDO_COMPONENT} ) install_symlink( ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMySQLProvider${FDO_VERSION_SUFFIX}.so libMySQLProvider.so ${FDO_COMPONENT} ) endif (WIN32) # Needed for unit tests file(COPY "../../com" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})