5 kx dnl Copyright (C) 2001-2021 Artifex Software, Inc.
5 kx dnl All Rights Reserved.
5 kx dnl
5 kx dnl This software is provided AS-IS with no warranty, either express or
5 kx dnl implied.
5 kx dnl
5 kx dnl This software is distributed under license and may not be copied,
5 kx dnl modified or distributed except as expressly authorized under the terms
5 kx dnl of the license contained in the file LICENSE in this distribution.
5 kx dnl
5 kx dnl Refer to licensing information at http://www.artifex.com or contact
5 kx dnl Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
5 kx dnl CA 94945, U.S.A., +1(415)492-9861, for further information.
5 kx
5 kx
5 kx dnl Process this file with autoconf to produce a configure script
5 kx
5 kx dnl ------------------------------------------------
5 kx dnl Initialization and Versioning
5 kx dnl ------------------------------------------------
5 kx
5 kx AC_INIT
5 kx AC_PREREQ([2.63])
5 kx AC_LANG(C)
5 kx AC_CONFIG_SRCDIR(psi/gs.c)
5 kx
5 kx AC_CANONICAL_HOST
5 kx
5 kx dnl Inherit compiler flags from the environment...
5 kx CFLAGS="${CFLAGS:=}"
5 kx CPPFLAGS="${CPPFLAGS:=}"
5 kx CXXFLAGS="${CXXFLAGS:=}"
5 kx LDFLAGS="${LDFLAGS:=}"
5 kx
5 kx if test x"$host" != x"$build" ; then
5 kx CFLAGSAUX="${CFLAGSAUX:=}"
5 kx CPPFLAGSAUX="${CPPFLAGSAUX:=}"
5 kx LDFLAGSAUX="${LDFLAGSAUX:=}"
5 kx else
5 kx CFLAGSAUX="${CFLAGSAUX:-$CFLAGS}"
5 kx CPPFLAGSAUX="${CPPFLAGSAUX:-$CPPFLAGS}"
5 kx LDFLAGSAUX="${LDFLAGSAUX:-$LDFLAGS}"
5 kx fi
5 kx
5 kx THEMAKEFILE="${MAKEFILE:-Makefile}"
5 kx AUXFLAGS_MAK=auxflags.mak
5 kx
5 kx ARCH_AUTOCONF_HEADER=arch-config/arch_autoconf.h
5 kx ARCH_AUTOCONF_HEADER_PROTO=arch/arch_autoconf.h.in
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl Local utilities
5 kx dnl --------------------------------------------------
5 kx
5 kx dnl GS_SPLIT_LIBS( LIBS, LINKLINE )
5 kx dnl Split a unix-style link line into a list of
5 kx dnl bare library names. For example, the line
5 kx dnl '-L/usr/X11R6/lib -lX11 -lXt' splits into
5 kx dnl LIB='X11 Xt'
5 kx dnl
5 kx AC_DEFUN([GS_SPLIT_LIBS], [
5 kx # the makefile wants a list of just the library names
5 kx for gs_item in $2; do
5 kx gs_stripped_item=`echo "$gs_item" | sed -e 's/^-l//'`
5 kx if test "x$gs_stripped_item" != "x$gs_item"; then
5 kx $1="$[$1] $gs_stripped_item"
5 kx fi
5 kx done
5 kx ])
5 kx
5 kx dnl GS_SPLIT_LIBPATHS( LIBPATHS, LINKLINE )
5 kx dnl Split a unix-style link line into a list of
5 kx dnl bare search path entries. For example,
5 kx dnl '-L/usr/X11R6/lib -lX11 -L/opt/lib -lXt'
5 kx dnl splits to LIBPATHS='/usr/X11R6/lib /opt/lib'
5 kx dnl
5 kx AC_DEFUN([GS_SPLIT_LIBPATHS], [
5 kx for gs_item in $2; do
5 kx gs_stripped_item=`echo "$gs_item" | sed -e 's/-L//'`
5 kx if test "x$gs_stripped_item" != "x$gs_item"; then
5 kx $1="$[$1] $gs_stripped_item"
5 kx fi
5 kx done
5 kx ])
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl Check for programs
5 kx dnl --------------------------------------------------
5 kx
5 kx dnl AC_PROG_CC likes to add '-g -O2' to CFLAGS. however,
5 kx dnl we ignore those flags and construct our own.
5 kx save_cflags="$CFLAGS"
5 kx AC_PROG_CC
5 kx AC_PROG_CPP
5 kx CFLAGS="$save_cflags"
5 kx
5 kx AUXFLAGS_MAK_LINE00="CCAUX=@CC@"
5 kx AUXFLAGS_MAK_LINE01="GCFLAGSAUX=@CPPFLAGS@ @GCFLAGS@ @CFLAGS@"
5 kx AUXFLAGS_MAK_LINE02="CAPOPTAUX="
5 kx AUXFLAGS_MAK_LINE03="CFLAGSAUX_STANDARD=@OPT_CFLAGS@"
5 kx AUXFLAGS_MAK_LINE04="CFLAGSAUX_DEBUG=@DBG_CFLAGS@"
5 kx AUXFLAGS_MAK_LINE05="CFLAGSAUX_PROFILE=-pg @OPT_CFLAGS@"
5 kx AUXFLAGS_MAK_LINE06="LDFLAGSAUX=@LDFLAGS@"
5 kx AUXFLAGS_MAK_LINE07="AUXEXTRALIBS=@LIBS@"
5 kx
5 kx GCFLAGSAUXTMP="\$(GCFLAGS)"
5 kx CAPOPTAUXTMP="\$(CAPOPT)"
5 kx CFLAGSAUX_STANDARDTMP="\$(CFLAGS_STANDARD)"
5 kx CFLAGSAUX_DEBUGTMP="\$(CFLAGS_DEBUG)"
5 kx CFLAGSAUX_PROFILETMP="\$(CFLAGS_PROFILE)"
5 kx LDFLAGSAUXTMP="\$(LDFLAGS)"
5 kx AUXEXTRALIBSTMP="\$(EXTRALIBS)"
5 kx
5 kx # purposefully do not include "help" output for this
5 kx AC_ARG_ENABLE([save_confaux])
5 kx AC_ARG_ENABLE([auxtools_only])
5 kx
5 kx absolute_source_path=$(cd "$(dirname "$0")" && pwd)
5 kx
5 kx GCFLAGSAUX=$GCFLAGSAUXTMP
5 kx CAPOPTAUX=$CAPOPTAUXTMP
5 kx CFLAGSAUX_STANDARD=$CFLAGSAUX_STANDARDTMP
5 kx CFLAGSAUX_DEBUG=$CFLAGSAUX_DEBUGTMP
5 kx CFLAGS_PROFILE=$CFLAGS_PROFILETMP
5 kx LDFLAGSAUX=$LDFLAGSAUXTMP
5 kx AUXEXTRALIBS=$AUXEXTRALIBSTMP
5 kx
5 kx # we have to do this here in case it took
5 kx # AC_PROG_CC to set CC (as it usually does)
5 kx CCAUX="${CCAUX:-$CC}"
5 kx
5 kx AC_PROG_SED
5 kx dnl See if it is GNU sed or else.
5 kx dnl - need more work to tell SED features.
5 kx SED_EXTENDED_REGEX_OPT=-nre
5 kx sed_variant=`sed --version 2>&1`
5 kx sed_variant=`echo $sed_variant|sed -e 's/ .*//'`
5 kx if test "$sed_variant" != GNU ; then
5 kx SED_EXTENDED_REGEX_OPT=-nEe
5 kx fi
5 kx AC_SUBST(SED_EXTENDED_REGEX_OPT)
5 kx
5 kx AC_PROG_RANLIB
5 kx #AC_PROG_INSTALL
5 kx
5 kx # If the caller has gives a specific pkg-config to use, then
5 kx # use it, and skip the tests.
5 kx if test x"$PKGCONFIG" != x"" ; then
5 kx AC_MSG_NOTICE([Using $PKGCONFIG])
5 kx else
5 kx # this is an unpleasant hack
5 kx # but if we are cross compiling, and there isn't a matching
5 kx # pkconfig for the --host setting, then don't use the 'local'
5 kx # pkconfig at all
5 kx AC_PATH_TOOL(PKGCONFIG, pkg-config)
5 kx if test x"$host" != x"$build" ; then
5 kx dnl pkg-config is used for several tests now...
5 kx AC_PATH_PROG(BUILD_PKGCONFIG, pkg-config)
5 kx if test x"$BUILD_PKGCONFIG" = x"$PKGCONFIG" ; then
5 kx PKGCONFIG=
5 kx fi
5 kx fi
5 kx fi
5 kx
5 kx AC_PATH_TOOL(STRIP_XE, strip)
5 kx
5 kx # this is an unpleasant hack
5 kx # but if we are cross compiling, and there isn't a matching
5 kx # pkconfig for the --host setting, then don't use the 'local'
5 kx # pkconfig at all
5 kx if test x"$host" != x"$build" ; then
5 kx AC_PATH_PROG(BUILD_STRIP_XE, strip)
5 kx if test x"$BUILD_STRIP_XE" = x"$STRIP_XE" ; then
5 kx STRIP_XE=
5 kx fi
5 kx fi
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl Allow excluding the contributed drivers
5 kx dnl --------------------------------------------------
5 kx
5 kx AC_ARG_ENABLE([contrib], AS_HELP_STRING([--disable-contrib], [Do not include contributed drivers]))
5 kx
5 kx CONTRIBINCLUDE="include $srcdir/contrib/contrib.mak"
5 kx INSTALL_CONTRIB="install-contrib-extras"
5 kx
5 kx if test x"$enable_contrib" = x; then
5 kx case $host in
5 kx *-mingw*|*-msys*)
5 kx AC_MSG_WARN([disabling contrib devices])
5 kx enable_contrib=no
5 kx ;;
5 kx *)
5 kx ;;
5 kx esac
5 kx fi
5 kx
5 kx if test x"$enable_contrib" != x"no"; then
5 kx # This is just an arbitrary file in contrib to check
5 kx if test -f $srcdir/contrib/gdevbjc_.c; then
5 kx enable_contrib=yes
5 kx else
5 kx enable_contrib=no
5 kx fi
5 kx fi
5 kx
5 kx if test x$enable_contrib = xno; then
5 kx CONTRIBINCLUDE=""
5 kx INSTALL_CONTRIB=""
5 kx CFLAGS="$CFLAGS -DNOCONTRIB"
5 kx fi
5 kx AC_SUBST(CONTRIBINCLUDE)
5 kx AC_SUBST(INSTALL_CONTRIB)
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl Set build flags based on environment
5 kx dnl --------------------------------------------------
5 kx
5 kx CC_OPT_FLAGS_TO_TRY="-O -DNDEBUG"
5 kx CC_VISIBILITY_FLAGS_TO_TRY=""
5 kx SET_DT_SONAME="-soname="
5 kx CFLAGS_LARGEFILE=""
5 kx
5 kx case $host in
5 kx *-linux*|*-gnu)
5 kx if test x"$GCC" = x"yes"; then
5 kx CC_OPT_FLAGS_TO_TRY="-O2 -DNDEBUG"
5 kx CC_DBG_FLAGS_TO_TRY="-gdwarf-2 -g3 -O0"
5 kx CC_VISIBILITY_FLAGS_TO_TRY="-fvisibility=hidden"
5 kx fi
5 kx ;;
5 kx *bsd*)
5 kx if test x"$GCC" = x"yes"; then
5 kx CC_OPT_FLAGS_TO_TRY="-O2 -DNDEBUG"
5 kx CC_DBG_FLAGS_TO_TRY="-gdwarf-2 -g3 -O0"
5 kx CC_VISIBILITY_FLAGS_TO_TRY="-fvisibility=hidden"
5 kx fi
5 kx ;;
5 kx *-darwin*)
5 kx if test x"$GCC" = x"yes"; then
5 kx CC_OPT_FLAGS_TO_TRY="-O2 -DNDEBUG"
5 kx CC_DBG_FLAGS_TO_TRY="-gdwarf-2 -g3 -O0"
5 kx CC_VISIBILITY_FLAGS_TO_TRY="-fvisibility=hidden"
5 kx fi
5 kx SET_DT_SONAME=""
5 kx ;;
5 kx *-mingw*|*-msys*)
5 kx if test x"$GCC" = x"yes"; then
5 kx CC_OPT_FLAGS_TO_TRY="-O2 -DNDEBUG"
5 kx CC_DBG_FLAGS_TO_TRY="-gdwarf-2 -g3 -O0"
5 kx CC_VISIBILITY_FLAGS_TO_TRY="-fvisibility=hidden"
5 kx fi
5 kx SET_DT_SONAME=""
5 kx ;;
5 kx *-sun*|*-solaris*)
5 kx CC_OPT_FLAGS_TO_TRY="-O2 -DNDEBUG"
5 kx CFLAGS_LARGEFILE="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
5 kx # the trailing space is required!
5 kx if test $GCC = no; then
5 kx SET_DT_SONAME="-h "
5 kx fi
5 kx if test x"$GCC" = x"yes"; then
5 kx CC_OPT_FLAGS_TO_TRY="-O2 -DNDEBUG"
5 kx CC_DBG_FLAGS_TO_TRY="-gdwarf-2 -g3 -O0"
5 kx CC_VISIBILITY_FLAGS_TO_TRY="-fvisibility=hidden"
5 kx else
5 kx CC_DBG_FLAGS_TO_TRY="-g -O0"
5 kx fi
5 kx ;;
5 kx *-aix*)
5 kx if test x"$GCC" = x"yes"; then
5 kx CC_OPT_FLAGS_TO_TRY="-O2 -DNDEBUG"
5 kx CC_DBG_FLAGS_TO_TRY="-gdwarf-2 -g3 -O0"
5 kx SET_DT_SONAME="so"
5 kx CC_VISIBILITY_FLAGS_TO_TRY="-fvisibility=hidden"
5 kx fi
5 kx ;;
5 kx esac
5 kx
5 kx AC_SUBST(SET_DT_SONAME)
5 kx
5 kx
5 kx if test x"$GCC" = x"yes"; then
5 kx cflags_to_try="-Wall -Wstrict-prototypes -Wundef \
5 kx -Wmissing-declarations -Wmissing-prototypes -Wwrite-strings \
5 kx -fno-strict-aliasing -Werror=declaration-after-statement \
5 kx -fno-builtin -fno-common -Werror=return-type $CFLAGS_LARGEFILE"
5 kx optflags_to_try="$CC_OPT_FLAGS_TO_TRY"
5 kx dbgflags_to_try="$CC_DBG_FLAGS_TO_TRY"
5 kx else
5 kx cflags_to_try="$CFLAGS_LARGEFILE"
5 kx optflags_to_try="$CC_OPT_FLAGS_TO_TRY"
5 kx dbgflags_to_try="$CC_DBG_FLAGS_TO_TRY"
5 kx fi
5 kx
5 kx AC_MSG_CHECKING([if compiler supports restrict])
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
5 kx #if defined(__STDC_VERSION__) && __STDC_VERSION__ == 199901L
5 kx void test (char * restrict p){}
5 kx #else
5 kx void test (char * __restrict p){}
5 kx #endif
5 kx ]], [[
5 kx #if defined(__STDC_VERSION__) && __STDC_VERSION__ == 199901L
5 kx char *restrict t;
5 kx #else
5 kx char * __restrict t;
5 kx #endif
5 kx test(t);
5 kx return 1;
5 kx ]])],[
5 kx CFLAGS="$CFLAGS -DHAVE_RESTRICT=1"
5 kx if test x"$host" = x"$build" ; then
5 kx CFLAGSAUX="$CFLAGSAUX -DHAVE_RESTRICT=1"
5 kx fi
5 kx AC_MSG_RESULT([yes])],[
5 kx CFLAGS="$CFLAGS -DHAVE_RESTRICT=0"
5 kx if test x"$host" = x"$build" ; then
5 kx CFLAGSAUX="$CFLAGSAUX -DHAVE_RESTRICT=0"
5 kx fi
5 kx AC_MSG_RESULT([no])])
5 kx
5 kx
5 kx
5 kx AC_ARG_WITH([arch_h], AS_HELP_STRING([--with-arch_h=<arch.h to use>],
5 kx [Use a custom arch.h (must be an absolute path)]),[], [with_arch_h=])
5 kx
5 kx ARCH_CONF_HEADER=
5 kx
5 kx if test x"$with_arch_h" = x""; then
5 kx case $host in
5 kx x86_64*-mingw*|x86_64*-msys*)
5 kx ARCH_CONF_HEADER="\$(GLSRCDIR)/../arch/windows-x64-msvc.h"
5 kx ;;
5 kx *-mingw*|*-msys*)
5 kx ARCH_CONF_HEADER="\$(GLSRCDIR)/../arch/windows-x86-msvc.h"
5 kx ;;
5 kx *-darwin*)
5 kx ARCH_CONF_HEADER="\$(GLSRCDIR)/../arch/osx-x86-x86_64-ppc-gcc.h"
5 kx ;;
5 kx *)
5 kx ARCH_CONF_HEADER=
5 kx if test x"$host" != x"$build"; then
5 kx ARCH_CONF_HEADER="\$(GLSRCDIR)/../$ARCH_AUTOCONF_HEADER"
5 kx else
5 kx ARCH_CONF_HEADER=
5 kx fi
5 kx ;;
5 kx esac
5 kx else
5 kx ARCH_CONF_HEADER=$with_arch_h
5 kx fi
5 kx
5 kx AC_SUBST(ARCH_CONF_HEADER)
5 kx
5 kx # debug configurarion is available by default with "make debug"
5 kx #AC_ARG_ENABLE([debug], AS_HELP_STRING([--enable-debug],
5 kx # [turn on debugging]))
5 kx #if test x$enable_debug = xyes; then
5 kx # optflags_to_try="-g"
5 kx # CFLAGS="-DDEBUG $CFLAGS"
5 kx #fi
5 kx
5 kx # NOTE: To correctly disable GCC's strict aliasing with '-fno-strict-aliasing'
5 kx # option, the 'cflags_to_try' have to be checked after 'optflags_to_try'.
5 kx AC_MSG_CHECKING([supported compiler flags])
5 kx old_cflags=$CFLAGS
5 kx
5 kx for flag in $optflags_to_try; do
5 kx CFLAGS="$CFLAGS $flag"
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
5 kx echo " $flag"
5 kx OPT_CFLAGS="$OPT_CFLAGS $flag"
5 kx ],[])
5 kx CFLAGS=$old_cflags
5 kx done
5 kx for flag in $cflags_to_try; do
5 kx CFLAGS="$CFLAGS $flag"
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
5 kx echo " $flag"
5 kx GCFLAGS="$GCFLAGS $flag"
5 kx ],[])
5 kx CFLAGS=$old_cflags
5 kx done
5 kx old_cflags=$CFLAGS
5 kx
5 kx for flag in $dbgflags_to_try; do
5 kx CFLAGS="$CFLAGS $flag"
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
5 kx echo " $flag"
5 kx DBG_CFLAGS="$DBG_CFLAGS $flag"
5 kx ],[])
5 kx CFLAGS=$old_cflags
5 kx done
5 kx
5 kx CFLAGS_VISIBILITY=""
5 kx
5 kx for flag in $CC_VISIBILITY_FLAGS_TO_TRY; do
5 kx CFLAGS="$CFLAGS $flag"
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
5 kx echo " $flag"
5 kx CFLAGS_VISIBILITY="$CFLAGS_VISIBILITY $flag"
5 kx ],[])
5 kx CFLAGS=$old_cflags
5 kx done
5 kx
5 kx AC_MSG_RESULT([ ...done.])
5 kx
5 kx dnl ----------------------------
5 kx dnl check for sanitize support
5 kx dnl ----------------------------
5 kx AC_MSG_CHECKING([compiler/linker address santizer support])
5 kx
5 kx AC_ARG_WITH([sanitizer], AS_HELP_STRING([--with-sanitizer=@<:@address/memory@:>@],
5 kx [Sanitizer for 'sanitize' target (defaults to 'address')]),
5 kx [SANITIZER=$with_sanitizer], [SANITIZER=address])
5 kx
5 kx CFLAGS_SANITIZE=""
5 kx CFLAGS_SANITIZE_TRY="-fsanitize=$SANITIZER -fno-omit-frame-pointer"
5 kx CFLAGS_SAVED="$CFLAGS"
5 kx CFLAGS="$CFLAGS_SANITIZE_TRY"
5 kx
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([#include <stdio.h>], [
5 kx return(0);
5 kx ])],
5 kx [CFLAGS_SANITIZE="$CFLAGS"],
5 kx [
5 kx if test x"$with_sanitizer" != x; then
5 kx AC_MSG_ERROR([--with-sanitizer=$with_sanitizer not supported by compiler])
5 kx else
5 kx CFLAGS_SANITIZE="'****************ADDRESS_SANITIZER_NOT_SUPPORTED*********************'"
5 kx fi
5 kx ]
5 kx )
5 kx
5 kx CFLAGS="$CFLAGS_SAVED"
5 kx
5 kx AC_MSG_RESULT([ ...done.])
5 kx
5 kx
5 kx dnl ----------------------------
5 kx dnl check for sanitize build warnings support
5 kx dnl ----------------------------
5 kx AC_MSG_CHECKING([compiler/linker address santizer build warnings support])
5 kx
5 kx CFLAGS_SANITIZE_TRY="$CFLAGS_SANITIZE -W -Wall -Wno-unused-parameter -Wno-sign-compare -Wno-implicit-fallthrough -Wno-missing-field-initializers -Wno-shift-negative-value -Wno-old-style-declaration -Wno-unused-but-set-parameter"
5 kx CFLAGS_SAVED="$CFLAGS"
5 kx CFLAGS="$CFLAGS_SANITIZE_TRY"
5 kx
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([#include <stdio.h>], [
5 kx return(0);
5 kx ])],
5 kx [CFLAGS_SANITIZE="$CFLAGS"], [echo 'extra warnings not supported'])
5 kx
5 kx CFLAGS="$CFLAGS_SAVED"
5 kx AC_MSG_RESULT([ ...done.])
5 kx
5 kx
5 kx dnl ----------------------------
5 kx dnl check for big/little endian
5 kx dnl ----------------------------
5 kx
5 kx AC_C_BIGENDIAN([BIGENDIAN=1], [BIGENDIAN=0],
5 kx [AC_MSG_ERROR([Endian status cannot be determined])],
5 kx [AC_MSG_ERROR([Building of universal binaries is not implemented.])])
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl check for sse2 intrinsics
5 kx dnl --------------------------------------------------
5 kx
5 kx AC_MSG_CHECKING([sse2 support])
5 kx save_cflags=$CFLAGS
5 kx CFLAGS="$CFLAGS $OPT_CFLAGS"
5 kx
5 kx HAVE_SSE2=""
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([#include <emmintrin.h>], [
5 kx __m128i input1;
5 kx unsigned char buf1[[128]];
5 kx input1 = _mm_loadu_si128((const __m128i *)buf1);
5 kx return(0);
5 kx ])],
5 kx [HAVE_SSE2="-DHAVE_SSE2"], [HAVE_SSE2=""])
5 kx
5 kx AC_ARG_ENABLE([sse2], AS_HELP_STRING([--disable-sse2],
5 kx [Do not use sse2 instrinsics]), [
5 kx if test "x$enable_sse2" = xno; then
5 kx HAVE_SSE2=""
5 kx fi])
5 kx
5 kx if test "x$HAVE_SSE2" != x; then
5 kx AC_MSG_RESULT(yes)
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx
5 kx AC_SUBST(HAVE_SSE2)
5 kx CFLAGS=$save_cflags
5 kx
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl Check for headers
5 kx dnl --------------------------------------------------
5 kx
5 kx AC_HEADER_DIRENT
5 kx AC_CHECK_HEADERS([errno.h fcntl.h limits.h malloc.h memory.h stdlib.h string.h strings.h sys/ioctl.h sys/param.h sys/time.h sys/times.h syslog.h unistd.h dirent.h ndir.h sys/dir.h sys/ndir.h inttypes.h])
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl Sun, BSD possibly other makes don't have quite the
5 kx dnl feature set of GNU make. We still prefer GNU make,
5 kx dnl but......
5 kx dnl --------------------------------------------------
5 kx
5 kx AC_ARG_WITH([make], AS_HELP_STRING([--with-make=@<:@"make" program name@:>@],
5 kx [If you use a version of make not called "make"]),
5 kx [MAKE=$with_make], [MAKE=make])
5 kx
5 kx AC_CHECK_PROG(MAKE_EXISTS,[$MAKE],[yes],[no])
5 kx
5 kx if test x"$MAKE_EXISTS" = x"no" ; then
5 kx AC_MSG_ERROR([Required make program '$MAKE' not found.])
5 kx fi
5 kx
5 kx OBJDIR_BSDMAKE_WORKAROUND=obj
5 kx SUB_MAKE_OPTION=
5 kx ORDER_ONLY=""
5 kx
5 kx AC_MSG_CHECKING(if make is GNU make)
5 kx if make --version 2> /dev/null | grep GNU 2>&1 > /dev/null ; then
5 kx AC_MSG_RESULT(yes)
5 kx SUB_MAKE_OPTION="-f \$(MAKEFILE)"
5 kx ORDER_ONLY="|"
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx # BSD Make treats obj special and cd into it first
5 kx OBJDIR_BSDMAKEWORKAOROUND="notobj"
5 kx fi
5 kx
5 kx AC_SUBST(OBJDIR_BSDMAKE_WORKAROUND)
5 kx AC_SUBST(ORDER_ONLY)
5 kx AC_SUBST(SUB_MAKE_OPTION)
5 kx
5 kx AC_CHECK_HEADER([sys/window.h])
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl Check for typedefs, structures, etc
5 kx dnl --------------------------------------------------
5 kx
5 kx AC_C_CONST
5 kx AC_C_INLINE
5 kx AC_TYPE_MODE_T
5 kx AC_TYPE_OFF_T
5 kx AC_TYPE_SIZE_T
5 kx AC_STRUCT_ST_BLOCKS
5 kx AC_STRUCT_TM
5 kx
5 kx dnl see if we're on a system that puts the *int*_t types
5 kx dnl from stdint.h in sys/types.h
5 kx if test "x$ac_cv_header_stdint_h" != xyes; then
5 kx AC_CHECK_TYPES([int8_t, int16_t, int32_t, uint8_t, uint16_t, uint32_t],,,[#include <sys/types.h>])
5 kx if test "$ac_cv_type_uint8_t" = yes; then
5 kx AC_DEFINE([SYS_TYPES_HAS_STDINT_TYPES])
5 kx GCFLAGS="$GCFLAGS -DSYS_TYPES_HAS_STDINT_TYPES"
5 kx fi
5 kx fi
5 kx
5 kx dnl we aren't interested in all of DEFS, so manually insert
5 kx dnl the flags we care about
5 kx if test "$ac_cv_c_const" != yes; then
5 kx GCFLAGS="$GCFLAGS -Dconst="
5 kx fi
5 kx if test "x$ac_cv_header_stdint_h" = "xyes"; then
5 kx GCFLAGS="$GCFLAGS -DHAVE_STDINT_H=1"
5 kx fi
5 kx
5 kx if test "x$ac_cv_header_dirent_h" = "xyes"; then
5 kx GCFLAGS="$GCFLAGS -DHAVE_DIRENT_H=1"
5 kx fi
5 kx
5 kx if test "x$ac_cv_header_ndir_h" = xyes; then
5 kx GCFLAGS="$GCFLAGS -DHAVE_NDIR_H=1"
5 kx fi
5 kx
5 kx if test "x$ac_cv_header_sys_dir_h" = "xyes"; then
5 kx GCFLAGS="$GCFLAGS -DHAVE_SYS_DIR_H=1"
5 kx fi
5 kx
5 kx if test "x$ac_cv_header_sys_ndir_h" = "xyes"; then
5 kx GCFLAGS="$GCFLAGS -DHAVE_SYS_NDIR_H=1"
5 kx fi
5 kx
5 kx if test "x$ac_cv_header_sys_time_h" = "xyes"; then
5 kx GCFLAGS="$GCFLAGS -DHAVE_SYS_TIME_H=1"
5 kx fi
5 kx
5 kx if test "x$ac_cv_header_sys_times_h" = "xyes"; then
5 kx GCFLAGS="$GCFLAGS -DHAVE_SYS_TIMES_H=1"
5 kx fi
5 kx
5 kx if test "x$ac_cv_header_inttypes_h" = "xyes"; then
5 kx GCFLAGS="$GCFLAGS -DHAVE_INTTYPES_H=1"
5 kx fi
5 kx
5 kx AC_CHECK_LIB([dl], [dlopen],
5 kx [AC_CHECK_HEADER([dlfcn.h], [GCFLAGS="$GCFLAGS -DHAVE_LIBDL=1";LIBS="-ldl $LIBS"])]
5 kx )
5 kx
5 kx large_color_index=1
5 kx
5 kx AC_ARG_WITH([large_color_index],, large_color_index="$with_large_color_index")
5 kx
5 kx if test x"$large_color_index" != "x0"; then
5 kx dnl try to find a 64 bit type for devicen color index
5 kx color_ind_type="none"
5 kx AC_CHECK_SIZEOF(unsigned long long)
5 kx if test $ac_cv_sizeof_unsigned_long_long = 8; then
5 kx color_ind_type="unsigned long long"
5 kx color_ind_size=$ac_cv_sizeof_unsigned_long_long
5 kx else
5 kx AC_CHECK_SIZEOF(unsigned long int)
5 kx if test $ac_cv_sizeof_unsigned_long_int = 8; then
5 kx color_ind_type="unsigned long int"
5 kx color_ind_size=$ac_cv_sizeof_unsigned_long_int
5 kx else
5 kx AC_CHECK_SIZEOF(unsigned __int64)
5 kx if test $ac_cv_sizeof_unsigned___int64 = 8; then
5 kx color_ind_type="unsigned __int64"
5 kx color_ind_size=$ac_cv_sizeof_unsigned___int64
5 kx else
5 kx AC_CHECK_SIZEOF(u_int64_t)
5 kx if test $ac_cv_sizeof_u_int64_t = 8; then
5 kx color_ind_type="u_int64_t"
5 kx color_ind_size=$ac_cv_sizeof_u_int64_t
5 kx fi
5 kx fi
5 kx fi
5 kx fi
5 kx else
5 kx dnl try to find a 32 bit type for devicen color index
5 kx color_ind_type="none"
5 kx AC_CHECK_SIZEOF(unsigned long int)
5 kx if test $ac_cv_sizeof_unsigned_long_int = 4; then
5 kx color_ind_type="unsigned long int"
5 kx color_ind_size=$ac_cv_sizeof_unsigned_long_int
5 kx else
5 kx AC_CHECK_SIZEOF(unsigned int)
5 kx if test $ac_cv_sizeof_unsigned_int = 4; then
5 kx color_ind_type="unsigned int"
5 kx color_ind_size=$ac_cv_sizeof_unsigned_int
5 kx else
5 kx AC_CHECK_SIZEOF(unsigned __int32)
5 kx if test $ac_cv_sizeof_unsigned___int32 = 4; then
5 kx color_ind_type="unsigned __int32"
5 kx color_in_size=$ac_cv_sizeof_unsigned___int32
5 kx else
5 kx AC_CHECK_SIZEOF(u_int32_t)
5 kx if test $ac_cv_sizeof_u_int32_t = 4; then
5 kx color_ind_type="u_int32_t"
5 kx color_ind_size=$ac_cv_sizeof_u_int32_t
5 kx fi
5 kx fi
5 kx fi
5 kx fi
5 kx fi
5 kx
5 kx dnl if a suitable type wasn't found above, we fall back to
5 kx dnl a default in genarch.
5 kx if test "$color_ind_type" != "none"; then
5 kx GCFLAGS="$GCFLAGS -DGX_COLOR_INDEX_TYPE=\"$color_ind_type\""
5 kx ARCH_SIZEOF_GX_COLOR_INDEX=$color_ind_size
5 kx fi
5 kx
5 kx AC_SUBST(ARCH_SIZEOF_GX_COLOR_INDEX)
5 kx
5 kx
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl Set options that we want to pass into all other
5 kx dnl configure scripts we might call
5 kx dnl --------------------------------------------------
5 kx
5 kx SUBCONFIG_OPTS="--build=$build --host=$host"
5 kx
5 kx #SUBCONFIG_OPTS=""
5 kx #if test x"$build_alias" != x""; then
5 kx # SUBCONFIG_OPTS="$SUBCONFIG_OPTS --build=$build_alias"
5 kx #fi
5 kx #if test x"$host_alias" != x""; then
5 kx # SUBCONFIG_OPTS="$SUBCONFIG_OPTS --host=$host_alias"
5 kx #fi
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl Check for libraries
5 kx dnl --------------------------------------------------
5 kx
5 kx AC_CHECK_LIB(m, cos)
5 kx
5 kx AC_CHECK_FUNCS([pread pwrite], [HAVE_PREAD_PWRITE="-DHAVE_PREAD_PWRITE=1"], [HAVE_PREAD_PWRITE=])
5 kx
5 kx if test "x$HAVE_PREAD_PWRITE" != "x"; then
5 kx save_cflags=$CFLAGS
5 kx CFLAGS="$CFLAGS -D__USE_UNIX98=1 -D_XOPEN_SOURCE=500"
5 kx AC_CHECK_DECLS([pwrite,pread], [], [HAVE_PREAD_PWRITE=])
5 kx CFLAGS=$save_cflags
5 kx if test "x$HAVE_PREAD_PWRITE" != "x"; then
5 kx GCFLAGS="$GCFLAGS -D__USE_UNIX98=1"
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(HAVE_PREAD_PWRITE)
5 kx
5 kx AC_CHECK_DECL([popen], [HAVE_POPEN_PROTO="-DHAVE_POPEN_PROTO=1"], [AVE_POPEN_PROTO=])
5 kx AC_SUBST(HAVE_POPEN_PROTO)
5 kx
5 kx SYNC="nosync"
5 kx PTHREAD_LIBS=""
5 kx RECURSIVE_MUTEXATTR=""
5 kx
5 kx AC_ARG_ENABLE([threading], AS_HELP_STRING([--disable-threading],
5 kx [disable support for multithreaded rendering]))
5 kx
5 kx # if you haven't got pread/pwrite, we can't use multithreading
5 kx if test "x$HAVE_PREAD_PWRITE" != "x"; then
5 kx if test "$enable_threading" != "no"; then
5 kx mutex_result="no"
5 kx AC_CHECK_LIB(pthread, pthread_create, [
5 kx SYNC=posync;
5 kx PTHREAD_LIBS="-lpthread"
5 kx ])
5 kx AC_MSG_CHECKING([for recursive mutexes])
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], [[
5 kx static int k = PTHREAD_MUTEX_RECURSIVE;
5 kx #ifndef pthread_mutexattr_settype
5 kx #ifdef __cplusplus
5 kx (void) pthread_mutexattr_settype;
5 kx #else
5 kx (void) pthread_mutexattr_settype;
5 kx #endif
5 kx #endif
5 kx ;
5 kx return 0;
5 kx ]])],[RECURSIVE_MUTEXATTR="-DGS_RECURSIVE_MUTEXATTR=PTHREAD_MUTEX_RECURSIVE"
5 kx mutex_result="PTHREAD_MUTEX_RECURSIVE"],[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], [[
5 kx static int k = PTHREAD_MUTEX_RECURSIVE_NP;
5 kx #ifndef pthread_mutexattr_settype
5 kx #ifdef __cplusplus
5 kx (void) pthread_mutexattr_settype;
5 kx #else
5 kx (void) pthread_mutexattr_settype;
5 kx #endif
5 kx #endif
5 kx ;
5 kx return 0;
5 kx ]])],[RECURSIVE_MUTEXATTR="-DGS_RECURSIVE_MUTEXATTR=PTHREAD_MUTEX_RECURSIVE_NP"
5 kx mutex_result="PTHREAD_MUTEX_RECURSIVE_NP"],[])])
5 kx AC_MSG_RESULT($mutex_result)
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(SYNC)
5 kx AC_SUBST(PTHREAD_LIBS)
5 kx AC_SUBST(RECURSIVE_MUTEXATTR)
5 kx
5 kx dnl Tesseract/Leptonica detection
5 kx TESSERACTDIR=tesseract
5 kx LEPTONICADIR=leptonica
5 kx OCR_VERSION=0
5 kx LEPTONICAINCLUDE=
5 kx TESSERACTINCLUDE=
5 kx TESSERACT_LIBS=
5 kx OCR_DEVS=
5 kx
5 kx OCR_DEVS_WARNING_LINE1=
5 kx OCR_DEVS_WARNING_LINE2=
5 kx
5 kx AC_ARG_WITH([tesseract], AS_HELP_STRING([--without-tesseract],
5 kx [do not try to use the Tesseract library for OCR]))
5 kx
5 kx if test x$with_tesseract != xno; then
5 kx AC_MSG_CHECKING([for local Tesseract library source])
5 kx if test -d $srcdir/tesseract && test -d $srcdir/leptonica; then
5 kx AC_MSG_RESULT([yes])
5 kx AC_LANG_PUSH(C++)
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[HAVE_CXX_COMPILER=yes; AC_SUBST(CXX)],[HAVE_CXX_COMPILER=no])
5 kx if test x$HAVE_CXX_COMPILER != xyes; then
5 kx AC_MSG_WARN([Disabling tesseract as no working C++ compiler])
5 kx elif test x$SYNC = xnosync ; then
5 kx AC_MSG_ERROR([Threading disabled or not available. Tesseract OCR relies on threading. Rerun configure with "--without-tesseract" to exclude OCR from the build])
5 kx else
5 kx
5 kx save_cxxflags="$CXXFLAGS"
5 kx cxxflags_to_try="-std=c++17 -stdlib=libstdc++"
5 kx CXXFLAGS_TO_USE=""
5 kx
5 kx AC_MSG_CHECKING([supported C++ compiler flags])
5 kx for flag in $cxxflags_to_try ; do
5 kx CXXFLAGS="$CXXFLAGS $flag"
5 kx
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <cstdlib>]], [[return 0;]])],[
5 kx echo " $flag"; CXXFLAGS_TO_USE="$CXXFLAGS_TO_USE $flag"
5 kx ],[])
5 kx
5 kx CXXFLAGS="$old_cflags"
5 kx done
5 kx
5 kx if test x"$GXX" = x"no" || echo $CXXFLAGS_TO_USE | grep "std=c++17" ; then
5 kx if test x"$GXX" = x"no" ; then
5 kx OCR_DEVS_WARNING_LINE1="C++ compiler does not appear to be gcc or compatible, attempting to continue anyway"
5 kx OCR_DEVS_WARNING_LINE2="NOTE: that tesseract requires a C++17 compatible C++ compiler"
5 kx fi
5 kx
5 kx CXXFLAGS="$save_cxxflags $CXXFLAGS_TO_USE"
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl check for sse4.1, avx, avx2 or fma
5 kx dnl --------------------------------------------------
5 kx AC_MSG_CHECKING([sse4.1 support])
5 kx save_cxxflags=$CXXFLAGS
5 kx TESS_CXXFLAGS="$CXXFLAGS"
5 kx CXXFLAGS="$CXXFLAGS -msse4.1"
5 kx
5 kx TESS_SSE4_1=""
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([#include <emmintrin.h>
5 kx #include <smmintrin.h>],
5 kx [__m128i input1;
5 kx unsigned char buf1[[128]];
5 kx input1 = _mm_loadu_si128((const __m128i *)buf1);
5 kx input1 = _mm_hadd_epi32(input1, input1);
5 kx return(0);
5 kx ])],
5 kx [TESS_SSE4_1="-msse4.1"],
5 kx [TESS_SSE4_1=""])
5 kx
5 kx if test "x$TESS_SSE4_1" != x; then
5 kx AC_MSG_RESULT(yes)
5 kx TESS_CXXFLAGS="$TESS_CXXFLAGS -DHAVE_SSE4_1"
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx
5 kx AC_MSG_CHECKING([avx support])
5 kx CXXFLAGS="$save_cxxflags -mavx"
5 kx
5 kx TESS_AVX=""
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([#include <immintrin.h>],
5 kx [__m256d input1 = _mm256_setzero_pd();
5 kx input1 = _mm256_hadd_pd(input1, input1);
5 kx return(0);])],
5 kx [TESS_AVX="-mavx"],
5 kx [TESS_AVX=""])
5 kx
5 kx if test "x$TESS_AVX" != x; then
5 kx AC_MSG_RESULT(yes)
5 kx TESS_CXXFLAGS="$TESS_CXXFLAGS -DHAVE_AVX"
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx
5 kx AC_MSG_CHECKING([avx2 support])
5 kx CXXFLAGS="$save_cxxflags -mavx2"
5 kx
5 kx TESS_AVX2=""
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([#include <immintrin.h>],
5 kx [__m256i input1;
5 kx unsigned char buf1[[256]];
5 kx input1 = _mm256_loadu_si256((const __m256i *)buf1);
5 kx input1 = _mm256_adds_epu8(input1, input1);
5 kx return(0);])],
5 kx [TESS_AVX2="-mavx2"],
5 kx [TESS_AVX2=""])
5 kx
5 kx if test "x$TESS_AVX2" != x; then
5 kx AC_MSG_RESULT(yes)
5 kx TESS_CXXFLAGS="$TESS_CXXFLAGS -DHAVE_AVX2"
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx
5 kx AC_MSG_CHECKING([fma support])
5 kx CXXFLAGS="$save_cxxflags -mfma"
5 kx
5 kx TESS_FMA=""
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([#include <immintrin.h>],
5 kx [__m256d input1 = _mm256_setzero_pd();
5 kx input1 = _mm256_fmadd_pd(input1, input1, input1);
5 kx return(0);])],
5 kx [TESS_FMA="-mfma"],
5 kx [TESS_FMA=""])
5 kx
5 kx if test "x$TESS_FMA" != x; then
5 kx AC_MSG_RESULT(yes)
5 kx TESS_CXXFLAGS="$TESS_CXXFLAGS -DHAVE_FMA"
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx
5 kx AC_MSG_CHECKING([neon support])
5 kx CXXFLAGS="$save_cxxflags -mfpu=neon -mcpu=cortex-a53"
5 kx
5 kx TESS_NEON=""
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([#include "arm_neon.h"],
5 kx [int32x4_t round = vdupq_n_s32(10);
5 kx return(0);])],
5 kx [TESS_NEON="-mfpu=neon -mcpu=cortex-a53 -D__ARM_NEON__"],
5 kx [TESS_NEON=""])
5 kx
5 kx if test "x$TESS_NEON" != x; then
5 kx AC_MSG_RESULT(yes)
5 kx TESS_CXXFLAGS="$TESS_CXXFLAGS -DHAVE_NEON"
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx
5 kx CXXFLAGS="$save_cxxflags"
5 kx
5 kx OCR_VERSION=1
5 kx OCR_DEVS="\$(DD)ocr.dev \$(DD)hocr.dev \$(DD)pdfocr8.dev \$(DD)pdfocr24.dev \$(DD)pdfocr32.dev"
5 kx LEPTONICAINCLUDE="include base/leptonica.mak"
5 kx TESSERACTINCLUDE="include base/tesseract.mak"
5 kx TESSERACT_LIBS="-lstdc++"
5 kx else
5 kx OCR_DEVS_WARNING_LINE1="OCR devices disabled due to incompatible compiler: tesseract requires a C++17 compatible compiler"
5 kx fi
5 kx fi
5 kx AC_LANG_POP()
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(TESSERACT_LIBS)
5 kx AC_SUBST(LEPTONICAINCLUDE)
5 kx AC_SUBST(TESSERACTINCLUDE)
5 kx AC_SUBST(LEPTONICADIR)
5 kx AC_SUBST(TESSERACTDIR)
5 kx AC_SUBST(OCR_DEVS)
5 kx AC_SUBST(OCR_VERSION)
5 kx AC_SUBST(TESS_AVX)
5 kx AC_SUBST(TESS_AVX2)
5 kx AC_SUBST(TESS_FMA)
5 kx AC_SUBST(TESS_SSE4_1)
5 kx AC_SUBST(TESS_NEON)
5 kx AC_SUBST(TESS_CXXFLAGS)
5 kx
5 kx dnl Tests for iconv (Needed for OpenPrinting Vector, "opvp" output device)
5 kx AC_ARG_WITH(libiconv,
5 kx [AS_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
5 kx [use the libiconv library])],,
5 kx [with_libiconv=maybe])
5 kx found_iconv=no
5 kx case $with_libiconv in
5 kx maybe)
5 kx # Check in the C library first
5 kx AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
5 kx # Check if we have GNU libiconv
5 kx if test $found_iconv = "no"; then
5 kx AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
5 kx fi
5 kx # Check if we have a iconv in -liconv, possibly from vendor
5 kx if test $found_iconv = "no"; then
5 kx AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
5 kx fi
5 kx ;;
5 kx no)
5 kx found_iconv=no
5 kx ;;
5 kx gnu|yes)
5 kx AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
5 kx ;;
5 kx native)
5 kx AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
5 kx ;;
5 kx esac
5 kx if test x$found_iconv != xno -a x$with_libiconv != xno ; then
5 kx LIBS="$LIBS -liconv"
5 kx fi
5 kx
5 kx case $with_libiconv in
5 kx gnu)
5 kx AC_DEFINE(USE_LIBICONV_GNU, 1, [Using GNU libiconv])
5 kx CFLAGS="$CFLAGS -DUSE_LIBICONV_GNU"
5 kx ;;
5 kx native)
5 kx AC_DEFINE(USE_LIBICONV_NATIVE, 1, [Using a native implementation of iconv in a separate library])
5 kx ;;
5 kx esac
5 kx
5 kx dnl Check for libidn (needed for Unicode password support)
5 kx AC_ARG_WITH(libidn,
5 kx [AS_HELP_STRING([--without-libidn],
5 kx [Do not use libidn to support Unicode passwords])],,
5 kx [with_libidn=maybe])
5 kx
5 kx if test x$with_libidn != xno; then
5 kx if test x"$PKGCONFIG" != x""; then
5 kx AC_MSG_CHECKING(for libidn with pkg-config)
5 kx if $PKGCONFIG --exists libidn; then
5 kx AC_MSG_RESULT(yes)
5 kx LIBS="$LIBS `$PKGCONFIG --libs libidn`"
5 kx CFLAGS="$CFLAGS `$PKGCONFIG --cflags libidn`"
5 kx HAVE_LIBIDN=-DHAVE_LIBIDN
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx fi
5 kx if test -z "$HAVE_LIBIDN"; then
5 kx AC_CHECK_LIB(idn, stringprep, [
5 kx with_libidn=no
5 kx AC_CHECK_HEADER([stringprep.h],
5 kx [
5 kx with_libidn=yes
5 kx HAVE_LIBIDN="-DHAVE_LIBIDN"
5 kx LIBS="$LIBS -lidn"
5 kx ])
5 kx ], [
5 kx if test x$with_libidn != xmaybe; then
5 kx AC_MSG_ERROR([libidn not found])
5 kx fi
5 kx with_libidn=no
5 kx ])
5 kx fi
5 kx fi
5 kx
5 kx UTF8DEVS=''
5 kx if test x$with_libidn != xno; then
5 kx if test x$found_iconv != xno; then
5 kx UTF8DEVS='$(PSD)utf8.dev'
5 kx fi
5 kx fi
5 kx AC_SUBST(HAVE_LIBIDN)
5 kx AC_SUBST(UTF8DEVS)
5 kx
5 kx dnl Tests for libpaper (to determine system default paper size)
5 kx AC_ARG_WITH([libpaper],
5 kx AS_HELP_STRING([--without-libpaper],
5 kx [disable libpaper support]))
5 kx if test x$with_libpaper != xno; then
5 kx AC_CHECK_LIB(paper, systempapername, [with_libpaper=yes],
5 kx [
5 kx AC_MSG_WARN([disabling support for libpaper])
5 kx with_libpaper=no
5 kx ])
5 kx fi
5 kx if test x$with_libpaper != xno; then
5 kx AC_CHECK_HEADER([paper.h], [with_libpaper=yes],
5 kx [
5 kx AC_MSG_WARN([disabling support for libpaper])
5 kx with_libpaper=no
5 kx ])
5 kx fi
5 kx
5 kx if test x$with_libpaper != xno; then
5 kx LIBS="$LIBS -lpaper"
5 kx AC_DEFINE(USE_LIBPAPER, 1, [Using libpaper])
5 kx CFLAGS="$CFLAGS -DUSE_LIBPAPER"
5 kx fi
5 kx
5 kx dnl Fontconfig support
5 kx HAVE_FONTCONFIG=""
5 kx FONTCONFIG_CFLAGS=""
5 kx FONTCONFIG_LIBS=""
5 kx AC_ARG_ENABLE([fontconfig], AS_HELP_STRING([--disable-fontconfig],
5 kx [Do not use fontconfig to list system fonts]))
5 kx if test "$enable_fontconfig" != "no"; then
5 kx # We MUST NOT use PKG_CHECK_MODULES since it is a) not a standard
5 kx # autoconf macro and b) requires pkg-config on the system, which is
5 kx # NOT standard on ANY OS, including Linux!
5 kx if test "x$PKGCONFIG" != x; then
5 kx AC_MSG_CHECKING(for fontconfig with pkg-config)
5 kx if $PKGCONFIG --exists fontconfig; then
5 kx AC_MSG_RESULT(yes)
5 kx FONTCONFIG_CFLAGS="$CFLAGS `$PKGCONFIG --cflags fontconfig`"
5 kx FONTCONFIG_LIBS="`$PKGCONFIG --libs fontconfig`"
5 kx HAVE_FONTCONFIG=-DHAVE_FONTCONFIG
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx fi
5 kx if test -z "$HAVE_FONTCONFIG"; then
5 kx AC_CHECK_LIB([fontconfig], [FcInitLoadConfigAndFonts], [
5 kx AC_CHECK_HEADER([fontconfig/fontconfig.h], [
5 kx FONTCONFIG_LIBS="-lfontconfig"
5 kx HAVE_FONTCONFIG="-DHAVE_FONTCONFIG"
5 kx ])
5 kx ])
5 kx fi
5 kx fi
5 kx AC_SUBST(HAVE_FONTCONFIG)
5 kx AC_SUBST(FONTCONFIG_CFLAGS)
5 kx AC_SUBST(FONTCONFIG_LIBS)
5 kx
5 kx dnl DBus support
5 kx HAVE_DBUS=""
5 kx DBUS_CFLAGS=""
5 kx DBUS_LIBS=""
5 kx AC_ARG_ENABLE([dbus], AS_HELP_STRING([--disable-dbus],
5 kx [Do not use dbus to communicate with external services]))
5 kx if test "$enable_dbus" != "no"; then
5 kx if test "x$PKGCONFIG" != x; then
5 kx AC_MSG_CHECKING(for dbus with pkg-config)
5 kx if $PKGCONFIG --exists dbus-1; then
5 kx AC_MSG_RESULT(yes)
5 kx DBUS_CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1`"
5 kx DBUS_LIBS="`$PKGCONFIG --libs dbus-1`"
5 kx HAVE_DBUS=-DHAVE_DBUS
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx fi
5 kx if test -z "$HAVE_DBUS"; then
5 kx AC_CHECK_LIB([dbus], [dbus_message_iter_get_basic], [
5 kx AC_CHECK_HEADER([dbus-1.0/dbus/dbus.h], [
5 kx DBUS_LIBS="-ldbus-1 -lpthread -lrt"
5 kx HAVE_DBUS="-DHAVE_DBUS"
5 kx ])
5 kx ])
5 kx fi
5 kx fi
5 kx AC_SUBST(HAVE_DBUS)
5 kx AC_SUBST(DBUS_CFLAGS)
5 kx AC_SUBST(DBUS_LIBS)
5 kx
5 kx
5 kx AC_ARG_ENABLE([freetype], AS_HELP_STRING([--disable-freetype],
5 kx [Disable freetype for font rasterization]))
5 kx
5 kx FT_BRIDGE=0
5 kx SHARE_FT=0
5 kx FTSRCDIR=src
5 kx FT_CFLAGS=
5 kx FT_LIBS=
5 kx
5 kx INSERT_UFST_BRIDGE_EQUAL_ONE=
5 kx UFST_ROOT=
5 kx UFST_CFLAGS=
5 kx UFST_LIB_EXT=
5 kx FAPIUFST_MAK="\$(GLSRCDIR)\$(D)stub.mak"
5 kx
5 kx if test x"$enable_fapi" != xno; then
5 kx
5 kx dnl UFST detection
5 kx AC_ARG_WITH([ufst], AS_HELP_STRING([--with-ufst=UFST_ROOT_DIR],
5 kx [Use UFST]),
5 kx [], [with_ufst=no])
5 kx
5 kx if test x"$with_ufst" != xno; then
5 kx if test -d $with_ufst; then
5 kx INSERT_UFST_BRIDGE_EQUAL_ONE="UFST_BRIDGE=1"
5 kx case $with_ufst in
5 kx /*) UFST_ROOT=$with_ufst ;;
5 kx *) UFST_ROOT=`pwd`/$with_ufst ;;
5 kx esac
5 kx
5 kx # Various versions of UFST fail to build with -Werror=return-type so
5 kx # strip that off our GCFLAGS if it's there.
5 kx tmp_cflags=""
5 kx for tmp_cflag in $GCFLAGS ; do
5 kx echo $tmp_cflag
5 kx tmp_cflags="$tmp_cflags $(echo $tmp_cflag | grep -v "Werror=return-type")"
5 kx done
5 kx GCFLAGS="$tmp_cflags"
5 kx
5 kx FAPIUFST_MAK="\$(UFST_ROOT)\$(D)fapiufst.mak"
5 kx
5 kx if ! test -f $UFST_ROOT/fapiufst.mak ; then
5 kx echo $UFST_ROOT/fapiufst.mak
5 kx AC_MSG_ERROR([UFST: fapiufst.mak not found])
5 kx fi
5 kx
5 kx # Check pointer size
5 kx AC_CHECK_SIZEOF(char*)
5 kx
5 kx # UFST 5.x uses strcmpi() but on GNU systems the equivalent is
5 kx # strcasecmp()
5 kx if test "x$ac_cv_sizeof_charp" = "x8"; then
5 kx UFST_CFLAGS="-DGCCx86_64 -DO_BINARY=0 -Dstrcmpi=strcasecmp"
5 kx else
5 kx if test "x$ac_cv_sizeof_charp" = "x4"; then
5 kx UFST_CFLAGS="-DGCCx86 -DO_BINARY=0 -Dstrcmpi=strcasecmp"
5 kx fi
5 kx fi
5 kx
5 kx UFST_LIB_EXT=.a
5 kx else
5 kx AC_MSG_ERROR([UFST source directory not found])
5 kx fi
5 kx fi
5 kx
5 kx if test x"$enable_freetype" != xno; then
5 kx AC_MSG_CHECKING([for local freetype library source])
5 kx dnl We prefer freetype2 over freetype, so it is easy to override
5 kx dnl the included freetype source with a checkout from upstream.
5 kx for dir in $srccdir/freetype2 $srcdir/freetype; do
5 kx if test -f $dir/src/base/ftbbox.c; then
5 kx AC_MSG_RESULT(yes)
5 kx SHARE_FT=0
5 kx FTSRCDIR="$dir"
5 kx FT_CFLAGS="-I$dir/include"
5 kx FT_BRIDGE=1
5 kx break;
5 kx fi
5 kx done
5 kx
5 kx if test x"$FTSRCDIR" = x"src"; then
5 kx AC_MSG_RESULT([no])
5 kx if test x"$PKGCONFIG" != x""; then
5 kx AC_MSG_CHECKING(for system freetype2 >= 2.4.2 with pkg-config)
5 kx # pkg-config needs the libtool version, which != the freetype2 version <sigh!>
5 kx # There is a table of corresponding ft2<->libtool numbers in freetype/docs/VERSION.DLL
5 kx if $PKGCONFIG --atleast-version=12.0.6 freetype2; then
5 kx AC_MSG_RESULT(yes)
5 kx if test "x$FT_CFLAGS" = "x"; then
5 kx FT_CFLAGS="$CFLAGS `$PKGCONFIG --cflags freetype2`"
5 kx fi
5 kx if test "x$FT_LIBS" = "x"; then
5 kx FT_LIBS="`$PKGCONFIG --libs-only-l freetype2`"
5 kx fi
5 kx if test "x$FT_LIB_PATH" = "x"; then
5 kx FT_LIB_PATH="`$PKGCONFIG --libs-only-L freetype2`"
5 kx fi
5 kx FT_BRIDGE=1
5 kx SHARE_FT=1
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx AFS=1
5 kx fi
5 kx else
5 kx AC_CHECK_HEADER([ft2build.h], [FT_BRIDGE=1], [AFS=1])
5 kx
5 kx if test "x$FT_BRIDGE" = x1; then
5 kx AC_CHECK_LIB(freetype, FT_Init_FreeType,
5 kx [FT_BRIDGE=1], [FT_BRIDGE=0; AFS=1])
5 kx
5 kx if test "x$FT_BRIDGE" = x1; then
5 kx AC_MSG_CHECKING(for system freetype2 library >= 2.4.2)
5 kx AC_COMPILE_IFELSE(
5 kx [AC_LANG_PROGRAM([#include "ft2build.h"
5 kx #include FT_FREETYPE_H], [
5 kx #if FREETYPE_MAJOR < 2
5 kx FAIL
5 kx #endif
5 kx #if FREETYPE_MINOR < 4
5 kx FAIL
5 kx #endif
5 kx #if FREETYPE_PATCH < 2
5 kx FAIL
5 kx #endif
5 kx return(0);
5 kx ])],
5 kx [FT_BRIDGE=1;AC_MSG_RESULT(yes)], [FT_BRIDGE=0; AFS=1;AC_MSG_RESULT(no)])
5 kx fi
5 kx fi
5 kx fi
5 kx fi
5 kx fi
5 kx fi
5 kx
5 kx if test x"$FT_BRIDGE" != x"1"; then
5 kx if test x"$enable_auxtools_only" != x"yes" ; then
5 kx AC_MSG_ERROR([No usable Freetype source or library found])
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(INSERT_UFST_BRIDGE_EQUAL_ONE)
5 kx AC_SUBST(UFST_ROOT)
5 kx AC_SUBST(UFST_CFLAGS)
5 kx AC_SUBST(UFST_LIB_EXT)
5 kx AC_SUBST(FAPIUFST_MAK)
5 kx
5 kx AC_SUBST(FT_BRIDGE)
5 kx AC_SUBST(SHARE_FT)
5 kx AC_SUBST(FTSRCDIR)
5 kx AC_SUBST(FT_CFLAGS)
5 kx AC_SUBST(FT_LIBS)
5 kx AC_SUBST(FT_LIB_PATH)
5 kx
5 kx TIFF_JPEG_INCLUDE=
5 kx
5 kx if test x"$enable_auxtools_only" = x"yes" ; then
5 kx LIBJPEGDIR=
5 kx SHARE_LIBJPEG=0
5 kx AC_DEFINE([DONT_HAVE_JMEMSYS_H], 1, [])
5 kx AC_SUBST(SHARE_LIBJPEG)
5 kx AC_SUBST(LIBJPEGDIR)
5 kx else
5 kx AC_MSG_CHECKING([for local jpeg library source])
5 kx dnl At present, we give the local source priority over the shared
5 kx dnl build, so that the D_MAX_BLOCKS_IN_MCU patch will be applied.
5 kx dnl A more sophisticated approach would be to test the shared lib
5 kx dnl to see whether it has already been patched.
5 kx LIBJPEGDIR=src
5 kx if test -f $srcdir/jpeg/jpeglib.h; then
5 kx AC_MSG_RESULT([jpeg])
5 kx SHARE_LIBJPEG=0
5 kx LIBJPEGDIR=$srcdir/jpeg
5 kx elif test -f $srcdir/jpeg-6b/jpeglib.h; then
5 kx AC_MSG_RESULT([jpeg-6b])
5 kx SHARE_LIBJPEG=0
5 kx LIBJPEGDIR=$srcdir/jpeg-6b
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx AC_CHECK_LIB(jpeg, jpeg_set_defaults, [
5 kx AC_CHECK_HEADERS([jpeglib.h], [SHARE_LIBJPEG=1])
5 kx ])
5 kx fi
5 kx
5 kx if test x"$LIBJPEGDIR" != x"src" ; then
5 kx TIFF_JPEG_INCLUDE="$LIBJPEGDIR"
5 kx fi
5 kx
5 kx if test -z "$SHARE_LIBJPEG"; then
5 kx AC_MSG_ERROR([I wasn't able to find a copy
5 kx of the jpeg library. This is required for compiling
5 kx ghostscript. Please download a copy of the source,
5 kx e.g. from http://www.ijg.org/, unpack it at the
5 kx top level of the gs source tree, and rename
5 kx the directory to 'jpeg'.
5 kx ])
5 kx fi
5 kx AC_SUBST(SHARE_LIBJPEG)
5 kx AC_SUBST(LIBJPEGDIR)
5 kx dnl check for the internal jpeg memory header
5 kx AC_MSG_CHECKING([for jmemsys.h])
5 kx if test -r $LIBJPEGDIR/jmemsys.h; then
5 kx AC_MSG_RESULT([yes])
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx AC_DEFINE([DONT_HAVE_JMEMSYS_H], 1,
5 kx [define if the libjpeg memory system prototypes aren't available])
5 kx fi
5 kx fi
5 kx
5 kx # this option is useful if you're cross-compiling and want to use
5 kx # your toolchain's zlib for $host but the local one for $build
5 kx AC_ARG_WITH([local-zlib], AS_HELP_STRING([--without-local-zlib],
5 kx [do not check for local zlib sources (has no effect on AUX toolchain when cross-building)]))
5 kx
5 kx AC_MSG_CHECKING([for local zlib source])
5 kx dnl zlib is needed for language level 3, and libpng
5 kx # we must define ZLIBDIR regardless because png.mak does a -I$(ZLIBDIR)
5 kx # this seems a harmless default
5 kx ZLIBDIR=src
5 kx AUX_SHARED_ZLIB=
5 kx ZLIBCFLAGS=""
5 kx
5 kx if test x"$with_local_zlib" = x"no" ; then
5 kx AC_MSG_RESULT([skip])
5 kx AC_CHECK_LIB(z, deflate, [
5 kx AC_CHECK_HEADERS(zlib.h, [SHARE_ZLIB=1; AUX_SHARED_ZLIB="-l\$(ZLIB_NAME)"])
5 kx ])
5 kx else
5 kx if test -d $srcdir/zlib; then
5 kx AC_MSG_RESULT([yes])
5 kx SHARE_ZLIB=0
5 kx ZLIBDIR=$srcdir/zlib
5 kx
5 kx if test x"$GCC" = x"yes"; then
5 kx ZLIBCFLAGS="-Wno-write-strings"
5 kx fi
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx AC_CHECK_LIB(z, deflate, [
5 kx AC_CHECK_HEADERS(zlib.h, [SHARE_ZLIB=1; AUX_SHARED_ZLIB="-l\$(ZLIB_NAME)"])
5 kx ])
5 kx fi
5 kx fi
5 kx if test -z "$SHARE_ZLIB"; then
5 kx AC_MSG_ERROR([I did not find a copy of zlib on your system.
5 kx Please either install it, or unpack a copy of the source in a
5 kx local directory named 'zlib'. See http://www.gzip.org/zlib/
5 kx for more information.
5 kx ])
5 kx fi
5 kx
5 kx AC_SUBST(SHARE_ZLIB)
5 kx AC_SUBST(AUX_SHARED_ZLIB)
5 kx AC_SUBST(ZLIBCFLAGS)
5 kx AC_SUBST(ZLIBDIR)
5 kx AC_SUBST(FT_SYS_ZLIB)
5 kx
5 kx dnl png for the png output device; it also requires zlib
5 kx if test x"$enable_auxtools_only" = x"yes" ; then
5 kx LIBPNGDIR=""
5 kx SHARE_LIBPNG=0
5 kx else
5 kx LIBPNGDIR=src
5 kx PNGDEVS=''
5 kx PNGDEVS_ALL='png48 png16m pnggray pngmono pngmonod png256 png16 pngalpha png16malpha'
5 kx AC_MSG_CHECKING([for local png library source])
5 kx if test -f $srcdir/libpng/pngread.c; then
5 kx AC_MSG_RESULT([yes])
5 kx SHARE_LIBPNG=0
5 kx LIBPNGDIR=$srcdir/libpng
5 kx PNGDEVS="$PNGDEVS_ALL"
5 kx case $host in
5 kx *powerpc*)
5 kx # Building on PPC with gcc, disable libpng's PPC specific
5 kx # optimizations: we don't include the source file for it
5 kx # and it only applies to reading, which we don't use.
5 kx if test x"$GCC" = x"yes"; then
5 kx CFLAGS="$CFLAGS -DPNG_POWERPC_VSX_OPT=0"
5 kx fi
5 kx ;;
5 kx *arm64*|*aarch64*)
5 kx # Building on arm64 with gcc, disable libpng's neon
5 kx # optimizations.
5 kx if test x"$GCC" = x"yes"; then
5 kx CFLAGS="$CFLAGS -DPNG_ARM_NEON_OPT=0"
5 kx fi
5 kx ;;
5 kx esac
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx AC_CHECK_LIB(png, png_create_write_struct, [
5 kx AC_CHECK_HEADERS(png.h, [
5 kx SHARE_LIBPNG=1
5 kx PNGDEVS="$PNGDEVS_ALL"
5 kx ], [SHARE_LIBPNG=0])
5 kx ], [SHARE_LIBPNG=0], [-lz])
5 kx fi
5 kx if test -z "$PNGDEVS"; then
5 kx AC_MSG_NOTICE([disabling png output devices])
5 kx fi
5 kx fi
5 kx AC_SUBST(SHARE_LIBPNG)
5 kx AC_SUBST(LIBPNGDIR)
5 kx #AC_SUBST(PNGDEVS)
5 kx
5 kx WHICHLCMS=
5 kx
5 kx AC_MSG_CHECKING([for local lcms2mt library source])
5 kx LCMS2DIR=src
5 kx LCMS2MTDIR=src
5 kx
5 kx if test x"$enable_auxtools_only" = x"yes" ; then
5 kx SHARELCMS=0
5 kx LCMS2DIR=
5 kx LCMS2MTDIR=
5 kx else
5 kx # First check for Artifex version
5 kx LCMS2MTSRC=$srcdir/lcms2mt
5 kx if test -f $LCMS2MTSRC/include/lcms2mt.h; then
5 kx AC_MSG_RESULT([yes])
5 kx SHARELCMS=0
5 kx WHICHLCMS=lcms2mt
5 kx LCMS2MTDIR=$LCMS2MTSRC
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx # Now check for local lcms2 (non-Artifex)
5 kx AC_MSG_CHECKING([for local lcms2 library source])
5 kx LCMS2SRC=$srcdir/lcms2
5 kx if test -f $LCMS2SRC/include/lcms2.h; then
5 kx AC_MSG_RESULT([yes])
5 kx SHARELCMS=0
5 kx WHICHLCMS=lcms2
5 kx LCMS2DIR=$LCMS2SRC
5 kx else
5 kx # See if we have system library of lcms2
5 kx AC_MSG_RESULT([no])
5 kx AC_MSG_CHECKING([for system lcms2 library])
5 kx AC_CHECK_LIB(lcms2, _cmsCreateMutex, [
5 kx AC_CHECK_HEADERS([lcms2.h], [SHARELCMS=1;WHICHLCMS=lcms2])
5 kx ])
5 kx if test x$WHICHLCMS = x; then
5 kx AC_MSG_ERROR([lcms2 not found, or too old])
5 kx fi
5 kx fi
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(SHARELCMS)
5 kx AC_SUBST(WHICHLCMS)
5 kx AC_SUBST(LCMS2DIR)
5 kx AC_SUBST(LCMS2MTDIR)
5 kx
5 kx dnl look for libtiff, it also requires lib
5 kx dnl png for the png output device; it also requires zlib
5 kx AC_ARG_WITH([libtiff], AS_HELP_STRING([--without-libtiff],
5 kx [disable use of libtiff]), with_libtiff=no)
5 kx
5 kx AC_ARG_WITH([system-libtiff], AS_HELP_STRING([--with-system-libtiff],
5 kx [Force using the systems libtiff]),
5 kx [], [with_system_libtiff=check])
5 kx
5 kx if test x"$with_libtiff" = x"no" ; then
5 kx with_system_libtiff=none
5 kx fi
5 kx
5 kx TIFFDEVS=''
5 kx FAX_DEVS=''
5 kx XPSWRITEDEVICE=''
5 kx
5 kx
5 kx LIBTIFFDIR='src'
5 kx LIBTIFFCONFDIR='src'
5 kx TIFFCFLAGS=''
5 kx
5 kx TIFFDEVS_ALL='tiffs tiff12nc tiff24nc tiff48nc tiff32nc tiff64nc tiffcrle tifflzw tiffpack tiffgray tiffsep tiffsep1 tiffscaled tiffscaled4 tiffscaled8 tiffscaled24 tiffscaled32'
5 kx FAX_DEVS_ALL='cfax dfaxlow dfaxhigh fax faxg3 faxg32d faxg4 tiffg3 tiffg32d tiffg4 tfax'
5 kx
5 kx case "x$with_system_libtiff" in
5 kx xcheck)
5 kx if test -d $srcdir/tiff; then
5 kx LIBTIFFDIR=$srcdir/tiff
5 kx LIBTIFFCONFDIR=tiff-config
5 kx HAVE_LOCAL_LIBTIFF=1
5 kx SHARE_LIBTIFF=0
5 kx ENABLETIFF="\$(D_)TIFF_INCLUDED\$(_D)"
5 kx else
5 kx # We MUST NOT use PKG_CHECK_MODULES since it is a) not a standard
5 kx # autoconf macro and b) requires pkg-config on the system, which is
5 kx # NOT standard on ANY OS, including Linux!
5 kx if test "x$PKGCONFIG" != x; then
5 kx AC_MSG_CHECKING(for libtiff with pkg-config)
5 kx if $PKGCONFIG --exists libtiff-4; then
5 kx AC_MSG_RESULT(yes)
5 kx CFLAGS="$CFLAGS `$PKGCONFIG --cflags libtiff-4`"
5 kx LIBS="$LIBS `$PKGCONFIG --libs libtiff-4`"
5 kx HAVE_SYSTEM_LIBTIFF=1
5 kx fi
5 kx fi
5 kx if test "x$HAVE_SYSTEM_LIBTIFF" = "x1"; then
5 kx AC_CHECK_LIB(tiff, TIFFOpen,
5 kx [AC_CHECK_HEADERS(tiff.h, [HAVE_SYSTEM_LIBTIFF=1;SHARE_LIBTIFF=1])],
5 kx [], [-ljpeg])
5 kx fi
5 kx fi
5 kx if test "x$HAVE_LOCAL_LIBTIFF" = x && test "x$HAVE_SYSTEM_LIBTIFF" = x; then
5 kx AC_MSG_NOTICE([Could not find a copy of libtiff on your system. Disabling tiff and xps output devices.])
5 kx else
5 kx TIFFDEVS="$TIFFDEVS_ALL"
5 kx FAX_DEVS="$FAX_DEVS_ALL"
5 kx XPSWRITEDEVICE='xpswrite'
5 kx ENABLETIFF="\$(D_)TIFF_INCLUDED\$(_D)"
5 kx fi
5 kx ;;
5 kx xyes)
5 kx # We MUST NOT use PKG_CHECK_MODULES since it is a) not a standard
5 kx # autoconf macro and b) requires pkg-config on the system, which is
5 kx # NOT standard on ANY OS, including Linux!
5 kx if test "x$PKGCONFIG" != x; then
5 kx AC_MSG_CHECKING(for libtiff with pkg-config)
5 kx if $PKGCONFIG --exists libtiff-4; then
5 kx AC_MSG_RESULT(yes)
5 kx CFLAGS="$CFLAGS `$PKGCONFIG --cflags libtiff-4`"
5 kx LIBS="$LIBS `$PKGCONFIG --libs libtiff-4`"
5 kx HAVE_SYSTEM_LIBTIFF=1
5 kx fi
5 kx fi
5 kx if test -z "$HAVE_SYSTEM_LIBTIFF"; then
5 kx AC_CHECK_LIB(tiff, TIFFOpen,
5 kx [AC_CHECK_HEADERS(tiff.h, [HAVE_SYSTEM_LIBTIFF=1;SHARE_LIBTIFF=1])],
5 kx [], [-ljpeg])
5 kx fi
5 kx if test "x$HAVE_SYSTEM_LIBTIFF" != x; then
5 kx SHARE_LIBTIFF=1
5 kx TIFFDEVS="$TIFFDEVS_ALL"
5 kx FAX_DEVS="$FAX_DEVS_ALL"
5 kx XPSWRITEDEVICE='xpswrite'
5 kx ENABLETIFF="\$(D_)TIFF_INCLUDED\$(_D)"
5 kx else
5 kx AC_MSG_NOTICE([Could not find a copy of libtiff on your system. Disabling tiff and xps output devices.])
5 kx fi
5 kx ;;
5 kx xno)
5 kx AC_MSG_CHECKING([for local libtiff source])
5 kx if test -d $srcdir/tiff; then
5 kx AC_MSG_RESULT([yes])
5 kx LIBTIFFDIR=$srcdir/tiff
5 kx LIBTIFFCONFDIR=tiff-config
5 kx SHARE_LIBTIFF=0
5 kx TIFFDEVS="$TIFFDEVS_ALL"
5 kx FAX_DEVS="$FAX_DEVS_ALL"
5 kx XPSWRITEDEVICE='xpswrite'
5 kx ENABLETIFF="\$(D_)TIFF_INCLUDED\$(_D)"
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx AC_MSG_NOTICE([Could not find local copy of libtiff. Disabling tiff and xps output devices.])
5 kx fi
5 kx ;;
5 kx xnone)
5 kx ;;
5 kx esac
5 kx
5 kx # Skip this check for the recursive configure call.
5 kx # Not relevant for AUX tools.
5 kx if test x"$enable_auxtools_only" != x"yes" ; then
5 kx if test x"$ENABLETIFF" != x"" && test x"$SHARE_LIBTIFF" != x"$SHARE_LIBJPEG" ; then
5 kx AC_MSG_ERROR([Mixing local libtiff with shared libjpeg not supported])
5 kx fi
5 kx fi
5 kx
5 kx CGLAGS_STORE=$CFLAGS
5 kx CFLAGS=-Wno-misleading-indentation
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[CFLAGS_NMI="-Wno-misleading-indentation"],[CFLAGS_NMI=""])
5 kx
5 kx CFLAGS=-Wno-undef
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[CFLAGS_NUD="-Wno-undef"],[CFLAGS_NUD=""])
5 kx
5 kx CFLAGS=$CGLAGS_STORE
5 kx
5 kx if test x"$SHARE_LIBTIFF" = x"0" ; then
5 kx echo "Running libtiff configure script..."
5 kx olddir=`pwd`
5 kx if ! test -d "$LIBTIFFCONFDIR" ; then
5 kx mkdir "$LIBTIFFCONFDIR"
5 kx fi
5 kx cd "$LIBTIFFCONFDIR" && "$absolute_source_path/$LIBTIFFDIR/configure" $GS_TIFF_CONFIGURE_OPTS --disable-lerc --disable-jbig --disable-lzma --disable-zstd --disable-webp --disable-libdeflate $SUBCONFIG_OPTS
5 kx status=$?
5 kx if test $status -ne 0 ; then
5 kx AC_MSG_ERROR([libtiff configure script failed], $status)
5 kx fi
5 kx cd "$olddir"
5 kx
5 kx if test x"$GCC" = x"yes"; then
5 kx TIFFCFLAGS="-Wno-write-strings $CFLAGS_NMI $CFLAGS_NUD -DJPEG_LIB_MK1_OR_12BIT=0"
5 kx fi
5 kx # if we're building with our own libjpeg, or we have another libjpeg available, allow jpeg compression in TIFF
5 kx if test x"$SHARE_LIBJPEG" = x"1" ; then
5 kx TIFFCFLAGS="-DJPEG_SUPPORT -DOJPEG_SUPPORT -DJPEG_LIB_MK1_OR_12BIT=0 $TIFFCFLAGS"
5 kx fi
5 kx
5 kx echo
5 kx echo "Continuing with Ghostscript configuration..."
5 kx fi
5 kx
5 kx AC_SUBST(SHARE_LIBTIFF)
5 kx AC_SUBST(LIBTIFFDIR)
5 kx AC_SUBST(LIBTIFFCONFDIR)
5 kx AC_SUBST(TIFFCFLAGS)
5 kx AC_SUBST(ENABLETIFF)
5 kx
5 kx
5 kx SHARE_EXPAT=0
5 kx EXPATDIR=src
5 kx EXPAT_CFLAGS=
5 kx EXPAT_LIBS=
5 kx
5 kx if test x"$with_xps" != x"no" -a x"$enable_auxtools_only" != x"yes" ; then
5 kx if test -f $srcdir/xps/xps.mak; then
5 kx AC_MSG_CHECKING([for local expat library source])
5 kx if test -f $srcdir/expat/lib/expat.h ; then
5 kx AC_MSG_RESULT([yes])
5 kx SHARE_EXPAT=0
5 kx EXPATDIR=$srcdir/expat
5 kx EXPAT_CFLAGS="-DHAVE_MEMMOVE"
5 kx if test x"$BIGENDIAN" != x"0"; then
5 kx EXPAT_CFLAGS="$EXPAT_CFLAGS -DBYTEORDER=4321"
5 kx else
5 kx EXPAT_CFLAGS="$EXPAT_CFLAGS -DBYTEORDER=1234"
5 kx fi
5 kx else
5 kx AC_CHECK_LIB(expat, XML_ParserCreateNS, [
5 kx AC_CHECK_HEADER([expat.h], [SHARE_EXPAT=1])
5 kx ], [
5 kx AC_MSG_ERROR([expat lib not found])
5 kx ])
5 kx if test $SHARE_EXPAT = 1; then
5 kx if test "x$PKGCONFIG" != x; then
5 kx if $PKGCONFIG --exists expat; then
5 kx EXPAT_LIBS="`$PKGCONFIG --libs expat`"
5 kx CFLAGS="$CFLAGS `$PKGCONFIG --cflags expat`"
5 kx fi
5 kx fi
5 kx if test x"$XPS_LDFLAGS" = x ; then
5 kx EXPAT_LIBS="-lexpat"
5 kx fi
5 kx fi
5 kx fi
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(SHARE_EXPAT)
5 kx AC_SUBST(EXPATDIR)
5 kx AC_SUBST(EXPAT_CFLAGS)
5 kx AC_SUBST(EXPAT_LIBS)
5 kx
5 kx dnl look for CUPS...
5 kx AC_ARG_ENABLE([cups], AS_HELP_STRING([--disable-cups],
5 kx [Do not include CUPS support]))
5 kx
5 kx AC_ARG_WITH([pdftoraster], AS_HELP_STRING([--without-pdftoraster],
5 kx [Do not include CUPS' pdftoraster filter]))
5 kx
5 kx AC_ARG_WITH([local-cups], AS_HELP_STRING([--with-local-cups],
5 kx [Force using the GS supplied cups code - only useful for debugging]),
5 kx [with_local_cups=yes], [with_local_cups=no])
5 kx
5 kx AC_ARG_WITH([cups-serverbin], AS_HELP_STRING([--with-cups-serverbin],
5 kx [override the "cups-config --serverbin" path]), CUPS_SERVERBIN="$withval", CUPS_SERVERBIN="")
5 kx
5 kx AC_ARG_WITH([cups-serverroot], AS_HELP_STRING([--with-cups-serverroot],
5 kx [override the "cups-config --serverroot" path]), CUPS_SERVERROOT="$withval", CUPS_SERVERROOT="")
5 kx
5 kx
5 kx AC_ARG_WITH([cups-datadir], AS_HELP_STRING([--with-cups-datadir],
5 kx [override the "cups-config --datadir" path]), CUPS_DATADIR="$withval", CUPS_DATADIR="")
5 kx
5 kx CUPSDEV=""
5 kx CUPSINCLUDE=""
5 kx CUPSCFLAGS=""
5 kx CUPSLIBS=""
5 kx CUPSLIBDIRS=""
5 kx CUPSCONFIG="${CUPSCONFIG:=}"
5 kx CUPSSERVERBIN=""
5 kx CUPSSERVERROOT=""
5 kx CUPSDATA=""
5 kx CUPSVERSION="0"
5 kx CUPSPDFTORASTER="0"
5 kx CUPS_DIR=""
5 kx LIB_CUPS_DIR="src"
5 kx
5 kx cups_hard_fail=0
5 kx
5 kx SHARELCUPS=1
5 kx SHARELCUPSI=1
5 kx
5 kx case $host in
5 kx *-mingw*|*-msys*|*-cygwin*)
5 kx AC_MSG_WARN([disabling cups])
5 kx enable_cups=no
5 kx ;;
5 kx *)
5 kx ;;
5 kx esac
5 kx
5 kx if ( test -f $srcdir/cups/gdevcups.c ); then
5 kx CUPS_DIR="$srcdir/cups"
5 kx # If the user explicitly enabled cups, hard fail if not found
5 kx if test x"$enable_cups" = x"yes"; then
5 kx cups_hard_fail=1
5 kx fi
5 kx if test x$enable_cups != xno; then
5 kx if test x$with_local_cups != xyes; then
5 kx if test x"$CUPSCONFIG" = x""; then
5 kx AC_PATH_TOOL(CUPSCONFIG,cups-config)
5 kx if test x"$build" != x"$host"; then
5 kx AC_PATH_PROG(BUILD_CUPSCONFIG, cups-config)
5 kx if test x"$BUILD_CUPSCONFIG" = x"$CUPSCONFIG" ; then
5 kx CUPSCONFIG=
5 kx fi
5 kx fi
5 kx else
5 kx # We were given a cups-config on the command line, assume the user intends to
5 kx # include cups, and make not finding a hard fail.
5 kx cups_hard_fail=1
5 kx fi
5 kx # check for a libcups header
5 kx AC_CHECK_HEADER([cups/cups.h],[],[CUPSCONFIG=""])
5 kx # And check for a libcupsimage header
5 kx if test "x$CUPSCONFIG" != x; then
5 kx AC_CHECK_HEADER([cups/raster.h],[],[CUPSCONFIG=""])
5 kx fi
5 kx
5 kx if test "x$CUPSCONFIG" != x; then
5 kx dnl Use values from CUPS config...
5 kx CUPSCFLAGS="`$CUPSCONFIG --cflags` $CFLAGS"
5 kx # CUPSLINK="`$CUPSCONFIG --ldflags` `$CUPSCONFIG --static --image --libs | sed -e '1,$s/-lssl//'` $LIBS"
5 kx CUPSLINK="`$CUPSCONFIG --ldflags` `$CUPSCONFIG --image --libs`"
5 kx CUPSAPIVERSION="`$CUPSCONFIG --api-version`"
5 kx
5 kx GS_SPLIT_LIBS([CUPSLIBS], [$CUPSLINK])
5 kx GS_SPLIT_LIBPATHS([CUPSLIBDIRS],[$CUPSLINK])
5 kx
5 kx if test "x$CUPS_SERVERROOT" != "x"; then
5 kx CUPSSERVERROOT="$CUPS_SERVERROOT"
5 kx else
5 kx CUPSSERVERROOT="`$CUPSCONFIG --serverroot`"
5 kx fi
5 kx
5 kx if test "x$CUPS_SERVERBIN" != "x"; then
5 kx CUPSSERVERBIN="$CUPS_SERVERBIN"
5 kx else
5 kx CUPSSERVERBIN="`$CUPSCONFIG --serverbin`"
5 kx fi
5 kx
5 kx if test "x$CUPS_DATADIR" != "x"; then
5 kx CUPSDATA="$CUPS_DATADIR"
5 kx else
5 kx CUPSDATA="`$CUPSCONFIG --datadir`"
5 kx fi
5 kx
5 kx CUPSINCLUDE="include $srcdir/cups/cups.mak"
5 kx CUPSDEV="cups"
5 kx
5 kx # pwgraster support arrived in cups 1.5.x
5 kx if test "$CUPSAPIVERSION" ">" "1.4" ; then
5 kx CUPSDEV="$CUPSDEV pwgraster"
5 kx fi
5 kx
5 kx # appleraster support arrived in cups 2.2.2, so with
5 kx # API version 2.2 we do not necessarily have it, but
5 kx # 2.3 has it for sure
5 kx if test "$CUPSAPIVERSION" ">" "2.2" ; then
5 kx CUPSDEV="$CUPSDEV appleraster urf"
5 kx fi
5 kx
5 kx CUPSVERSION="`$CUPSCONFIG --version`"
5 kx
5 kx LCUPSINCLUDE="include \$(GLSRCDIR)/lcups.mak"
5 kx LCUPSIINCLUDE="include \$(GLSRCDIR)/lcupsi.mak"
5 kx if ( test x$with_pdftoraster != xno ); then
5 kx if test "$CUPSVERSION" ">" "1.2"; then
5 kx CUPSPDFTORASTER="1"
5 kx fi
5 kx fi
5 kx else
5 kx if test x"$cups_hard_fail" = x"1" ; then
5 kx AC_MSG_ERROR([libcups/libcupsimage not found])
5 kx fi
5 kx fi
5 kx else
5 kx AC_MSG_WARN([USING LOCAL CUPS SOURCE])
5 kx SHARELCUPS=0
5 kx SHARELCUPSI=0
5 kx AC_CHECK_FUNCS([strlcat], [CUPSCFLAGS="$CUPSCFLAGS -DHAVE_STRLCAT=1"], [])
5 kx AC_CHECK_FUNCS([strlcpy], [CUPSCFLAGS="$CUPSCFLAGS -DHAVE_STRLCPY=1"], [])
5 kx AC_CHECK_FUNCS([snprintf], [CUPSCFLAGS="$CUPSCFLAGS -DHAVE_SNPRINTF=1"], [])
5 kx AC_CHECK_FUNCS([vsnprintf], [CUPSCFLAGS="$CUPSCFLAGS -DHAVE_VSNPRINTF=1"], [])
5 kx LCUPSBUILDTYPE=linux
5 kx LCUPSINCLUDE="include \$(GLSRCDIR)/lcups.mak"
5 kx LCUPSIINCLUDE="include \$(GLSRCDIR)/lcupsi.mak"
5 kx CUPSDEV="cups pwgraster"
5 kx LIB_CUPS_DIR=$CUPS_DIR
5 kx fi
5 kx fi
5 kx fi
5 kx
5 kx #AC_SUBST(CUPSDEV)
5 kx AC_SUBST(CUPSCFLAGS)
5 kx AC_SUBST(CUPSLIBS)
5 kx AC_SUBST(CUPSLIBDIRS)
5 kx AC_SUBST(CUPSINCLUDE)
5 kx AC_SUBST(CUPSSERVERBIN)
5 kx AC_SUBST(CUPSSERVERROOT)
5 kx AC_SUBST(CUPSDATA)
5 kx AC_SUBST(CUPSINSTALL)
5 kx AC_SUBST(CUPS_DIR)
5 kx AC_SUBST(LIB_CUPS_DIR)
5 kx
5 kx AC_SUBST(SHARELCUPS)
5 kx AC_SUBST(SHARELCUPSI)
5 kx AC_SUBST(LCUPSBUILDTYPE)
5 kx AC_SUBST(LCUPSINCLUDE)
5 kx AC_SUBST(LCUPSIINCLUDE)
5 kx
5 kx
5 kx AC_SUBST(CUPSPDFTORASTER)
5 kx
5 kx dnl look for IJS implementation
5 kx AC_ARG_WITH([ijs], AS_HELP_STRING([--without-ijs],
5 kx [disable IJS driver support]))
5 kx
5 kx case $host in
5 kx *-mingw*|*-msys*)
5 kx AC_MSG_WARN([disabling the ijs device])
5 kx with_ijs=no
5 kx ;;
5 kx *)
5 kx ;;
5 kx esac
5 kx
5 kx dnl set safe defaults
5 kx IJSDIR=src
5 kx IJSDEVS=''
5 kx SHAREIJS=0
5 kx if test x$with_ijs != xno; then
5 kx AC_MSG_CHECKING([for local ijs library source])
5 kx if test -d $srcdir/ijs; then
5 kx AC_MSG_RESULT([yes])
5 kx IJSDIR=$srcdir/ijs
5 kx IJSDEVS='ijs'
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx AC_CHECK_LIB(ijs, ijs_server_init, [
5 kx AC_CHECK_HEADERS(ijs/ijs.h, [SHAREIJS=1])
5 kx ])
5 kx if test $SHAREIJS -eq 1 ; then
5 kx IJSLIB=ijs
5 kx # This is for safety - it prevents our header search path going outside the GS source tree
5 kx IJSDIR='$(GLOBJDIR)'
5 kx IJSDEVS='ijs'
5 kx fi
5 kx fi
5 kx fi
5 kx AC_SUBST(IJSDIR)
5 kx AC_SUBST(SHAREIJS)
5 kx AC_SUBST(IJSLIB)
5 kx #AC_SUBST(IJSDEVS)
5 kx
5 kx
5 kx JBIG2_DECODER=
5 kx JBIG2DIR=src
5 kx SHARE_JBIG2=0
5 kx JBIG2DEVS=''
5 kx JBIG2_AUTOCONF_CFLAGS=
5 kx
5 kx JB2_STDINT_TYPES_IN=
5 kx JBIG2DEC_REQ=0.19
5 kx
5 kx if test "x$JBIG2_DECODER" = x; then
5 kx dnl look for jbig2dec
5 kx AC_ARG_WITH([jbig2dec], AS_HELP_STRING([--without-jbig2dec],
5 kx [disable JBIG2 decode support]))
5 kx if test x$with_jbig2dec != xno; then
5 kx AC_MSG_CHECKING([for local jbig2dec library source])
5 kx for d in $srcdir/jbig2dec $srcdir/jbig2dec-0.2 $srcdir/jbig2dec-0.3; do
5 kx test -d "$d" && JBIG2DIR=$d && break
5 kx done
5 kx if test "x$JBIG2DIR" != xsrc; then
5 kx JBIG2_DECODER=jbig2dec
5 kx if test x$ac_cv_header_stdint_h = xyes ; then
5 kx JBIG2_AUTOCONF_CFLAGS="-DHAVE_STDINT_H=1"
5 kx else
5 kx
5 kx for include in sys/types.h inttypes.h sys/inttypes.h sys/int_types.h ; do
5 kx AC_MSG_CHECKING([for uint32_t in $include])
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <$include>]], [[uint32_t canary;]])],[
5 kx AC_MSG_RESULT([yes])
5 kx stdint_types_in="$include"
5 kx break;
5 kx ],[AC_MSG_RESULT(no)
5 kx ])
5 kx done
5 kx
5 kx case "$stdint_types_in" in
5 kx "sys/types.h")
5 kx JBIG2_AUTOCONF_CFLAGS="$JBIG2_AUTOCONF_CFLAGS -DSTD_INT_USE_SYS_TYPES_H"
5 kx ;;
5 kx "inttypes.h")
5 kx JBIG2_AUTOCONF_CFLAGS="$JBIG2_AUTOCONF_CFLAGS -DSTD_INT_USE_INTTYPES_H"
5 kx ;;
5 kx "sys/inttypes.h")
5 kx JBIG2_AUTOCONF_CFLAGS="$JBIG2_AUTOCONF_CFLAGS -DSTD_INT_USE_SYS_INTTYPES_H"
5 kx ;;
5 kx "sys/int_types.h")
5 kx JBIG2_AUTOCONF_CFLAGS="$JBIG2_AUTOCONF_CFLAGS -DSTD_INT_USE_SYS_INT_TYPES_H"
5 kx ;;
5 kx *)
5 kx AC_MSG_ERROR([
5 kx Unable to find suitable definitions of the stdint.h types (uint32_t and friends).
5 kx These are required by jbig2dec.
5 kx ])
5 kx esac
5 kx fi
5 kx
5 kx if test "x$BIGENDIAN" != "x0"; then
5 kx JBIG2_AUTOCONF_CFLAGS="$JBIG2_AUTOCONF_CFLAGS -DWORDS_BIGENDIAN"
5 kx fi
5 kx
5 kx AC_MSG_RESULT([$JBIG2DIR])
5 kx echo "Continuing with Ghostscript configuration..."
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx # We MUST NOT use PKG_CHECK_MODULES since it is a) not a standard
5 kx # autoconf macro and b) requires pkg-config on the system, which is
5 kx # NOT standard on ANY OS, including Linux!
5 kx if test "x$PKGCONFIG" != x; then
5 kx AC_MSG_CHECKING(for jbig2dec $JBIG2DEC_REQ with pkg-config)
5 kx if $PKGCONFIG --atleast-version=$JBIG2DEC_REQ jbig2dec; then
5 kx AC_MSG_RESULT(yes)
5 kx JBIG2DEC_CFLAGS="$CFLAGS `$PKGCONFIG --cflags jbig2dec`"
5 kx JBIG2DEC_LIBS="`$PKGCONFIG --libs jbig2dec`"
5 kx SHARE_JBIG2=1
5 kx else
5 kx AC_MSG_ERROR([jbig2 decoder not found, or too old])
5 kx fi
5 kx else
5 kx AC_MSG_CHECKING(for jbig2dec library)
5 kx AC_CHECK_LIB([jbig2dec], [jbig2_page_out], [
5 kx SHARE_JBIG2=1
5 kx ], [
5 kx AC_MSG_ERROR([jbig2 decoder not found, or too old])
5 kx ])
5 kx fi
5 kx if test x$with_jbig2dec != xno; then
5 kx JBIG2_DECODER=jbig2dec
5 kx fi
5 kx fi
5 kx fi
5 kx if test x$with_jbig2dec != xno; then
5 kx # I *think* jbig2dec handles these being missing gracefully
5 kx # if test x$ac_cv_header_stdint_h != xyes && test x$ac_cv_header_inttypes_h != xyes; then
5 kx # AC_MSG_WARN([JBIG2 support requires stdint types which do not seem to be available.])
5 kx # else
5 kx JBIG2DEVS='$(PSD)jbig2.dev'
5 kx # fi
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(JBIG2_DECODER)
5 kx AC_SUBST(JBIG2DIR)
5 kx AC_SUBST(SHARE_JBIG2)
5 kx AC_SUBST(JBIG2DEVS)
5 kx AC_SUBST(JBIG2_AUTOCONF_CFLAGS)
5 kx
5 kx JPXDIR=src
5 kx SHARE_JPX=0
5 kx JPXDEVS=''
5 kx JPX_DECODER=
5 kx JPX_AUTOCONF_CFLAGS=
5 kx JPX_LRINTF_SUBST=
5 kx
5 kx if test "x$ac_cv_header_stdint_h" = "xyes"; then
5 kx CFLAGS_OPJ_HAVE_STDINT_H="-DOPJ_HAVE_STDINT_H=1"
5 kx else
5 kx CFLAGS_OPJ_HAVE_STDINT_H=
5 kx fi
5 kx
5 kx
5 kx if test "x$ac_cv_header_inttypes_h" = "xyes"; then
5 kx CFLAGS_OPJ_HAVE_INTTYPES_H="-DOPJ_HAVE_INTTYPES_H=1"
5 kx else
5 kx CFLAGS_OPJ_HAVE_INTTYPES_H=
5 kx fi
5 kx
5 kx if test "x$BIGENDIAN" != "x0"; then
5 kx CFLAGS_OPJ_BIGENDIAN="-DOPJ_BIG_ENDIAN"
5 kx else
5 kx CFLAGS_OPJ_BIGENDIAN=
5 kx fi
5 kx
5 kx AC_CHECK_FUNCS([fseeko], [CFLAGS_OPJ_HAVE_FSEEKO="-DOPJ_HAVE_FSEEKO=1"], [CFLAGS_OPJ_HAVE_STDINT_H=])
5 kx
5 kx JPX_SSE_CFLAGS=""
5 kx
5 kx if test "x$HAVE_SSE2" = "x" ; then
5 kx if test x"$GCC" = x"yes"; then
5 kx JPX_SSE_CFLAGS="-U__SSE__"
5 kx fi
5 kx fi
5 kx
5 kx AC_CHECK_DECL(lrintf, , [OPJ_LRINTF_SUBST="-D\"lrintf(a)\"=\"((long)(a+0.5))\"]",[[#include <math.h>]])
5 kx
5 kx AC_ARG_ENABLE([openjpeg], AS_HELP_STRING([--disable-openjpeg],
5 kx [Do not use OpenJPEG for JPX decoding]))
5 kx
5 kx OPENJPEGDIR=$srcdir/openjpeg
5 kx
5 kx if test "x$JPX_DECODER" = "x"; then
5 kx if test "x$enable_openjpeg" != "xno"; then
5 kx AC_MSG_CHECKING([for local OpenJPEG library source])
5 kx if test -e $OPENJPEGDIR/src/lib/openjp2/openjpeg.h; then
5 kx AC_MSG_RESULT([yes])
5 kx JPXDIR="$OPENJPEGDIR"
5 kx JPX_DECODER=openjpeg
5 kx SHARE_JPX=0
5 kx AC_CHECK_FUNCS([memalign], [have_memalign=1])
5 kx
5 kx if test "x$have_memalign" = "x1"; then
5 kx JPX_AUTOCONF_CFLAGS=""
5 kx else
5 kx JPX_AUTOCONF_CFLAGS="-D\"memalign(a,b)=malloc(b)\""
5 kx fi
5 kx
5 kx CFLAGS_old="$CFLAGS"
5 kx CFLAGS="-Wno-attributes"
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[JPX_AUTOCONF_CFLAGS="$JPX_AUTOCONF_CFLAGS -Wno-attributes"],[])
5 kx CFLAGS="$CFLAGS_old"
5 kx
5 kx JPX_AUTOCONF_CFLAGS="$JPX_AUTOCONF_CFLAGS -DOPJ_STATIC -DMUTEX_pthread=0 $OPJ_LRINTF_SUBST -DUSE_JPIP -DUSE_OPENJPEG_JP2 $CFLAGS_OPJ_HAVE_STDINT_H $CFLAGS_OPJ_HAVE_INTTYPES_H $CFLAGS_OPJ_BIGENDIAN $CFLAGS_OPJ_HAVE_FSEEKO"
5 kx
5 kx JPXDEVS='$(PSD)jpx.dev'
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx check_for_opj_stream_set_user_data=no
5 kx if test x"$PKGCONFIG" != x""; then
5 kx AC_MSG_CHECKING(for OpenJPEG2)
5 kx if $PKGCONFIG --exists libopenjp2; then
5 kx JPX_AUTOCONF_CFLAGS="`$PKGCONFIG libopenjp2 --cflags` -DUSE_OPENJPEG_JP2"
5 kx JPX_AUTOCONF_LIBS="`$PKGCONFIG libopenjp2 --libs`"
5 kx SHARE_JPX=1
5 kx JPX_DECODER=openjpeg
5 kx AC_MSG_RESULT([yes])
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx check_for_opj_stream_set_user_data=yes
5 kx fi
5 kx else
5 kx check_for_opj_stream_set_user_data=yes
5 kx fi
5 kx if test x"$check_for_opj_stream_set_user_data" != x"no"; then
5 kx AC_CHECK_LIB(openjp2, opj_stream_set_user_data,
5 kx [JPX_AUTOCONF_CFLAGS="$JPX_AUTOCONF_CFLAGS $OPJ_LRINTF_SUBST -DUSE_JPIP -DUSE_OPENJPEG_JP2 $CFLAGS_OPJ_HAVE_STDINT_H $CFLAGS_OPJ_HAVE_INTTYPES_H $CFLAGS_OPJ_BIGENDIAN $CFLAGS_OPJ_HAVE_FSEEKO";
5 kx JPX_AUTOCONF_LIBS="-lopenjp2";
5 kx SHARE_JPX=1]
5 kx )
5 kx fi
5 kx fi
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(JPX_DECODER)
5 kx AC_SUBST(JPX_AUTOCONF_CFLAGS)
5 kx AC_SUBST(JPX_AUTOCONF_LIBS)
5 kx AC_SUBST(JPXDIR)
5 kx AC_SUBST(SHARE_JPX)
5 kx AC_SUBST(JPXDEVS)
5 kx
5 kx ENABLEURF=
5 kx URF_DEVS=''
5 kx URF_INCLUDE=
5 kx URF_DEV=
5 kx SURFX_H=
5 kx AC_ARG_WITH([urf], AS_HELP_STRING([--without-urf],
5 kx [do not try to include URF support]))
5 kx
5 kx if test x$with_urf != xno; then
5 kx AC_MSG_CHECKING([for URF support])
5 kx if test -d $srcdir/urf; then
5 kx AC_MSG_RESULT([yes])
5 kx ENABLEURF="\$(D_)URF_INCLUDED\$(_D)"
5 kx URF_DEVS='urfgray urfrgb urfcmyk'
5 kx GPDL_URF_TOP_OBJ="\$(GPDLOBJ)/\$(GPDL_URF_TOP_OBJ_FILE)"
5 kx URF_INCLUDE="\$(I_)\$(URFSRCDIR)\$(_I)"
5 kx URF_DEV="\$(GLD)urfd.dev"
5 kx SURFX_H="\$(URFSRCDIR)\$(D)surfx.h"
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(ENABLEURF)
5 kx AC_SUBST(GPDL_URF_TOP_OBJ)
5 kx AC_SUBST(URF_INCLUDE)
5 kx AC_SUBST(URF_DEV)
5 kx AC_SUBST(SURFX_H)
5 kx
5 kx AC_ARG_WITH([cal], AS_HELP_STRING([--without-cal],
5 kx [do not try to use the CAL library for acceleration]))
5 kx
5 kx CALSRCDIR=$srcdir/cal
5 kx if test x$with_cal != xno; then
5 kx AC_MSG_CHECKING([for local CAL library source])
5 kx if test -d $srcdir/cal; then
5 kx AC_MSG_RESULT([yes])
5 kx WITH_CAL=1
5 kx else
5 kx WITH_CAL=0
5 kx AC_MSG_RESULT([no])
5 kx fi
5 kx else
5 kx WITH_CAL=0
5 kx fi
5 kx
5 kx if test x$WITH_CAL != x0; then
5 kx dnl --------------------------------------------------
5 kx dnl check for sse4.2, avx2 or neon
5 kx dnl --------------------------------------------------
5 kx AC_MSG_CHECKING([sse4.2 support])
5 kx save_cflags=$CFLAGS
5 kx CFLAGS="$CFLAGS $OPT_CFLAGS -msse4.2"
5 kx
5 kx HAVE_SSE4_2=""
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([#include <emmintrin.h>
5 kx #include <smmintrin.h>], [
5 kx __m128i input1;
5 kx unsigned char buf1[[128]];
5 kx input1 = _mm_loadu_si128((const __m128i *)buf1);
5 kx input1 = _mm_hadd_epi32(input1, input1);
5 kx (void)_mm_extract_epi64(input1, 0);
5 kx return(0);
5 kx ])],
5 kx [HAVE_SSE4_2="-DHAVE_SSE4_2"], [HAVE_SSE4_2=""])
5 kx
5 kx #AC_ARG_ENABLE([sse4.2], AS_HELP_STRING([--disable-sse4.2],
5 kx # [Do not use sse4.2 instrinsics]), [
5 kx # if test "x$enable_sse4.2" = xno; then
5 kx # HAVE_SSE4_2=""
5 kx # fi])
5 kx
5 kx if test "x$HAVE_SSE4_2" != x; then
5 kx AC_MSG_RESULT(yes)
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx
5 kx AC_MSG_CHECKING([avx2 support])
5 kx CFLAGS="$save_cflags $OPT_CFLAGS -mavx2"
5 kx
5 kx HAVE_AVX2=""
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([#include <immintrin.h>], [
5 kx __m256i input1;
5 kx unsigned char buf1[[256]];
5 kx input1 = _mm256_loadu_si256((const __m256i *)buf1);
5 kx input1 = _mm256_adds_epu8(input1, input1);
5 kx (void)_mm256_insert_epi64(input1, 0, 0);
5 kx return(0);
5 kx ])],
5 kx [HAVE_AVX2="-DHAVE_AVX2"], [HAVE_AVX2=""])
5 kx
5 kx #AC_ARG_ENABLE([sse4.2], AS_HELP_STRING([--disable-sse4.2],
5 kx # [Do not use sse4.2 instrinsics]), [
5 kx # if test "x$enable_sse4.2" = xno; then
5 kx # HAVE_SSE4_2=""
5 kx # fi])
5 kx
5 kx if test "x$HAVE_AVX2" != x; then
5 kx AC_MSG_RESULT(yes)
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx
5 kx AC_MSG_CHECKING([neon support])
5 kx CFLAGS="$save_cflags $OPT_CFLAGS -mfpu=neon -mcpu=cortex-a53"
5 kx HAVE_NEON=""
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([#include "arm_neon.h"], [
5 kx int32x4_t round = vdupq_n_s32(10);
5 kx return(0);
5 kx ])],
5 kx [HAVE_NEON="-DHAVE_NEON"], [HAVE_NEON=""])
5 kx
5 kx #AC_ARG_ENABLE([neon], AS_HELP_STRING([--disable-neon],
5 kx # [Do not use neon instrinsics]), [
5 kx # if test "x$enable_neon" = xno; then
5 kx # HAVE_NEON=""
5 kx # fi])
5 kx
5 kx if test "x$HAVE_NEON" != x; then
5 kx AC_MSG_RESULT(yes)
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx
5 kx #AC_SUBST(HAVE_SSE4_2)
5 kx #AC_SUBST(HAVE_NEON)
5 kx CFLAGS=$save_cflags
5 kx
5 kx CAL_CFLAGS=""
5 kx CAL_SSE4_2_CFLAGS=""
5 kx CAL_AVX2_CFLAGS=""
5 kx CAL_NEON_CFLAGS=""
5 kx if test "x$HAVE_SSE4_2" != x; then
5 kx CAL_SSE4_2_CFLAGS="-msse4.2"
5 kx CAL_CFLAGS="$CAL_CFLAGS $HAVE_SSE4_2"
5 kx fi
5 kx if test "x$HAVE_AVX2" != x; then
5 kx CAL_AVX2_CFLAGS="-mavx2"
5 kx CAL_CFLAGS="$CAL_CFLAGS $HAVE_AVX2"
5 kx fi
5 kx if test "x$HAVE_NEON" != x; then
5 kx CAL_NEON_CFLAGS="-mfpu=neon -mcpu=cortex-a53"
5 kx CAL_CFLAGS="$CAL_CFLAGS $HAVE_NEON"
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(CALSRCDIR)
5 kx AC_SUBST(WITH_CAL)
5 kx AC_SUBST(CAL_CFLAGS)
5 kx AC_SUBST(CAL_SSE4_2_CFLAGS)
5 kx AC_SUBST(CAL_AVX2_CFLAGS)
5 kx AC_SUBST(CAL_NEON_CFLAGS)
5 kx
5 kx dnl check if we can/should build the gtk loader
5 kx AC_ARG_ENABLE([gtk], AS_HELP_STRING([--disable-gtk],
5 kx [Do not build the gtk loader]))
5 kx SOC_CFLAGS=""
5 kx SOC_LIBS=""
5 kx SOC_LOADER=""
5 kx if test "x$enable_gtk" != "xno"; then
5 kx # Try GTK+ 3.x first...
5 kx if test "x$PKGCONFIG" != x; then
5 kx AC_MSG_CHECKING(for GTK+ 3.x)
5 kx if $PKGCONFIG --exists gtk+-3.0; then
5 kx SOC_LOADER="dxmain"
5 kx SOC_CFLAGS="`$PKGCONFIG gtk+-3.0 --cflags`"
5 kx SOC_LIBS="`$PKGCONFIG gtk+-3.0 --libs`"
5 kx AC_MSG_RESULT([yes])
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx fi
5 kx
5 kx # Or resort to GTK+ 2.x
5 kx if test "x$SOC_LOADER" = "x"; then
5 kx AC_MSG_CHECKING(for GTK+ 2.x)
5 kx if $PKGCONFIG --exists gtk+-2.0; then
5 kx SOC_LOADER="dxmain"
5 kx SOC_CFLAGS="`$PKGCONFIG gtk+-2.0 --cflags`"
5 kx SOC_LIBS="`$PKGCONFIG gtk+-2.0 --libs`"
5 kx AC_MSG_RESULT([yes])
5 kx else
5 kx AC_MSG_RESULT([no])
5 kx fi
5 kx fi
5 kx fi
5 kx fi
5 kx
5 kx if test "x$SOC_LOADER" = "x"; then
5 kx SOC_LOADER="dxmainc"
5 kx fi
5 kx
5 kx AC_SUBST(SOC_CFLAGS)
5 kx AC_SUBST(SOC_LIBS)
5 kx AC_SUBST(SOC_LOADER)
5 kx
5 kx dnl optional X11 for display devices
5 kx if test x"$enable_auxtools_only" = x"yes" ; then
5 kx no_x=yes
5 kx else
5 kx AC_PATH_XTRA
5 kx fi
5 kx
5 kx X_LDFLAGS=""
5 kx X_CFLAGS=""
5 kx X_DEVS=""
5 kx X_LIBS=""
5 kx
5 kx if test x$no_x != xyes; then
5 kx if test "$x_libraries" = "/usr/lib"; then
5 kx echo "Ignoring X library directory \"$x_libraries\" requested by configure."
5 kx x_libraries="NONE"
5 kx fi
5 kx if test ! "$x_libraries" = "NONE" -a ! "$x_libraries" = ""; then
5 kx X_LDFLAGS="-L$x_libraries"
5 kx case $host in
5 kx *-sun*|*-solaris*)
5 kx X_LDFLAGS="$X_LDFLAGS -R$x_libraries"
5 kx ;;
5 kx *)
5 kx ;;
5 kx esac
5 kx
5 kx fi
5 kx
5 kx if test "$x_includes" = "/usr/include"; then
5 kx echo "Ignoring X include directory \"$x_includes\" requested by configure."
5 kx x_includes="NONE"
5 kx fi
5 kx if test ! "$x_includes" = "NONE" -a ! "$x_includes" = ""; then
5 kx X_CFLAGS="-I$x_includes"
5 kx fi
5 kx
5 kx SAVELIBS="$LIBS"
5 kx SAVELDFLAGS="$LDFLAGS"
5 kx LDFLAGS="$LDFLAGS $X_LDFLAGS"
5 kx
5 kx AC_CHECK_LIB(X11,XOpenDisplay)
5 kx AC_CHECK_LIB(Xext,XdbeQueryExtension)
5 kx AC_CHECK_LIB(Xt,XtAppCreateShell)
5 kx
5 kx LDFLAGS="$SAVELDFLAGS"
5 kx LIBS="$SAVELIBS"
5 kx
5 kx if test "$ac_cv_lib_Xt_XtAppCreateShell" = yes; then
5 kx X11DEVS="x11 x11alpha x11cmyk x11mono x11_ x11alt_ x11cmyk2 x11cmyk4 x11cmyk8 x11rg16x x11rg32x x11gray2 x11gray4"
5 kx X_DEVS=$X11DEVS
5 kx # the makefile wants a list of just the library names in X_LIBS
5 kx GS_SPLIT_LIBS([X_LIBS],
5 kx [-lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS])
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(X_LDFLAGS)
5 kx AC_SUBST(X_CFLAGS)
5 kx AC_SUBST(X_LIBS)
5 kx #AC_SUBST(X_DEVS)
5 kx #AC_SUBST(X11DEVS)
5 kx AC_SUBST(XLIBS)
5 kx
5 kx dnl executible name
5 kx AC_ARG_WITH([gs], AS_HELP_STRING([--with-gs=NAME],
5 kx [name of the Ghostscript executible [[gs]]]),
5 kx [GS="$with_gs"],[GS='gs'])
5 kx AC_SUBST(GS)
5 kx
5 kx PCL=no_gpcl6
5 kx PCL_TARGET=
5 kx
5 kx PLROMFS_MAK="\$(GLSRCDIR)\$(D)stub.mak"
5 kx PL_MAK="\$(GLSRCDIR)\$(D)stub.mak"
5 kx PCL_MAK="\$(GLSRCDIR)\$(D)stub.mak"
5 kx PCL_TOP_MAK="\$(GLSRCDIR)\$(D)stub.mak"
5 kx PXL_MAK="\$(GLSRCDIR)\$(D)stub.mak"
5 kx
5 kx if test x"$with_pcl" != x"no" ; then
5 kx if test -f $srcdir/pcl/pl/pl.mak; then
5 kx AC_ARG_WITH([pcl], AS_HELP_STRING([--with-pcl=NAME],
5 kx [name of the GhostPCL executible (if the source is available, ignored otherwise) [[gpcl6]]]),
5 kx [PCL="$with_pcl"],[PCL='gpcl6'])
5 kx
5 kx PCL_TARGET=gpcl6
5 kx
5 kx PLROMFS_MAK="\$(PLSRCDIR)\$(D)plromfs.mak"
5 kx PL_MAK="\$(PLSRCDIR)\$(D)pl.mak"
5 kx PCL_MAK="\$(PCL5SRCDIR)\$(D)pcl.mak"
5 kx PCL_TOP_MAK="\$(PCL5SRCDIR)\$(D)pcl_top.mak"
5 kx PXL_MAK="\$(PXLSRCDIR)\$(D)pxl.mak"
5 kx fi
5 kx fi
5 kx AC_SUBST(PCL)
5 kx AC_SUBST(PCL_TARGET)
5 kx
5 kx AC_SUBST(PLROMFS_MAK)
5 kx AC_SUBST(PL_MAK)
5 kx AC_SUBST(PCL_MAK)
5 kx AC_SUBST(PCL_TOP_MAK)
5 kx AC_SUBST(PXL_MAK)
5 kx
5 kx
5 kx XPS=no_gxps
5 kx XPS_TARGET=
5 kx
5 kx XPS_MAK="\$(GLSRCDIR)\$(D)stub.mak"
5 kx XPSROMFS_MAK="\$(GLSRCDIR)\$(D)stub.mak"
5 kx # gxps currently depends on code in pl
5 kx if test x"$with_xps" != x"no" ; then
5 kx if test x"$PCL_TARGET" != x ; then
5 kx if test -f $srcdir/xps/xps.mak; then
5 kx AC_ARG_WITH([xps], AS_HELP_STRING([--with-xps=NAME],
5 kx [name of the GhostXPS executible (if the source is available, ignored otherwise) [[gxps]]]),
5 kx [XPS="$with_xps"],[XPS='gxps'])
5 kx
5 kx XPS_TARGET=gxps
5 kx XPS_MAK="\$(XPSSRCDIR)\$(D)xps.mak"
5 kx XPSROMFS_MAK="\$(XPSSRCDIR)\$(D)xpsromfs.mak"
5 kx fi
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(XPS)
5 kx AC_SUBST(XPS_TARGET)
5 kx AC_SUBST(XPS_MAK)
5 kx AC_SUBST(XPSROMFS_MAK)
5 kx
5 kx GPDF_DEV=
5 kx PDF=
5 kx PDF_MAK="\$(GLSRCDIR)\$(D)stub.mak"
5 kx PDFROMFS_MAK="\$(GLSRCDIR)\$(D)stub.mak"
5 kx
5 kx if test x"$with_pdf" != x"no" ; then
5 kx
5 kx if test x"$JBIG2_DECODER" = x""; then
5 kx AC_MSG_ERROR([No JBIG2 decoder available, required for PDF support])
5 kx fi
5 kx if test x"$JPX_DECODER" = x""; then
5 kx AC_MSG_ERROR([No JPX/JPEG2000 decoder available, required for PDF support])
5 kx fi
5 kx
5 kx if test -f $srcdir/pdf/pdf.mak; then
5 kx AC_ARG_WITH([pdf], AS_HELP_STRING([--with-pdf=NAME],
5 kx [name of the Ghostpdf executible (if the source is available, ignored otherwise) [[gpdf]]]),
5 kx [PDFEXE="$with_pdf"],[PDFEXE='gpdf'])
5 kx
5 kx if test -f $srcdir/pcl/pl/pl.mak && test x"$PCL_TARGET" != x"" ; then
5 kx PDF_TARGET=gpdf
5 kx PDF=$PDFEXE
5 kx else
5 kx PDF=no_gpdf
5 kx fi
5 kx CFLAGS="-DBUILD_PDF=1 -I$srcdir/pdf $CFLAGS"
5 kx GPDF_DEV="\$(PDFOBJDIR)\$(D)pdfi.dev"
5 kx PDF_MAK="\$(PDFSRCDIR)\$(D)pdf.mak"
5 kx PDFROMFS_MAK="\$(PDFSRCDIR)\$(D)pdfromfs.mak"
5 kx fi
5 kx fi
5 kx AC_SUBST(PDF)
5 kx AC_SUBST(PDF_TARGET)
5 kx
5 kx AC_SUBST(PDF_MAK)
5 kx AC_SUBST(GPDF_DEV)
5 kx AC_SUBST(PDFROMFS_MAK)
5 kx
5 kx
5 kx GPDL=no_gpdl
5 kx GPDL_TARGET=
5 kx GPDL_TARGET_VAR=
5 kx
5 kx GPDL_MAK="\$(GLSRCDIR)\$(D)stub.mak"
5 kx # in order to build gpdl we need the pdls available
5 kx
5 kx if test "x$XPS_TARGET" != "x" && test "x$PCL_TARGET" != "x" ; then
5 kx if test -f $srcdir/gpdl/gpdl.mak; then
5 kx AC_ARG_WITH([gpdl], AS_HELP_STRING([--with-gpdl=NAME],
5 kx [name of the GhostPDL executible (if the source is available, ignored otherwise) [[gpdl]]]),
5 kx [GPDL="$with_gpdl"],[GPDL='gpdl'])
5 kx
5 kx GPDL_TARGET=gpdl
5 kx GPDL_MAK="\$(GPDLSRCDIR)\$(D)gpdl.mak"
5 kx fi
5 kx fi
5 kx AC_SUBST(GPDL)
5 kx AC_SUBST(GPDL_TARGET)
5 kx AC_SUBST(GPDL_MAK)
5 kx
5 kx
5 kx dnl do we compile the postscript initialization files into Ghostscript?
5 kx COMPILE_INITS="1"
5 kx AC_ARG_ENABLE([compile-inits], AS_HELP_STRING([--disable-compile-inits],
5 kx [Do not compile in initialization files]),[
5 kx if test "x$enable_compile_inits" = xno; then
5 kx COMPILE_INITS="0"
5 kx fi])
5 kx AC_SUBST(COMPILE_INITS)
5 kx
5 kx dnl look for drivers to compile...
5 kx APPLE_DEVICES_REQUESTED="no"
5 kx AC_ARG_WITH(drivers,
5 kx [ --with-drivers=LIST Drivers to support, separated by commas.
5 kx Either list the drivers or use aliases:
5 kx ALL = all drivers
5 kx FILES = all file format drivers
5 kx PRINTERS = all printer drivers
5 kx Printers:
5 kx APPLE = all Apple printers
5 kx BROTHER = all Brother printers
5 kx CANON = all Canon printers
5 kx EPSON = all Epson printers
5 kx HP = all HP printers
5 kx IBM = all IBM printers
5 kx JAPAN = older japanese printers
5 kx LEXMARK = all Lexmark printers
5 kx OKI = all OKI printers
5 kx PCLXL = all PCL XL/6 printers
5 kx File formats:
5 kx BMP = Output to bmp files
5 kx FAX = Output to fax files
5 kx JPEG = Output to JPEG files
5 kx PBM = Output to PBM/PNM
5 kx PCX = Output to PCX
5 kx PNG = Output to PNG
5 kx PS = Output to PostScript/PDF
5 kx TIFF = Output to TIFF
5 kx You can mix both variants, e.g.
5 kx --with-drivers=HP,stcolor would build HP drivers and
5 kx the Epson stcolor driver.
5 kx Aliases must be uppercase (a 3rd party driver might
5 kx have the same name).
5 kx Default: ALL],drivers="$withval",drivers="ALL")
5 kx
5 kx AC_ARG_WITH(driversfile,
5 kx [ --with-driversfile=FILE Drivers to support from file, separated by newlines.],
5 kx driversfile="$withval",driversfile="")
5 kx
5 kx if test "x$driversfile" != x; then
5 kx # Add drivers from file...
5 kx drivers="`tr '\n' ',' <$driversfile`"
5 kx fi
5 kx
5 kx if echo $drivers | grep 'APPLE\|iwhi\|iwlo\|iwlq' >/dev/null; then
5 kx APPLE_DEVICES_REQUESTED="yes"
5 kx fi
5 kx
5 kx dnl Check which drivers we'd like to support.
5 kx P_DEVS0=""
5 kx F_DEVS0=""
5 kx CUPS_DEVS0=""
5 kx XPS_DEVS0=""
5 kx JBIG2_DEVS=""
5 kx IJS_DEVS0=""
5 kx PNG_DEVS0=""
5 kx X11_DEVS0=""
5 kx
5 kx
5 kx dnl Known printers
5 kx HP_DEVS='cdj500 djet500 djet500c dnj650c cljet5pr deskjet laserjet ljetplus ljet2p ljet3 ljet3d ljet4 ljet4d lj4dith lj5mono lj5gray cdeskjet cdjcolor cdjmono cdj550 pj pjxl pjxl300 lp2563 paintjet pjetxl cljet5 cljet5c pxlmono pxlcolor cdj670 cdj850 cdj880 cdj890 cdj970 cdj1600 cdnj500 chp2200 pcl3 hpdjplus hpdjportable hpdj310 hpdj320 hpdj340 hpdj400 hpdj500 hpdj500c hpdj510 hpdj520 hpdj540 hpdj550c hpdj560c hpdj600 hpdj660c hpdj670c hpdj680c hpdj690c hpdj850c hpdj855c hpdj870c hpdj890c hpdj1120c lj3100sw'
5 kx PCLXL_DEVS='pxlmono pxlcolor'
5 kx EPSON_DEVS='eps9high eps9mid epson epsonc escp lp8000 lq850 photoex st800 stcolor alc1900 alc2000 alc4000 alc4100 alc8500 alc8600 alc9100 lp3000c lp8000c lp8200c lp8300c lp8500c lp8800c lp9000c lp9200c lp9500c lp9800c lps6500 epl2050 epl2050p epl2120 epl2500 epl2750 epl5800 epl5900 epl6100 epl6200 lp1800 lp1900 lp2200 lp2400 lp2500 lp7500 lp7700 lp7900 lp8100 lp8300f lp8400f lp8600 lp8600f lp8700 lp8900 lp9000b lp9100 lp9200b lp9300 lp9400 lp9600 lp9600s lps4500 eplcolor eplmono'
5 kx CANON_DEVS='bj10e bj200 bjc600 bjc800 lbp8 lips3 bjcmono bjcgray bjccmyk bjccolor'
5 kx LEXMARK_DEVS='lxm5700m lxm3200 lex2050 lex3200 lex5700 lex7000'
5 kx BROTHER_DEVS='hl7x0 hl1240 hl1250'
5 kx APPLE_DEVS='appledmp iwhi iwlo iwlq'
5 kx IBM_DEVS='ibmpro jetp3852'
5 kx OKI_DEVS='oki182 okiibm oki4w'
5 kx JAPAN_DEVS='lips4 lips4v ljet4pjl lj4dithp dj505j picty180 lips2p bjc880j pr201 pr150 pr1000 pr1000_4 jj100 bj10v bj10vh mj700v2c mj500c mj6000c mj8000c fmpr fmlbp ml600 lbp310 lbp320 md50Mono md50Eco md1xMono escpage lp2000 npdl rpdl'
5 kx MISC_PDEVS='uniprint ap3250 atx23 atx24 atx38 itk24i itk38 coslw2p coslwxl declj250 fs600 imagen lj250 m8510 necp6 oce9050 r4081 sj48 tek4696 t4693d2 t4693d4 t4693d8 dl2100 la50 la70 la75 la75plus ln03 xes md2k md5k gdi samsunggdi'
5 kx OPVP_DEVS='opvp oprp'
5 kx
5 kx ETS_HALFTONING_DEVS='rinkj'
5 kx
5 kx dnl Known file formats
5 kx BMP_DEVS='bmpmono bmpgray bmpsep1 bmpsep8 bmp16 bmp256 bmp16m bmp32b'
5 kx
5 kx JPEG_DEVS='jpeg jpeggray jpegcmyk'
5 kx # PNG_DEVS='png16 png16m png256 pngalpha pnggray pngmono'
5 kx
5 kx PCX_DEVS='pcxmono pcxgray pcx16 pcx256 pcx24b pcxcmyk'
5 kx PBM_DEVS='pbm pbmraw pgm pgmraw pgnm pgnmraw pnm pnmraw ppm ppmraw pkm pkmraw pksm pksmraw pam pamcmyk4 pamcmyk32 plan plang planm planc plank'
5 kx PS_DEVS='psdf psdcmyk psdrgb psdcmyk16 psdrgb16 psdcmyktags psdcmyktags16 pdfwrite ps2write eps2write bbox txtwrite inkcov ink_cov psdcmykog fpng pdfimage8 pdfimage24 pdfimage32 PCLm PCLm8'
5 kx
5 kx # Handle --with-extract-dir=EXTRACT_DIR - build extract library and docxwrite
5 kx # device.
5 kx #
5 kx AC_ARG_WITH([extract-dir],
5 kx AS_HELP_STRING([--with-extract-dir=EXTRACT_DIR],
5 kx [Build with the specified Extract library. By default we build with Extract automatically if <ghostpdl-directory>/extract exists.]
5 kx ),
5 kx [
5 kx EXTRACT_DIR="$withval"
5 kx AS_IF([test x"$EXTRACT_DIR" != x"no"],
5 kx [AS_IF([test -e $EXTRACT_DIR],[ PS_DEVS="$PS_DEVS docxwrite"] ,AC_MSG_ERROR([EXTRACT_DIR does not exist: $EXTRACT_DIR]))])
5 kx ],
5 kx [
5 kx AC_MSG_CHECKING([Checking for "extract" in default location])
5 kx EXTRACT_DIR="extract"
5 kx AS_IF([test -e $EXTRACT_DIR], [AC_MSG_RESULT(yes); PS_DEVS="$PS_DEVS docxwrite"], [EXTRACT_DIR=""; AC_MSG_RESULT(no)])
5 kx ]
5 kx )
5 kx
5 kx AC_SUBST(EXTRACT_DIR)
5 kx
5 kx # the "display" device isn't an ideal fit in the list below, but it saves adding a "list" for just that one entry
5 kx MISC_FDEVS='ccr cif inferno mgr4 mgr8 mgrgray2 mgrgray4 mgrgray8 mgrmono miff24 plan9bm bit bitrgb bitrgbtags bitcmyk devicen spotcmyk xcf plib plibg plibm plibc plibk display'
5 kx
5 kx XPSDEV=$XPSWRITEDEVICE
5 kx
5 kx while test -n "$drivers"; do
5 kx if echo $drivers |grep "," >/dev/null; then
5 kx THIS="`echo $drivers |sed -e 's/,.*//'`"
5 kx SEDCMD="s/$THIS,//"
5 kx drivers="`echo $drivers |sed -e $SEDCMD`"
5 kx else
5 kx THIS=$drivers
5 kx drivers=""
5 kx fi
5 kx case "$THIS" in
5 kx ALL)
5 kx # ALL = PRINTERS + FILES...
5 kx if test -z "$drivers"; then
5 kx drivers="PRINTERS,FILES,X11"
5 kx else
5 kx drivers="$drivers,PRINTERS,FILES,X11"
5 kx fi
5 kx ;;
5 kx PRINTERS)
5 kx P_DEVS0="$P_DEVS0 $CANON_DEVS $EPSON_DEVS $HP_DEVS $LEXMARK_DEVS $BROTHER_DEVS $APPLE_DEVS $IBM_DEVS $OKI_DEVS $JAPAN_DEVS $MISC_PDEVS $ETS_HALFTONING_DEVS $URF_DEVS"
5 kx IJS_DEVS0="$IJSDEVS"
5 kx if test x$ac_cv_lib_dl_dlopen != xno -a x$found_iconv != xno; then
5 kx P_DEVS0="$P_DEVS0 $OPVP_DEVS"
5 kx else
5 kx AC_MSG_WARN(Unable to include opvp/oprp driver due to missing or disabled prerequisites...)
5 kx fi
5 kx ;;
5 kx FILES)
5 kx F_DEVS0="$F_DEVS0 $BMP_DEVS $FAX_DEVS $JPEG_DEVS $TIFFDEVS $PCX_DEVS $PBM_DEVS $PS_DEVS $MISC_FDEVS $XPSDEV"
5 kx CUPS_DEVS0="$CUPSDEV"
5 kx JBIG2_DEVS="$JBIG2FILEDEVS"
5 kx PNG_DEVS0="$PNGDEVS"
5 kx ;;
5 kx APPLE)
5 kx # All Apple printers
5 kx P_DEVS0="$P_DEVS0 $APPLE_DEVS"
5 kx ;;
5 kx BMP)
5 kx # BMP file format
5 kx F_DEVS0="$F_DEVS0 $BMP_DEVS"
5 kx ;;
5 kx CANON)
5 kx # All Canon printers
5 kx P_DEVS0="$P_DEVS0 $CANON_DEVS"
5 kx ;;
5 kx EPSON)
5 kx # All Epson printers
5 kx P_DEVS0="$P_DEVS0 $EPSON_DEVS"
5 kx ;;
5 kx FAX)
5 kx # Fax file formats
5 kx F_DEVS0="$F_DEVS0 $FAX_DEVS"
5 kx ;;
5 kx JPEG)
5 kx # Jpeg file formats
5 kx F_DEVS0="$F_DEVS0 $JPEG_DEVS"
5 kx ;;
5 kx JBIG2)
5 kx # JBIG file formats
5 kx JBIG2_DEVS="$JBIG2DEVS"
5 kx ;;
5 kx PNG)
5 kx # PNG file formats
5 kx PNG_DEVS0="$PNGDEVS"
5 kx ;;
5 kx TIFF)
5 kx # TIFF file formats
5 kx F_DEVS0="$F_DEVS0 $TIFFDEVS"
5 kx ;;
5 kx PCLXL)
5 kx # PCL XL/PCL 6 drivers
5 kx F_DEVS0="$F_DEVS0 $PCLXL_DEVS"
5 kx ;;
5 kx PCX)
5 kx # PCX file formats
5 kx F_DEVS0="$F_DEVS0 $PCX_DEVS"
5 kx ;;
5 kx PBM)
5 kx # PBM file formats
5 kx F_DEVS0="$F_DEVS0 $PBM_DEVS"
5 kx ;;
5 kx CUPS)
5 kx # CUPS file format
5 kx CUPS_DEVS0="$CUPSDEV"
5 kx ;;
5 kx HP)
5 kx # All HP printers
5 kx P_DEVS0="$P_DEVS0 $HP_DEVS"
5 kx ;;
5 kx LEXMARK)
5 kx # All Lexmark printers
5 kx P_DEVS0="$P_DEVS0 $LEXMARK_DEVS"
5 kx ;;
5 kx BROTHER)
5 kx # All Brother printers
5 kx P_DEVS0="$P_DEVS0 $BROTHER_DEVS"
5 kx ;;
5 kx OKI)
5 kx # All OKI printers
5 kx P_DEVS0="$P_DEVS0 $OKI_DEVS"
5 kx ;;
5 kx IBM)
5 kx # All IBM printers
5 kx P_DEVS0="$P_DEVS0 $IBM_DEVS"
5 kx ;;
5 kx IJS)
5 kx # IJS printers
5 kx IJS_DEVS0="$IJSDEVS"
5 kx ;;
5 kx JAPAN)
5 kx # All old japanese printers
5 kx P_DEVS0="$P_DEVS0 $JAPAN_DEVS"
5 kx ;;
5 kx PS)
5 kx # PostScript/PDF writing
5 kx F_DEVS0="$F_DEVS0 $PS_DEVS"
5 kx ;;
5 kx XPS)
5 kx # XPS writing
5 kx XPS_DEVS0="$XPSDEV"
5 kx ;;
5 kx
5 kx ETS)
5 kx # ETS Halftoning devices
5 kx F_DEVS0="$F_DEVS0 $ETS_HALFTONING_DEVS"
5 kx ;;
5 kx X11)
5 kx # X11 display devices
5 kx X11_DEVS0="$X_DEVS"
5 kx ;;
5 kx opvp)
5 kx # Open Vector Printing driver...
5 kx if test x$ac_cv_lib_dl_dlopen != xno -a x$found_iconv != xno; then
5 kx P_DEVS0="$P_DEVS0 $OPVP_DEVS"
5 kx else
5 kx AC_MSG_WARN(Unable to include opvp/oprp driver due to missing or disabled prerequisites...)
5 kx fi
5 kx ;;
5 kx *)
5 kx # It's a driver name (or a user messup)
5 kx P_DEVS0="$P_DEVS0 `echo $THIS |sed -e 's,\.dev$,,'`"
5 kx ;;
5 kx esac
5 kx done
5 kx
5 kx noncontribmakefiles=`find $srcdir -name '*.mak' -print | grep -v '/contrib/'`
5 kx
5 kx # No need to include opvp/oprp driver without iconv/libiconv.
5 kx if test -n "$P_DEVS0"; then
5 kx if test x$found_iconv = xno ; then
5 kx P_DEVS0=`echo $P_DEVS0 | sed -e 's|opvp||' -e 's|oprp||'`
5 kx AC_MSG_WARN(Unable to include opvp/oprp driver due to missing iconv/libiconv...)
5 kx fi
5 kx
5 kx # Remove contributed drivers if requested and make sure we don't have any
5 kx # duplicates in there, add $(DD)foo.dev constructs
5 kx P_DEVS=`(for i in $P_DEVS0; do d='$(DD)'${i}.dev; if ( grep '^'$d $noncontribmakefiles 2>&1 >/dev/null ) || ( ! test -z "$CONTRIBINCLUDE" ); then echo $d; fi; done) | sort | uniq | tr '\012\015' ' '`
5 kx fi
5 kx
5 kx if test -n "$F_DEVS0"; then
5 kx F_DEVS=`(for i in $F_DEVS0; do d='$(DD)'${i}.dev; if ( grep '^'$d $noncontribmakefiles 2>&1 >/dev/null) || ( ! test -z "$CONTRIBINCLUDE" ); then echo $d; fi; done) | sort | uniq | tr '\012\015' ' '`
5 kx fi
5 kx
5 kx if test -n "$CUPS_DEVS0"; then
5 kx CUPS_DEVS=`(for i in $CUPS_DEVS0; do d='$(DD)'${i}.dev; if ( grep '^'$d $noncontribmakefiles 2>&1 >/dev/null) || ( ! test -z "$CONTRIBINCLUDE" ); then echo $d; fi; done) | sort | uniq | tr '\012\015' ' '`
5 kx fi
5 kx
5 kx if test -n "$XPS_DEVS0"; then
5 kx XPS_DEVS=`(for i in $XPS_DEVS0; do d='$(DD)'${i}.dev; if ( grep '^'$d $noncontribmakefiles 2>&1 >/dev/null) || ( ! test -z "$CONTRIBINCLUDE" ); then echo $d; fi; done) | sort | uniq | tr '\012\015' ' '`
5 kx fi
5 kx
5 kx if test -n "$IJS_DEVS0"; then
5 kx IJS_DEVS=`(for i in $IJS_DEVS0; do d='$(DD)'${i}.dev; if ( grep '^'$d $noncontribmakefiles 2>&1 >/dev/null) || ( ! test -z "$CONTRIBINCLUDE" ); then echo $d; fi; done) | sort | uniq | tr '\012\015' ' '`
5 kx fi
5 kx
5 kx if test -n "$PNG_DEVS0"; then
5 kx PNG_DEVS=`(for i in $PNG_DEVS0; do d='$(DD)'${i}.dev; if ( grep '^'$d $noncontribmakefiles 2>&1 >/dev/null) || ( ! test -z "$CONTRIBINCLUDE" ); then echo $d; fi; done) | sort | uniq | tr '\012\015' ' '`
5 kx fi
5 kx
5 kx if test -n "$X11_DEVS0"; then
5 kx X11_DEVS=`(for i in $X11_DEVS0; do d='$(DD)'${i}.dev; if ( grep '^'$d $noncontribmakefiles 2>&1 >/dev/null) || ( ! test -z "$CONTRIBINCLUDE" ); then echo $d; fi; done) | sort | uniq | tr '\012\015' ' '`
5 kx fi
5 kx
5 kx # if the user explicitly requested the Apple devices, then hard fail if they aren't available
5 kx if test x"$APPLE_DEVICES_REQUESTED" = x"yes" ; then
5 kx APDEVS=`echo $P_DEVS | grep 'APPLE\|iwhi\|iwlo\|iwlq'`
5 kx if test -z "$APDEVS" ; then
5 kx AC_MSG_ERROR([Requested Apple device(s) not available (iwhi, iwlo, and/or iwlq)])
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(P_DEVS)
5 kx AC_SUBST(F_DEVS)
5 kx AC_SUBST(CUPS_DEVS)
5 kx AC_SUBST(XPS_DEVS)
5 kx AC_SUBST(JBIG2_DEVS)
5 kx AC_SUBST(IJS_DEVS)
5 kx AC_SUBST(PNG_DEVS)
5 kx
5 kx # This now gets done after handling --enable-dynamic
5 kx # AC_SUBST(X11_DEVS)
5 kx
5 kx dnl Dynamic device support.
5 kx DYNAMIC_CFLAGS=""
5 kx DYNAMIC_DEVS=""
5 kx DYNAMIC_FLAGS=""
5 kx GS_DYNAMIC_LDFLAGS=""
5 kx PCL_DYNAMIC_LDFLAGS=""
5 kx XPS_DYNAMIC_LDFLAGS=""
5 kx PDL_DYNAMIC_LDFLAGS=""
5 kx DYNAMIC_LIBS=""
5 kx INSTALL_SHARED=""
5 kx SO_LIB_EXT=".so"
5 kx DLL_EXT=""
5 kx SO_LIB_VERSION_SEPARATOR="."
5 kx
5 kx libname1="_SO_BASE)\$(GS_SOEXT)\$(DLL_EXT)"
5 kx libname2="_SO_BASE)\$(GS_SOEXT)\$(SO_LIB_VERSION_SEPARATOR)\$(GS_VERSION_MAJOR)\$(DLL_EXT)"
5 kx libname3="_SO_BASE)\$(GS_SOEXT)\$(SO_LIB_VERSION_SEPARATOR)\$(GS_VERSION_MAJOR)\$(SO_LIB_VERSION_SEPARATOR)\$(GS_VERSION_MINOR)\$(DLL_EXT)"
5 kx GS_SONAME="lib\$(GS${libname1}"
5 kx GS_SONAME_MAJOR="lib\$(GS${libname2}"
5 kx GS_SONAME_MAJOR_MINOR="lib\$(GS${libname3}"
5 kx PCL_SONAME="lib\$(PCL${libname1}"
5 kx PCL_SONAME_MAJOR="lib\$(PCL${libname2}"
5 kx PCL_SONAME_MAJOR_MINOR="lib\$(PCL${libname3}"
5 kx XPS_SONAME="lib\$(XPS${libname1}"
5 kx XPS_SONAME_MAJOR="lib\$(XPS${libname2}"
5 kx XPS_SONAME_MAJOR_MINOR="lib\$(XPS${libname3}"
5 kx
5 kx PDF_SONAME="lib\$(PDF${libname1}"
5 kx PDF_SONAME_MAJOR="lib\$(PDF${libname2}"
5 kx PDF_SONAME_MAJOR_MINOR="lib\$(PDF${libname3}"
5 kx
5 kx GPDL_SONAME="lib\$(GPDL${libname1}"
5 kx GPDL_SONAME_MAJOR="lib\$(GPDL${libname2}"
5 kx GPDL_SONAME_MAJOR_MINOR="lib\$(GPDL${libname3}"
5 kx
5 kx hide_symbols=yes
5 kx attr_default=
5 kx attr_hidden=
5 kx _ldflags=
5 kx
5 kx AC_ARG_ENABLE([hidden-visibility],
5 kx AS_HELP_STRING([--disable-hidden-visibility],
5 kx [expose all shared library symbols even those which are not part of its public API]),
5 kx [hide_symbols=no])
5 kx
5 kx if test x"$hide_symbols" = x"yes" -a x"$GCC" = x"yes"; then
5 kx attr_default="__attribute__((visibility(\\\"default\\\")))"
5 kx attr_hidden="__attribute__((visibility(\\\"hidden\\\")))"
5 kx fi
5 kx
5 kx case $host in
5 kx *-linux*|*-gnu)
5 kx DYNAMIC_CFLAGS="-fPIC $DYNAMIC_CFLAGS"
5 kx GS_DYNAMIC_LDFLAGS="-shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(GS_SONAME_MAJOR)"
5 kx PCL_DYNAMIC_LDFLAGS="-shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(PCL_SONAME_MAJOR)"
5 kx XPS_DYNAMIC_LDFLAGS="-shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(XPS_SONAME_MAJOR)"
5 kx PDL_DYNAMIC_LDFLAGS="-shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(GPDL_SONAME_MAJOR)"
5 kx PDF_DYNAMIC_LDFLAGS="-shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(PDF_SONAME_MAJOR)"
5 kx if test x"$GCC" = x"yes"; then
5 kx # GCC high level flag
5 kx DYNAMIC_LIBS="-rdynamic"
5 kx else
5 kx DYNAMIC_LIBS=""
5 kx fi
5 kx SO_LIB_EXT=".so"
5 kx ;;
5 kx *-mingw*|*-msys*)
5 kx if test x"$hide_symbols" = x"yes"; then
5 kx attr_default="__declspec(dllexport)"
5 kx attr_hidden=""
5 kx else
5 kx _ldflags="-Wl,--export-all-symbols"
5 kx fi
5 kx _ldflags="$_ldflags -Wl,--enable-auto-import"
5 kx GS_DYNAMIC_LDFLAGS="-shared -Wl,--out-implib=\$(BINDIR)/lib\$(GS_SO_BASE).dll.a $_ldflags"
5 kx PCL_DYNAMIC_LDFLAGS="-shared -Wl,--out-implib=\$(BINDIR)/lib\$(PCL_SO_BASE).dll.a $_ldflags"
5 kx XPS_DYNAMIC_LDFLAGS="-shared -Wl,--out-implib=\$(BINDIR)/lib\$(XPS_SO_BASE).dll.a $_ldflags"
5 kx PDL_DYNAMIC_LDFLAGS="-shared -Wl,--out-implib=\$(BINDIR)/lib\$(PDL_SO_BASE).dll.a $_ldflags"
5 kx SO_LIB_EXT=""
5 kx DLL_EXT=".dll"
5 kx SO_LIB_VERSION_SEPARATOR="-"
5 kx # make sure the import library doesn't link a program against the DLL with the minor version in it
5 kx GS_SONAME="lib\$(GS${libname1}"
5 kx GS_SONAME_MAJOR="lib\$(GS${libname3}"
5 kx GS_SONAME_MAJOR_MINOR="lib\$(GS${libname2}"
5 kx PCL_SONAME="lib\$(PCL${libname1}"
5 kx PCL_SONAME_MAJOR="lib\$(PCL${libname3}"
5 kx PCL_SONAME_MAJOR_MINOR="lib\$(PCL${libname2}"
5 kx XPS_SONAME="lib\$(XPS${libname1}"
5 kx XPS_SONAME_MAJOR="lib\$(XPS${libname3}"
5 kx XPS_SONAME_MAJOR_MINOR="lib\$(XPS${libname2}"
5 kx PDF_SONAME="lib\$(PDF${libname1}"
5 kx PDF_SONAME_MAJOR="lib\$(PDF${libname3}"
5 kx PDF_SONAME_MAJOR_MINOR="lib\$(PDF${libname2}"
5 kx GPDL_SONAME="lib\$(GPDL${libname1}"
5 kx GPDL_SONAME_MAJOR="lib\$(GPDL${libname3}"
5 kx GPDL_SONAME_MAJOR_MINOR="lib\$(GPDL${libname2}"
5 kx ;;
5 kx *-cygwin*)
5 kx if test x"$hide_symbols" = x"yes"; then
5 kx attr_default="__declspec(dllexport)"
5 kx attr_hidden=""
5 kx fi
5 kx GS_DYNAMIC_LDFLAGS="-shared -Wl,--out-implib=\$(BINDIR)/lib\$(GS_SO_BASE).dll.a $_ldflags"
5 kx PCL_DYNAMIC_LDFLAGS="-shared -Wl,--out-implib=\$(BINDIR)/lib\$(PCL_SO_BASE).dll.a $_ldflags"
5 kx XPS_DYNAMIC_LDFLAGS="-shared -Wl,--out-implib=\$(BINDIR)/lib\$(XPS_SO_BASE).dll.a $_ldflags"
5 kx PDL_DYNAMIC_LDFLAGS="-shared -Wl,--out-implib=\$(BINDIR)/lib\$(PDL_SO_BASE).dll.a $_ldflags"
5 kx SO_LIB_EXT=""
5 kx DLL_EXT=".dll"
5 kx SO_LIB_VERSION_SEPARATOR="-"
5 kx # make sure the import library doesn't link a program against the DLL with the minor version in it
5 kx GS_SONAME="lib\$(GS${libname1}"
5 kx GS_SONAME_MAJOR="lib\$(GS${libname3}"
5 kx GS_SONAME_MAJOR_MINOR="cyg\$(GS${libname2}"
5 kx PCL_SONAME="lib\$(PCL${libname1}"
5 kx PCL_SONAME_MAJOR="lib\$(PCL${libname3}"
5 kx PCL_SONAME_MAJOR_MINOR="cyg\$(PCL${libname2}"
5 kx XPS_SONAME="lib\$(XPS${libname1}"
5 kx XPS_SONAME_MAJOR="lib\$(XPS${libname3}"
5 kx XPS_SONAME_MAJOR_MINOR="cyg\$(XPS${libname2}"
5 kx GPDL_SONAME="lib\$(GPDL${libname1}"
5 kx GPDL_SONAME_MAJOR="lib\$(GPDL${libname3}"
5 kx GPDL_SONAME_MAJOR_MINOR="cyg\$(GPDL${libname2}"
5 kx ;;
5 kx *bsd*)
5 kx DYNAMIC_CFLAGS="-fPIC $DYNAMIC_CFLAGS"
5 kx GS_DYNAMIC_LDFLAGS="-shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(GS_SONAME_MAJOR)"
5 kx PCL_DYNAMIC_LDFLAGS="-shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(PCL_SONAME_MAJOR)"
5 kx XPS_DYNAMIC_LDFLAGS="-shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(XPS_SONAME_MAJOR)"
5 kx PDL_DYNAMIC_LDFLAGS="-shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(GPDL_SONAME_MAJOR)"
5 kx PDF_DYNAMIC_LDFLAGS="-shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(PDF_SONAME_MAJOR)"
5 kx DYNAMIC_LIBS=""
5 kx SO_LIB_EXT=".so"
5 kx ;;
5 kx *-darwin*)
5 kx DYNAMIC_CFLAGS="-fPIC $DYNAMIC_CFLAGS"
5 kx GS_DYNAMIC_LDFLAGS="-dynamiclib -install_name $DARWIN_LDFLAGS_SO_PREFIX\$(GS_SONAME_MAJOR_MINOR)"
5 kx PCL_DYNAMIC_LDFLAGS="-dynamiclib -install_name $DARWIN_LDFLAGS_SO_PREFIX\$(PCL_SONAME_MAJOR_MINOR)"
5 kx XPS_DYNAMIC_LDFLAGS="-dynamiclib -install_name $DARWIN_LDFLAGS_SO_PREFIX\$(XPS_SONAME_MAJOR_MINOR)"
5 kx PDL_DYNAMIC_LDFLAGS="-dynamiclib -install_name $DARWIN_LDFLAGS_SO_PREFIX\$(GPDL_SONAME_MAJOR_MINOR)"
5 kx PDF_DYNAMIC_LDFLAGS="-dynamiclib -install_name $DARWIN_LDFLAGS_SO_PREFIX\$(PDF_SONAME_MAJOR_MINOR)"
5 kx DYNAMIC_LIBS=""
5 kx SO_LIB_EXT=".dylib"
5 kx ;;
5 kx *-sun*|*-solaris*)
5 kx if test x"$GCC" = x"yes"; then
5 kx DYNAMIC_CFLAGS="-fPIC $DYNAMIC_CFLAGS"
5 kx else
5 kx DYNAMIC_CFLAGS="-KPIC $DYNAMIC_CFLAGS"
5 kx #if test x"$hide_symbols" = x"yes"; then
5 kx # attr_default="__global"
5 kx # attr_hidden="__hidden"
5 kx # _ldflags="-xldscope=hidden"
5 kx #fi
5 kx # ^^^ untested
5 kx fi
5 kx GS_DYNAMIC_LDFLAGS="-G -shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(GS_SONAME_MAJOR) $_ldflags"
5 kx PCL_DYNAMIC_LDFLAGS="-G -shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(PCL_SONAME_MAJOR) $_ldflags"
5 kx XPS_DYNAMIC_LDFLAGS="-G -shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(XPS_SONAME_MAJOR) $_ldflags"
5 kx PDL_DYNAMIC_LDFLAGS="-G -shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(GPDL_SONAME_MAJOR) $_ldflags"
5 kx PDF_DYNAMIC_LDFLAGS="-G -shared -Wl,\$(LD_SET_DT_SONAME)\$(LDFLAGS_SO_PREFIX)\$(PDF_SONAME_MAJOR)"
5 kx DYNAMIC_LIBS=""
5 kx SO_LIB_EXT=".so"
5 kx ;;
5 kx *-aix*)
5 kx if test x"$GCC" = x"yes"; then
5 kx DYNAMIC_CFLAGS="-fPIC $DYNAMIC_CFLAGS"
5 kx GCFLAGS="-Wl,-brtl -D_LARGE_FILES $GCFLAGS"
5 kx GS_DYNAMIC_LDFLAGS="-shared -Wl,-brtl,-G -fPIC"
5 kx PCL_DYNAMIC_LDFLAGS="-shared -Wl,-brtl,-G -fPIC"
5 kx XPS_DYNAMIC_LDFLAGS="-shared -Wl,-brtl,-G -fPIC"
5 kx PDL_DYNAMIC_LDFLAGS="-shared -Wl,-brtl,-G -fPIC"
5 kx PDF_DYNAMIC_LDFLAGS="-shared -Wl,-brtl,-G -fPIC"
5 kx else
5 kx DYNAMIC_CFLAGS="$DYNAMIC_CFLAGS"
5 kx GCFLAGS="-Wl,-brtl -D_LARGE_FILES $GCFLAGS"
5 kx GS_DYNAMIC_LDFLAGS="-G -qmkshrobj -Wl,-brtl,-G"
5 kx PCL_DYNAMIC_LDFLAGS="-G -qmkshrobj -Wl,-brtl,-G"
5 kx XPS_DYNAMIC_LDFLAGS="-G -qmkshrobj -Wl,-brtl,-G"
5 kx PDL_DYNAMIC_LDFLAGS="-G -qmkshrobj -Wl,-brtl,-G"
5 kx PDF_DYNAMIC_LDFLAGS="-G -qmkshrobj -Wl,-brtl,-G"
5 kx fi
5 kx SO_LIB_EXT=".so"
5 kx ;;
5 kx esac
5 kx
5 kx if test x"$hide_symbols" = x"yes" ; then
5 kx if test x"$GCC" = x"yes"; then
5 kx DYNAMIC_CFLAGS="$DYNAMIC_CFLAGS -fvisibility=hidden"
5 kx fi
5 kx DYNAMIC_CFLAGS="$DYNAMIC_CFLAGS -DGSDLLEXPORT=\"$attr_default\""
5 kx if test "x$FT_BRIDGE" = x1 -a "x$SHARE_FT" = x0 ; then
5 kx # disable warnings for redefined macros, so our abuse of FT_EXPORT() to hide symbols doesn't flag warnings
5 kx FT_HIDDEN_CFLAGS="-Wp,-w -D\"FT_EXPORT(x)\"=\"$attr_hidden x\" -D\"FT_EXPORT_DEF(x)\"=\"$attr_hidden x\""
5 kx fi
5 kx if test "x$SHARE_EXPAT" = x0 ; then
5 kx XML_HIDDEN_CFLAGS="-DXML_STATIC -DXMLIMPORT=\"$attr_hidden\""
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(GS_SONAME)
5 kx AC_SUBST(GS_SONAME_MAJOR)
5 kx AC_SUBST(GS_SONAME_MAJOR_MINOR)
5 kx AC_SUBST(PCL_SONAME)
5 kx AC_SUBST(PCL_SONAME_MAJOR)
5 kx AC_SUBST(PCL_SONAME_MAJOR_MINOR)
5 kx AC_SUBST(XPS_SONAME)
5 kx AC_SUBST(XPS_SONAME_MAJOR)
5 kx AC_SUBST(XPS_SONAME_MAJOR_MINOR)
5 kx
5 kx AC_SUBST(PDF_SONAME)
5 kx AC_SUBST(PDF_SONAME_MAJOR)
5 kx AC_SUBST(PDF_SONAME_MAJOR_MINOR)
5 kx
5 kx AC_SUBST(GPDL_SONAME)
5 kx AC_SUBST(GPDL_SONAME_MAJOR)
5 kx AC_SUBST(GPDL_SONAME_MAJOR_MINOR)
5 kx
5 kx AC_SUBST(FT_HIDDEN_CFLAGS)
5 kx AC_SUBST(XML_HIDDEN_CFLAGS)
5 kx
5 kx AC_ARG_ENABLE([dynamic], AS_HELP_STRING([--enable-dynamic],
5 kx [Enable dynamically loaded drivers]),
5 kx [
5 kx if test "x$enable_dynamic" != xno; then
5 kx case $host in
5 kx *-linux*|*-gnu)
5 kx INSTALL_SHARED="install-shared"
5 kx if test "x$X_DEVS" != x; then
5 kx DYNAMIC_DEVS="\$(GLOBJDIR)/X11.so"
5 kx else
5 kx DYNAMIC_DEVS=""
5 kx fi
5 kx DYNAMIC_FLAGS="-DGS_DEVS_SHARED -DGS_DEVS_SHARED_DIR=\\\"\$(gssharedir)\\\""
5 kx X11_DEVS=""
5 kx OPT_CFLAGS="$DYNAMIC_CFLAGS $OPT_CFLAGS"
5 kx DBG_CFLAGS="$DYNAMIC_CFLAGS $DBG_CFLAGS"
5 kx ;;
5 kx *bsd*)
5 kx DYNAMIC_DEVS="\$(GLOBJDIR)/X11.so"
5 kx DYNAMIC_FLAGS="-DGS_DEVS_SHARED -DGS_DEVS_SHARED_DIR=\\\"\$(gssharedir)\\\""
5 kx X11_DEVS=""
5 kx OPT_CFLAGS="$DYNAMIC_CFLAGS $OPT_CFLAGS"
5 kx DBG_CFLAGS="$DYNAMIC_CFLAGS $DBG_CFLAGS"
5 kx ;;
5 kx *-darwin*)
5 kx INSTALL_SHARED="install-shared"
5 kx DYNAMIC_FLAGS="-DGS_DEVS_SHARED -DGS_DEVS_SHARED_DIR=\\\"\$(gssharedir)\\\""
5 kx X11_DEVS=""
5 kx OPT_CFLAGS="$DYNAMIC_CFLAGS $OPT_CFLAGS"
5 kx DBG_CFLAGS="$DYNAMIC_CFLAGS $DBG_CFLAGS"
5 kx ;;
5 kx *-sun*|*-solaris*)
5 kx DYNAMIC_DEVS="\$(GLOBJDIR)/X11.so"
5 kx DYNAMIC_FLAGS="-DGS_DEVS_SHARED -DGS_DEVS_SHARED_DIR=\\\"\$(gssharedir)\\\""
5 kx OPT_CFLAGS="$DYNAMIC_CFLAGS $OPT_CFLAGS"
5 kx DBG_CFLAGS="$DYNAMIC_CFLAGS $DBG_CFLAGS"
5 kx ;;
5 kx *)
5 kx AC_MSG_ERROR([Sorry, dynamic driver support not available on this platform!])
5 kx ;;
5 kx esac
5 kx fi
5 kx ])
5 kx
5 kx AC_SUBST(DYNAMIC_CFLAGS)
5 kx AC_SUBST(DYNAMIC_DEVS)
5 kx AC_SUBST(DYNAMIC_FLAGS)
5 kx AC_SUBST(GS_DYNAMIC_LDFLAGS)
5 kx AC_SUBST(PCL_DYNAMIC_LDFLAGS)
5 kx AC_SUBST(XPS_DYNAMIC_LDFLAGS)
5 kx AC_SUBST(PDL_DYNAMIC_LDFLAGS)
5 kx AC_SUBST(PDF_DYNAMIC_LDFLAGS)
5 kx AC_SUBST(DYNAMIC_LIBS)
5 kx AC_SUBST(INSTALL_SHARED)
5 kx AC_SUBST(X11_DEVS)
5 kx AC_SUBST(SO_LIB_EXT)
5 kx AC_SUBST(DLL_EXT)
5 kx AC_SUBST(SO_LIB_VERSION_SEPARATOR)
5 kx
5 kx dnl look for default font path...
5 kx AC_ARG_WITH([fontpath], AS_HELP_STRING([--with-fontpath],
5 kx [set font search path for gs]), fontpath="$withval", fontpath="")
5 kx
5 kx dnl Fix "prefix" variable...
5 kx if test "x$prefix" = xNONE; then
5 kx prefix=/usr/local
5 kx fi
5 kx
5 kx dnl Fix "datadir" variable...
5 kx if test "x$datadir" = 'x${prefix}/share'; then
5 kx datadir="$prefix/share"
5 kx fi
5 kx
5 kx dnl Fix "fontpath" variable...
5 kx if test "x$fontpath" = "x"; then
5 kx # These font directories are used by various Linux distributions...
5 kx fontpath="$datadir/fonts/default/ghostscript"
5 kx fontpath="${fontpath}:$datadir/fonts/default/Type1"
5 kx fontpath="${fontpath}:$datadir/fonts/default/TrueType"
5 kx
5 kx # These font directories are used by IRIX...
5 kx fontpath="${fontpath}:/usr/lib/DPS/outline/base"
5 kx
5 kx # These font directories are used by Solaris...
5 kx fontpath="${fontpath}:/usr/openwin/lib/X11/fonts/Type1"
5 kx fontpath="${fontpath}:/usr/openwin/lib/X11/fonts/TrueType"
5 kx
5 kx # This font directory is used by CUPS...
5 kx if test "x$CUPSCONFIG" != x; then
5 kx fontpath="${fontpath}:`$CUPSCONFIG --datadir`/fonts"
5 kx fi
5 kx fi
5 kx
5 kx AC_SUBST(fontpath)
5 kx
5 kx dnl look for default tessdata...
5 kx AC_ARG_WITH([tessdata], AS_HELP_STRING([--with-tessdata],
5 kx [set tesseract data search path]), tessdata="$withval", tessdata="")
5 kx
5 kx if test "x$tessdata" = "x"; then
5 kx tessdata="${datadir}/tessdata"
5 kx fi
5 kx
5 kx AC_SUBST(tessdata)
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl Check for library functions
5 kx dnl --------------------------------------------------
5 kx
5 kx AC_CHECK_FUNCS([mkstemp], [HAVE_MKSTEMP=-DHAVE_MKSTEMP])
5 kx AC_SUBST(HAVE_MKSTEMP)
5 kx
5 kx AC_CHECK_FUNCS([fopen64], [HAVE_FILE64=-DHAVE_FILE64])
5 kx AC_SUBST(HAVE_FILE64)
5 kx
5 kx AC_CHECK_FUNCS([fseeko], [HAVE_FSEEKO=-DHAVE_FSEEKO])
5 kx AC_SUBST(HAVE_FSEEKO)
5 kx
5 kx AC_CHECK_FUNCS([mkstemp64], [HAVE_MKSTEMP64=-DHAVE_MKSTEMP64])
5 kx AC_SUBST(HAVE_MKSTEMP64)
5 kx
5 kx AC_CHECK_FUNCS([setlocale], [HAVE_SETLOCALE=-DHAVE_SETLOCALE])
5 kx AC_SUBST(HAVE_SETLOCALE)
5 kx
5 kx AC_CHECK_FUNCS([strerror], [HAVE_STRERROR=-DHAVE_STRERROR])
5 kx AC_SUBST(HAVE_STRERROR)
5 kx
5 kx AC_CHECK_FUNCS([isnan], [HAVE_ISNAN=-DHAVE_ISNAN])
5 kx AC_SUBST(HAVE_ISNAN)
5 kx
5 kx AC_CHECK_FUNCS([isinf], [HAVE_ISINF=-DHAVE_ISINF])
5 kx AC_SUBST(HAVE_ISINF)
5 kx
5 kx AC_CHECK_FUNCS([fpclassify], [HAVE_FPCLASSIFY=-DHAVE_FPCLASSIFY])
5 kx AC_SUBST(HAVE_FPCLASSIFY)
5 kx
5 kx AC_PROG_GCC_TRADITIONAL
5 kx
5 kx dnl NB: We don't actually provide autoconf-switched fallbacks for any
5 kx dnl of these functions, so the checks are purely informational.
5 kx AC_FUNC_FORK
5 kx AC_FUNC_MALLOC
5 kx AC_FUNC_MEMCMP
5 kx AC_FUNC_STAT
5 kx AC_FUNC_VPRINTF
5 kx AC_CHECK_FUNCS([bzero dup2 floor gettimeofday memchr memmove memset mkdir mkfifo modf pow putenv rint setenv sqrt strchr strrchr strspn strstr])
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl disable the memory header ID code on SPARC
5 kx dnl --------------------------------------------------
5 kx
5 kx case $host in
5 kx *sparc*)
5 kx GCFLAGS="$GCFLAGS -DGS_USE_MEMORY_HEADER_ID=0"
5 kx ;;
5 kx esac
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl set big/little endian for LCMS
5 kx dnl --------------------------------------------------
5 kx LCMS_ENDIAN=
5 kx LCMS2_ENDIAN=
5 kx
5 kx if test x"$BIGENDIAN" != x"0"; then
5 kx LCMS_ENDIAN="-DUSE_BIG_ENDIAN=$BIGENDIAN"
5 kx LCMS2_ENDIAN="-DCMS_USE_BIG_ENDIAN=$BIGENDIAN"
5 kx fi
5 kx
5 kx AC_SUBST(LCMS_ENDIAN)
5 kx AC_SUBST(LCMS2_ENDIAN)
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl set memory manager's ptr alignment
5 kx dnl --------------------------------------------------
5 kx
5 kx ALIGN_TEXT_PROG_INCS="\
5 kx #include <stdio.h>
5 kx #include <stdlib.h>
5 kx "
5 kx
5 kx
5 kx ALIGN_TEXT_PROG="\
5 kx struct altest
5 kx {
5 kx char a;
5 kx int b;
5 kx long c;
5 kx long long d;
5 kx float e;
5 kx double f;
5 kx void *g;
5 kx };
5 kx struct altest *a;
5 kx struct altest d;
5 kx char *b, *c, *lim;
5 kx int ret = 0;
5 kx c = b = malloc(64 * sizeof(struct altest));
5 kx lim = b + (64 * sizeof(struct altest));
5 kx do
5 kx {
5 kx b++;
5 kx if ((b >= lim) ||
5 kx ((((unsigned int)b) & 4) == 0 && (((unsigned int)b) & 8) != 0))
5 kx {
5 kx break;
5 kx }
5 kx } while(1);
5 kx if (b >= lim)
5 kx {
5 kx ret = -1;
5 kx }
5 kx else
5 kx {
5 kx a = (struct altest *)b;
5 kx b = a->g;
5 kx ret = 0;
5 kx }
5 kx free(c);
5 kx exit(ret);
5 kx "
5 kx
5 kx
5 kx GS_MEMPTR_ALIGNMENT=
5 kx
5 kx AC_ARG_WITH(memory-alignment,
5 kx [AS_HELP_STRING([--with-memory-alignment],
5 kx [Allows setting minimum alignment for the memory manager (4 or 8 bytes]))],
5 kx [GS_MEMPTR_ALIGNMENT=$with_memory_alignment],[GS_MEMPTR_ALIGNMENT=check])
5 kx
5 kx if test x"$GS_MEMPTR_ALIGNMENT" = xcheck ; then
5 kx case $host in
5 kx *hpux*|*-sun*|*-aix*|*-solaris*)
5 kx GS_MEMPTR_ALIGNMENT=8
5 kx ;;
5 kx *)
5 kx ;;
5 kx esac
5 kx fi
5 kx
5 kx if test x"$GS_MEMPTR_ALIGNMENT" = xcheck ; then
5 kx AC_MSG_CHECKING([minimum memory pointer alignment])
5 kx AC_RUN_IFELSE(
5 kx [AC_LANG_PROGRAM([$ALIGN_TEXT_PROG_INCS], [
5 kx $ALIGN_TEXT_PROG
5 kx ])],
5 kx [GS_MEMPTR_ALIGNMENT=4;AC_MSG_RESULT(done)],
5 kx [GS_MEMPTR_ALIGNMENT=8;AC_MSG_RESULT(done)],
5 kx [GS_MEMPTR_ALIGNMENT=4;AC_MSG_RESULT(cross compiling: assuming 4 byte - otherwise use "--with-memory-alignment=")])
5 kx
5 kx fi
5 kx
5 kx if test x"$GS_MEMPTR_ALIGNMENT" != x4 && test x"$GS_MEMPTR_ALIGNMENT" != x8 ; then
5 kx AC_MSG_ERROR([4 and 8 are the only valid values for "--with-memory-alignment"], -1)
5 kx fi
5 kx
5 kx if test x"$GS_MEMPTR_ALIGNMENT" != x4 || test x"$with_memory_alignment" != x ; then
5 kx LCMS2_PTR_ALIGNMENT="-DCMS_PTR_ALIGNMENT=$GS_MEMPTR_ALIGNMENT"
5 kx
5 kx GCFLAGS="$GCFLAGS -DGS_MEMPTR_ALIGNMENT=$GS_MEMPTR_ALIGNMENT"
5 kx fi
5 kx
5 kx AC_SUBST(LCMS2_PTR_ALIGNMENT)
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl decide if we have to "hack" sqrtf() for lcms2
5 kx dnl --------------------------------------------------
5 kx
5 kx AC_CHECK_FUNC([sqrtf], [SQRTF_SUBST=], [SQRTF_SUBST="-Dsqrtf=\"(float)sqrt\""])
5 kx
5 kx AC_SUBST(SQRTF_SUBST)
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl check for and possibly replace strnlen
5 kx dnl --------------------------------------------------
5 kx AC_CHECK_FUNCS([strnlen], [HAVE_STRNLEN=],[HAVE_STRNLEN="-D\"strnlen(a,b)=strlen(a)\""])
5 kx
5 kx GCFLAGS="$GCFLAGS $HAVE_STRNLEN"
5 kx
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl check for byte swap intrinsics
5 kx dnl --------------------------------------------------
5 kx AC_MSG_CHECKING([byteswap support])
5 kx
5 kx HAVE_BSWAP32=""
5 kx AC_LINK_IFELSE(
5 kx [AC_LANG_PROGRAM([], [
5 kx int a = 0;
5 kx int b = __builtin_bswap32(a);
5 kx return(0);
5 kx ])],
5 kx [HAVE_BSWAP32="-DHAVE_BSWAP32"], [HAVE_BSWAP32=""])
5 kx
5 kx AC_ARG_ENABLE([bswap32], AS_HELP_STRING([--disable-bswap32],
5 kx [Do not use bswap32 instrinsic]), [
5 kx if test "x$enable_bswap32" = xno; then
5 kx HAVE_BSWAP32=""
5 kx fi])
5 kx
5 kx if test "x$HAVE_BSWAP32" != x; then
5 kx AC_MSG_RESULT(yes)
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx
5 kx AC_SUBST(HAVE_BSWAP32)
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl check for byte swap header
5 kx dnl --------------------------------------------------
5 kx AC_MSG_CHECKING([for byteswap.h])
5 kx
5 kx HAVE_BYTESWAP_H=""
5 kx AC_COMPILE_IFELSE(
5 kx [AC_LANG_PROGRAM([#include "byteswap.h"], [
5 kx int a = 0;
5 kx int b = __builtin_bswap32(a);
5 kx return(0);
5 kx ])],
5 kx [HAVE_BYTESWAP_H="-DHAVE_BYTESWAP_H"], [HAVE_BYTESWAP_H=""])
5 kx
5 kx AC_ARG_ENABLE([byteswap-h], AS_HELP_STRING([--disable-byteswap-h],
5 kx [Do not use byteswap.h functions]), [
5 kx if test "x$enable_byteswap-h" = xno; then
5 kx HAVE_BYTESWAP_H=""
5 kx fi])
5 kx
5 kx if test "x$HAVE_BYTESWAP_H" != x; then
5 kx AC_MSG_RESULT(yes)
5 kx else
5 kx AC_MSG_RESULT(no)
5 kx fi
5 kx
5 kx AC_SUBST(HAVE_BYTESWAP_H)
5 kx
5 kx # --------------------------------------------------
5 kx # Sun, BSD possibly other makes don't have quite the
5 kx # feature set of GNU make. We still prefer GNU make,
5 kx # but......
5 kx # --------------------------------------------------
5 kx AC_ARG_WITH([gnu-make], AS_HELP_STRING([--without-gnu-make],
5 kx [disable GNU make features]), gnu_make=no)
5 kx
5 kx if test "x$gnu_make" != "xno"; then
5 kx SUB_MAKE_OPTION="-f \$(MAKEFILE)"
5 kx ORDER_ONLY="|"
5 kx else
5 kx SUB_MAKE_OPTION=
5 kx ORDER_ONLY=""
5 kx fi
5 kx
5 kx AC_SUBST(ORDER_ONLY)
5 kx AC_SUBST(SUB_MAKE_OPTION)
5 kx
5 kx # --------------------------------------------------
5 kx # annoying: Windows doesn't allow "aux" as a
5 kx # directory nor file name, so if we're building in
5 kx # mingw, add the same prefix as the VS build uses
5 kx # --------------------------------------------------
5 kx AUXDIRPOSTFIX=""
5 kx case $build in
5 kx *-mingw*|*-msys*|*-cygwin*)
5 kx AUXDIRPOSTFIX="_"
5 kx ;;
5 kx esac
5 kx AC_SUBST(AUXDIRPOSTFIX)
5 kx
5 kx # --------------------------------------------------
5 kx # Set executable name extention
5 kx # usually empty on Unix-like systems
5 kx # --------------------------------------------------
5 kx EXEEXT=""
5 kx
5 kx case $host in
5 kx *-mingw*|*-msys*)
5 kx EXEEXT=".exe"
5 kx ;;
5 kx *)
5 kx ;;
5 kx esac
5 kx
5 kx AC_ARG_WITH([exe-ext], AS_HELP_STRING([--with-exe-ext=EXT],
5 kx [set the file name executable extension (must include any separator e.g. the period in ".exe")]),
5 kx [EXEEXT="$with_exe_ext"])
5 kx
5 kx AC_SUBST(EXEEXT)
5 kx
5 kx # --------------------------------------------------
5 kx # Set executable name extention for aux binaries
5 kx # usually empty on Unix-like systems
5 kx # --------------------------------------------------
5 kx AUXEXEEXT=""
5 kx
5 kx case $build in
5 kx *-mingw*|*-msys*)
5 kx AUXEXEEXT=".exe"
5 kx ;;
5 kx *)
5 kx ;;
5 kx esac
5 kx
5 kx AC_ARG_WITH([aux-exe-ext], AS_HELP_STRING([--with-aux-exe-ext=EXT],
5 kx [set the file name executable extension for auxiliary binaries (must include any separator e.g. the period in ".exe")]),
5 kx [AUXEXEEXT="$with_aux_exe_ext"])
5 kx
5 kx AC_SUBST(AUXEXEEXT)
5 kx
5 kx # --------------------------------------------------
5 kx # Check for disabling of versioned path option.
5 kx # By default the versioned path must be enabled!
5 kx # Using this option is user's own risk & responsibility.
5 kx # --------------------------------------------------
5 kx AC_ARG_WITH([versioned-path],
5 kx [ --without-versioned-path
5 kx Do not use file paths containing the version of GS.
5 kx
5 kx WARNING: This option is dangerous & unsupported, and
5 kx you take full responsibility for using it!],
5 kx versioned_path=no)
5 kx
5 kx if test "x$versioned_path" != "xno"; then
5 kx VERSIONED_PATH='/$(GS_DOT_VERSION)'
5 kx else
5 kx VERSIONED_PATH=''
5 kx fi
5 kx
5 kx AC_SUBST(VERSIONED_PATH)
5 kx
5 kx # --------------------------------------------------
5 kx # Check if we are using GCC, and disable strict
5 kx # aliasing optimization if GCC supports it...
5 kx #
5 kx # NOTE: Strict aliasing can cause some parts
5 kx # of Ghostscript to malfunction.
5 kx # --------------------------------------------------
5 kx if test x"$GCC" = x"yes"; then
5 kx AC_MSG_CHECKING([whether to explicitly disable strict aliasing])
5 kx CFLAGS_backup="$CFLAGS"
5 kx CFLAGSAUX_backup="$CFLAGSAUX"
5 kx CFLAGS="$CFLAGS -fno-strict-aliasing"
5 kx AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
5 kx AC_MSG_RESULT([yes])
5 kx CFLAGS_backup="$CFLAGS"
5 kx if test x"$host" = x"$build" ; then
5 kx CFLAGSAUX_backup="$CFLAGSAUX -fno-strict-aliasing"
5 kx fi
5 kx ],[])
5 kx CFLAGS="$CFLAGS_backup"
5 kx CFLAGSAUX="$CFLAGSAUX_backup"
5 kx fi
5 kx
5 kx # --------------------------------------------------
5 kx # Modify build for internal cluster testing.
5 kx # DO NOT USE THIS OPTION OUTSIDE OF ARTIFEX!
5 kx # --------------------------------------------------
5 kx AC_ARG_ENABLE([cluster])
5 kx
5 kx if test "x"$enable_cluster != "x"; then
5 kx CLUSTER_CFLAGS="-DCLUSTER"
5 kx else
5 kx CLUSTER_CFLAGS=""
5 kx fi
5 kx
5 kx AC_SUBST(CLUSTER_CFLAGS)
5 kx
5 kx if test x"$build" != x"$host"; then
5 kx
5 kx ilog2()
5 kx {
5 kx ILOG2_VAL=$1
5 kx ILOG2_RES=0
5 kx while test $ILOG2_VAL -gt 1 ; do
5 kx ILOG2_VAL=$((ILOG2_VAL + 1))
5 kx ILOG2_VAL=$((ILOG2_VAL >> 1))
5 kx ILOG2_RES=$((ILOG2_RES + 1))
5 kx done
5 kx return $ILOG2_RES
5 kx };
5 kx
5 kx # --------------------------------------------------
5 kx # Generate arch.h headers
5 kx # --------------------------------------------------
5 kx AC_CHECK_ALIGNOF([short])
5 kx AC_CHECK_ALIGNOF([int])
5 kx AC_CHECK_ALIGNOF([long])
5 kx AC_CHECK_ALIGNOF([size_t])
5 kx AC_CHECK_ALIGNOF([void *])
5 kx AC_CHECK_ALIGNOF([float])
5 kx AC_CHECK_ALIGNOF([double])
5 kx
5 kx AC_SUBST(ARCH_ALIGN_SHORT_MOD, $ac_cv_alignof_short)
5 kx AC_SUBST(ARCH_ALIGN_INT_MOD, $ac_cv_alignof_int)
5 kx AC_SUBST(ARCH_ALIGN_LONG_MOD, $ac_cv_alignof_long)
5 kx AC_SUBST(ARCH_ALIGN_SIZE_T_MOD, $ac_cv_alignof_size_t)
5 kx AC_SUBST(ARCH_ALIGN_PTR_MOD, $ac_cv_alignof_void_p)
5 kx AC_SUBST(ARCH_ALIGN_FLOAT_MOD, $ac_cv_alignof_float)
5 kx AC_SUBST(ARCH_ALIGN_DOUBLE_MOD, $ac_cv_alignof_double)
5 kx
5 kx AC_CHECK_SIZEOF([char])
5 kx AC_CHECK_SIZEOF([short])
5 kx AC_CHECK_SIZEOF([int])
5 kx AC_CHECK_SIZEOF([long])
5 kx AC_CHECK_SIZEOF([long long])
5 kx AC_CHECK_SIZEOF([size_t])
5 kx AC_CHECK_SIZEOF([void *])
5 kx AC_CHECK_SIZEOF([float])
5 kx AC_CHECK_SIZEOF([double])
5 kx
5 kx ilog2 $ac_cv_sizeof_char
5 kx AC_SUBST(ARCH_LOG2_SIZEOF_CHAR, $?)
5 kx
5 kx ilog2 $ac_cv_sizeof_short
5 kx AC_SUBST(ARCH_LOG2_SIZEOF_SHORT, $?)
5 kx
5 kx ilog2 $ac_cv_sizeof_int
5 kx AC_SUBST(ARCH_LOG2_SIZEOF_INT, $?)
5 kx
5 kx ilog2 $ac_cv_sizeof_long
5 kx AC_SUBST(ARCH_LOG2_SIZEOF_LONG, $?)
5 kx
5 kx ilog2 $ac_cv_sizeof_long_long
5 kx AC_SUBST(ARCH_LOG2_SIZEOF_LONG_LONG, $?)
5 kx
5 kx ilog2 $ac_cv_sizeof_size_t
5 kx AC_SUBST(ARCH_LOG2_SIZEOF_SIZE_T, $?)
5 kx AC_SUBST(ARCH_SIZEOF_SIZE_T, $ac_cv_sizeof_size_t)
5 kx
5 kx AC_SUBST(ARCH_SIZEOF_PTR, $ac_cv_sizeof_void_p)
5 kx ilog2 $ac_cv_sizeof_void_p
5 kx AC_SUBST(ARCH_LOG2_SIZEOF_PTR, $?)
5 kx
5 kx AC_SUBST(ARCH_SIZEOF_FLOAT, $ac_cv_sizeof_float)
5 kx ilog2 $ac_cv_sizeof_float
5 kx AC_SUBST(ARCH_LOG2_SIZEOF_FLOAT, $?)
5 kx
5 kx AC_SUBST(ARCH_SIZEOF_DOUBLE, $ac_cv_sizeof_double)
5 kx ilog2 $ac_cv_sizeof_double
5 kx AC_SUBST(ARCH_LOG2_SIZEOF_DOUBLE, $?)
5 kx
5 kx AC_SUBST(ARCH_IS_BIG_ENDIAN, $BIGENDIAN)
5 kx
5 kx AC_MSG_CHECKING([if pointers are signed])
5 kx AC_COMPILE_IFELSE(
5 kx [AC_LANG_PROGRAM([#include <stdint.h>], [
5 kx char b[[(char *)(uintptr_t)-1 < (char *)(uintptr_t)0 ? -1 : 0]];
5 kx return sizeof(b);
5 kx ])],
5 kx [ARCH_PTRS_ARE_SIGNED=0; AC_MSG_RESULT(no)], [ARCH_PTRS_ARE_SIGNED=1; AC_MSG_RESULT(yes)])
5 kx AC_SUBST(ARCH_PTRS_ARE_SIGNED)
5 kx
5 kx AC_MSG_CHECKING([if dividing negative by positive truncates])
5 kx AC_COMPILE_IFELSE(
5 kx [AC_LANG_PROGRAM([], [
5 kx char b[[-1 / 2 == 0 ? -1 : 0]];
5 kx return sizeof(b);
5 kx ])],
5 kx [ARCH_DIV_NEG_POS_TRUNCATES=0; AC_MSG_RESULT(no)], [ARCH_DIV_NEG_POS_TRUNCATES=1; AC_MSG_RESULT(yes)])
5 kx AC_SUBST(ARCH_DIV_NEG_POS_TRUNCATES)
5 kx
5 kx AC_MSG_CHECKING([if arithmetic shift works properly])
5 kx ARCH_ARITH_RSHIFT=""
5 kx AC_COMPILE_IFELSE(
5 kx [AC_LANG_PROGRAM([], [
5 kx char b[[(-1L >> 2) != -1 || (-1 >> 1) != -1 || (-1 >> 2) != -1 ? 0 : -1]];
5 kx return sizeof(b);
5 kx ])],
5 kx [ARCH_ARITH_RSHIFT=0; AC_MSG_RESULT(no)])
5 kx
5 kx if test "x${ARCH_ARITH_RSHIFT}" = "x"; then
5 kx # Turbo C problem
5 kx AC_COMPILE_IFELSE(
5 kx [AC_LANG_PROGRAM([], [
5 kx char b[[(-1L >> 2) != -1 ? 0 : -1]];
5 kx return sizeof(b);
5 kx ])],
5 kx [ARCH_ARITH_RSHIFT=1; AC_MSG_RESULT(no)])
5 kx fi
5 kx
5 kx if test "x${ARCH_ARITH_RSHIFT}" = "x"; then
5 kx AC_MSG_RESULT(yes)
5 kx ARCH_ARITH_RSHIFT=2
5 kx fi
5 kx AC_SUBST(ARCH_ARITH_RSHIFT)
5 kx
5 kx AC_SUBST(ARCH_SIZEOF_GX_COLOR_INDEX)
5 kx CONFIG_FILES_LIST="$CONFIG_FILES_LIST $ARCH_AUTOCONF_HEADER:$ARCH_AUTOCONF_HEADER_PROTO"
5 kx fi
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl AUX tool options
5 kx dnl --------------------------------------------------
5 kx AC_ARG_ENABLE([mkromfs-quiet], AS_HELP_STRING([--enable-mkromfs-quiet],
5 kx [Do not emit mkromfs verbose output]), [MKROMFS_FLAGS="-q $MKROMFS_FLAGS"])
5 kx
5 kx AC_SUBST(MKROMFS_FLAGS)
5 kx
5 kx
5 kx if test x"$GCFLAGSAUX" = x"\$(GCFLAGS)" ; then
5 kx GCFLAGSAUX="$GCFLAGS"
5 kx fi
5 kx
5 kx CFLAGSAUX=$(echo $CFLAGSAUX | sed -e 's/-DGS_NO_FILESYSTEM//g')
5 kx
5 kx dnl --------------------------------------------------
5 kx dnl Do substitutions
5 kx dnl --------------------------------------------------
5 kx SRCDIR="$srcdir"
5 kx AC_SUBST(SRCDIR)
5 kx AC_SUBST(OPT_CFLAGS)
5 kx AC_SUBST(DBG_CFLAGS)
5 kx AC_SUBST(GCFLAGS)
5 kx AC_SUBST(CFLAGS_SANITIZE)
5 kx AC_SUBST(STRIP_XE)
5 kx AC_SUBST(JPX_SSE_CFLAGS)
5 kx
5 kx AC_SUBST(CCAUX)
5 kx AC_SUBST(CFLAGSAUX)
5 kx AC_SUBST(GCFLAGSAUX)
5 kx AC_SUBST(CAPOPTAUX)
5 kx AC_SUBST(CFLAGSAUX_STANDARD)
5 kx AC_SUBST(CFLAGSAUX_DEBUG)
5 kx AC_SUBST(CFLAGSAUX_PROFILE)
5 kx AC_SUBST(LDFLAGSAUX)
5 kx AC_SUBST(AUXEXTRALIBS)
5 kx AC_SUBST(ARCH_AUTOCONF_HEADER)
5 kx AC_SUBST(CFLAGS_VISIBILITY)
5 kx
5 kx CONFIG_FILES_LIST="$CONFIG_FILES_LIST $THEMAKEFILE"
5 kx
5 kx if test x"$THEMAKEFILE" != x"$MAKEFILE" && test x"$build" = x"$host"; then
5 kx CONFIG_FILES_LIST="$CONFIG_FILES_LIST"
5 kx fi
5 kx
5 kx if test "x$AFS" = "x1"; then
5 kx AC_MSG_WARN([Using "native" font scaler which is now deprecated (rather than freetype),])
5 kx AC_MSG_WARN([Support for this will be removed in a future release])
5 kx fi
5 kx
5 kx if test x"$OCR_DEVS_WARNING_LINE1" != x"" ; then
5 kx echo ""
5 kx AC_MSG_WARN([$OCR_DEVS_WARNING_LINE1])
5 kx if test x"$OCR_DEVS_WARNING_LINE2" != x"" ; then
5 kx AC_MSG_WARN([$OCR_DEVS_WARNING_LINE2])
5 kx fi
5 kx echo ""
5 kx fi
5 kx
5 kx AC_CONFIG_FILES($CONFIG_FILES_LIST)
5 kx
5 kx AC_OUTPUT