From b2a11daaa177805d36e33ca57e94093919107269 Mon Sep 17 00:00:00 2001 From: Ville Voutilainen Date: Thu, 5 Sep 2019 10:07:24 +0300 Subject: cmake: Enable building of the oci plugin Change-Id: I003d6da10c7e47402fb373d3956817817328cf0f Reviewed-by: Alexandru Croitor Reviewed-by: Qt CMake Build Bot --- cmake/FindOracle.cmake | 48 +++++++++++++++++++++++++++++++ src/plugins/sqldrivers/CMakeLists.txt | 4 +-- src/plugins/sqldrivers/configure.cmake | 3 +- src/plugins/sqldrivers/oci/CMakeLists.txt | 35 ++++++++++++++++++++++ util/cmake/helper.py | 1 + 5 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 cmake/FindOracle.cmake create mode 100644 src/plugins/sqldrivers/oci/CMakeLists.txt diff --git a/cmake/FindOracle.cmake b/cmake/FindOracle.cmake new file mode 100644 index 0000000000..58e787e362 --- /dev/null +++ b/cmake/FindOracle.cmake @@ -0,0 +1,48 @@ +#.rst: +# FindOracle +# --------- +# +# Try to locate the oracle client library. +# If found, this will define the following variables: +# +# ``Oracle_FOUND`` +# True if the oracle library is available +# ``Oracle_INCLUDE_DIRS`` +# The oracle include directories +# ``Oracle_LIBRARIES`` +# The oracle libraries for linking +# +# If ``Oracle_FOUND`` is TRUE, it will also define the following +# imported target: +# +# ``Oracle::Oracle`` +# The oracle instant client library + +find_path(Oracle_INCLUDE_DIRS + NAMES oci.h + HINTS ${Oracle_INCLUDE_DIR}) + +set(ORACLE_OCI_NAMES clntsh ociei oraociei12) + +find_library(Oracle_LIBRARIES + NAMES NAMES ${ORACLE_OCI_NAMES} + HINTS ${Oracle_LIBRARY_DIR}) + +if (NOT Oracle_INCLUDE_DIRS STREQUAL "Oracle_INCLUDE_DIRS-NOTFOUND" AND NOT Oracle_LIBRARIES STREQUAL "Oracle_LIBRARIES-NOTFOUND") + set(Oracle_FOUND ON) +endif() + +if(Oracle_FOUND AND NOT TARGET Oracle::OCI) + add_library(Oracle::OCI UNKNOWN IMPORTED) + set_target_properties(Oracle::OCI PROPERTIES + IMPORTED_LOCATION "${Oracle_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${Oracle_INCLUDE_DIRS}") +endif() + +mark_as_advanced(Oracle_INCLUDE_DIRS Oracle_LIBRARIES) + +include(FeatureSummary) +set_package_properties(Oracle PROPERTIES + URL "https://www.oracle.com" + DESCRIPTION "Oracle client library") + diff --git a/src/plugins/sqldrivers/CMakeLists.txt b/src/plugins/sqldrivers/CMakeLists.txt index 67101d4e96..75ac876f70 100644 --- a/src/plugins/sqldrivers/CMakeLists.txt +++ b/src/plugins/sqldrivers/CMakeLists.txt @@ -31,11 +31,11 @@ if(QT_FEATURE_sql_tds) endif() if(QT_FEATURE_sql_oci) -# TODO add_subdirectory(oci) + add_subdirectory(oci) endif() if(QT_FEATURE_sql_db2) - add_subdirectory(db2) + add_subdirectory(db2) endif() if(QT_FEATURE_sql_sqlite) diff --git a/src/plugins/sqldrivers/configure.cmake b/src/plugins/sqldrivers/configure.cmake index f57b469318..e34200bf8f 100644 --- a/src/plugins/sqldrivers/configure.cmake +++ b/src/plugins/sqldrivers/configure.cmake @@ -9,6 +9,7 @@ qt_find_package(DB2 PROVIDED_TARGETS DB2::DB2) qt_find_package(MySQL PROVIDED_TARGETS MySQL::MySQL) qt_find_package(PostgreSQL PROVIDED_TARGETS PostgreSQL::PostgreSQL) +qt_find_package(Oracle PROVIDED_TARGETS Oracle::OCI) qt_find_package(ODBC PROVIDED_TARGETS ODBC::ODBC) qt_find_package(SQLite3 PROVIDED_TARGETS SQLite::SQLite3) @@ -33,7 +34,7 @@ qt_feature("sql_mysql" PRIVATE ) qt_feature("sql_oci" PRIVATE LABEL "OCI (Oracle)" - CONDITION libs.oci OR FIXME + CONDITION Oracle_FOUND ) qt_feature("sql_odbc" PRIVATE LABEL "ODBC" diff --git a/src/plugins/sqldrivers/oci/CMakeLists.txt b/src/plugins/sqldrivers/oci/CMakeLists.txt new file mode 100644 index 0000000000..35747834f8 --- /dev/null +++ b/src/plugins/sqldrivers/oci/CMakeLists.txt @@ -0,0 +1,35 @@ +# Generated from oci.pro. + +##################################################################### +## qsqloci Plugin: +##################################################################### + +add_qt_plugin(qsqloci + TYPE sqldrivers + CLASS_NAME QOCIDriverPlugin + SOURCES + main.cpp + qsql_oci.cpp qsql_oci_p.h + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_TO_ASCII + LIBRARIES + Qt::CorePrivate + Qt::SqlPrivate + PUBLIC_LIBRARIES + Oracle::OCI + Qt::Core + Qt::Sql +) + +#### Keys ignored in scope 1:.:.:oci.pro:: +# OTHER_FILES = "oci.json" +# PLUGIN_CLASS_NAME = "QOCIDriverPlugin" + +## Scopes: +##################################################################### + +extend_target(qsqloci CONDITION APPLE + LINK_OPTIONS + "-Wl,-flat_namespace,-U,_environ" +) diff --git a/util/cmake/helper.py b/util/cmake/helper.py index 77ef783965..5d1cfadace 100644 --- a/util/cmake/helper.py +++ b/util/cmake/helper.py @@ -223,6 +223,7 @@ _library_map = [ LibraryMapping('opengl', 'OpenGL', 'OpenGL::GL', resultVariable='OpenGL_OpenGL'), LibraryMapping('openssl_headers', 'OpenSSL', 'OpenSSL::SSL_nolink', resultVariable='OPENSSL_INCLUDE_DIR', appendFoundSuffix=False), LibraryMapping('openssl', 'OpenSSL', 'OpenSSL::SSL'), + LibraryMapping('oci', 'Oracle', 'Oracle::OCI'), LibraryMapping('pcre2', 'WrapPCRE2', 'WrapPCRE2::WrapPCRE2', extra = ['REQUIRED']), LibraryMapping('posix_iconv', None, None), LibraryMapping('pps', 'PPS', 'PPS::PPS'), -- cgit v1.2.3