summaryrefslogtreecommitdiffstatsabout
path: root/m4/apache.m4
blob: b74f335d38575cf39ad4f5377bb8aef209b5c00f (plain)
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
dnl CHECK_PATH_APACHE([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
dnl Test for Apache apxs
dnl
AC_DEFUN(CHECK_PATH_APACHE,
[dnl
AC_ARG_WITH(
		apache,
		[  --with-apache[=DIR]       Apache install root],
		apache_prefix="$withval",
		apache_prefix="/usr"
	)
AC_ARG_ENABLE(apachetest, [  --disable-apachetest    Do not try to compile and run apache version test program],
					, enable_apachetest=yes)


	AC_REQUIRE([AC_CANONICAL_TARGET])
	PATH="$apache_prefix:$apache_prefix/bin:$apache_prefix/sbin:$PATH"
	AC_PATH_PROG(APXS_BIN, apxs, no, [$PATH])
	min_apache_version=ifelse([$1], ,1.3.1,$1)
	AC_MSG_CHECKING(for Apache - version >= $min_apache_version)
	no_apxs=""
	if test "$APXS_BIN" == "no"; then
		no_apxs=yes
	else
		APACHE_INCDIR=`$APXS_BIN -q INCLUDEDIR`
		APACHE_CFLAGS=-I$APACHE_INCDIR
		APACHE_MODDIR=`$APXS_BIN -q LIBEXECDIR`

		if test "x$enable_apachetest" = "xyes" ; then
			ac_save_CFLAGS="$CFLAGS"
			CFLAGS="$CFLAGS $APACHE_CFLAGS"
		AC_TRY_RUN([
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "httpd.h"

#ifndef AP_SERVER_BASEREVISION
	#define AP_SERVER_BASEREVISION SERVER_BASEREVISION
#endif

char* my_strdup (char *str)
{
	char *new_str;

	if (str) {
		new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
		strcpy (new_str, str);
	} else
		new_str = NULL;

	return new_str;
}

int main (int argc, char *argv[])
{
	int major1, minor1, micro1;
	int major2, minor2, micro2;
	char *tmp_version;

	{ FILE *fp = fopen("conf.apachetest", "a"); if ( fp ) fclose(fp); }

	tmp_version = my_strdup("$min_apache_version");
	if (sscanf(tmp_version, "%d.%d.%d", &major1, &minor1, &micro1) != 3) {
		printf("%s, bad version string\n", "$min_apache_version");
		exit(1);
	}
	tmp_version = my_strdup(AP_SERVER_BASEREVISION);
	if (sscanf(tmp_version, "%d.%d.%d", &major2, &minor2, &micro2) != 3) {
		printf("%s, bad version string\n", AP_SERVER_BASEREVISION);
		exit(1);
	}
	if ((major2 > major1) ||
		((major2 == major1) && (minor2 > minor1)) ||
		((major2 == major1) && (minor2 == minor1) && (micro2 >= micro1)))
	{
		return 0;
	} else {
		printf("\n*** This module requires apache version %d.%d.%d or greater\n",
			major1, minor1, micro1);
		printf("*** I found version %d.%d.%d. Please verify the installation directory\n",
			major2, minor2, micro2);
		printf("*** of apache with the --with-apache configure option.\n");
		return 1;
	}
}

],, no_apxs=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
			CFLAGS="$ac_save_CFLAGS"
   		fi
   	fi
   	if test "x$no_apxs" = x ; then
   		AC_MSG_RESULT(yes)
		ifelse([$2], , :, [$2])
   	else
    	AC_MSG_RESULT(no)
		if test "APXS_BIN" = "no" ; then
			echo "*** The apxs binary installed by apache could not be found"
			echo "*** If apache is installed in PREFIX, make sure PREFIX/bin is in"
			echo "*** your path, or use the --with-apache configure option"
		else
			if test -f conf.apachetest ; then
				:
			else
				echo "*** Could not run Apache test program, checking why..."
				CFLAGS="$CFLAGS APACHE_CFLAGS"
				AC_TRY_LINK([
#include <stdio.h>
#include "httpd.h"

int main(int argc, char *argv[])
{ return 0; }
#undef main
#define main K_and_R_C_main
],					[ return 0; ],
					[ echo "*** The test program compiled, but failed to run. Check config.log" ],
					[ echo "*** The test program failed to compile or link. Check config.log" ])
				CFLAGS="$ac_save_CFLAGS"
			fi
		fi
	 	APACHE_CFLAGS=""
	 	ifelse([$3], , :, [$3])
  	fi
  	AC_SUBST(APACHE_CFLAGS)
	AC_SUBST(APACHE_INCDIR)
	AC_SUBST(APACHE_MODDIR)
  	rm -f conf.apachetest
])