FindOracle.cmake 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. # https://github.com/SOCI/soci/blob/master/cmake/modules/FindOracle.cmake
  2. ###############################################################################
  3. #
  4. # CMake module to search for Oracle client library (OCI)
  5. #
  6. # On success, the macro sets the following variables:
  7. # ORACLE_FOUND = if the library found
  8. # ORACLE_LIBRARY = full path to the library
  9. # ORACLE_LIBRARIES = full path to the library
  10. # ORACLE_INCLUDE_DIR = where to find the library headers also defined,
  11. # but not for general use are
  12. # ORACLE_VERSION = version of library which was found, e.g. "1.2.5"
  13. #
  14. # Copyright (c) 2009-2013 Mateusz Loskot <[email protected]>
  15. #
  16. # Developed with inspiration from Petr Vanek <[email protected]>
  17. # who wrote similar macro for TOra - http://torasql.com/
  18. #
  19. # Module source: http://github.com/mloskot/workshop/tree/master/cmake/
  20. #
  21. # Redistribution and use is allowed according to the terms of the BSD license.
  22. # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
  23. #
  24. ###############################################################################
  25. # First check for CMAKE variable
  26. if(NOT ORACLE_HOME)
  27. # If ORACLE_HOME is not defined check for env var and if exists set from env var
  28. if(EXISTS $ENV{ORACLE_HOME})
  29. set(ORACLE_HOME $ENV{ORACLE_HOME})
  30. endif()
  31. endif()
  32. message(STATUS "ORACLE_HOME=${ORACLE_HOME}")
  33. find_path(
  34. ORACLE_INCLUDE_DIR
  35. NAMES oci.h
  36. PATHS ${ORACLE_HOME}/rdbms/public
  37. ${ORACLE_HOME}/include
  38. ${ORACLE_HOME}/sdk/include # Oracle SDK
  39. ${ORACLE_HOME}/OCI/include # Oracle XE on Windows
  40. # instant client from rpm
  41. /usr/include/oracle/*/client${LIB_SUFFIX}
  42. )
  43. set(ORACLE_VERSIONS
  44. 21
  45. 20
  46. 19
  47. 18
  48. 12
  49. 11
  50. 10
  51. )
  52. set(ORACLE_OCI_NAMES clntsh libclntsh oci
  53. )# Dirty trick might help on OSX, see issues/89
  54. set(ORACLE_OCCI_NAMES libocci occi)
  55. set(ORACLE_NNZ_NAMES ociw32)
  56. foreach(loop_var IN LISTS ORACLE_VERSIONS)
  57. set(ORACLE_OCCI_NAMES ${ORACLE_OCCI_NAMES} oraocci${loop_var})
  58. set(ORACLE_NNZ_NAMES ${ORACLE_NNZ_NAMES} nnz${loop_var} libnnz${loop_var})
  59. endforeach(loop_var)
  60. set(ORACLE_LIB_DIR
  61. ${ORACLE_HOME}
  62. ${ORACLE_HOME}/lib
  63. ${ORACLE_HOME}/sdk/lib # Oracle SDK
  64. ${ORACLE_HOME}/sdk/lib/msvc
  65. ${ORACLE_HOME}/OCI/lib/msvc # Oracle XE on Windows
  66. # Instant client from rpm
  67. /usr/lib/oracle/*/client${LIB_SUFFIX}/lib
  68. )
  69. find_library(
  70. ORACLE_OCI_LIBRARY
  71. NAMES ${ORACLE_OCI_NAMES}
  72. PATHS ${ORACLE_LIB_DIR}
  73. )
  74. find_library(
  75. ORACLE_OCCI_LIBRARY
  76. NAMES ${ORACLE_OCCI_NAMES}
  77. PATHS ${ORACLE_LIB_DIR}
  78. )
  79. find_library(
  80. ORACLE_NNZ_LIBRARY
  81. NAMES ${ORACLE_NNZ_NAMES}
  82. PATHS ${ORACLE_LIB_DIR}
  83. )
  84. set(ORACLE_LIBRARY ${ORACLE_OCI_LIBRARY} ${ORACLE_OCCI_LIBRARY}
  85. ${ORACLE_NNZ_LIBRARY}
  86. )
  87. if(NOT WIN32)
  88. set(ORACLE_LIBRARY ${ORACLE_LIBRARY} ${ORACLE_CLNTSH_LIBRARY})
  89. endif(NOT WIN32)
  90. set(ORACLE_LIBRARIES ${ORACLE_LIBRARY})
  91. # Handle the QUIETLY and REQUIRED arguments and set ORACLE_FOUND to TRUE
  92. # if all listed variables are TRUE
  93. include(FindPackageHandleStandardArgs)
  94. find_package_handle_standard_args(
  95. Oracle DEFAULT_MSG ORACLE_LIBRARY ORACLE_INCLUDE_DIR
  96. )
  97. if(NOT ORACLE_FOUND)
  98. message(
  99. STATUS
  100. "None of the supported Oracle versions (${ORACLE_VERSIONS}) could be found, consider updating ORACLE_VERSIONS if the version you use is not among them."
  101. )
  102. endif()
  103. mark_as_advanced(ORACLE_INCLUDE_DIR ORACLE_LIBRARY)