option (ENABLE_ODBC "Enable ODBC library" ${ENABLE_LIBRARIES}) if (NOT OS_LINUX) if (ENABLE_ODBC) message(STATUS "ODBC is only supported on Linux") endif() set (ENABLE_ODBC OFF CACHE INTERNAL "") endif () if (NOT ENABLE_ODBC) if (USE_INTERNAL_ODBC_LIBRARY) message (${RECONFIGURE_MESSAGE_LEVEL} "Can't use internal ODBC with ENABLE_ODBC=OFF") endif() add_library (unixodbc INTERFACE) target_compile_definitions (unixodbc INTERFACE USE_ODBC=0) message (STATUS "Not using unixodbc") return() endif() option (USE_INTERNAL_ODBC_LIBRARY "Use internal ODBC library" ${NOT_UNBUNDLED}) if (NOT USE_INTERNAL_ODBC_LIBRARY) find_library (LIBRARY_ODBC unixodbc) find_path (INCLUDE_ODBC sql.h) if(LIBRARY_ODBC AND INCLUDE_ODBC) add_library (unixodbc UNKNOWN IMPORTED) set_target_properties (unixodbc PROPERTIES IMPORTED_LOCATION ${LIBRARY_ODBC}) set_target_properties (unixodbc PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INCLUDE_ODBC}) set(EXTERNAL_ODBC_LIBRARY_FOUND 1) else() message (${RECONFIGURE_MESSAGE_LEVEL} "Can't find system ODBC library") set(EXTERNAL_ODBC_LIBRARY_FOUND 0) endif() endif() if (NOT EXTERNAL_ODBC_LIBRARY_FOUND) set (USE_INTERNAL_ODBC_LIBRARY 1) set (LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/unixodbc) # ltdl set (SRCS_LTDL # This file is generated by 'libtool' inside libltdl directory and then removed. linux_x86_64/libltdl/libltdlcS.c ${LIBRARY_DIR}/libltdl/lt__alloc.c ${LIBRARY_DIR}/libltdl/lt__strl.c ${LIBRARY_DIR}/libltdl/ltdl.c ${LIBRARY_DIR}/libltdl/lt_dlloader.c ${LIBRARY_DIR}/libltdl/slist.c ${LIBRARY_DIR}/libltdl/lt_error.c ${LIBRARY_DIR}/libltdl/loaders/dlopen.c ${LIBRARY_DIR}/libltdl/loaders/preopen.c ) add_library (ltdl ${SRCS_LTDL}) target_include_directories(ltdl PRIVATE linux_x86_64/libltdl PUBLIC ${LIBRARY_DIR}/libltdl ${LIBRARY_DIR}/libltdl/libltdl ) target_compile_definitions(ltdl PRIVATE -DHAVE_CONFIG_H -DLTDL -DLTDLOPEN=libltdlc) target_compile_options(ltdl PRIVATE -Wno-constant-logical-operand -Wno-unknown-warning-option -O2) # odbc set (SRCS ${LIBRARY_DIR}/DriverManager/__attribute.c ${LIBRARY_DIR}/DriverManager/__connection.c ${LIBRARY_DIR}/DriverManager/__handles.c ${LIBRARY_DIR}/DriverManager/__info.c ${LIBRARY_DIR}/DriverManager/__stats.c ${LIBRARY_DIR}/DriverManager/SQLAllocConnect.c ${LIBRARY_DIR}/DriverManager/SQLAllocEnv.c ${LIBRARY_DIR}/DriverManager/SQLAllocHandle.c ${LIBRARY_DIR}/DriverManager/SQLAllocHandleStd.c ${LIBRARY_DIR}/DriverManager/SQLAllocStmt.c ${LIBRARY_DIR}/DriverManager/SQLBindCol.c ${LIBRARY_DIR}/DriverManager/SQLBindParam.c ${LIBRARY_DIR}/DriverManager/SQLBindParameter.c ${LIBRARY_DIR}/DriverManager/SQLBrowseConnect.c ${LIBRARY_DIR}/DriverManager/SQLBrowseConnectW.c ${LIBRARY_DIR}/DriverManager/SQLBulkOperations.c ${LIBRARY_DIR}/DriverManager/SQLCancel.c ${LIBRARY_DIR}/DriverManager/SQLCancelHandle.c ${LIBRARY_DIR}/DriverManager/SQLCloseCursor.c ${LIBRARY_DIR}/DriverManager/SQLColAttribute.c ${LIBRARY_DIR}/DriverManager/SQLColAttributes.c ${LIBRARY_DIR}/DriverManager/SQLColAttributesW.c ${LIBRARY_DIR}/DriverManager/SQLColAttributeW.c ${LIBRARY_DIR}/DriverManager/SQLColumnPrivileges.c ${LIBRARY_DIR}/DriverManager/SQLColumnPrivilegesW.c ${LIBRARY_DIR}/DriverManager/SQLColumns.c ${LIBRARY_DIR}/DriverManager/SQLColumnsW.c ${LIBRARY_DIR}/DriverManager/SQLConnect.c ${LIBRARY_DIR}/DriverManager/SQLConnectW.c ${LIBRARY_DIR}/DriverManager/SQLCopyDesc.c ${LIBRARY_DIR}/DriverManager/SQLDataSources.c ${LIBRARY_DIR}/DriverManager/SQLDataSourcesW.c ${LIBRARY_DIR}/DriverManager/SQLDescribeCol.c ${LIBRARY_DIR}/DriverManager/SQLDescribeColW.c ${LIBRARY_DIR}/DriverManager/SQLDescribeParam.c ${LIBRARY_DIR}/DriverManager/SQLDisconnect.c ${LIBRARY_DIR}/DriverManager/SQLDriverConnect.c ${LIBRARY_DIR}/DriverManager/SQLDriverConnectW.c ${LIBRARY_DIR}/DriverManager/SQLDrivers.c ${LIBRARY_DIR}/DriverManager/SQLDriversW.c ${LIBRARY_DIR}/DriverManager/SQLEndTran.c ${LIBRARY_DIR}/DriverManager/SQLError.c ${LIBRARY_DIR}/DriverManager/SQLErrorW.c ${LIBRARY_DIR}/DriverManager/SQLExecDirect.c ${LIBRARY_DIR}/DriverManager/SQLExecDirectW.c ${LIBRARY_DIR}/DriverManager/SQLExecute.c ${LIBRARY_DIR}/DriverManager/SQLExtendedFetch.c ${LIBRARY_DIR}/DriverManager/SQLFetch.c ${LIBRARY_DIR}/DriverManager/SQLFetchScroll.c ${LIBRARY_DIR}/DriverManager/SQLForeignKeys.c ${LIBRARY_DIR}/DriverManager/SQLForeignKeysW.c ${LIBRARY_DIR}/DriverManager/SQLFreeConnect.c ${LIBRARY_DIR}/DriverManager/SQLFreeEnv.c ${LIBRARY_DIR}/DriverManager/SQLFreeHandle.c ${LIBRARY_DIR}/DriverManager/SQLFreeStmt.c ${LIBRARY_DIR}/DriverManager/SQLGetConnectAttr.c ${LIBRARY_DIR}/DriverManager/SQLGetConnectAttrW.c ${LIBRARY_DIR}/DriverManager/SQLGetConnectOption.c ${LIBRARY_DIR}/DriverManager/SQLGetConnectOptionW.c ${LIBRARY_DIR}/DriverManager/SQLGetCursorName.c ${LIBRARY_DIR}/DriverManager/SQLGetCursorNameW.c ${LIBRARY_DIR}/DriverManager/SQLGetData.c ${LIBRARY_DIR}/DriverManager/SQLGetDescField.c ${LIBRARY_DIR}/DriverManager/SQLGetDescFieldW.c ${LIBRARY_DIR}/DriverManager/SQLGetDescRec.c ${LIBRARY_DIR}/DriverManager/SQLGetDescRecW.c ${LIBRARY_DIR}/DriverManager/SQLGetDiagField.c ${LIBRARY_DIR}/DriverManager/SQLGetDiagFieldW.c ${LIBRARY_DIR}/DriverManager/SQLGetDiagRec.c ${LIBRARY_DIR}/DriverManager/SQLGetDiagRecW.c ${LIBRARY_DIR}/DriverManager/SQLGetEnvAttr.c ${LIBRARY_DIR}/DriverManager/SQLGetFunctions.c ${LIBRARY_DIR}/DriverManager/SQLGetInfo.c ${LIBRARY_DIR}/DriverManager/SQLGetInfoW.c ${LIBRARY_DIR}/DriverManager/SQLGetStmtAttr.c ${LIBRARY_DIR}/DriverManager/SQLGetStmtAttrW.c ${LIBRARY_DIR}/DriverManager/SQLGetStmtOption.c ${LIBRARY_DIR}/DriverManager/SQLGetTypeInfo.c ${LIBRARY_DIR}/DriverManager/SQLGetTypeInfoW.c ${LIBRARY_DIR}/DriverManager/SQLMoreResults.c ${LIBRARY_DIR}/DriverManager/SQLNativeSql.c ${LIBRARY_DIR}/DriverManager/SQLNativeSqlW.c ${LIBRARY_DIR}/DriverManager/SQLNumParams.c ${LIBRARY_DIR}/DriverManager/SQLNumResultCols.c ${LIBRARY_DIR}/DriverManager/SQLParamData.c ${LIBRARY_DIR}/DriverManager/SQLParamOptions.c ${LIBRARY_DIR}/DriverManager/SQLPrepare.c ${LIBRARY_DIR}/DriverManager/SQLPrepareW.c ${LIBRARY_DIR}/DriverManager/SQLPrimaryKeys.c ${LIBRARY_DIR}/DriverManager/SQLPrimaryKeysW.c ${LIBRARY_DIR}/DriverManager/SQLProcedureColumns.c ${LIBRARY_DIR}/DriverManager/SQLProcedureColumnsW.c ${LIBRARY_DIR}/DriverManager/SQLProcedures.c ${LIBRARY_DIR}/DriverManager/SQLProceduresW.c ${LIBRARY_DIR}/DriverManager/SQLPutData.c ${LIBRARY_DIR}/DriverManager/SQLRowCount.c ${LIBRARY_DIR}/DriverManager/SQLSetConnectAttr.c ${LIBRARY_DIR}/DriverManager/SQLSetConnectAttrW.c ${LIBRARY_DIR}/DriverManager/SQLSetConnectOption.c ${LIBRARY_DIR}/DriverManager/SQLSetConnectOptionW.c ${LIBRARY_DIR}/DriverManager/SQLSetCursorName.c ${LIBRARY_DIR}/DriverManager/SQLSetCursorNameW.c ${LIBRARY_DIR}/DriverManager/SQLSetDescField.c ${LIBRARY_DIR}/DriverManager/SQLSetDescFieldW.c ${LIBRARY_DIR}/DriverManager/SQLSetDescRec.c ${LIBRARY_DIR}/DriverManager/SQLSetEnvAttr.c ${LIBRARY_DIR}/DriverManager/SQLSetParam.c ${LIBRARY_DIR}/DriverManager/SQLSetPos.c ${LIBRARY_DIR}/DriverManager/SQLSetScrollOptions.c ${LIBRARY_DIR}/DriverManager/SQLSetStmtAttr.c ${LIBRARY_DIR}/DriverManager/SQLSetStmtAttrW.c ${LIBRARY_DIR}/DriverManager/SQLSetStmtOption.c ${LIBRARY_DIR}/DriverManager/SQLSetStmtOptionW.c ${LIBRARY_DIR}/DriverManager/SQLSpecialColumns.c ${LIBRARY_DIR}/DriverManager/SQLSpecialColumnsW.c ${LIBRARY_DIR}/DriverManager/SQLStatistics.c ${LIBRARY_DIR}/DriverManager/SQLStatisticsW.c ${LIBRARY_DIR}/DriverManager/SQLTablePrivileges.c ${LIBRARY_DIR}/DriverManager/SQLTablePrivilegesW.c ${LIBRARY_DIR}/DriverManager/SQLTables.c ${LIBRARY_DIR}/DriverManager/SQLTablesW.c ${LIBRARY_DIR}/DriverManager/SQLTransact.c ${LIBRARY_DIR}/ini/_iniDump.c ${LIBRARY_DIR}/ini/_iniObjectRead.c ${LIBRARY_DIR}/ini/_iniPropertyRead.c ${LIBRARY_DIR}/ini/_iniScanUntilObject.c ${LIBRARY_DIR}/ini/iniAllTrim.c ${LIBRARY_DIR}/ini/iniAppend.c ${LIBRARY_DIR}/ini/iniClose.c ${LIBRARY_DIR}/ini/iniCommit.c ${LIBRARY_DIR}/ini/iniCursor.c ${LIBRARY_DIR}/ini/iniDelete.c ${LIBRARY_DIR}/ini/iniElement.c ${LIBRARY_DIR}/ini/iniElementCount.c ${LIBRARY_DIR}/ini/iniGetBookmark.c ${LIBRARY_DIR}/ini/iniGotoBookmark.c ${LIBRARY_DIR}/ini/iniObject.c ${LIBRARY_DIR}/ini/iniObjectDelete.c ${LIBRARY_DIR}/ini/iniObjectEOL.c ${LIBRARY_DIR}/ini/iniObjectFirst.c ${LIBRARY_DIR}/ini/iniObjectInsert.c ${LIBRARY_DIR}/ini/iniObjectLast.c ${LIBRARY_DIR}/ini/iniObjectNext.c ${LIBRARY_DIR}/ini/iniObjectSeek.c ${LIBRARY_DIR}/ini/iniObjectSeekSure.c ${LIBRARY_DIR}/ini/iniObjectUpdate.c ${LIBRARY_DIR}/ini/iniOpen.c ${LIBRARY_DIR}/ini/iniProperty.c ${LIBRARY_DIR}/ini/iniPropertyDelete.c ${LIBRARY_DIR}/ini/iniPropertyEOL.c ${LIBRARY_DIR}/ini/iniPropertyFirst.c ${LIBRARY_DIR}/ini/iniPropertyInsert.c ${LIBRARY_DIR}/ini/iniPropertyLast.c ${LIBRARY_DIR}/ini/iniPropertyNext.c ${LIBRARY_DIR}/ini/iniPropertySeek.c ${LIBRARY_DIR}/ini/iniPropertySeekSure.c ${LIBRARY_DIR}/ini/iniPropertyUpdate.c ${LIBRARY_DIR}/ini/iniPropertyValue.c ${LIBRARY_DIR}/ini/iniToUpper.c ${LIBRARY_DIR}/ini/iniValue.c ${LIBRARY_DIR}/log/_logFreeMsg.c ${LIBRARY_DIR}/log/logClear.c ${LIBRARY_DIR}/log/logClose.c ${LIBRARY_DIR}/log/logOn.c ${LIBRARY_DIR}/log/logOpen.c ${LIBRARY_DIR}/log/logPeekMsg.c ${LIBRARY_DIR}/log/logPopMsg.c ${LIBRARY_DIR}/log/logPushMsg.c ${LIBRARY_DIR}/lst/_lstAdjustCurrent.c ${LIBRARY_DIR}/lst/_lstDump.c ${LIBRARY_DIR}/lst/_lstFreeItem.c ${LIBRARY_DIR}/lst/_lstNextValidItem.c ${LIBRARY_DIR}/lst/_lstPrevValidItem.c ${LIBRARY_DIR}/lst/_lstVisible.c ${LIBRARY_DIR}/lst/lstAppend.c ${LIBRARY_DIR}/lst/lstClose.c ${LIBRARY_DIR}/lst/lstDelete.c ${LIBRARY_DIR}/lst/lstEOL.c ${LIBRARY_DIR}/lst/lstFirst.c ${LIBRARY_DIR}/lst/lstGet.c ${LIBRARY_DIR}/lst/lstGetBookMark.c ${LIBRARY_DIR}/lst/lstGoto.c ${LIBRARY_DIR}/lst/lstGotoBookMark.c ${LIBRARY_DIR}/lst/lstInsert.c ${LIBRARY_DIR}/lst/lstLast.c ${LIBRARY_DIR}/lst/lstNext.c ${LIBRARY_DIR}/lst/lstOpen.c ${LIBRARY_DIR}/lst/lstOpenCursor.c ${LIBRARY_DIR}/lst/lstPrev.c ${LIBRARY_DIR}/lst/lstSeek.c ${LIBRARY_DIR}/lst/lstSeekItem.c ${LIBRARY_DIR}/lst/lstSet.c ${LIBRARY_DIR}/lst/lstSetFreeFunc.c ${LIBRARY_DIR}/odbcinst/_logging.c ${LIBRARY_DIR}/odbcinst/_odbcinst_ConfigModeINI.c ${LIBRARY_DIR}/odbcinst/_odbcinst_GetEntries.c ${LIBRARY_DIR}/odbcinst/_odbcinst_GetSections.c ${LIBRARY_DIR}/odbcinst/_odbcinst_SystemINI.c ${LIBRARY_DIR}/odbcinst/_odbcinst_UserINI.c ${LIBRARY_DIR}/odbcinst/_SQLDriverConnectPrompt.c ${LIBRARY_DIR}/odbcinst/_SQLGetInstalledDrivers.c ${LIBRARY_DIR}/odbcinst/_SQLWriteInstalledDrivers.c ${LIBRARY_DIR}/odbcinst/ODBCINSTConstructProperties.c ${LIBRARY_DIR}/odbcinst/ODBCINSTDestructProperties.c ${LIBRARY_DIR}/odbcinst/ODBCINSTSetProperty.c ${LIBRARY_DIR}/odbcinst/ODBCINSTValidateProperties.c ${LIBRARY_DIR}/odbcinst/ODBCINSTValidateProperty.c ${LIBRARY_DIR}/odbcinst/SQLConfigDataSource.c ${LIBRARY_DIR}/odbcinst/SQLConfigDriver.c ${LIBRARY_DIR}/odbcinst/SQLCreateDataSource.c ${LIBRARY_DIR}/odbcinst/SQLGetAvailableDrivers.c ${LIBRARY_DIR}/odbcinst/SQLGetConfigMode.c ${LIBRARY_DIR}/odbcinst/SQLGetInstalledDrivers.c ${LIBRARY_DIR}/odbcinst/SQLGetPrivateProfileString.c ${LIBRARY_DIR}/odbcinst/SQLGetTranslator.c ${LIBRARY_DIR}/odbcinst/SQLInstallDriverEx.c ${LIBRARY_DIR}/odbcinst/SQLInstallDriverManager.c ${LIBRARY_DIR}/odbcinst/SQLInstallerError.c ${LIBRARY_DIR}/odbcinst/SQLInstallODBC.c ${LIBRARY_DIR}/odbcinst/SQLInstallTranslatorEx.c ${LIBRARY_DIR}/odbcinst/SQLManageDataSources.c ${LIBRARY_DIR}/odbcinst/SQLPostInstallerError.c ${LIBRARY_DIR}/odbcinst/SQLReadFileDSN.c ${LIBRARY_DIR}/odbcinst/SQLRemoveDriver.c ${LIBRARY_DIR}/odbcinst/SQLRemoveDriverManager.c ${LIBRARY_DIR}/odbcinst/SQLRemoveDSNFromIni.c ${LIBRARY_DIR}/odbcinst/SQLRemoveTranslator.c ${LIBRARY_DIR}/odbcinst/SQLSetConfigMode.c ${LIBRARY_DIR}/odbcinst/SQLValidDSN.c ${LIBRARY_DIR}/odbcinst/SQLWriteDSNToIni.c ${LIBRARY_DIR}/odbcinst/SQLWriteFileDSN.c ${LIBRARY_DIR}/odbcinst/SQLWritePrivateProfileString.c ) add_library (unixodbc ${SRCS}) target_link_libraries (unixodbc PRIVATE ltdl) # SYSTEM_FILE_PATH was changed to /etc target_include_directories (unixodbc PRIVATE linux_x86_64/private PUBLIC linux_x86_64 ${LIBRARY_DIR}/include ) target_compile_definitions (unixodbc PRIVATE -DHAVE_CONFIG_H) target_compile_options (unixodbc PRIVATE -Wno-dangling-else -Wno-parentheses -Wno-misleading-indentation -Wno-unknown-warning-option -Wno-reserved-id-macro -O2 ) endif () target_compile_definitions (unixodbc INTERFACE USE_ODBC=1) message (STATUS "Using unixodbc")