summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/FindOracle.cmake48
-rw-r--r--src/plugins/sqldrivers/CMakeLists.txt4
-rw-r--r--src/plugins/sqldrivers/configure.cmake3
-rw-r--r--src/plugins/sqldrivers/oci/CMakeLists.txt35
-rw-r--r--util/cmake/helper.py1
5 files changed, 88 insertions, 3 deletions
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:<TRUE>:
+# 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'),