diff --git a/CMakeLists.txt b/CMakeLists.txt index e92e3efb..2f2d8b64 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ set(SWG_GAME_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/game) find_package(Boost REQUIRED) find_package(Iconv REQUIRED) find_package(LibXml2 REQUIRED) +find_package(Oracle REQUIRED) find_package(STLPort REQUIRED) find_package(ZLib REQUIRED) diff --git a/cmake/FindOracle.cmake b/cmake/FindOracle.cmake new file mode 100644 index 00000000..d672bf45 --- /dev/null +++ b/cmake/FindOracle.cmake @@ -0,0 +1,94 @@ +############################################################################### +# +# CMake module to search for Oracle client library (OCI) +# +# On success, the macro sets the following variables: +# ORACLE_FOUND = if the library found +# ORACLE_LIBRARY = full path to the library +# ORACLE_LIBRARIES = full path to the library +# ORACLE_INCLUDE_DIR = where to find the library headers also defined, +# but not for general use are +# ORACLE_VERSION = version of library which was found, e.g. "1.2.5" +# +# Copyright (c) 2009-2013 Mateusz Loskot +# +# Developed with inspiration from Petr Vanek +# who wrote similar macro for TOra - http://torasql.com/ +# +# Module source: http://github.com/mloskot/workshop/tree/master/cmake/ +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# +############################################################################### + + +# If ORACLE_HOME not defined, assume Oracle libraries not available +if(DEFINED ENV{ORACLE_HOME}) + + + set(ORACLE_HOME $ENV{ORACLE_HOME}) + message("ORACLE_HOME=${ORACLE_HOME}") + + + find_path(ORACLE_INCLUDE_DIR + NAMES oci.h + PATHS + ${ORACLE_HOME}/rdbms/public + ${ORACLE_HOME}/include + ${ORACLE_HOME}/sdk/include # Oracle SDK + ${ORACLE_HOME}/OCI/include) # Oracle XE on Windows + + + set(ORACLE_OCI_NAMES clntsh libclntsh oci) + set(ORACLE_NNZ_NAMES nnz10 libnnz10 nnz11 libnnz11 ociw32) + set(ORACLE_OCCI_NAMES libocci occi oraocci10 oraocci11) + + + set(ORACLE_LIB_DIR + ${ORACLE_HOME}/lib + ${ORACLE_HOME}/sdk/lib # Oracle SDK + ${ORACLE_HOME}/sdk/lib/msvc + ${ORACLE_HOME}/OCI/lib/msvc) # Oracle XE on Windows + + + find_library(ORACLE_OCI_LIBRARY NAMES ${ORACLE_OCI_NAMES} PATHS ${ORACLE_LIB_DIR}) + find_library(ORACLE_OCCI_LIBRARY NAMES ${ORACLE_OCCI_NAMES} PATHS ${ORACLE_LIB_DIR}) + find_library(ORACLE_NNZ_LIBRARY NAMES ${ORACLE_NNZ_NAMES} PATHS ${ORACLE_LIB_DIR}) + + + set(ORACLE_LIBRARY ${ORACLE_OCI_LIBRARY} ${ORACLE_OCCI_LIBRARY} ${ORACLE_NNZ_LIBRARY}) + + + if(APPLE) + set(ORACLE_OCIEI_NAMES libociei ociei) + + + find_library(ORACLE_OCIEI_LIBRARY + NAMES libociei ociei + PATHS ${ORACLE_LIB_DIR}) + + + if(ORACLE_OCIEI_LIBRARY) + set(ORACLE_LIBRARY ${ORACLE_LIBRARY} ${ORACLE_OCIEI_LIBRARY}) + else(ORACLE_OCIEI_LIBRARY) + message(STATUS + "libociei.dylib is not found. It may cause crash if you are building BUNDLE") + endif() + endif() + + + set(ORACLE_LIBRARIES ${ORACLE_LIBRARY}) + + +endif(DEFINED ENV{ORACLE_HOME}) + + +# Handle the QUIETLY and REQUIRED arguments and set ORACLE_FOUND to TRUE +# if all listed variables are TRUE +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ORACLE DEFAULT_MSG ORACLE_LIBRARY ORACLE_INCLUDE_DIR) + + +mark_as_advanced(ORACLE_INCLUDE_DIR ORACLE_LIBRARY) + diff --git a/engine/shared/library/sharedDatabaseInterface/src_oci/CMakeLists.txt b/engine/shared/library/sharedDatabaseInterface/src_oci/CMakeLists.txt index e3312146..a0e9e01f 100644 --- a/engine/shared/library/sharedDatabaseInterface/src_oci/CMakeLists.txt +++ b/engine/shared/library/sharedDatabaseInterface/src_oci/CMakeLists.txt @@ -18,6 +18,7 @@ include_directories( ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedMemoryManager/include/public ${SWG_ENGINE_SOURCE_DIR}/shared/library/sharedSynchronization/include/public ${SWG_EXTERNALS_SOURCE_DIR}/ours/library/unicode/include + ${ORACLE_INCLUDE_DIR} ) add_library(sharedDatabaseInterface_oci STATIC