cmake: Enable building of the oci plugin

Change-Id: I003d6da10c7e47402fb373d3956817817328cf0f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CMake Build Bot
This commit is contained in:
Ville Voutilainen 2019-09-05 10:07:24 +03:00
parent 4ee762cf25
commit b2a11daaa1
5 changed files with 88 additions and 3 deletions

48
cmake/FindOracle.cmake Normal file
View File

@ -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")

View File

@ -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)

View File

@ -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"

View File

@ -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"
)

View File

@ -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'),