1AC_INIT(modules/c/src/apache2/mod_caucho.c)
2AC_PREFIX_DEFAULT(`pwd`)
3AC_CONFIG_AUX_DIR(automake)
4
5dnl Get os info
6AC_CANONICAL_SYSTEM
7
8AM_INIT_AUTOMAKE(resin, 3.1.1)
9
10FULL_VERSION="Resin $VERSION -- `date`"
11AC_SUBST(FULL_VERSION)
12
13dnl Checks for programs.
14AC_PROG_CC
15AC_PROG_LD
16AC_PROG_EGREP
17
18dnl Checks for poll.h
19AC_CHECK_HEADER(sys/poll.h, [ CFLAGS="$CFLAGS -DPOLL" ])
20dnl Checks for epoll.h
21AC_CHECK_HEADER(sys/epoll.h, [ CFLAGS="$CFLAGS -DEPOLL" ])
22
23AC_PROG_LIBTOOL
24#
25# libtool stuff
26#
27if test -z "${LTFLAGS}"; then
28  LTFLAGS="--silent"
29fi
30
31LIBTOOL_SCRIPT="`pwd`/libtool"
32LIBTOOL="${LIBTOOL_SCRIPT} ${LTFLAGS}"
33libtoolversion=`${SHELL} ${LIBTOOL_SCRIPT} --version`
34case $libtoolversion in
35     *1.4*)
36       SH_LIBTOOL="${LIBTOOL_SCRIPT}"
37       SHLTCFLAGS="-prefer-pic"
38       LTCFLAGS="-prefer-non-pic -static"
39       ;;
40     *)
41       SH_LIBTOOL="${SHELL} ${LIBTOOL_SCRIPT} ${LTFLAGS}"
42       SHLTCFLAGS=""
43       LTCFLAGS=""
44       ;;
45esac
46
47AC_SUBST(LTFLAGS)
48AC_SUBST(LIBTOOL_SCRIPT)
49AC_SUBST(LIBTOOL)
50AC_SUBST(SH_LIBTOOL)
51AC_SUBST(LTCFLAGS)
52AC_SUBST(EGREP)
53
54INCLUDES=""
55plugins=common
56LIBEXEC=libexec
57
58AC_SUBST(plugins)
59AC_SUBST(LIBEXEC)
60dnl should be unnecessary
61AC_SUBST(LD)
62
63ACLOCAL=aclocal
64AUTOMAKE=automake
65AC_SUBST(ACLOCAL)
66AC_SUBST(AUTOMAKE)
67
68#
69# additional CFLAGS
70#
71# for solaris
72CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS"
73
74#
75# --with-apache-src
76#
77AC_ARG_WITH(apache-src,
78[  --with-apache-src=DIR  Apache src static compilation
79], [
80apache_src=${withval}
81
82if test -d "${apache_src}/modules"; then
83  a=b
84elif test -d "${apache_src}/src/modules"; then
85  apache_src=${apache_src}/src
86else
87  AC_MSG_ERROR([Can't find valid Apache source ${apache_src}])
88fi
89
90echo "using Apache source in ${apache_src}"
91
92mkdir ${apache_src}/modules/caucho 2> /dev/null
93cp modules/c/src/common/*.c ${apache_src}/modules/caucho
94cp modules/c/src/common/*.h ${apache_src}/modules/caucho
95cp modules/c/src/apache/*.c ${apache_src}/modules/caucho
96
97cat > ${apache_src}/modules/caucho/Makefile.tmpl <<'END'
98LIB=libcaucho.a
99OBJS=mod_caucho.o stream.o config.o registry.o memory.o
100
101OBJS_PIC=mod_caucho.lo stream.lo config.lo registry.lo memory.lo
102
103$(OBJS) $(OBJS_PIC): Makefile
104
105all: lib
106
107lib: $(LIB)
108
109libcaucho.a: $(OBJS)
110	rm -f $@
111	ar cr $@ $(OBJS)
112	$(RANLIB) $@
113
114libcaucho.o: $(OBJS)
115	$(LD) $(LDFLAGS) -r -o $@ $(OBJS)
116
117libcaucho.so: $(OBJS_PIC)
118	rm -f $@
119	$(LD_SHLIB) $(LDFLAGS_SHLIB) -o $@ $(OBJS_PIC) $(LIBS_SHLIB)
120
121.SUFFIXES: .o .lo
122
123.c.o:
124	$(CC) -c $(INCLUDES) $(CFLAGS) $<
125
126.c.lo:
127	$(CC) -c $(INCLUDES) $(CFLAGS) $(CFLAGS_SHLIB) $< && mv $*.o $*.lo
128
129# DO NOT REMOVE
130mod_caucho.o: cse.h
131mod_caucho.lo: cse.h
132stream.o: cse.h
133stream.lo: cse.h
134config.o: cse.h
135config.lo: cse.h
136registry.o: cse.h
137registry.lo: cse.h
138memory.o: cse.h
139memory.lo: cse.h
140
141END
142
143cat > ${apache_src}/modules/caucho/Makefile.libdir <<'END'
144# dummy
145END
146
147#grep caucho ${apache_src}/src/Configuration.tmpl >/dev/null 2>/dev/null
148#if test "$?" -ne 0; then
149#  cat >> ${apache_src}/src/Configuration.tmpl <<'END'
150## mod_caucho incorporates Resin into Apache.
151#
152## AddModule modules/caucho/libcaucho.a
153#END
154#fi
155
156])
157#
158# --with-apache
159#
160AC_ARG_WITH(apache,
161[  --with-apache=DIR  the Apache root directory
162], [
163apache_dir=${withval}
164
165if test "${apache_dir}" = "yes"; then
166  apache_dir=/usr/local/apache
167fi
168
169if test ! -d "${apache_dir}"; then
170  AC_MSG_ERROR([--with-apache=${apache_dir} is not a valid Apache directory])
171fi
172
173apache=1
174])
175
176#
177# --with-apxs
178#
179AC_ARG_WITH(apxs,
180[  --with-apxs=PATH  the Apache configuration utility
181], [
182apxs=${withval}
183
184if test "${apxs}" = "yes"; then
185  apxs=apxs
186fi
187
188apache=1
189])
190
191#
192# --with-apache-eapi
193#
194AC_ARG_WITH(apache-eapi,
195[  --with-apache-eapi=DIR  Apache eapi support
196], [
197apache_eapi=${withval}
198])
199
200#
201# --with-apache-include
202#
203AC_ARG_WITH(apache-include,
204[  --with-apache-include=DIR  the Apache include directory
205], [
206apache_include=${withval}
207
208if test "${apache_include}" = "yes"; then
209    apache_include=
210fi
211
212apache=1
213])
214
215#
216# --with-apache-libexec
217#
218AC_ARG_WITH(apache-libexec,
219[  --with-apache-libexec=DIR  the Apache module directory
220], [
221apache_libexec=${withval}
222
223if test "${apache_libexec}" = "yes"; then
224    apache_libexec=
225fi
226
227apache=1
228])
229
230#
231# --with-apache-conf
232#
233AC_ARG_WITH(apache-conf,
234[  --with-apache-conf=DIR  the Apache configuration
235], [
236apache_conf=${withval}
237
238if test "${apache_conf}" = "yes"; then
239    apache_conf=
240fi
241
242apache=1
243])
244
245apache_cflags=
246
247#
248# --with-apache-cflags
249#
250AC_ARG_WITH(apache-cflags,
251[  --with-apache-cflags=flags  flags for compiling mod_caucho
252], [
253apache_cflags=${withval}
254
255apache=1
256])
257
258#
259# check that apxs is okay
260#
261if test -n "${apxs}"; then
262  ${apxs} -q PREFIX >/dev/null 2>/dev/null
263  if test "$?" -ne 0; then
264    AC_MSG_ERROR(bad apxs ${apxs})
265  fi
266elif test -x "${apache_bin}/apxs"; then
267  apxs=${apache_bin}/apxs
268elif test -x "${apache_dir}/bin/apxs"; then
269  apxs=${apache_dir}/bin/apxs
270elif test -x "${apache_dir}/sbin/apxs"; then
271  apxs=${apache_dir}/sbin/apxs
272elif test -x "/sbin/apxs"; then
273  apxs=/sbin/apxs
274elif test -x "/usr/sbin/apxs"; then
275  apxs=/usr/sbin/apxs
276fi
277
278#
279# heuristics for finding the Apache include directory
280#
281if test -z "${apache_include}" -a -n "${apxs}"; then
282  apache_include=`${apxs} -q INCLUDEDIR`
283fi
284
285if test -z "${apache_include}" -a -r "${apache_dir}/include/httpd.h"; then
286  apache_include=${apache_dir}/include
287fi
288
289if test -n "${apache_include}"; then
290  APACHE_INC="-I${apache_include}"
291fi
292
293#
294# deal with stronghold
295#
296if test -z "${apache_include}" -a -r "${apache_dir}/src/include/httpd.h"; then
297  apache_include=${apache_dir}/src/include
298
299  APACHE_INC="-I${apache_dir}/src/include"
300  APACHE_INC="-I${apache_dir}/ssl/include $APACHE_INC"
301  APACHE_INC="-I${apache_dir}/src/os/unix $APACHE_INC"
302fi
303
304if test -n "$apache" -a ! -r ${apache_include}/httpd.h; then
305  AC_MSG_ERROR([Can't find Apache include directory ${apache_include}])
306fi
307
308#
309# heuristics for finding the Apache bin directory
310#
311if test -n "${apache_bin}"; then
312  a=b
313elif test -x "${apxs}"; then
314  apache_bin=`${apxs} -q SBINDIR`
315  apache_exe="${apache_bin}/`${apxs} -q TARGET`"
316elif test -n "${apache_dir}"; then
317  apache_bin="${apache_dir}/bin"
318fi
319
320if test -n "${apache_exe}"; then
321 a=b;
322elif test -z "${apache_bin}"; then
323 a=b;
324elif test -x "${apache_bin}/httpd"; then
325 apache_exe="${apache_bin}/httpd"
326elif test -x "${apache_bin}/apache"; then
327 apache_exe="${apache_bin}/apache"
328elif test -x "${apache_bin}/httpd2"; then
329 apache_exe="${apache_bin}/httpd2"
330elif test -x "${apache_bin}/apache2"; then
331 apache_exe="${apache_bin}/apache2"
332fi
333
334if test -n "${apache_exe}" -a ! -x "${apache_exe}"; then
335  AC_MSG_ERROR([Can't find Apache binary in directory ${apache_exe}])
336fi
337
338#
339# heuristics for finding the Apache module directory
340#
341if test -z "${apache_libexec}" -a -n "${apxs}"; then
342  apache_libexec=`${apxs} -q LIBEXECDIR`
343fi
344
345if test -z "${apache_libexec}" -a -d "${apache_dir}/libexec"; then
346  apache_libexec=${apache_dir}/libexec
347fi
348
349if test -z "${apache_libexec}" -a -d "${apache_dir}/modules"; then
350  apache_libexec=${apache_dir}/modules
351fi
352
353if test -n "$apache" -a ! -d "${apache_libexec}"; then
354  AC_MSG_ERROR([Can't find Apache module directory ${apache_libexec}])
355fi
356
357#
358# Heuristics for finding the Apache configuration directory
359#
360
361if test -z "${apache_conf}" -a -n "${apxs}"; then
362  apache_confdir=`${apxs} -q SYSCONFDIR`
363
364  if test -r "${apache_confdir}"/httpd.conf; then
365    apache_conf=${apache_confdir}/httpd.conf
366  elif test -r "${apache_confdir}"/apache.conf; then
367    apache_conf=${apache_confdir}/apache.conf
368  elif test -r "${apache_confdir}"/apache2.conf; then
369    apache_conf=${apache_confdir}/apache2.conf
370  elif test -r "${apache_confdir}"/httpsd.conf; then
371    apache_conf=${apache_confdir}/httpsd.conf
372  fi
373fi
374
375if test -z "${apache_conf}" -a -r "${apache_dir}/conf/httpd.conf"; then
376  apache_conf=${apache_dir}/conf/httpd.conf
377fi
378
379if test -z "${apache_conf}" -a -r "${apache_dir}/etc/httpd.conf"; then
380  apache_conf=${apache_dir}/etc/httpd.conf
381fi
382
383if test -n "$apache" -a ! -r "${apache_conf}"; then
384  AC_MSG_ERROR([Can't find Apache module configuration ${apache_conf}])
385fi
386
387#
388# check for apr
389#
390if test -x "${apxs}"; then
391   apr_bin=`${apxs} -q APR_BINDIR 2> /dev/null`
392   if test -x "${apr_bin}/apr-config"; then
393     apr_inc=`"${apr_bin}/apr-config" --includes`
394     APACHE_INC="${APACHE_INC} ${apr_inc}"
395   elif test -x "${apr_bin}/apr-1-config"; then
396     apr_inc=`"${apr_bin}/apr-1-config" --includes`
397     APACHE_INC="${APACHE_INC} ${apr_inc}"
398   fi
399fi
400
401#
402# Apache CFLAGS
403#
404
405if test -z "$apache_cflags" -a -x "${apxs}"; then
406   if test -x "${apr_bin}/apr-config"; then
407     apache_cflags="$apache_cflags `${apr_bin}/apr-config --cppflags`"
408     apache_cflags="$apache_cflags `${apr_bin}/apr-config --cflags`"
409   elif test -x "${apr_bin}/apr-1-config"; then
410     apache_cflags="$apache_cflags `${apr_bin}/apr-1-config --cppflags`"
411     apache_cflags="$apache_cflags `${apr_bin}/apr-1-config --cflags`"
412   else
413     apache_cflags="`${apxs} -q CFLAGS`"
414   fi
415 fi
416
417if test -z "$apache_cflags" -a -x "${apache_exe}"; then
418   flags=`${apache_exe} -V | grep EAPI`
419   if test -n "$flags"; then
420     apache_cflags=-DEAPI
421   fi
422fi
423
424if test -z "$apache_dir" -a -x "${apxs}"; then
425   apache_dir=`${apxs} -q PREFIX`
426fi
427
428AC_SUBST(APACHE_INC)
429AC_SUBST(apache_libexec)
430AC_SUBST(apache_conf)
431AC_SUBST(apache_dir)
432AC_SUBST(apache_cflags)
433#
434# fill in compilation stuff
435#
436SO=so
437
438is_gcc=`${CC} -v 2>&1 | grep gcc`
439is_gnu_ld=`${LD} -v 2>&1 | grep GNU`
440
441#
442# Use apxs if it's available
443#
444if test -z "${LD_SHLIB}"; then
445  if test -n "${apxs}"; then
446    CFLAGS_SHLIB=`${apxs} -q CFLAGS_SHLIB`
447    LD_SHLIB=`${apxs} -q LD_SHLIB`
448    LDFLAGS_SHLIB=`${apxs} -q LDFLAGS_SHLIB`
449    LIBS_SHLIB=`${apxs} -q LIBS_SHLIB`
450
451    echo "Using shared library flags from ${apxs}"
452  fi
453fi
454#
455# --with-java-home
456#
457AC_ARG_WITH(java-home,
458[  --with-java-home=DIR  java home
459], [
460JAVA_HOME=${withval}
461])
462
463if test -z "$JAVA_HOME"; then
464  java=`which java 2>/dev/null`
465  if test $? = "0"; then
466    while test -h "$java"
467    do
468      head=`dirname $java`
469      tail=`/bin/ls -l $java | awk '{ print $NF; }'`
470      if test -f "$tail"; then
471        java=$tail
472      else
473        java=$head/$tail
474      fi
475    done
476
477    javabin=`dirname $java`
478    JAVA_HOME=`cd $javabin/..; pwd`
479
480    # we're in $JAVA_HOME/jre
481    if test -f "$JAVA_HOME/lib/rt.jar"; then
482      JAVA_HOME=`cd $JAVA_HOME/..; pwd`
483    elif test -d "/usr/java"; then
484      JAVA_HOME=/usr/java
485    elif test -f "/System/Library/Frameworks/JavaVM.framework"; then
486      JAVA_HOME="/System/Library/Frameworks/JavaVM.framework"
487    fi
488  elif test -d "/usr/java"; then
489    JAVA_HOME=/usr/java
490  elif test -f "/System/Library/Frameworks/JavaVM.framework"; then
491    JAVA_HOME="/System/Library/Frameworks/JavaVM.framework"
492  fi
493fi
494
495echo $ac_n "checking for JAVA_HOME... $JAVA_HOME"
496
497if test ! -d "$JAVA_HOME"; then
498  AC_MSG_ERROR([Can't find valid JAVA_HOME ${JAVA_HOME}])
499fi
500
501AC_SUBST(JAVA_HOME)
502#
503# Resin home
504#
505resin_home=`pwd`
506AC_SUBST(resin_home)
507
508
509#
510# 64bit heuristics
511#
512echo -n "checking if Java is 64-bit... "
513
514tmpname="/tmp/java$$.out"
515
516$JAVA_HOME/bin/java -version 2> $tmpname
517grep "64-Bit" $tmpname 1> /dev/null
518if test "$?" = "0"; then
519   b64_jni=true
520fi
521
522grep "amd64-64" $tmpname 1> /dev/null
523if test "$?" = "0"; then
524   b64_jni=true
525fi
526
527grep "x86_64" $tmpname 1> /dev/null
528if test "$?" = "0"; then
529   b64_jni=true
530fi
531
532$JAVA_HOME/bin/sparcv9/java -version 2> $tmpname
533grep "64-Bit" $tmpname 1> /dev/null
534
535if test "$?" = "0"; then
536   b64_jni=true
537fi
538
539$JAVA_HOME/bin/amd64/java -version 2> $tmpname
540grep "64-Bit" $tmpname 1> /dev/null
541
542if test "$?" = "0"; then
543   b64_jni=true
544fi
545
546# Require user to use --enable-64bit if the version is optional
547# in the javac
548#
549#$JAVA_HOME/bin/java -d64 -version 2> $tmpname
550#grep "64-Bit" $tmpname 1> /dev/null
551
552#if test "$?" = "0"; then
553#   b64_jni=true
554#fi
555
556if test -n "$b64_jni"; then
557   echo "yes"
558else
559   echo "no"
560fi
561
562rm -f $tmpname
563
564#
565# --enable-64bit
566#
567AC_ARG_ENABLE(64bit,
568[  --enable-64bit    Enable 64 bit],
569[case "${enableval}" in
570 yes) b64=true ;;
571 no)  b64=""; b64_jni="" ;;
572 *) AC_MSG_ERROR(bad value ${enableval} for --enable-64bit) ;;
573 esac],[])
574
575if test -n "${b64}"; then
576   b64_jni=true
577fi
578
579if test -n "${b64_jni}"; then
580   CFLAGS="$CFLAGS -DB64"
581   LIBEXEC=libexec64
582fi
583
584#
585# --enable-lfs
586#
587AC_ARG_ENABLE(lfs,
588[  --enable-lfs            Enable large file source support],
589[case "${enableval}" in
590 yes) lfs=true ;;
591 no)  lfs="";;
592 *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;;
593 esac],[])
594
595if test -n "${lfs}"; then
596  CFLAGS_JNI="$CFLAGS_JNI -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
597fi
598
599#
600# fill in based on known configurations
601#
602if test -z "${LD_SHLIB}"; then
603  LD_SHLIB=${LD}
604  CFLAGS_SHLIB="-fpic"
605  LDFLAGS_SHLIB="-shared"
606
607  case "$target_os" in
608    linux*)
609	LD_SHLIB=${CC}
610
611	if test -n "$b64"; then
612  	  CFLAGS="$CFLAGS -m64 -fPIC"
613	  LDFLAGS_SHLIB="-shared -fPIC"
614	fi
615	if test -n "$b64_jni"; then
616  	  CFLAGS_JNI="$CFLAGS_JNI -m64 -fPIC"
617	  LDFLAGS_SHLIB="-shared -fPIC"
618   	fi
619	;;
620
621    *solaris*)
622	if test -n "$is_gcc"; then
623	    CFLAGS_SHLIB="-fPIC"
624
625	   if test -n "$b64"; then
626  	     CFLAGS="$CFLAGS -m64"
627	   fi
628           if test -n "$b64_jni"; then
629  	     CFLAGS_JNI="$CFLAGS_JNI -m64"
630   	   fi
631	else
632	    CFLAGS_SHLIB="-KPIC"
633
634	   if test -n "$b64"; then
635  	     CFLAGS="$CFLAGS -xarch=v9"
636	   fi
637	   if test -n "$b64_jni"; then
638  	     CFLAGS_JNI="$CFLAGS_JNI -xarch=v9"
639   	   fi
640	fi
641
642	if test -n "$is_gnu_ld"; then
643	    LDFLAGS_SHLIB="-shared"
644        else
645	    LDFLAGS_SHLIB="-G -fPIC"
646	fi
647
648	if test -n "$b64"; then
649  	  LDFLAGS_SHLIB="$LDFLAGS_SHLIB -m64"
650	fi
651	;;
652
653    darwin*)
654        CFLAGS_SHLIB="-DSHARED_MODULE"
655	LD_SHLIB=${CC}
656 	LDFLAGS_SHLIB="-dynamiclib -undefined suppress -flat_namespace"
657        if test -n "$b64"; then
658  	  CFLAGS="$CFLAGS -arch x86_64"
659  	  LDFLAGS_SHLIB="$LDFLAGS_SHLIB -arch x86_64"
660        fi
661	if test -n "$b64_jni"; then
662  	  CFLAGS_JNI="$CFLAGS_JNI -arch x86_64"
663  	  LDFLAGS_SHLIB="$LDFLAGS_SHLIB -arch x86_64"
664   	fi
665        ;;
666
667    *freebsd*)
668  	CFLAGS="$CFLAGS -fPIC"
669        ;;
670
671    *aix*)
672	if test -z "$is_gcc"; then
673	   CFLAGS_SHLIB="-bexpall"
674	else
675	    CFLAGS_SHLIB="-fpic"
676	fi
677	LDFLAGS_SHLIB=""
678	;;
679
680    *hpux*)
681	if test -z "$is_gcc"; then
682	    CFLAGS_SHLIB="+z"
683	else
684	    CFLAGS_SHLIB="-fpic"
685	fi
686	LDFLAGS_SHLIB="-b"
687	;;
688  esac
689
690  case "$target_cpu" in
691    x86_64)
692           if test -z "$b64_jni"; then
693  	     CFLAGS_JNI="$CFLAGS_JNI -m32"
694  	     LDFLAGS_SHLIB="$LDFLAGS_SHLIB -melf_i386"
695   	   fi
696	;;
697  esac
698fi
699
700case "$target_os" in
701  linux*)
702        CFLAGS="$CFLAGS -DHAS_SOCK_TIMEOUT"
703	;;
704  darwin*)
705        CFLAGS="$CFLAGS -DHAS_SOCK_TIMEOUT"
706	;;
707esac
708
709if test -z "$apache"; then
710  a=b
711elif test -r "${apache_include}/apr_thread_mutex.h" \
712  -o -n "${apr_inc}" \
713  -o -r "${apache_confdir}/apache2.conf"; then
714  echo "Using Apache 2.0 configuration ${apache_conf}"
715
716  plugins="$plugins apache2"
717elif test -n "${apache_include}/ap.h"; then
718  echo "Using Apache 1.3 configuration ${apache_conf}"
719
720  plugins="$plugins apache1"
721else
722  AC_MSG_ERROR([Can't find valid Apache directory ${apache_inc}])
723fi
724
725if test -n "$apache_cflags"; then
726  echo "Using Apache CFLAGS: $apache_cflags"
727fi
728
729#
730# Using Perl if it's available.
731#
732PERL=`which perl`
733if test -z "${LD_SHLIB}"; then
734  if test -z "${LD_SHLIB}" -a "x`$PERL -V:dlsrc 2>/dev/null | grep dlopen`" != "x"; then
735    PCC="`$PERL -V:cc | cut -d\' -f2`"
736    if test "${PCC}" = "${CC}"; then
737      CFLAGS_SHLIB="`$PERL -V:cccdlflags | cut -d\' -f2`"
738      LDFLAGS_SHLIB="`$PERL -V:lddlflags | cut -d\' -f2`"
739      LD_SHLIB="`$PERL -V:ld | cut -d\' -f2`"
740
741      has_clflags=1
742
743      echo "Using shared library flags from Perl"
744    fi
745  fi
746fi
747
748#if test -z "${LD_SHLIB}"; then
749#  AC_MSG_ERROR([Can't determine compilation flags.]);
750#fi
751
752#
753# OS which can handle the Resin launcher
754#
755resin_pro_plugin=
756if test -r "modules/c/src/resin/Makefile.in"; then
757   resin_pro_plugin="resin"
758fi
759
760resin_ssl_plugin=
761if test -r "modules/c/src/resinssl/Makefile.in"; then
762   resin_ssl_plugin="resinssl"
763fi
764
765resin_plugin=
766
767case "$target_cpu" in
768  i?86)
769	CPU=i386
770	resin_plugin="$resin_pro_plugin $resin_ssl_plugin"
771	CFLAGS_JNI="$CFLAGS_JNI -D_FILE_OFFSET_BITS=64"
772	;;
773
774  sparc*)
775	if test -n "${b64_jni}"; then
776  	  CPU=sparcv9
777	else
778  	  CPU=sparc
779	fi
780	resin_plugin="$resin_pro_plugin $resin_ssl_plugin"
781	;;
782
783  x86_64)
784	CPU=$target_cpu
785	resin_plugin="$resin_pro_plugin $resin_ssl_plugin"
786	CFLAGS_JNI="$CFLAGS_JNI -D_FILE_OFFSET_BITS=64"
787	;;
788
789  *)
790	CPU=$target_cpu
791	;;
792esac
793
794case "$target_os" in
795  linux*)
796	jni_os=linux
797        PROXY_LIBS="-lpthread -lc"
798	;;
799
800  *solaris*)
801	jni_os=solaris
802	CFLAGS="$CFLAGS -D__SOLARIS__"
803	PROXY_LIBS='-lnsl -lsocket -lthread'
804	;;
805
806  *freebsd*)
807	PROXY_LIBS='-lpthread'
808        jni_os=freebsd
809
810	tmp=`ldd $JAVA_HOME/bin/java | sed 's/.*=>//' | grep -c libc_r`
811	tmp=$tmp `ldd $JAVA_HOME/bin/java | sed 's/.*=>//' | grep -c libpthread`
812	tmp=$tmp `ldd $JAVA_HOME/bin/java | sed 's/.*=>//' | grep -c libthr`
813
814	case "$tmp" in
815	100)
816		PROXY_LIBS='-lc_r';
817		;;
818	010)
819		PROXY_LIBS='-lpthread';
820		;;
821	001)
822		PROXY_LIBS='-lthr';
823		;;
824	*)
825		PROXY_LIBS='-lpthread'
826		echo "Using -lpthread as default"
827		;;
828	esac
829	;;
830
831  *darwin*)
832	LD=gcc
833	SO=jnilib
834	resin_plugin="$resin_pro_plugin $resin_ssl_plugin"
835	;;
836
837  *hpux*)
838	if test -r "$JAVA_HOME/include/hpux/jni_md.h"; then
839	  jni_os=hpux
840        else
841	  jni_os=hp-ux
842        fi
843	;;
844
845  *aix*)
846        jni_os=aix
847	;;
848esac
849
850AC_SUBST(CPU)
851AC_SUBST(OS)
852AC_SUBST(SO)
853AC_SUBST(CFLAGS)
854AC_SUBST(CFLAGS_SHLIB)
855AC_SUBST(LD_SHLIB)
856AC_SUBST(LDFLAGS_SHLIB)
857AC_SUBST(LIBS_SHLIB)
858AC_SUBST(PROXY_LIBS)
859AC_SUBST(SSL_LIBS)
860
861#
862# --with-jni-include
863#
864AC_ARG_WITH(jni-include,
865[  --with-jni-include="-Idir -Idir"  jni include string
866], [
867JNI_INCLUDE=${withval}
868JNI="yes"
869])
870
871#
872# --enable-jni
873#
874AC_ARG_ENABLE(jni,
875[  --enable-jni    Turn on jni],
876[case "${enableval}" in
877 yes) JNI=true ;;
878 no)  JNI="" ;;
879 *) AC_MSG_ERROR(bad value ${enableval} for --enable-jni) ;;
880 esac],[JNI=""])
881
882if test -n "$JNI_INCLUDE"; then
883  JNI=yes
884elif test -r "$JAVA_HOME/include/jni_md.h"; then
885  JNI_INCLUDE="-I$JAVA_HOME/include"
886  JNI=yes
887  echo "checking for JNI in $JAVA_HOME/include ... found"
888elif test -r "$JAVA_HOME/include/$jni_os/jni_md.h"; then
889  JNI_INCLUDE="-I$JAVA_HOME/include -I$JAVA_HOME/include/$jni_os"
890  JNI=yes
891  echo "checking for JNI in $JAVA_HOME/include/$jni_os ... found"
892elif test -r "/System/Library/Frameworks/JavaVM.framework/Headers/jni_md.h"; then
893  # Darwin
894  echo "checking for JNI in /System/Library/Frameworks/JavaVM.framework/Headers ... found"
895  JNI_INCLUDE="-I/System/Library/Frameworks/JavaVM.framework/Headers"
896  JNI=yes
897elif test -r "$JAVA_HOME/../Headers/jni_md.h"; then
898  # Darwin
899  echo "checking for JNI in $JAVA_HOME/../Headers ... found"
900  JNI_INCLUDE="-I$JAVA_HOME/../Headers"
901  JNI=yes
902elif test -r "$JAVA_HOME/include/jni.h"; then
903  JNI_INCLUDE="-I$JAVA_HOME/include"
904  JNI=yes
905  echo "checking for JNI in $JAVA_HOME/include ... found"
906else
907  JNI=""
908  AC_MSG_WARN([Can't find JNI directory ${JAVA_HOME}/include/$jni_os])
909fi
910
911if test -r "$JAVA_HOME/include/jvmti.h"; then
912  echo "Using JVMTI for class reloading"
913
914  CFLAGS="$CFLAGS -DHAS_JVMTI"
915elif test -r "$JAVA_HOME/../Headers/jvmti.h"; then
916  echo "Using JVMTI for class reloading"
917
918  CFLAGS="$CFLAGS -DHAS_JVMTI"
919fi
920
921if test -r "$JAVA_HOME/include/jvmdi.h"; then
922  echo "Using JVMDI for class reloading"
923
924  CFLAGS="$CFLAGS -DHAS_JVMDI"
925elif test -r "$JAVA_HOME/../Headers/jvmdi.h"; then
926  echo "Using JVMDI for class reloading"
927
928  CFLAGS="$CFLAGS -DHAS_JVMDI"
929fi
930
931if test -n "$JNI"; then
932  plugins="$plugins $resin_plugin resin_os"
933else
934  echo "Can't JNI include files in JAVA_HOME: $JAVA_HOME"
935fi
936
937AC_SUBST(JNI)
938AC_SUBST(JNI_INCLUDE)
939
940#
941# --enable-ssl
942#
943AC_ARG_ENABLE(ssl,
944[  --enable-ssl    Turn on ssl],
945[case "${enableval}" in
946 yes) ENABLE_SSL=true ;;
947 no)  ENABLE_SSL="false" ;;
948 *) AC_MSG_ERROR(bad value ${enableval} for --enable-ssl) ;;
949 esac],[ENABLE_SSL=""])
950
951#
952# --with-openssl
953#
954AC_ARG_WITH(openssl,
955[  --with-openssl=DIR  Openssl directory
956], [
957OPENSSL=${withval}
958OPENSSL_INCLUDE=${OPENSSL}/include
959OPENSSL_LIB=${OPENSSL}/lib
960])
961
962#
963# --with-openssl-include
964#
965AC_ARG_WITH(openssl-include,
966[  --with-openssl-include=DIR  Openssl include directory
967], [
968OPENSSL_INCLUDE=${withval}
969
970if test ! -r "${OPENSSL_INCLUDE}/openssl/ssl23.h"; then
971  AC_MSG_ERROR([Can't find valid OpenSSL include ${OPENSSL_INCLUDE}])
972fi
973])
974
975#
976# --with-openssl-lib
977#
978AC_ARG_WITH(openssl-lib,
979[  --with-openssl-lib=DIR  Openssl lib directory
980], [
981OPENSSL_LIB=${withval}
982
983if test ! -r "${OPENSSL_LIB}/libssl.a" -a \
984        ! -r "${OPENSSL_LIB}/libssl.dylib" -a \
985	! -r "${OPENSSL_LIB}/libssl.so"; then
986  AC_MSG_ERROR([Can't find valid OpenSSL library ${OPENSSL_LIB}])
987fi
988])
989
990if test "${ENABLE_SSL}" = false; then
991  foo=bar
992elif test -n "${OPENSSL_INCLUDE}"; then
993  foo=bar
994elif test -r ${OPENSSL}/include/openssl/ssl23.h; then
995  OPENSSL_INCLUDE=${OPENSSL}/include
996elif test -r /usr/include/openssl/ssl23.h; then
997  OPENSSL_INCLUDE=/usr/include
998elif test -r /usr/local/include/openssl/ssl23.h; then
999  OPENSSL_INCLUDE=/usr/local/include
1000elif test -r /usr/local/ssl/include/openssl/ssl23.h; then
1001  OPENSSL_INCLUDE=/usr/local/ssl/include
1002fi
1003
1004if test "${ENABLE_SSL}" = false; then
1005  foo=bar
1006
1007elif test -n "${OPENSSL_LIB}"; then
1008  foo=bar
1009
1010elif test -n "${b64_jni}" -a -r /lib64/libcrypto.so; then
1011  OPENSSL_LIB=/lib64
1012elif test -n "${b64_jni}" -a -r /usr/lib64/libcrypto.so; then
1013  OPENSSL_LIB=/usr/lib64
1014
1015elif test -r /lib/libcrypto.so; then
1016  OPENSSL_LIB=/lib
1017elif test -r /lib/libcrypto.dylib; then
1018  OPENSSL_LIB=/lib
1019
1020elif test -r /usr/lib/libcrypto.so; then
1021  OPENSSL_LIB=/usr/lib
1022elif test -r /usr/lib/libcrypto.dylib; then
1023  OPENSSL_LIB=/usr/lib
1024
1025elif test -r /usr/local/ssl/lib/libcrypto.so; then
1026  OPENSSL_LIB=/usr/local/ssl/lib
1027elif test -r /usr/local/ssl/lib/libcrypto.dylib; then
1028  OPENSSL_LIB=/usr/local/ssl/lib
1029elif test -r ${OPENSSL}/lib/libcrypto.a; then
1030  OPENSSL_LIB=${OPENSSL}/lib
1031elif test -r /usr/local/ssl/lib/libcrypto.a; then
1032  OPENSSL_LIB=/usr/local/ssl/lib
1033elif test -r /usr/local/lib/libssl.a; then
1034  OPENSSL_LIB=/usr/local/lib
1035elif test -r /usr/lib/libssl.a; then
1036  OPENSSL_LIB=/usr/lib
1037fi
1038
1039if test -z "${OPENSSL_INCLUDE}"; then
1040  foo=bar
1041elif test -r "${OPENSSL_LIB}/libssl.so"; then
1042  SSL_LIBS="${SSL_LIBS} -lssl"
1043elif test -r "${OPENSSL_LIB}/libssl.dylib"; then
1044  SSL_LIBS="${SSL_LIBS} -lssl"
1045elif test -r "${OPENSSL_LIB}/libssl3.so"; then
1046  SSL_LIBS="${SSL_LIBS} -lssl3"
1047elif test -r "${OPENSSL_LIB}/libssl3.dylib"; then
1048  SSL_LIBS="${SSL_LIBS} -lssl3"
1049elif test -r "${OPENSSL_LIB}/libssl.a"; then
1050  SSL_LIBS="${SSL_LIBS} ${OPENSSL_LIB}/libssl.a"
1051elif test -r "${OPENSSL_LIB}/libssl3.a"; then
1052  SSL_LIBS="${SSL_LIBS} ${OPENSSL_LIB}/libssl3.a"
1053else
1054  # probably an error
1055  SSL_LIBS="${SSL_LIBS} -lssl"
1056fi
1057
1058if test -z "${OPENSSL_INCLUDE}"; then
1059  foo=bar
1060elif test -r "${OPENSSL_LIB}/libcrypto.so"; then
1061  SSL_LIBS="${SSL_LIBS} -lcrypto"
1062elif test -r "${OPENSSL_LIB}/libcrypto.dylib"; then
1063  SSL_LIBS="${SSL_LIBS} -lcrypto"
1064elif test -r "${OPENSSL_LIB}/libcrypto.a"; then
1065  SSL_LIBS="${SSL_LIBS} ${OPENSSL_LIB}/libcrypto.a"
1066else
1067  # probably an error
1068  SSL_LIBS="${SSL_LIBS} -lcrypto"
1069fi
1070
1071SSL_OBJ=ssl_stub.o
1072
1073if test "${ENABLE_SSL}" = false; then
1074  echo "Openssl is not enabled"
1075elif test -z "${OPENSSL_INCLUDE}"; then
1076  echo "Openssl library was not found"
1077#elif test ! -r "${OPENSSL_LIB}/libcrypto.so" -a \
1078#          ! -r "${OPENSSL_LIB}/libcrypto.dylib" -a \
1079#          ! -r "${OPENSSL_LIB}/libcrypto.a" ; then
1080#  AC_MSG_ERROR([Can't find valid OpenSSL library in ${OPENSSL_LIB}])
1081elif test ! -r "${OPENSSL_INCLUDE}/openssl/ssl23.h"; then
1082  AC_MSG_ERROR([Can't find valid OpenSSL include in ${OPENSSL_INCLUDE}])
1083else
1084  echo "Using openssl include in ... ${OPENSSL_INCLUDE}"
1085  echo "Using openssl lib in ... ${OPENSSL_LIB}"
1086  echo "Using openssl libraries in ... ${SSL_LIBS}"
1087
1088  if test -x "${apache_dir}/bin/httpd"; then
1089    apache_ssl=`${apache_dir}/bin/httpd -l 2>&1 | grep ssl`
1090    if test -n "$apache_ssl"; then
1091      CFLAGS="$CFLAGS -DOPENSSL"
1092      echo "Enabling ssl for mod_caucho"
1093    fi
1094  elif test -x "${apache_dir}/bin/httpd2"; then
1095    apache_ssl=`${apache_dir}/bin/httpd2 -l 2>&1 | grep ssl`
1096    if test -n "$apache_ssl"; then
1097      CFLAGS="$CFLAGS -DOPENSSL"
1098      echo "Enabling ssl for mod_caucho"
1099    fi
1100  fi
1101
1102  if test -r "${OPENSSL_INCLUDE}/openssl/engine.h"; then
1103    CFLAGS_OPENSSL="$OPENSSL_CFLAGS -DSSL_ENGINE"
1104  fi
1105
1106  if test -n "${OPENSSL_INCLUDE}"; then
1107    INCLUDES="$INCLUDES -I${OPENSSL_INCLUDE}"
1108  fi
1109  SSL_OBJ=ssl.o
1110  if test -n "${OPENSSL_LIB}"; then
1111    LDFLAGS_SHLIB="${LDFLAGS_SHLIB} -L${OPENSSL_LIB}"
1112  fi
1113  # PROXY_LIBS="$PROXY_LIBS ${OPENSSL_LIB}/libssl.a ${OPENSSL_LIB}/libcrypto.a"
1114fi
1115
1116if test -d /usr/kerberos/include; then
1117   INCLUDES="$INCLUDES -I/usr/kerberos/include"
1118fi
1119
1120#
1121# test the open ssl
1122#
1123if test -n "${OPENSSL_LIB}"; then
1124cat >conftest.$ac_ext <<_ACEOF
1125#include <openssl/ssl.h>
1126#include <openssl/rsa.h>
1127#include <openssl/err.h>
1128
1129int main(int argc, char **argv)
1130{
1131  SSLeay_add_ssl_algorithms();
1132  SSL_load_error_strings();
1133
1134#if OPENSSL_VERSION_NUMBER >= 0x00907000L
1135    if (0)
1136      ERR_print_errors_cb(0, 0);
1137#endif
1138
1139  return 0;
1140}
1141_ACEOF
1142
1143${CC} -o conftest ${CFLAGS_OPENSSL} ${CFLAGS} ${INCLUDES} conftest.$ac_ext -L${OPENSSL_LIB} ${SSL_LIBS} ${PROXY_LIBS} 1>/dev/null 2>/dev/null
1144
1145if test "$?" != 0; then
1146  ${CC} -o conftest ${CFLAGS_OPENSSL} ${CFLAGS} ${INCLUDES} conftest.$ac_ext -L${OPENSSL_LIB} ${SSL_LIBS} ${PROXY_LIBS}
1147
1148  AC_MSG_WARN(Can't compile SSL.  Check compilation flags: ${CC} ${CFLAGS_OPENSSL} ${CFLAGS} ${INCLUDES} -L${OPENSSL_LIB} ${SSL_LIBS} ${PROXY_LIBS})
1149
1150  resin_ssl_plugin=""
1151else
1152  ./conftest
1153
1154  if test "$?" != 0; then
1155    AC_MSG_WARN(Can't execute SSL.  Check that load version in the library path: ${LD_LIBRARY_PATH} matches the expected version.)
1156  fi
1157fi
1158
1159rm -f conftest conftest.$ac_ext
1160fi
1161
1162AC_SUBST(INCLUDES)
1163AC_SUBST(CFLAGS_OPENSSL)
1164AC_SUBST(CFLAGS_JNI)
1165AC_SUBST(SSL_OBJ)
1166
1167PERL="perl"
1168#
1169# --with-perl
1170#
1171AC_ARG_WITH(perl,
1172[  --with-perl=DIR  Perl binary location
1173], [
1174PERL=${withval}
1175])
1176
1177AC_SUBST(PERL)
1178
1179#
1180# --enable-debug
1181#
1182AC_ARG_ENABLE(debug,
1183[  --enable-debug    Turn on debugging],
1184[case "${enableval}" in
1185 yes) debug=true ;;
1186 no)  debug=false ;;
1187 *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
1188 esac],[debug=false])
1189
1190if test "$debug" = true; then
1191  CFLAGS="$CFLAGS -DDEBUG -Wall"
1192  HARDCORE_CFLAGS="$HARDCORE_CFLAGS -DDEBUG"
1193fi
1194
1195AC_OUTPUT([
1196Makefile
1197modules/c/src/Makefile
1198modules/c/src/common/Makefile
1199modules/c/src/apache1/Makefile
1200modules/c/src/apache2/Makefile
1201modules/c/src/resin_os/Makefile
1202contrib/init.resin
1203], [])
1204
1205if test -n "${resin_pro_plugin}"; then
1206  AC_OUTPUT([
1207    modules/c/src/resin/Makefile
1208    modules/c/src/resinssl/Makefile
1209  ])
1210fi
1211