# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA SET(CONNECT_PLUGIN_STATIC "connect") SET(CONNECT_PLUGIN_DYNAMIC "connect") SET(CONNECT_SOURCES ha_connect.cc connect.cc user_connect.cc mycat.cc fmdlex.c osutil.c plugutil.c rcmsg.c csort.cpp maputil.cpp plgdbutl.cpp colblk.cpp reldef.cpp tabcol.cpp table.cpp filamap.cpp filamdbf.cpp filamfix.cpp filamtxt.cpp filamvct.cpp tabdos.cpp tabfix.cpp tabfmt.cpp tabmul.cpp tabsys.cpp tabvct.cpp valblk.cpp value.cpp xindex.cpp xobject.cpp filamzip.cpp tabtbl.cpp myutil.cpp) # # Definitions that are shared for all OSes # add_definitions( -DMARIADB -DFORCE_INIT_OF_VARS ) add_definitions( -DHUGE_SUPPORT -DZIP_SUPPORT ) # # OS specific C flags, definitions and source files. # IF(UNIX) if(WITH_WARNINGS) add_definitions(-Wall -Wfatal-errors -Wextra -Wmissing-declarations) message(STATUS "CONNECT: GCC: All warnings enabled") else() add_definitions(-Wall -Wfatal-errors -Wmissing-declarations) add_definitions(-Wno-write-strings) add_definitions(-Wno-unused-variable) add_definitions(-Wno-unused-but-set-variable) add_definitions(-Wno-unused-value) add_definitions(-Wno-unused-function) add_definitions(-Wno-parentheses) add_definitions(-Wno-missing-declarations) add_definitions(-Wno-int-to-pointer-cast) add_definitions(-Wno-narrowing) # This switch is for pure C only: # add_definitions(-Wno-implicit-function-declaration) # These switches are for C++ only # add_definitions(-Wno-reorder) # add_definitions(-Wno-delete-non-virtual-dtor) message(STATUS "CONNECT: GCC: Some warnings disabled") endif(WITH_WARNINGS) add_definitions( -DUNIX -DLINUX -DUBUNTU ) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -fexceptions -fPIC ") get_property(inc_dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES) SET(CONNECT_SOURCES ${CONNECT_SOURCES} inihandl.c) SET(IPHLPAPI_LIBRARY "") ELSE(NOT UNIX) SET(CONNECT_SOURCES ${CONNECT_SOURCES} tabwmi.cpp tabmac.cpp macutil.cpp) # Add exception handling to the CONNECT project) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") SET(IPHLPAPI_LIBRARY iphlpapi.lib) ENDIF(UNIX) # # XML # OPTION(CONNECT_WITH_LIBXML2 "Compile CONNECT storage engine with LIBXML2 support" ON) IF(CONNECT_WITH_LIBXML2) IF(WIN32) # Adding some typical places to search in SET(PC_LIBXML_INCLUDE_DIRS C:/libxml2/include C:/libxml/include D:/libxml/include) SET(PC_LIBXML_LIBRARY_DIRS C:/libxml2/lib C:/libxml/lib D:/libxml/lib) ENDIF(WIN32) FIND_PACKAGE(LibXml2) IF (LIBXML2_FOUND) INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) SET(XML_LIBRARY ${LIBXML2_LIBRARIES}) SET(CONNECT_SOURCES ${CONNECT_SOURCES} libdoc.cpp) add_definitions(-DLIBXML2_SUPPORT) ENDIF(LIBXML2_FOUND) ENDIF(CONNECT_WITH_LIBXML2) IF(WIN32) OPTION(CONNECT_WITH_MSXML "Compile CONNECT storage engine with MSXML support" ON) IF(CONNECT_WITH_MSXML) find_library(MSXML_LIBRARY NAMES msxml6 msxml4 msxml3 msxml2 PATHS "C:/Program Files/Microsoft SDKs/Windows/v7.0A/Lib" "C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib" "C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib" DOC "Specify the MSXML? library here." ) IF(MSXML_LIBRARY MATCHES .*msxml6[.].*) add_definitions(-DMSX6 -DDOMDOC_SUPPORT) message(STATUS "MSXML library version: msxml6") SET(MSXML_FOUND 1) SET(CONNECT_SOURCES ${CONNECT_SOURCES} domdoc.cpp) ELSEIF(MSXML_LIBRARY MATCHES .*msxml4[.].*) add_definitions(-DMSX4 -DDOMDOC_SUPPORT) message("MSXML library version: msxml4") SET(MSXML_FOUND 1) SET(CONNECT_SOURCES ${CONNECT_SOURCES} domdoc.cpp) ELSEIF(MSXML_LIBRARY MATCHES .*msxml3[.].*) message("MSXML library version: msxml3") add_definitions(-DMSX3 -DDOMDOC_SUPPORT) SET(MSXML_FOUND 1) SET(CONNECT_SOURCES ${CONNECT_SOURCES} domdoc.cpp) ELSEIF(MSXML_LIBRARY MATCHES .*msxml2[.].*) message("MSXML library version: msxml2") add_definitions(-DMXS2 -DDOMDOC_SUPPORT) SET(MSXML_FOUND 1) SET(CONNECT_SOURCES ${CONNECT_SOURCES} domdoc.cpp) ELSE() message(STATUS "msxml? library not found") ENDIF() ENDIF(CONNECT_WITH_MSXML) ENDIF(WIN32) IF(LIBXML2_FOUND OR MSXML_FOUND) SET(CONNECT_SOURCES ${CONNECT_SOURCES} tabxml.cpp plgxml.cpp) ENDIF() # # MySQL # OPTION(CONNECT_WITH_MYSQL "Compile CONNECT storage engine with remote MySQL connection support" ON) IF(CONNECT_WITH_MYSQL) SET(CONNECT_SOURCES ${CONNECT_SOURCES} myconn.cpp tabmysql.cpp) # For static linking #SET(MYSQL_LIBRARY mysqlclient) # For dynamic linking SET(MYSQL_LIBRARY libmysql) add_definitions(-DMYSQL_SUPPORT) IF(NOT UNIX) # # TODO: remove this # change to use "#include "../../include/mysql.h" in the sources. INCLUDE_DIRECTORIES("../../include/mysql") ENDIF(NOT UNIX) ENDIF(CONNECT_WITH_MYSQL) # # ODBC # OPTION(CONNECT_WITH_ODBC "Compile CONNECT storage engine with ODBC support" ON) IF(CONNECT_WITH_ODBC) if(UNIX) # Note, we currently detect unixODBC only on Linux. # TODO: detect iODBC as well. Simply adding "iodbc" into NAMES in # find_library does not work on machines with both unixODBC and iODBC # installed, because it finds headers from unixODBC while libraries # from iODBC. We could search for 'isql.h' instead of 'sql.h' so # the library 'libodbc' gets compiled with 'isql.h' and # the library 'libiodbc' gets compiled with 'sql'h. # This will also need changes in the sources (e.g. #include <isql.h>). find_path(ODBC_INCLUDE_DIR sql.h /usr/include /usr/include/odbc /usr/local/include /usr/local/include/odbc /usr/local/odbc/include #"C:/Program Files/ODBC/include" #"C:/Program Files/Microsoft SDKs/Windows/v7.0A/include" #"C:/Program Files/Microsoft SDKs/Windows/v6.0a/include" #"C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/include" DOC "Specify the directory containing sql.h." ) find_library(ODBC_LIBRARY NAMES odbc odbcinst odbc32 PATHS /usr/lib /usr/lib/odbc /usr/local/lib /usr/local/lib/odbc /usr/local/odbc/lib #"C:/Program Files/ODBC/lib" #"C:/ODBC/lib/debug" #"C:/Program Files/Microsoft SDKs/Windows/v7.0A/Lib" #"C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib" #"C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib" DOC "Specify the ODBC driver manager library here." ) IF(ODBC_INCLUDE_DIR AND ODBC_LIBRARY) INCLUDE_DIRECTORIES(${ODBC_INCLUDE_DIR}) add_definitions(-DODBC_SUPPORT) SET(CONNECT_SOURCES ${CONNECT_SOURCES} tabodbc.cpp odbconn.cpp) ELSE() SET(ODBC_LIBRARY "") ENDIF() ELSE(NOT UNIX) add_definitions(-DODBC_SUPPORT) SET(ODBC_LIBRARY "odbc32.lib odbccp32.lib") SET(CONNECT_SOURCES ${CONNECT_SOURCES} tabodbc.cpp odbconn.cpp) ENDIF(UNIX) ENDIF(CONNECT_WITH_ODBC) # # Plugin definition # MYSQL_ADD_PLUGIN(connect ${CONNECT_SOURCES} STORAGE_ENGINE MODULE_ONLY MODULE_OUTPUT_NAME "ha_connect" LINK_LIBRARIES ${ZLIB_LIBRARY} ${XML_LIBRARY} ${ICONV_LIBRARY} ${MYSQL_LIBRARY} ${ODBC_LIBRARY} ${IPHLPAPI_LIBRARY})