1dnl ---------------------------------------------------------------------------*
2dnl               PDFlib - A library for generating PDF on the fly             |
3dnl ---------------------------------------------------------------------------+
4dnl  Copyright (c) 1997-2004 Thomas Merz and PDFlib GmbH. All rights reserved. |
5dnl ---------------------------------------------------------------------------+
6dnl                                                                            |
7dnl     This software is subject to the PDFlib license. It is NOT in the       |
8dnl     public domain. Extended versions and commercial licenses are           |
9dnl     available, please check http://www.pdflib.com.                         |
10dnl                                                                            |
11dnl --------------------------------------------------------------------------*/
12
13dnl $Id: configure.in 14574 2005-10-29 16:27:43Z bonefish $
14dnl 
15dnl Process this file with autoconf to produce a configure script.
16dnl 
17
18# --------------------------------------------------------------------
19# 	PDFlib general setup
20# --------------------------------------------------------------------
21
22dnl source directory sanity check using an arbitrary source file
23AC_INIT(libs/pdcore/pc_config.h)
24
25dnl do not change this (version.sh will do it for you :)
26VERSION="5.0.3"
27PDFLIB_MAJOR=5
28PDFLIB_MINOR=0
29PDFLIB_REVISION=3
30
31AC_SUBST(PDFLIB_MAJOR)
32AC_SUBST(PDFLIB_MINOR)
33AC_SUBST(PDFLIB_REVISION)
34
35dnl Important: Interface numbers are completely independent of release
36dnl or version numbers! See doc/readme-source-unix.txt for details.
37
38PDFLIB_LTCURRENT=4
39PDFLIB_LTREVISION=1
40PDFLIB_LTAGE=2
41
42LTVERSIONINFO="$PDFLIB_LTCURRENT:$PDFLIB_LTREVISION:$PDFLIB_LTAGE"
43
44AC_SUBST(LTVERSIONINFO)
45AC_SUBST(PDFLIB_LTCURRENT)
46AC_SUBST(PDFLIB_LTREVISION)
47AC_SUBST(PDFLIB_LTAGE)
48
49dnl Get the current directory, needed to feed absolut paths to linkers
50dnl even if called outside of our build environment (i.e. PHP). Might cause some
51dnl problems on exotic platforms, but we are not yet aware of problems,
52dnl so we use $PDFWD like $top_builddir if abspath is needed.
53PDFPWD=`pwd`
54
55dnl The name of the library should only be changed in very rare cases,
56dnl such as Digital Unix where a (completely different) libpdf already exists.
57dnl Note: do not include any file name suffix here.
58
59PDFLIBNAME=pdf
60MATHLIB="-lm"
61
62AC_ARG_WITH(pdflibname,[  --with-pdflibname=name  set file name of generated library [default=pdf]],[PDFLIBNAME="$withval"])
63
64AC_ARG_WITH(libm,[  --with-libm=name        set math library option [default=-lm]],[MATHLIB="$withval"])
65
66AC_SUBST(PDFLIBNAME)
67
68dnl install-sh will be searched (and found) here
69AC_CONFIG_AUX_DIR(config)
70
71builtin(include, config/aclocal.m4)
72
73dnl Check the system name
74AC_CANONICAL_HOST
75
76AC_MSG_CHECKING(MACHDEP)
77if test -z "$MACHDEP"
78then
79    if test -f /usr/lib/NextStep/software_version; then
80	set X `hostinfo | grep 'NeXT Mach.*:' | \
81		sed -e 's/://' -e 's/\./_/'` && \
82	ac_sys_system=next && ac_sys_release=$4
83	MACHDEP="$ac_sys_system$ac_sys_release$ac_sys_cpu"
84    else
85	ac_sys_system=`uname -s`
86	if test "$ac_sys_system" = "AIX" ; then
87		ac_sys_release=`uname -v`
88	else
89		ac_sys_release=`uname -r`
90	fi
91	ac_md_system=`echo $ac_sys_system |
92			   tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
93	ac_md_release=`echo $ac_sys_release |
94			   tr -d '[/ ]' | sed 's/\..*//'`
95	MACHDEP="$ac_md_system$ac_md_release"
96    fi
97    case MACHDEP in
98    '')	MACHDEP=unknown;;
99    esac
100fi
101
102AC_MSG_RESULT($MACHDEP)
103
104dnl choose compiler
105AC_PROG_CC
106AC_PROG_CPP
107AC_PROG_INSTALL
108dnl common stuff, unlikely to be changed
109SHELL="/bin/sh"
110RM="rm -rf"
111
112dnl Default defines -- some systems may need special handling here
113dnl We also map some system names to a more user-friendly and well-known version
114
115INCLUDES=
116
117PLATFORM_ID=$ac_sys_system
118PLATFORM="-DPDF_PLATFORM=\\\"\"$ac_sys_system\"\\\""
119
120case $ac_sys_system in
121    dnl TODO: check if this is still true
122    dnl Our TIFF code currently requires special handling on AIX
123    aix*|AIX*)
124	DEFINES="$DEFINES -DAIX";;
125
126    cyg*|CYG*) DEFINES="$DEFINES -U_WIN32 -UWIN32 -U__WIN32__ -U_Windows";;
127
128    dnl HP needs option for ANSI mode if the HP compiler is used instead of gcc
129    hp*|HP*)
130	if test "$GCC" = ""; then 
131	    DEFINES="$DEFINES -Ae"
132	fi;;
133
134    dnl The OSF JNI requires libraries to be built thread-safe, which is true
135    dnl for PDFlib
136    osf1*|OSF1*)
137	if test "$GCC" = ""; then 
138	    DEFINES="$DEFINES -pthread"
139	fi;;
140
141    SunOS*)
142        ac_sys_arch=`uname -p`
143	if test "$ac_sys_arch" = "i386" ; then
144	      PLATFORM_ID="SunOS-i386"
145	      PLATFORM="-DPDF_PLATFORM=\\\"\"sunOS\"\\\""
146        fi
147
148	if test "$GCC" = ""; then 
149	    DEFINES="$DEFINES -xmemalign"
150	fi
151	;;
152
153    dnl MacOS X doesn't seem to like -lm, and doesn't actually need it;
154    dnl libtool only works if --with-gnu-ld=yes is supplied, so we try
155    dnl to set it here already.
156    rhapsody|Rhapsody*)
157	PLATFORM="-DPDF_PLATFORM=\\\"\"Mac OS X Server\"\\\""
158	with_gnu_ld=yes
159	MATHLIB="";;
160
161    darwin|Darwin*)
162	PLATFORM="-DPDF_PLATFORM=\\\"\"Mac OS X\"\\\""
163	PLATFORM_ID="MacOSX"
164	with_gnu_ld=yes
165	MATHLIB="";;
166
167    dnl TODO: add sparc, ...
168    linux|Linux*) 
169       ac_sys_arch=`uname -m` 
170       if test "$ac_sys_arch" = "s390" ; then 
171	   PLATFORM_ID="zSeries-Linux" 
172	   PLATFORM="-DPDF_PLATFORM=\\\"\"ZSeries Linux\"\\\"" 
173       fi 
174       if test "$ac_sys_arch" = "ppc" ; then 
175	   PLATFORM_ID="ppc-Linux" 
176	   PLATFORM="-DPDF_PLATFORM=\\\"\"ppc Linux\"\\\"" 
177       fi 
178       # neccesary to be compatible with glibc 2.3.2 on RH 9
179       if test "$ac_sys_arch" = "i686" ; then 
180	   DEFINES="$DEFINES -D__NO_CTYPE"
181       fi
182       if test "$ac_sys_arch" = "ia64" ; then
183           PLATFORM_ID="Linux-ia64"
184           PLATFORM="-DPDF_PLATFORM=\\\"\"Linux-ia64\"\\\""
185       fi
186       ;; 
187
188
189    FreeBSD)
190       tmp_vers=`uname -r`
191       case $tmp_vers in
192       5.*)
193           PLATFORM="-DPDF_PLATFORM=\\\"\"FreeBSD5\"\\\"" ;;
194       esac
195       ;;
196
197    OpenBSD)
198       tmp_vers=`uname -r`
199       if test "$tmp_vers" = "3.4" ; then
200           PLATFORM="-DPDF_PLATFORM=\\\"\"OpenBSD34\"\\\""
201       fi
202       ;;
203
204    dnl OS/390 specials
205    *OS/390*)
206	DEFINES="$DEFINES -DOS390"
207	CC=c89
208	LD=c89
209	PLATFORM_ID=OS390
210        PLATFORM="-DPDF_PLATFORM=\\\"\"zSeries USS\"\\\"" 
211	# add special compile options for java2 on s390
212	set X `java -version 2>&1 | grep '1.3.'` && \
213	DEFINES="$DEFINES -W \"c,langlvl(extended)\" -W \"c,float(ieee)\""
214	;;
215
216    *)	;;
217esac
218
219GENERATED_FILES=""
220
221dnl select debugging configuration
222WITH_DEBUG=no
223
224dnl add special compileoptions for xplink
225WITH_XPLINK=no
226AC_ARG_ENABLE(xplink, [  --enable-xplink        turn on xplink linking],
227if test "$enableval" = "yes" ; then
228    WITH_XPLINK=yes
229fi)
230
231if test "$WITH_XPLINK" = "yes"; then
232    case $ac_sys_system in
233    *OS/390*)
234	DEFINES="-W \"c,xplink\" -W \"l,xplink\" -1 -W c,expo,dll -W c,GONUM $DEFINES"
235	;;
236    *)	;;
237    esac
238fi
239
240dnl We hope to build shared libraries on this platform
241WITH_SHARED=yes
242
243WITH_PROFILE=no
244
245AC_ARG_ENABLE(debug, [  --enable-debug          turn on debugging],
246if test "$enableval" = "yes" ; then
247    WITH_DEBUG=yes
248fi)
249
250AC_ARG_ENABLE(profile, [  --enable-profile        turn on profiling],
251if test "$enableval" = "yes" ; then
252    WITH_PROFILE=yes
253fi)
254
255AC_EXEEXT
256AC_OBJEXT
257
258dnl Prepare libtool
259dnl Required for dlopening our libraries, as done in the language interpreters.
260
261AC_LIBTOOL_DLOPEN
262AC_LIBTOOL_WIN32_DLL
263AC_PROG_LIBTOOL
264
265AC_SUBST(PLATFORM_ID)
266AC_SUBST(SHELL)
267AC_SUBST(EXEEXT)
268AC_SUBST(OBJEXT)
269AC_SUBST(VERSION)
270AC_SUBST(CC)
271AC_SUBST(RM)
272
273# --------------------------------------------------------------------
274# 	PDFlib Java binding (JNI)
275# --------------------------------------------------------------------
276
277WITH_JAVA=yes
278JAVAINCLUDE=""
279JAVAPACKAGE=""
280
281AC_ARG_WITH(java,[  --with-java=path        full path of Java Developers Kit, or no],[
282case $withval in
283    no) WITH_JAVA=no ;;
284    yes) WITH_JAVA=yes ;;
285    *) JAVAPACKAGE=$withval 
286    ;;
287esac
288])
289
290if test "$WITH_JAVA" != "no" ; then
291    WITH_JAVA=no
292    AC_MSG_CHECKING(for Java header files)
293
294    # try without any precautions
295    AC_TRY_CPP([#include <jni.h>], WITH_JAVA=yes,
296	[ dirs="$prefix /usr/lib/java /usr/java /usr/java/jdk1.4 /usr/lib/jdk1.4 /opt/java1.4 /usr/lpp/java/J1.4 /usr/java/jdk1.4 /usr/lib/jdk1.4 /usr/jdk14 /jdk1.4 /usr/java/jdk1.3 /usr/include/java /usr/local/java /usr/local/include/kaffe /usr/lib/jdk1.3 /opt/java1.3 /usr/lpp/java/J1.3 /usr/java/jdk1.2 /usr/lib/jdk1.2.2 /usr/lib/jdk1.2.1 /usr/jdk122 /usr/lib/jdk122 /usr/lib/jdk1.2.1 /opt/java1.2 /usr/lpp/java/J1.2 /usr/lib/jdk1.1.8 /usr/jdk118 /usr/lib/jdk118 /usr/lpp/java/J1.1 /opt/java1.1 /usr /opt/local /jdk1.3 /jdk1.2.3 /jdk1.2.2 /jdk1.2.1 /System/Library/Frameworks/JavaVM.framework/Headers /usr/jdk_base/include"
297
298	if test "$JAVAPACKAGE" != ""; then
299	    dirs="$JAVAPACKAGE $dirs"
300	fi
301
302	# now try to find jni.h
303	for i in $dirs ; do
304	    if test -r $i/jni.h; then
305		JAVAINCLUDE="$i"
306		break
307	    elif test -r $i/include/jni.h; then
308		JAVAINCLUDE="$i/include"
309		break
310	    fi
311	done
312    ])
313
314    # now try with an include path
315    if test "$JAVAINCLUDE" != ""; then
316	OCPPFLAGS="$CPPFLAGS"
317	CPPFLAGS="-I$JAVAINCLUDE $OCPPFLAGS"
318	AC_TRY_CPP([#include <jni.h>], [
319		WITH_JAVA=yes
320		JAVAINCLUDE="-I$JAVAINCLUDE"
321	],)
322	CPPFLAGS="$OCPPFLAGS"
323    fi
324
325    # if the above didn't work probably jni_md.h is missing
326    if test "WITH_JAVA" != "yes" ; then
327	if test "$JAVAINCLUDE" != ""; then
328	    subdirs="$JAVAINCLUDE $JAVAINCLUDE/$MACHDEP $JAVAINCLUDE/$ac_md_system $JAVAINCLUDE/solaris $JAVAINCLUDE/genunix $JAVAINCLUDE/alpha $JAVAINCLUDE/win32 $JAVAINCLUDE/mvs $JAVAINCLUDE/irix"
329	    for i in $subdirs ; do
330		if test -r $i/jni_md.h; then
331		    JAVAINCLUDE="-I$JAVAINCLUDE -I$i"
332		    WITH_JAVA=yes
333		    break
334		fi
335	    done
336	fi
337    fi
338
339    if test "$WITH_JAVA" = "no"; then
340	AC_MSG_RESULT(not found)
341    else
342	AC_MSG_RESULT($JAVAINCLUDE)
343	AC_SUBST(JAVAINCLUDE)
344    fi
345
346fi
347
348# ----------------------------------------------------------------
349#  PDFlib Perl binding
350# ----------------------------------------------------------------
351
352WITH_PERL=yes
353PERLBIN=nope
354PERLINCLUDE=nope
355
356AC_ARG_WITH(perl,[  --with-perl=path        full path of Perl executable, or no],[PERLBIN="$withval"],[PERLBIN=nope])
357
358if test "$PERLBIN" = "no" ; then
359    WITH_PERL=no
360fi
361
362AC_ARG_WITH(perlincl,[  --with-perlincl=path    full path of Perl include directory],[PERLINCLUDE="$withval"],[PERLINCLUDE=nope])
363
364if test "$WITH_PERL" = "yes" ; then
365
366    WITH_PERL=no
367    dnl First figure out what the name of Perl is
368    if test "$PERLBIN" = "nope"; then
369	AC_CHECK_PROGS(PERL, perl perl5.7.0 perl5.6.0 perl5.005 perl5.004 perl5.003 perl5.002 perl5.001 perl5, nope)
370    else
371	PERL="$PERLBIN"
372    fi
373    AC_MSG_CHECKING(for Perl header file)
374    if test "$PERL" != "nope"; then
375	PERL5DIR=`($PERL -e 'use Config; print $Config{archlib};') 2>/dev/null`
376	if test "$PERL5DIR" != ""; then
377	    if test "$PERLINCLUDE" = "nope"; then
378		if test -r "$PERL5DIR/perl.h"; then
379		    AC_MSG_RESULT(PERL5DIR/perl.h)
380		    WITH_PERL=yes
381		    PERLINCLUDE="$PERL5DIR"
382		elif test -r "$PERL5DIR/CORE/perl.h"; then
383		    AC_MSG_RESULT($PERL5DIR/CORE/perl.h)
384		    WITH_PERL=yes
385		    PERLINCLUDE="$PERL5DIR/CORE"
386		fi
387	    else
388		WITH_PERL=yes
389		AC_MSG_RESULT($PERLINCLUDE)
390	    fi
391	    if test "$PERLINCLUDE" = "nope"; then
392		AC_MSG_RESULT(could not locate perl.h...)
393		WITH_PERL=no
394	    fi	
395	else
396	    AC_MSG_RESULT(unable to determine Perl configuration)
397	    WITH_PERL=no
398	fi
399
400	PERLLIBDIR=`($PERL -e 'use Config; print $Config{sitearchexp};') 2>/dev/null`
401	if test -z "$PERLLIBDIR" -o ! -d "$PERLLIBDIR"; then
402	    AC_MSG_RESULT(         unable to determine perl shared library directory)
403	fi
404
405    else
406	AC_MSG_RESULT(could not figure out how to run perl)
407	PERLINCLUDE="/usr/local/lib/perl5/5.6.0/archname/CORE"
408    fi
409
410    dnl The Perl include files contain special handling for the bool type
411    dnl on NeXT (sigh). We'll run into trouble if we don't work around this.
412
413    case $ac_sys_system in
414	    NeXT|next) PERLBOOLDEF="";;
415	    *)	PERLBOOLDEF="-Dbool=char -DHAS_BOOL";;
416    esac
417
418    dnl Some platforms require linking the perl library directly.
419    dnl We use $PERLINCLUDE for this since it both contains the Perl library
420    dnl _and_ the include files. Other systems don't explicitly link the
421    dnl Perl library.
422    dnl $MATHLIB comes from EXTERNALLIBS if needed
423
424    case $ac_sys_system/$ac_sys_release in
425	hp*|HP*)     PERLLINK="";;
426	cyg*|CYG*)   PERLLINK="-L$PERLINCLUDE -lperl $PERLLINK";;
427	aix*|AIX*)   PERLLINK="-L$PERLINCLUDE -lperl $PERLLINK";;
428	osf1*|OSF1*) PERLLINK="-L$PERLINCLUDE -lperl $PERLLINK";;
429	darwin|Darwin*) PERLLINK="-L$PERLINCLUDE -lperl $PERLLINK";;
430	*) ;;
431    esac
432
433    PERLINCLUDE="-I$PERLINCLUDE"
434    AC_SUBST(PERLINCLUDE)
435    AC_SUBST(PERLLIBDIR)
436    AC_SUBST(PERLBOOLDEF)
437    AC_SUBST(PERLLINK)
438    AC_SUBST(PERL)
439fi
440
441# ----------------------------------------------------------------
442#  PDFlib Python binding
443# ----------------------------------------------------------------
444
445WITH_PYTHON=yes
446PYINCLUDE=nope
447PYPACKAGE=nope
448
449AC_ARG_WITH(py,[  --with-py=path          full path of Python root directory, or no],[PYPACKAGE="$withval"], [PYPACKAGE=nope])
450
451if test "$PYPACKAGE" = "no" ; then
452    WITH_PYTHON=no
453fi
454
455AC_ARG_WITH(pyincl,[  --with-pyincl=path      full path of Python include directory],[PYINCLUDE="$withval"], [PYINCLUDE=nope])
456
457if test "$PYINCLUDE" = "nope" -a "$PYPACKAGE" != "no"; then
458	PYINCLUDE="$PYPACKAGE/include"
459fi
460
461if test "$WITH_PYTHON" != "no" ; then
462    WITH_PYTHON=no
463    AC_MSG_CHECKING(for Python header files)
464
465    dirs="$PYINCLUDE 			\
466    $PYINCLUDE/python2.3                \ 
467    $prefix/include/python2.3           \ 
468    /usr/local/include/python2.3        \ 
469    /usr/include/python2.3              \ 
470    $prefix/include/python2.3           \ 
471    $PYINCLUDE/python2.2                \ 
472    $prefix/include/python2.2           \ 
473    /usr/local/include/python2.2        \ 
474    /usr/include/python2.2              \ 
475    $prefix/include/python2.2           \ 
476    $PYINCLUDE/python2.1                \ 
477    $prefix/include/python2.1           \ 
478    /usr/local/include/python2.1        \ 
479    /usr/include/python2.1              \ 
480    $prefix/include/python2.1           \ 
481    $PYINCLUDE/python2.0 		\
482    $prefix/include/python2.0 		\
483    /usr/local/include/python2.0 	\
484    /usr/include/python2.0 		\
485    $prefix/include/python2.0		\
486    $PYINCLUDE/python1.6		\
487    $prefix/include/python1.6		\
488    /usr/local/include/python1.6	\
489    /usr/include/python1.6		\
490    $prefix/include/python1.6		\
491    $PYINCLUDE/python1.5		\
492    $prefix/include/python1.5		\
493    /usr/local/include/python1.5	\
494    /usr/include/python1.5		\
495    $prefix/include/python1.5		\
496    $PYINCLUDE/python1.4		\
497    $prefix/include/python1.4		\
498    /usr/local/include/python1.4	\
499    /usr/include/python1.4		\
500    $prefix/include/python1.4"
501    for i in $dirs ; do
502	    if test -r $i/Python.h; then
503		    AC_MSG_RESULT($i)
504		    PYINCLUDE="-I$i"
505		    WITH_PYTHON=yes
506		    break
507	    fi
508    done
509    if test "$PYINCLUDE" = "nope" -o "$PYINCLUDE" = "$PYPACKAGE/include"; then
510	AC_MSG_RESULT(not found)
511	WITH_PYTHON=no
512    fi
513
514    AC_SUBST(PYINCLUDE)
515
516    AC_CHECK_PROGS(PYTHONBIN, python, nope)
517
518    if test "$PYTHONBIN" = "nope" ; then
519	WITH_PYTHON=no
520    fi
521
522    if test "$WITH_PYTHON" = "yes" ; then
523	AC_MSG_CHECKING(for Python shared library path)
524
525	if test "$PYTHONBIN" = "nope" ; then
526	    WITH_PYTHON=no
527	else
528	    PYTHONLIBDIR=`cat << EOF | python
529import sys
530import string
531print string.join(filter(lambda x: -1 != string.find(x, 'dynload'), sys.path))
532EOF
533`
534	    if test "$PYTHONLIBDIR" = "" ; then
535		PYTHONLIBDIR=/usr/lib
536	    fi
537	    AC_SUBST(PYTHONLIBDIR)
538
539	fi
540
541	AC_MSG_RESULT($PYTHONLIBDIR)
542    fi
543fi
544
545# --------------------------------------------------------------------
546# 	PDFlib Tcl binding
547# --------------------------------------------------------------------
548
549WITH_TCL=yes
550TCLINCLUDE=nope
551TCLPACKAGEDIR=nope
552TCLBIN=nope
553
554AC_ARG_WITH(tcl,[  --with-tcl=path         full path of Tcl executable, or no],[TCLBIN="$withval"])
555
556if test "$TCLBIN" = "no" ; then
557    WITH_TCL=no
558fi
559
560AC_ARG_WITH(tclpkg,[  --with-tclpkg=path      full path of Tcl package install directory],[TCLPACKAGEDIR="$withval"],[TCLPACKAGEDIR=nope])
561
562AC_ARG_WITH(tclincl,[  --with-tclincl=path     full path of Tcl include directory],[TCLINCLUDE="$withval"],[TCLINCLUDE=nope])
563
564if test "$WITH_TCL" = "yes" ; then
565    WITH_TCL=no
566    AC_MSG_CHECKING(for Tcl header files)
567
568    if test "$TCLINCLUDE" = "nope"; then
569	AC_TRY_CPP([#include <tcl.h>], , TCLINCLUDE="nope")
570	if test "$TCLINCLUDE" = "nope"; then
571	    dirs="$prefix/include /usr/local/include /usr/include /opt/local/include /home/sci/local/include /usr/pkg/include /System/Library/Frameworks/Tcl.framework/Versions/8.3/Headers /System/Library/Frameworks/Tcl.framework/Versions/8.2/Headers"
572	    for i in $dirs ; do
573		if test -r $i/tcl.h; then
574		    AC_MSG_RESULT($i)
575		    TCLINCLUDE="$i"
576		    WITH_TCL=yes
577		    break
578		fi
579	    done
580	fi
581
582	if test "$TCLINCLUDE" = "nope"; then
583	    AC_MSG_RESULT(not found)
584	    WITH_TCL=no
585	fi
586    else
587	AC_MSG_RESULT($TCLINCLUDE)
588    fi
589
590    dnl We need at least Tcl 8.0 because of its support for binary strings
591    dnl and the object interface.
592
593    if test "$TCLINCLUDE" != "nope" -a "$TCLBIN" = "nope"; then
594	AC_CHECK_PROGS(TCL, tclsh tclsh8.4 tclsh8.3 tclsh8.2 tclsh8.1 tclsh8.0, nope)
595	TCLBIN=$TCL
596    fi
597
598    if test "$TCLINCLUDE" = "nope" -o "$TCLBIN" = "nope"; then
599	WITH_TCL=no
600    else
601	dnl Check the installed Tcl version -- must be 8.0 or higher
602	TCLVERSION=`echo "puts [[info tclversion]]" | $TCLBIN`
603	if test  "$TCLVERSION" = "7.6" -o "$TCLVERSION" = "7.5" -o  "$TCLVERSION" = "7.4" -o "$TCLVERSION" = "7.3" -o "$TCLVERSION" = "7.1" -o "$TCLVERSION" = "7.0"; then
604	    AC_MSG_RESULT([         Tcl version 8.0 or newer is required for PDFlib.])
605	    AC_MSG_RESULT([         PDFlib support for Tcl will not be built.])
606	    WITH_TCL=no
607	else
608	    if test  "$TCLVERSION" = "8.0" -o "$TCLVERSION" = "8.1"; then
609		AC_MSG_RESULT([         The PDFlib build process requires Tcl 8.2 or above. Please read])
610		AC_MSG_RESULT([         bind/tcl/readme.txt for instructions on manually building PDFlib])
611		AC_MSG_RESULT([         for Tcl 8.0 or 8.1.])
612	    fi
613	
614	    if test "$TCLPACKAGEDIR" = "nope"; then
615	    dnl Let tcl decide where to install the package
616		TCLPACKAGEDIR=`(echo "puts \\$auto_path" | "$TCLBIN" | awk '{print $1}') 2>/dev/null`
617	    fi
618
619	    if test "$TCLPACKAGEDIR" = "nope" -o -z "$TCLPACKAGEDIR" -o ! -d "$TCLPACKAGEDIR"; then
620		AC_MSG_RESULT(unable to determine Tcl package directory)
621		WITH_TCL=no
622
623	    else
624
625		TCLPACKAGEDIR=$TCLPACKAGEDIR/pdflib
626		WITH_TCL=yes
627	    fi
628	fi
629    fi
630fi
631
632TCLINCLUDE="-I$TCLINCLUDE"
633AC_SUBST(TCLINCLUDE)
634AC_SUBST(TCLPACKAGEDIR)
635AC_SUBST(TCLBIN)
636
637# ----------------------------------------------------------------
638#  PDFlib/PSP auxiliary libraries:
639#  We support only our own copy of tifflib, libpng and zlib
640#  pdcore is needed in all configurations
641# ----------------------------------------------------------------
642
643# The list of Makefile targets for our internal libraries
644# pdcore is always needed
645PHP_PDFLIBS="$PDFPWD/libs/pdflib/p_basic.lo"
646
647PDCORELIBINC="-I\$(top_builddir)/libs/pdcore"
648PDCORELIBLINK="\$(top_builddir)/libs/pdcore/libpdcore\$(LA)"
649PHP_PDFLIBS="$PHP_PDFLIBS $PDFPWD/libs/pdcore/libpdcore.la"
650LIBTARGETS="$LIBTARGETS pdcore"
651BINDTARGETS=""
652PROGTARGETS=""
653
654AC_SUBST(PDCORELIBINC)
655AC_SUBST(PDCORELIBLINK)
656
657# zlib
658if test -d libs/flate ; then
659    FLATELIBINC="-I\$(top_builddir)/libs/flate"
660    FLATELIBLINK="\$(top_builddir)/libs/flate/libz\$(LA)"
661    PHP_PDFLIBS="$PHP_PDFLIBS $PDFPWD/libs/flate/libz.la"
662    LIBTARGETS="$LIBTARGETS flate"
663else
664    FLATELIBINC=""
665    FLATELIBLINK=""
666fi
667AC_SUBST(FLATELIBLINK)
668AC_SUBST(FLATELIBINC)
669
670# pnglib
671if test -d libs/png ; then
672    PNGLIBINC="-I\$(top_builddir)/libs/png"
673    PNGLIBLINK="\$(top_builddir)/libs/png/libpng\$(LA)"
674    PHP_PDFLIBS="$PHP_PDFLIBS $PDFPWD/libs/png/libpng.la"
675    LIBTARGETS="$LIBTARGETS png"
676else
677    PNGLIBINC=""
678    PNGLIBLINK=""
679fi
680AC_SUBST(PNGLIBINC)
681AC_SUBST(PNGLIBLINK)
682
683# tifflib
684if test -d libs/tiff ; then
685    AC_C_BIGENDIAN()
686    TIFFLIBINC="-I\$(top_builddir)/libs/tiff"
687    TIFFLIBLINK="\$(top_builddir)/libs/tiff/libtiff\$(LA)"
688    PHP_PDFLIBS="$PHP_PDFLIBS $PDFPWD/libs/tiff/libtiff.la"
689    LIBTARGETS="$LIBTARGETS tiff"
690else
691    TIFFLIBINC=""
692    TIFFLIBLINK=""
693fi
694AC_SUBST(TIFFLIBINC)
695AC_SUBST(TIFFLIBLINK)
696
697# jpeglib
698#if test -d libs/jpeg6 ; then
699#    AC_C_BIGENDIAN()
700#    JPEGLIBINC="-I\$(top_builddir)/libs/jpeg6"
701#    JPEGLIBLINK="\$(top_builddir)/libs/jpeg6/libjpeg\$(LA)"
702#    PHP_PDFLIBS="$PHP_PDFLIBS $PDFPWD/libs/jpeg6/libjpeg6.la"
703#    LIBTARGETS="$LIBTARGETS jpeg6"
704#else
705    JPEGLIBINC=""
706    JPEGLIBLINK=""
707#fi
708AC_SUBST(JPEGLIBINC)
709AC_SUBST(JPEGLIBLINK)
710
711
712# ----------------------------------------------------------------
713#  PDFlib auxiliary library: PDI (PDF import library)
714# ----------------------------------------------------------------
715
716WITH_PDI=no
717
718AC_MSG_CHECKING(for PDF import library PDI)
719
720if test -d libs/pdi ; then
721    WITH_PDI=yes
722    dnl PDI must be in front because it needs zlib and pdcore
723    PDILIBINC="-I\$(top_builddir)/libs/pdi"
724    PDILIBLINK="\$(top_builddir)/libs/pdi/libpdi\$(LA)"
725    PHP_PDFLIBS="$PHP_PDFLIBS $PDFPWD/libs/pdi/libpdi.la"
726
727    LIBTARGETS="$LIBTARGETS pdi"
728    PROGTARGETS="$PROGTARGETS pdi"
729    AC_MSG_RESULT(found)
730else
731    PDILIBINC=""
732    PDILIBLINK=""
733    AC_MSG_RESULT(not found)
734fi
735AC_SUBST(PDILIBINC)
736AC_SUBST(PDILIBLINK)
737
738# ----------------------------------------------------------------
739#  PDFlib main library: not needed for PSP
740# ----------------------------------------------------------------
741
742dnl PDFLIBCONVENIENT contains all convenient libs to build shared libs
743dnl                  like PDFlib, and the wrapper libraries.
744dnl PDFLIBLINK       contains the files needed to link a program against PDFlib
745dnl PDFLIB_LINK      contains the files convenient lib
746dnl PHP_PDFLIBS	     contains all libs needed for linking PHP (with ABS paths)
747dnl EXTERNALLIBS     contains extra libs to be added (i.e. -lm)
748
749EXTERNALLIBS="$MATHLIB"
750
751WITH_PDFLIB=no
752
753AC_MSG_CHECKING(for PDFlib base library pdflib)
754
755if test -d libs/pdflib ; then
756    WITH_PDFLIB=yes
757    PDFLIBINC="-I\$(top_builddir)/libs/pdflib"
758    PDFLIBLINK="\$(top_builddir)/libs/pdflib/lib$PDFLIBNAME\$(LA)"
759    PDFLIB_LINK="\$(top_builddir)/libs/pdflib/libpdf_\$(LA)"
760    PHP_PDFLIBS="$PHP_PDFLIBS $PDFPWD/libs/pdflib/libpdf_.la"
761    LIBTARGETS="$LIBTARGETS pdflib"
762    BINDTARGETS="$BINDTARGETS pdflib"
763    PROGTARGETS="$PROGTARGETS pdflib"
764    AC_MSG_RESULT(found)
765else
766    PDFLIBINC=""
767    PDFLIBLINK=""
768    PDFLIB_LINK=""
769    PDFLIBCONVENIENT=""
770    AC_MSG_RESULT(not found)
771fi
772
773AC_SUBST(PDFLIBCONVENIENT)
774AC_SUBST(PDFLIBINC)
775AC_SUBST(PDFLIBLINK)
776AC_SUBST(PDFLIB_LINK)
777
778
779# ----------------------------------------------------------------
780#  PDFlib auxiliary library: PSP (Pretty Safe PDF)
781# ----------------------------------------------------------------
782
783WITH_PSP=no
784PSPLIBINC=""
785PSPLIBLINK=""
786PSPLIB_LINK=""
787
788AC_MSG_CHECKING(for PDFlib PSP (Pretty Safe PDF))
789
790if test -d libs/psp ; then
791    WITH_PSP=yes
792    AC_ARG_WITH(PSP,[  --without-PSP           don't include PSP (Pretty Safe PDF)],[WITH_PSP="$withval"])
793    if test "$WITH_PSP" = "yes"; then
794	LIBTARGETS="$LIBTARGETS psp"
795	BINDTARGETS="$BINDTARGETS psp"
796	PROGTARGETS="$PROGTARGETS psp"
797	PSPLIBINC="-I\$(top_builddir)/libs/psp"
798	PSPLIBLINK="\$(top_builddir)/libs/psp/libpsp\$(LA)"
799	PSPLIB_LINK="\$(top_builddir)/libs/psp/libpsp_\$(LA)"
800	AC_MSG_RESULT(found)
801    else
802	AC_MSG_RESULT(not used)
803    fi
804else
805    AC_MSG_RESULT(not found)
806fi
807AC_SUBST(PSPLIBINC)
808AC_SUBST(PSPLIBLINK)
809AC_SUBST(PSPLIB_LINK)
810
811# ----------------------------------------------------------------
812#  PDFlib auxiliary library: TET
813# ----------------------------------------------------------------
814
815WITH_TET=no
816TETLIBINC=""
817TETLIBLINK=""
818TETLIB_LINK=""
819
820AC_MSG_CHECKING(for PDFlib TET)
821
822if test -d libs/tet ; then
823    WITH_TET=yes
824    AC_ARG_WITH(TET,[  --without-TET           don't include TET],[WITH_TET="$withval"])
825    if test "$WITH_TET" = "yes"; then
826	LIBTARGETS="$LIBTARGETS tet"
827	PROGTARGETS="$PROGTARGETS tet"
828	TETLIBINC="-I\$(top_builddir)/libs/tet"
829	TETLIBLINK="\$(top_builddir)/libs/tet/libtet\$(LA)"
830	TETLIB_LINK="\$(top_builddir)/libs/tet/libtet_\$(LA)"
831	AC_MSG_RESULT(found)
832    else
833	AC_MSG_RESULT(not used)
834    fi
835else
836    AC_MSG_RESULT(not found)
837fi
838AC_SUBST(TETLIBINC)
839AC_SUBST(TETLIBLINK)
840AC_SUBST(TETLIB_LINK)
841
842# ----------------------------------------------------------------
843#  PDFlib auxiliary library: PDU
844# ----------------------------------------------------------------
845#
846WITH_PDU=no
847PDULIBINC=""
848PDULIBLINK=""
849
850AC_MSG_CHECKING(for PDFlib PDU)
851
852if test -d libs/pdu ; then
853    WITH_PDU=yes
854    AC_ARG_WITH(PDU,[  --without-PDU           don't include PDU],[WITH_PDU="$withval"])
855    if test "$WITH_PDU" = "yes"; then
856	LIBTARGETS="$LIBTARGETS pdu"
857	PROGTARGETS="$PROGTARGETS pdu"
858	PDULIBINC="-I\$(top_builddir)/libs/pdu"
859	PDULIBLINK="\$(top_builddir)/libs/pdu/libpdu\$(LA)"
860	AC_MSG_RESULT(found)
861    else
862	AC_MSG_RESULT(not used)
863    fi
864else
865    AC_MSG_RESULT(not found)
866fi
867AC_SUBST(PDULIBINC)
868AC_SUBST(PDULIBLINK)
869
870# ----------------------------------------------------------------
871#  PDFlib auxiliary library: PDPAGE
872# ----------------------------------------------------------------
873
874WITH_PDPAGE=no
875
876AC_MSG_CHECKING(for PDFlib PDPAGE)
877
878if test -d libs/pdpage ; then
879    if test "$WITH_TET" = "yes" ; then
880	WITH_PDPAGE=yes
881    fi
882fi
883if test "$WITH_PDPAGE" = "yes" ; then
884    LIBTARGETS="$LIBTARGETS pdpage"
885    PDPAGELIBINC="-I\$(top_builddir)/libs/pdpage"
886    PDPAGELIBLINK="\$(top_builddir)/libs/pdpage/libpdpage\$(LA)"
887    AC_MSG_RESULT(found)
888else
889    PDPAGELIBINC=""
890    PDPAGELIBLINK=""
891    AC_MSG_RESULT(not found)
892fi
893AC_SUBST(PDPAGELIBINC)
894AC_SUBST(PDPAGELIBLINK)
895
896# ----------------------------------------------------------------
897#  PDFlib/PSP PHP binding
898# ----------------------------------------------------------------
899
900if test -f bind/pdflib/php/Makefile.frag.in ; then
901	GENERATED_FILES="$GENERATED_FILES bind/pdflib/php/Makefile.frag"
902fi
903if test -f bind/psp/php/Makefile.frag.in ; then
904	GENERATED_FILES="$GENERATED_FILES bind/psp/php/Makefile.frag"
905fi
906
907# --------------------------------------------------------------------
908# 	PDFlib C++ language binding
909# --------------------------------------------------------------------
910
911WITH_CXX=yes
912
913STDCPP=""
914
915AC_ARG_ENABLE(cxx,[  --enable-cxx            enable C++ language binding [default=no]], WITH_CXX=$enableval)
916
917if test "$WITH_CXX" = "yes"; then
918    AC_LANG_CPLUSPLUS
919    AC_PROG_CXX
920    AC_MSG_CHECKING(whether the previously found C++ compiler works)
921    AC_TRY_COMPILE(, [class a { int b; } ], WITH_CXX=yes, WITH_CXX=no)
922    AC_LANG_C
923
924    case $ac_sys_system/$ac_sys_release in
925	osf1*|OSF1*) STDCPP="";;
926
927	*)	dnl don't change $WITH_CXX
928		;;
929    esac
930
931    dnl If working with gcc add the name of the stdc++ library
932    if test "x$GCC" != "x"; then
933	STDCPP="-lstdc++"
934    fi
935
936    if test "$WITH_CXX" = "yes"; then
937	AC_SUBST(STDCPP)
938	AC_SUBST(CXX)
939	AC_MSG_RESULT(yes)
940    else
941	AC_MSG_RESULT(no)
942    fi
943fi
944
945# ----------------------------------------------------------------
946#  PDFlib wrapup
947# ----------------------------------------------------------------
948
949dnl The following variables are used to tell the Makefile what to
950dnl actually do, depending on the available language bindings.
951dnl PDFlib itself will be built and installed by default, regardless
952dnl of the settings below.
953
954dnl PDI must be in front because it needs zlib and pdcore
955if test "$PLATFORM_ID" = "MacOSX"; then 
956    INCLUDES="$INCLUDES -I/Developer/Headers/FlatCarbon" 
957    LDFLAGS="$LDFLAGS -framework CoreServices -framework ApplicationServices"
958fi 
959
960dnl pedantic warnings ??
961WITHPEDANTIC=no
962AC_ARG_ENABLE(pedantic,[  --enable-pedantic       enable pedantic warnings (gcc only)]], WITHPEDANTIC=$enableval)
963if test "$WITHPEDANTIC" = "yes"; then
964    dnl If working with gcc and we want pedantic
965    if test "x$GCC" != "x"; then
966	PDFPEDANTIC="-Wall -pedantic -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wshadow -Wpointer-arith"
967	AC_SUBST(PDFPEDANTIC)
968    fi
969fi
970
971BINDINGS="c"
972PSPBINDINGS="c"
973
974if ${CONFIG_SHELL-/bin/sh} ./libtool --features | grep "disable shared" >/dev/null; then
975    WITH_SHARED=no
976fi
977
978dnl Building the language wrappers based on a shared PDFlib is no longer supported!
979if test "$WITH_SHARED" = "no"; then
980    WITH_JAVA=no
981    WITH_PERL=no
982    WITH_PYTHON=no
983    WITH_TCL=no
984fi
985
986if test "$WITH_CXX" = "yes" ; then
987    BINDINGS="$BINDINGS cpp"
988fi
989if test "$WITH_JAVA" = "yes" ; then
990    BINDINGS="$BINDINGS java"
991    PSPBINDINGS="$PSPBINDINGS java"
992fi
993if test "$WITH_PERL" = "yes" ; then
994    BINDINGS="$BINDINGS perl"
995fi
996if test "$WITH_PYTHON" = "yes" ; then
997    BINDINGS="$BINDINGS python"
998fi
999if test "$WITH_TCL" = "yes" ; then
1000    BINDINGS="$BINDINGS tcl"
1001fi
1002
1003if test -f ptf/Makefile ; then
1004    PTFDIR="ptf"
1005    GENERATED_FILES="$GENERATED_FILES ptf/src/dot/dot.pl"
1006fi
1007
1008if test "$WITH_DEBUG" = "yes"; then
1009    CFLAGS="$CFLAGS -DDEBUG"
1010fi
1011
1012if test "$WITH_PROFILE" = "yes"; then
1013    CFLAGS="$CFLAGS -pg"
1014    LDFLAGS="$LDFLAGS -pg"
1015fi
1016
1017DEFINES="$CFLAGS $DEFINES $INCLUDES $PLATFORM"
1018
1019dnl EXTERNALLIBS     contains extra libs to be added (i.e. -lm)
1020EXTERNALLIBS="$LDFLAGS $EXTERNALLIBS"
1021
1022PDFLIBCONVENIENT="$PDFLIB_LINK \$(top_builddir)/libs/pdflib/p_basic\$(LO) $PDCORELIBLINK $PNGLIBLINK $FLATELIBLINK $TIFFLIBLINK $PDILIBLINK $JPEGLIBLINK"
1023
1024if test "$WITH_SHARED" = "no"; then
1025    dnl We can generate a static lib only, but not a shared
1026    RPATH=""
1027else
1028    dnl we generate both static and shared libs
1029    RPATH="-rpath \$(libdir) -version-info $LTVERSIONINFO"
1030
1031fi
1032
1033AC_SUBST(PHP_PDFLIBS)
1034AC_SUBST(LIBTARGETS)
1035AC_SUBST(BINDTARGETS)
1036AC_SUBST(PROGTARGETS)
1037AC_SUBST(BINDINGS)
1038AC_SUBST(PSPBINDINGS)
1039AC_SUBST(PTFDIR)
1040AC_SUBST(WITH_PDI)
1041AC_SUBST(LDFLAGS)
1042AC_SUBST(EXTERNALLIBS)
1043AC_SUBST(RPATH)
1044AC_SUBST(MATHLIB)
1045AC_SUBST(INCLUDES)
1046AC_SUBST(DEFINES)
1047AC_SUBST(DEFS)
1048AC_SUBST(WITH_SHARED)
1049
1050dnl ---------- Generate the Makefiles
1051
1052GENERATED_FILES="$GENERATED_FILES config/mkcommon.inc config/mkprogs.inc config/mklibs.inc config/mksubdirs.inc config/mkbind.inc pdflib-config"
1053
1054AC_OUTPUT([$GENERATED_FILES],[
1055    chmod +x pdflib-config
1056])
1057
1058if test "$WITH_SHARED" = "no" ; then
1059    AC_MSG_WARN([Can't create shared PDFlib libraries on this platform.])
1060    AC_MSG_WARN([PDFlib will work when linked to a C or C++ program,])
1061    AC_MSG_WARN([but other language bindings will be unavailable.])
1062fi
1063
1064if test "$WITH_PSP" = "yes" ; then
1065AC_MSG_RESULT([_____________________________________________________________])
1066AC_MSG_RESULT([For your convenience, here's a summary of configure's results:])
1067AC_MSG_RESULT([Java language binding for PSP:       $WITH_JAVA])
1068AC_MSG_RESULT([PHP language binding for PSP:        no, see bind/psp/php/readme.txt])
1069fi
1070
1071if test "$WITH_PDFLIB" = "yes" ; then
1072AC_MSG_RESULT([_____________________________________________________________])
1073AC_MSG_RESULT([For your convenience, here's a summary of configure's results:])
1074AC_MSG_RESULT([])
1075AC_MSG_RESULT([Support for shared libraries:           $WITH_SHARED])
1076AC_MSG_RESULT([C++ language binding for PDFlib:        $WITH_CXX])
1077AC_MSG_RESULT([Java language binding for PDFlib:       $WITH_JAVA])
1078AC_MSG_RESULT([Perl language binding for PDFlib:       $WITH_PERL])
1079AC_MSG_RESULT([Python language binding for PDFlib:     $WITH_PYTHON])
1080AC_MSG_RESULT([Tcl language binding for PDFlib:        $WITH_TCL])
1081AC_MSG_RESULT([PHP language binding for PDFlib:        no, see bind/pdflib/php/readme.txt])
1082
1083AC_MSG_RESULT([PDF import library (PDI):               $WITH_PDI])
1084if test "$WITH_PDI" = "no" ; then
1085    AC_MSG_RESULT([     Note: if you purchase the additional PDF import library (PDI)])
1086    AC_MSG_RESULT([     you can also manipulate existing PDF documents with PDFlib.])
1087    AC_MSG_RESULT([     The additional block feature can be used to personalize PDF.])
1088    AC_MSG_RESULT([     See http://www.pdflib.com for details.])
1089fi
1090fi
1091
1092AC_MSG_RESULT([])
1093AC_MSG_RESULT([Please observe the licensing terms for commercial PDFlib usage.])
1094AC_MSG_RESULT([PDFlib license agreement and purchase order can be found in the doc directory.])
1095AC_MSG_RESULT([])
1096