File: config.m4

package info (click to toggle)
php8.4 8.4.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 208,108 kB
  • sloc: ansic: 1,060,628; php: 35,345; sh: 11,866; cpp: 7,201; pascal: 4,913; javascript: 3,091; asm: 2,810; yacc: 2,411; makefile: 689; xml: 446; python: 301; awk: 148
file content (133 lines) | stat: -rw-r--r-- 4,901 bytes parent folder | download
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
define([PDO_ODBC_HELP_TEXT],[[
  The 'flavour' part determines what driver or driver manager to use; it can be
  either ibm-db2, iODBC, unixODBC, or generic.

  The include and lib dirs are looked for under 'dir'.  You may attempt to use
  an otherwise unsupported driver using the 'generic' flavour. The syntax for
  generic ODBC support is: --with-pdo-odbc=generic,dir,libname,ldflags,cflags.
  When built as 'shared' the extension filename is always 'pdo_odbc.so'.

  For unixODBC and iODBC, the 'dir' part is ignored and can be omitted, as
  pkg-config will be searched instead. For ibm-db2, it will search for the DB2
  driver at that path.]])

PHP_ARG_WITH([pdo-odbc],
  [for ODBC v3 support for PDO],
  [AS_HELP_STRING([--with-pdo-odbc=flavour,dir],
    [PDO: Support for 'flavour' ODBC driver.]PDO_ODBC_HELP_TEXT)])

AC_DEFUN([PHP_PDO_ODBC_CHECK_HEADER],
[AC_MSG_CHECKING([for $1])
  AC_PREPROC_IFELSE([AC_LANG_PROGRAM([#include <$1>], [])], [
    php_pdo_odbc_have_header=yes
    AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]), [1],
      [Define to 1 if you have the <$1> header file.])
      AC_MSG_RESULT([yes])
  ],
  [AC_MSG_RESULT([no])])
])

if test "$PHP_PDO_ODBC" != "no"; then
  PHP_CHECK_PDO_INCLUDES

  AC_MSG_CHECKING([for selected PDO ODBC flavour])

  pdo_odbc_flavour="$(echo $PHP_PDO_ODBC | cut -d, -f1)"
  pdo_odbc_dir="$(echo $PHP_PDO_ODBC | cut -d, -f2)"

  if test "$pdo_odbc_dir" = "$PHP_PDO_ODBC" ; then
    pdo_odbc_dir=
  fi

  AS_CASE([$pdo_odbc_flavour],
    [ibm-db2], [
      pdo_odbc_def_libdir=/home/db2inst1/sqllib/lib
      pdo_odbc_def_incdir=/home/db2inst1/sqllib/include
      pdo_odbc_def_lib=db2
    ],
    [iODBC|iodbc], [pdo_odbc_pkgconfig_module=libiodbc],
    [unixODBC|unixodbc], [pdo_odbc_pkgconfig_module=odbc],
    [generic], [
      pdo_odbc_def_lib="$(echo $PHP_PDO_ODBC | cut -d, -f3)"
      pdo_odbc_def_ldflags="$(echo $PHP_PDO_ODBC | cut -d, -f4)"
      pdo_odbc_def_cflags="$(echo $PHP_PDO_ODBC | cut -d, -f5)"
      pdo_odbc_flavour="generic-$pdo_odbc_def_lib"
    ],
    [AC_MSG_ERROR([Unknown ODBC flavour $pdo_odbc_flavour]PDO_ODBC_HELP_TEXT)])

  if test -n "$pdo_odbc_pkgconfig_module"; then
    AC_MSG_RESULT([$pdo_odbc_flavour using pkg-config])
    PKG_CHECK_MODULES([PDO_ODBC], [$pdo_odbc_pkgconfig_module])
  else
    AS_VAR_IF([pdo_odbc_dir],, [
      PDO_ODBC_INCDIR=$pdo_odbc_def_incdir
      PDO_ODBC_LIBDIR=$pdo_odbc_def_libdir
    ], [
      PDO_ODBC_INCDIR="$pdo_odbc_dir/include"
      PDO_ODBC_LIBDIR="$pdo_odbc_dir/$PHP_LIBDIR"
    ])

    AC_MSG_RESULT([$pdo_odbc_flavour
            libs       $PDO_ODBC_LIBDIR,
            headers    $PDO_ODBC_INCDIR])

    if test ! -d "$PDO_ODBC_LIBDIR" ; then
      AC_MSG_WARN([library dir $PDO_ODBC_LIBDIR does not exist])
    fi

    PDO_ODBC_CFLAGS="$pdo_odbc_def_cflags -I$PDO_ODBC_INCDIR"
    PDO_ODBC_LIBS="$pdo_odbc_def_ldflags -L$PDO_ODBC_LIBDIR -l$pdo_odbc_def_lib"

    dnl Check first for an ODBC 1.0 function to assert that the libraries work,
    dnl and then check for an ODBC 3.0 function to assert that they are *good*
    dnl libraries.
    PHP_CHECK_LIBRARY([$pdo_odbc_def_lib], [SQLBindCol],
      [PHP_CHECK_LIBRARY([$pdo_odbc_def_lib], [SQLAllocHandle],
        [],
        [AC_MSG_FAILURE([
Your ODBC library does not appear to be ODBC 3 compatible.
You should consider using iODBC or unixODBC instead, and loading your
libraries as a driver in that environment; it will emulate the
functions required for PDO support.
])],
        [$PDO_ODBC_LIBS])],
      [AC_MSG_FAILURE([Your ODBC library does not exist or there was an error.])],
      [$PDO_ODBC_LIBS])
  fi

  PHP_EVAL_INCLINE([$PDO_ODBC_CFLAGS])
  PHP_EVAL_LIBLINE([$PDO_ODBC_LIBS], [PDO_ODBC_SHARED_LIBADD])

  OLD_CPPFLAGS=$CPPFLAGS
  CPPFLAGS="$CPPFLAGS $PDO_ODBC_CFLAGS"
  PHP_PDO_ODBC_CHECK_HEADER([cli0cli.h])
  PHP_PDO_ODBC_CHECK_HEADER([cli0core.h])
  PHP_PDO_ODBC_CHECK_HEADER([cli0defs.h])
  PHP_PDO_ODBC_CHECK_HEADER([cli0env.h])
  PHP_PDO_ODBC_CHECK_HEADER([cli0ext.h])
  PHP_PDO_ODBC_CHECK_HEADER([iodbc.h])
  PHP_PDO_ODBC_CHECK_HEADER([isql.h])
  PHP_PDO_ODBC_CHECK_HEADER([isqlext.h])
  PHP_PDO_ODBC_CHECK_HEADER([LibraryManager.h])
  PHP_PDO_ODBC_CHECK_HEADER([odbc.h])
  PHP_PDO_ODBC_CHECK_HEADER([sql.h])
  PHP_PDO_ODBC_CHECK_HEADER([sqlcli1.h])
  PHP_PDO_ODBC_CHECK_HEADER([sqlext.h])
  PHP_PDO_ODBC_CHECK_HEADER([sqltypes.h])
  PHP_PDO_ODBC_CHECK_HEADER([sqlucode.h])
  PHP_PDO_ODBC_CHECK_HEADER([sqlunix.h])
  PHP_PDO_ODBC_CHECK_HEADER([udbcext.h])
  CPPFLAGS=$OLD_CPPFLAGS

  AS_VAR_IF([php_pdo_odbc_have_header], [yes],,
    [AC_MSG_ERROR([Cannot find header file(s) for pdo_odbc.])])

  AC_DEFINE_UNQUOTED([PDO_ODBC_TYPE], ["$pdo_odbc_flavour"],
    [Define to the ODBC driver or driver manager value.])

  PHP_NEW_EXTENSION([pdo_odbc],
    [pdo_odbc.c odbc_driver.c odbc_stmt.c],
    [$ext_shared])
  PHP_SUBST([PDO_ODBC_SHARED_LIBADD])
  PHP_ADD_EXTENSION_DEP(pdo_odbc, pdo)
fi