File: FindDB2.cmake

package info (click to toggle)
soci 4.1.2-2~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 17,968 kB
  • sloc: ansic: 169,887; cpp: 54,198; javascript: 12,258; ada: 1,973; sh: 36; makefile: 12; xml: 2
file content (100 lines) | stat: -rw-r--r-- 3,066 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
###############################################################################
# CMake module to search for DB2 client library
#
# On success, the macro sets the following variables:
# DB2_FOUND = if the library found
# DB2_LIBRARIES = full path to the library
# DB2_INCLUDE_DIRS = where to find the library headers
#
# Copyright (c) 2013 Denis Chapligin
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
###############################################################################

if(UNIX)
  set(DB2_INSTALL_PATHS
    /opt/ibm/db2/V11.5
    /opt/ibm/db2/V10.1
    /opt/ibm/db2/V9.7
    /opt/ibm/db2/V9.5
    /opt/ibm/db2/V9.1
    /opt/ibm/clidriver
    /opt/clidriver)

  if(CMAKE_SIZEOF_VOID_P EQUAL 4)
    set(DB2_LIBDIRS "lib32" "lib")
  else()
    set(DB2_LIBDIRS "lib64" "lib")
  endif()

  set(DB2_FIND_INCLUDE_PATHS)
  set(DB2_FIND_LIB_PATHS)
  foreach(db2_install_path ${DB2_INSTALL_PATHS})
    if (IS_DIRECTORY ${db2_install_path}/include)
      set(DB2_FIND_INCLUDE_PATHS
        ${DB2_FIND_INCLUDE_PATHS}
        ${db2_install_path}/include)
    endif()
    foreach(db2_libdir ${DB2_LIBDIRS})
      if (IS_DIRECTORY ${db2_install_path}/${db2_libdir})
        set(DB2_FIND_LIB_PATHS
          ${DB2_FIND_LIB_PATHS}
          ${db2_install_path}/${db2_libdir})
      endif()
    endforeach(db2_libdir)
  endforeach(db2_install_path)
elseif(WIN32)
  if (CMAKE_CL_64) # 64-bit build, DB2 64-bit installed
    set(DB2_FIND_INCLUDE_PATHS $ENV{ProgramW6432}/IBM/SQLLIB/include)
    set(DB2_FIND_LIB_PATHS     $ENV{ProgramW6432}/IBM/SQLLIB/lib)
  else() # 32-bit build, DB2 64-bit or DB2 32-bit installed

    if(EXISTS "$ENV{ProgramW6432}/IBM/SQLLIB/lib")
      # On 64-bit Windows with DB2 64-bit installed:
      # LIB environment points to {DB2}/IBM/SQLLIB/lib with64-bit db2api.lib,
      # this flag prevents checking paths in LIB, so Win32 version can be detected
      set(DB2_FIND_LIB_NO_LIB NO_SYSTEM_ENVIRONMENT_PATH)

    endif()

    set(DB2_FIND_INCLUDE_PATHS
      $ENV{ProgramW6432}/IBM/SQLLIB/include
      $ENV{ProgramFiles}/IBM/SQLLIB/include)
    set(DB2_FIND_LIB_PATHS
      $ENV{ProgramFiles}/IBM/SQLLIB/lib
      $ENV{ProgramFiles}/IBM/SQLLIB/lib/win32
      $ENV{ProgramW6432}/IBM/SQLLIB/lib/win32)
  endif()
endif()

find_path(DB2_INCLUDE_DIRS sqlcli1.h
  $ENV{DB2_INCLUDE_DIR}
  $ENV{DB2_INCLUDE_DIRS}
  $ENV{DB2_DIR}/include
  $ENV{DB2_HOME}
  $ENV{IBM_DB_INCLUDE}
  ${DB2_FIND_INCLUDE_PATHS})

find_library(DB2_LIBRARIES
  NAMES db2 db2api
  PATHS
  $ENV{DB2LIB}
  $ENV{IBM_DB_LIB}
  ${DB2_FIND_LIB_PATHS}
  ${DB2_FIND_LIB_NO_LIB})

if(DB2_LIBRARIES)
  get_filename_component(DB2_LIBRARY_DIR ${DB2_LIBRARIES} PATH)
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(DB2
  REQUIRED_VARS DB2_INCLUDE_DIRS DB2_LIBRARIES
)

add_library(DB2 INTERFACE)
target_link_libraries(DB2 INTERFACE ${DB2_LIBRARIES})
target_include_directories(DB2 SYSTEM INTERFACE ${DB2_INCLUDE_DIRS})
add_library(DB2::DB2 ALIAS DB2)