xref: /PHP-5.5/sapi/apache_hooks/config.m4 (revision c6d977dd)
1dnl
2dnl $Id$
3dnl
4AC_DEFUN([PHP_APACHE_FD_CHECK], [
5AC_CACHE_CHECK([for member fd in BUFF *],ac_cv_php_fd_in_buff,[
6  save=$CPPFLAGS
7  if test -n "$APXS_INCLUDEDIR"; then
8    CPPFLAGS="$CPPFLAGS -I$APXS_INCLUDEDIR"
9  else
10    CPPFLAGS="$CPPFLAGS $APACHE_INCLUDE"
11  fi
12  AC_TRY_COMPILE([#include <httpd.h>],[conn_rec *c; int fd = c->client->fd;],[
13    ac_cv_php_fd_in_buff=yes],[ac_cv_php_fd_in_buff=no],[ac_cv_php_fd_in_buff=no])
14  CPPFLAGS=$save
15])
16if test "$ac_cv_php_fd_in_buff" = "yes"; then
17  AC_DEFINE(PHP_APACHE_HAVE_CLIENT_FD,1,[ ])
18fi
19])
20
21dnl Apache 1.x shared module
22PHP_ARG_WITH(apache-hooks,,
23[  --with-apache-hooks[=FILE]
24                          EXPERIMENTAL: Build shared Apache 1.x module. FILE is the optional
25                          pathname to the Apache apxs tool [apxs]], no, no)
26
27AC_MSG_CHECKING([for Apache 1.x (hooks) module support via DSO through APXS])
28
29if test "$PHP_APACHE_HOOKS" != "no"; then
30  if test "$PHP_APACHE_HOOKS" = "yes"; then
31    APXS=apxs
32    $APXS -q CFLAGS >/dev/null 2>&1
33    if test "$?" != "0" && test -x /usr/sbin/apxs; then #SUSE 6.x
34      APXS=/usr/sbin/apxs
35    fi
36  else
37    PHP_EXPAND_PATH($PHP_APACHE_HOOKS, APXS)
38  fi
39
40  $APXS -q CFLAGS >/dev/null 2>&1
41  if test "$?" != "0"; then
42    AC_MSG_RESULT()
43    AC_MSG_RESULT()
44    AC_MSG_RESULT([Sorry, I was not able to successfully run APXS.  Possible reasons:])
45    AC_MSG_RESULT()
46    AC_MSG_RESULT([1.  Perl is not installed;])
47    AC_MSG_RESULT([2.  Apache was not compiled with DSO support (--enable-module=so);])
48    AC_MSG_RESULT([3.  'apxs' is not in your path.  Try to use --with-apxs=/path/to/apxs])
49    AC_MSG_RESULT([The output of $APXS follows])
50    $APXS -q CFLAGS
51    AC_MSG_ERROR([Aborting])
52  fi
53
54  APXS_LDFLAGS="@SYBASE_LFLAGS@ @SYBASE_LIBS@ @SYBASE_CT_LFLAGS@ @SYBASE_CT_LIBS@"
55  APXS_INCLUDEDIR=`$APXS -q INCLUDEDIR`
56  APXS_CFLAGS=`$APXS -q CFLAGS`
57  APXS_HTTPD=`$APXS -q SBINDIR`/`$APXS -q TARGET`
58  APACHE_INCLUDE=-I$APXS_INCLUDEDIR
59
60  # Test that we're trying to configure with apache 1.x
61  PHP_AP_EXTRACT_VERSION($APXS_HTTPD)
62  if test "$APACHE_VERSION" -ge 2000000; then
63    AC_MSG_ERROR([You have enabled Apache 1.3 support while your server is Apache 2.  Please use the appropriate switch --with-apxs2])
64  fi
65
66  for flag in $APXS_CFLAGS; do
67    case $flag in
68    -D*) APACHE_CPPFLAGS="$APACHE_CPPFLAGS $flag";;
69    esac
70  done
71
72  case $host_alias in
73  *aix*)
74    APXS_LIBEXECDIR=`$APXS -q LIBEXECDIR`
75    EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-brtl -Wl,-bI:$APXS_LIBEXECDIR/httpd.exp"
76    PHP_AIX_LDFLAGS="-Wl,-brtl"
77    build_type=shared
78    ;;
79  *darwin*)
80    MH_BUNDLE_FLAGS="-dynamic -twolevel_namespace -bundle -bundle_loader $APXS_HTTPD"
81    PHP_SUBST(MH_BUNDLE_FLAGS)
82    SAPI_SHARED=libs/libphp5.so
83    build_type=bundle
84    ;;
85  *)
86    build_type=shared
87    ;;
88  esac
89
90  PHP_SELECT_SAPI(apache_hooks, $build_type, sapi_apache.c mod_php5.c php_apache.c, $APACHE_CPPFLAGS -I$APXS_INCLUDEDIR)
91
92  # Test whether apxs support -S option
93  $APXS -q -S CFLAGS="$APXS_CFLAGS" CFLAGS >/dev/null 2>&1
94
95  if test "$?" != "0"; then
96    APACHE_HOOKS_INSTALL="$APXS -i -a -n php5 $SAPI_SHARED" # Old apxs does not have -S option
97  else
98    APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR`
99    if test -z `$APXS -q SYSCONFDIR`; then
100      APACHE_HOOKS_INSTALL="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
101                       $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
102                             -i -n php5 $SAPI_SHARED"
103    else
104      APXS_SYSCONFDIR='$(INSTALL_ROOT)'`$APXS -q SYSCONFDIR`
105      APACHE_HOOKS_INSTALL="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
106                      \$(mkinstalldirs) '$APXS_SYSCONFDIR' && \
107                       $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
108                             -S SYSCONFDIR='$APXS_SYSCONFDIR' \
109                             -i -a -n php5 $SAPI_SHARED"
110    fi
111  fi
112
113  if test -z "`$APXS -q LD_SHLIB`" || test "`$APXS -q LIBEXECDIR`" = "modules"; then
114    PHP_APXS_BROKEN=yes
115  fi
116  STRONGHOLD=
117  AC_DEFINE(HAVE_AP_CONFIG_H,1,[ ])
118  AC_DEFINE(HAVE_AP_COMPAT_H,1,[ ])
119  AC_DEFINE(HAVE_APACHE_HOOKS,1,[ ])
120  AC_MSG_RESULT(yes)
121else
122  AC_MSG_RESULT(no)
123fi
124
125dnl Apache 1.x static module
126PHP_ARG_WITH(apache-hooks-static,,
127[  --with-apache-hooks-static[=DIR]
128                          EXPERIMENTAL: Build Apache 1.x module. DIR is the top-level Apache
129                          build directory [/usr/local/apache]], no, no)
130
131AC_MSG_CHECKING(for Apache 1.x (hooks) module support)
132
133if test "$PHP_SAPI" != "apache" && test "$PHP_SAPI" != "apache_hooks" && test "$PHP_APACHE_HOOKS_STATIC" != "no"; then
134
135  if test "$PHP_APACHE_HOOKS_STATIC" = "yes"; then
136    # Apache's default directory
137    PHP_APACHE_HOOKS_STATIC=/usr/local/apache
138  fi
139
140  APACHE_HOOKS_INSTALL_FILES="\$(srcdir)/sapi/apache_hooks/mod_php5.* sapi/apache_hooks/libphp5.module"
141
142  AC_DEFINE(HAVE_APACHE,1,[ ])
143  APACHE_HOOKS_MODULE=yes
144  PHP_EXPAND_PATH($PHP_APACHE_HOOKS_STATIC, PHP_APACHE_HOOKS_STATIC)
145  # For Apache 1.2.x
146  if test -f $PHP_APACHE_HOOKS_STATIC/src/httpd.h; then
147    APACHE_INCLUDE=-I$PHP_APACHE_HOOKS_STATIC/src
148    APACHE_TARGET=$PHP_APACHE_HOOKS_STATIC/src
149    PHP_SELECT_SAPI(apache_hooks, static, sapi_apache.c mod_php5.c php_apache.c, $APACHE_INCLUDE)
150    APACHE_HOOKS_INSTALL="mkdir -p $APACHE_TARGET; cp $SAPI_STATIC $APACHE_HOOKS_INSTALL_FILES $APACHE_TARGET"
151    PHP_LIBS="-L. -lphp3"
152    AC_MSG_RESULT([yes - Apache 1.2.x])
153    STRONGHOLD=
154    if test -f $PHP_APACHE_HOOKS_STATIC/src/ap_config.h; then
155      AC_DEFINE(HAVE_AP_CONFIG_H,1,[ ])
156    fi
157  # For Apache 2.0.x
158  elif test -f $PHP_APACHE_HOOKS_STATIC/include/httpd.h && test -f $PHP_APACHE_HOOKS_STATIC/srclib/apr/include/apr_general.h ; then
159    AC_MSG_ERROR([Use --with-apxs2 with Apache 2.x!])
160  # For Apache 1.3.x
161  elif test -f $PHP_APACHE_HOOKS_STATIC/src/main/httpd.h; then
162    APACHE_HAS_REGEX=1
163    APACHE_INCLUDE="-I$PHP_APACHE_HOOKS_STATIC/src/main -I$PHP_APACHE_HOOKS_STATIC/src/os/unix -I$PHP_APACHE_HOOKS_STATIC/src/ap"
164    APACHE_TARGET=$PHP_APACHE_HOOKS_STATIC/src/modules/php5
165    if test ! -d $APACHE_TARGET; then
166      mkdir $APACHE_TARGET
167    fi
168    PHP_SELECT_SAPI(apache_hooks, static, sapi_apache.c mod_php5.c php_apache.c, $APACHE_INCLUDE)
169    APACHE_HOOKS_INSTALL="mkdir -p $APACHE_TARGET; cp $SAPI_STATIC $APACHE_TARGET/libmodphp5.a; cp $APACHE_HOOKS_INSTALL_FILES $APACHE_TARGET; cp $srcdir/sapi/apache_hooks/apMakefile.tmpl $APACHE_TARGET/Makefile.tmpl; cp $srcdir/sapi/apache_hooks/apMakefile.libdir $APACHE_TARGET/Makefile.libdir"
170    PHP_LIBS="-Lmodules/php5 -L../modules/php5 -L../../modules/php5 -lmodphp5"
171    AC_MSG_RESULT([yes - Apache 1.3.x])
172    STRONGHOLD=
173    if test -f $PHP_APACHE_HOOKS_STATIC/src/include/ap_config.h; then
174      AC_DEFINE(HAVE_AP_CONFIG_H, 1, [ ])
175    fi
176    if test -f $PHP_APACHE_HOOKS_STATIC/src/include/ap_compat.h; then
177      AC_DEFINE(HAVE_AP_COMPAT_H, 1, [ ])
178      if test ! -f $PHP_APACHE_HOOKS_STATIC/src/include/ap_config_auto.h; then
179        AC_MSG_ERROR([Please run Apache\'s configure or src/Configure program once and try again])
180      fi
181    elif test -f $PHP_APACHE_HOOKS_STATIC/src/include/compat.h; then
182      AC_DEFINE(HAVE_OLD_COMPAT_H, 1, [ ])
183    fi
184  # Also for Apache 1.3.x
185  elif test -f $PHP_APACHE_HOOKS_STATIC/src/include/httpd.h; then
186    APACHE_HAS_REGEX=1
187    APACHE_INCLUDE="-I$PHP_APACHE_HOOKS_STATIC/src/include -I$PHP_APACHE_HOOKS_STATIC/src/os/unix"
188    APACHE_TARGET=$PHP_APACHE_HOOKS_STATIC/src/modules/php5
189    if test ! -d $APACHE_TARGET; then
190      mkdir $APACHE_TARGET
191    fi
192    PHP_SELECT_SAPI(apache_hooks, static, sapi_apache.c mod_php5.c php_apache.c, $APACHE_INCLUDE)
193    PHP_LIBS="-Lmodules/php5 -L../modules/php5 -L../../modules/php5 -lmodphp5"
194    APACHE_HOOKS_INSTALL="mkdir -p $APACHE_TARGET; cp $SAPI_STATIC $APACHE_TARGET/libmodphp5.a; cp $APACHE_HOOKS_INSTALL_FILES $APACHE_TARGET; cp $srcdir/sapi/apache_hooks/apMakefile.tmpl $APACHE_TARGET/Makefile.tmpl; cp $srcdir/sapi/apache_hooks/apMakefile.libdir $APACHE_TARGET/Makefile.libdir"
195    AC_MSG_RESULT([yes - Apache 1.3.x])
196    STRONGHOLD=
197    if test -f $PHP_APACHE_HOOKS_STATIC/src/include/ap_config.h; then
198      AC_DEFINE(HAVE_AP_CONFIG_H, 1, [ ])
199    fi
200    if test -f $PHP_APACHE_HOOKS_STATIC/src/include/ap_compat.h; then
201      AC_DEFINE(HAVE_AP_COMPAT_H, 1, [ ])
202      if test ! -f $PHP_APACHE_HOOKS_STATIC/src/include/ap_config_auto.h; then
203        AC_MSG_ERROR([Please run Apache\'s configure or src/Configure program once and try again])
204      fi
205    elif test -f $PHP_APACHE_HOOKS_STATIC/src/include/compat.h; then
206      AC_DEFINE(HAVE_OLD_COMPAT_H, 1, [ ])
207    fi
208  # For StrongHold 2.2
209  elif test -f $PHP_APACHE_HOOKS_STATIC/apache/httpd.h; then
210    APACHE_INCLUDE="-I$PHP_APACHE_HOOKS_STATIC/apache -I$PHP_APACHE_HOOKS_STATIC/ssl/include"
211    APACHE_TARGET=$PHP_APACHE_HOOKS_STATIC/apache
212    PHP_SELECT_SAPI(apache_hooks, static, sapi_apache.c mod_php5.c php_apache.c, $APACHE_INCLUDE)
213    PHP_LIBS="-Lmodules/php5 -L../modules/php5 -L../../modules/php5 -lmodphp5"
214    APACHE_HOOKS_INSTALL="mkdir -p $APACHE_TARGET; cp $SAPI_STATIC $APACHE_TARGET/libmodphp5.a; cp $APACHE_HOOKS_INSTALL_FILES $APACHE_TARGET"
215    STRONGHOLD=-DSTRONGHOLD=1
216    AC_MSG_RESULT([yes - StrongHold])
217    if test -f $PHP_APACHE_HOOKS_STATIC/apache/ap_config.h; then
218      AC_DEFINE(HAVE_AP_CONFIG_H, 1, [ ])
219    fi
220    if test -f $PHP_APACHE_HOOKS_STATIC/src/ap_compat.h; then
221      AC_DEFINE(HAVE_AP_COMPAT_H, 1, [ ])
222      if test ! -f $PHP_APACHE_HOOKS_STATIC/src/include/ap_config_auto.h; then
223        AC_MSG_ERROR([Please run Apache\'s configure or src/Configure program once and try again])
224      fi
225    elif test -f $PHP_APACHE_HOOKS_STATIC/src/compat.h; then
226      AC_DEFINE(HAVE_OLD_COMPAT_H, 1, [ ])
227    fi
228  else
229    AC_MSG_RESULT(no)
230    AC_MSG_ERROR([Invalid Apache directory - unable to find httpd.h under $PHP_APACHE_HOOKS_STATIC])
231  fi
232else
233  AC_MSG_RESULT(no)
234fi
235
236# compatibility
237if test -z "$enable_mod_charset" && test "$with_mod_charset"; then
238  enable_mod_charset=$with_mod_charset
239fi
240
241PHP_ARG_ENABLE(mod-charset, whether to enable Apache charset compatibility option,
242[  --enable-mod-charset    APACHE (hooks): Enable transfer tables for mod_charset (Rus Apache)], no, no)
243
244if test "$PHP_MOD_CHARSET" = "yes"; then
245  AC_DEFINE(USE_TRANSFER_TABLES, 1, [ ])
246fi
247
248dnl Build as static module
249if test "$APACHE_HOOKS_MODULE" = "yes"; then
250  PHP_TARGET_RDYNAMIC
251  $php_shtool mkdir -p sapi/apache_hooks
252  PHP_OUTPUT(sapi/apache_hooks/libphp5.module)
253fi
254
255dnl General
256if test -n "$APACHE_HOOKS_INSTALL"; then
257  if test "x$APXS" != "x" -a "`uname -sv`" = "AIX 4" -a "$GCC" != "yes"; then
258    APXS_EXP=-bE:sapi/apache_hooks/mod_php5.exp
259  fi
260
261  PHP_APACHE_FD_CHECK
262  INSTALL_IT=$APACHE_HOOKS_INSTALL
263
264  PHP_SUBST(APXS_EXP)
265  PHP_SUBST(APACHE_INCLUDE)
266  PHP_SUBST(APACHE_TARGET)
267  PHP_SUBST(APXS)
268  PHP_SUBST(APXS_LDFLAGS)
269  PHP_SUBST(APACHE_HOOKS_INSTALL)
270  PHP_SUBST(STRONGHOLD)
271fi
272
273dnl ## Local Variables:
274dnl ## tab-width: 4
275dnl ## End:
276