From 2e175a4652b66213d1e958f83c0ef157aa6d6919 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Tue, 22 Jan 2013 17:26:12 +0400 Subject: [PATCH] Automatic detection for LIBXML2 and ODBC includes/libraries. --- storage/connect/CMakeLists.txt | 83 +++++++++++++++++++++++++++++----- 1 file changed, 71 insertions(+), 12 deletions(-) diff --git a/storage/connect/CMakeLists.txt b/storage/connect/CMakeLists.txt index 08b9ee00eea..5cdc0d39486 100644 --- a/storage/connect/CMakeLists.txt +++ b/storage/connect/CMakeLists.txt @@ -22,12 +22,9 @@ message(STATUS "GCC: All warnings disabled") endif() add_definitions( -DUNIX -DLINUX -DUBUNTU -DMARIADB -DFORCE_INIT_OF_VARS -DMYSQL_DYNAMIC_PLUGIN ) -add_definitions( -DHUGE_SUPPORT -DXML_SUPPORT -DMYSQL_SUPPORT -DZIP_SUPPORT -DODBC_SUPPORT ) +add_definitions( -DHUGE_SUPPORT -DZIP_SUPPORT ) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -fexceptions -fPIC ") -INCLUDE_DIRECTORIES(/usr/include/libxml2) -INCLUDE_DIRECTORIES(/usr/include/i386-linux-gnu) -INCLUDE_DIRECTORIES() get_property(inc_dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES) message("inc_dirs = ${inc_dirs}") @@ -42,22 +39,84 @@ 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 -tabodbc.cpp odbconn.cpp filamzip.cpp tabtbl.cpp myconn.cpp myutil.cpp tabmysql.cpp -tabxml.cpp plgxml.cpp libdoc.cpp) +tabxml.cpp plgxml.cpp) +# +# XML +# -SET(XML_LIBRARY "-L/usr/lib/i386-linux-gnu -lxml2") -#SET(MYSQL_LIBRARY "-L/usr/local/mysql/lib -lmysqlclient") -#SET(MYSQL_LIBRARY "-L/ ../../libmysql/libmysqlclient.a") +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(-DXML_SUPPORT) +ENDIF() + +# +# MySQL +# # For static linking SET(MYSQL_LIBRARY mysqlclient) - -# For dynaric linking +# For dynamic linking #SET(MYSQL_LIBRARY libmysql) +add_definitions(-DMYSQL_SUPPORT) -SET(ODBC_LIBRARY "-L/usr/lib -lodbc") +# +# ODBC +# +# 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 ). +# + +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() + +# +# Plugin definition +# MYSQL_ADD_PLUGIN(connect ${CONNECT_SOURCES} STORAGE_ENGINE MODULE_ONLY