ClickHouse/contrib/unixodbc-cmake/CMakeLists.txt
Matwey V. Kornilov 338e772393 contrib/unixodbc-cmake: Fix build when UNBUNDLED
target_compile_definitions may only set INTERFACE properties on IMPORTED targets
2020-07-04 10:21:56 +03:00

319 lines
15 KiB
CMake

option (ENABLE_ODBC "Enable ODBC library" ${ENABLE_LIBRARIES})
if (NOT OS_LINUX)
set (ENABLE_ODBC OFF CACHE INTERNAL "")
endif ()
if (ENABLE_ODBC)
option (USE_INTERNAL_ODBC_LIBRARY "Use internal ODBC library" ${NOT_UNBUNDLED})
if (USE_INTERNAL_ODBC_LIBRARY)
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
)
else ()
add_library (unixodbc UNKNOWN IMPORTED)
find_library (LIBRARY_ODBC unixodbc)
find_path (INCLUDE_ODBC sql.h)
set_target_properties (unixodbc PROPERTIES IMPORTED_LOCATION ${LIBRARY_ODBC})
set_target_properties (unixodbc PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INCLUDE_ODBC})
endif ()
target_compile_definitions (unixodbc INTERFACE USE_ODBC=1)
message (STATUS "Using unixodbc")
else ()
add_library (unixodbc INTERFACE)
target_compile_definitions (unixodbc INTERFACE USE_ODBC=0)
message (STATUS "Not using unixodbc")
endif ()