]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - config-scripts/cups-compiler.m4
Improve IPP Everywhere support (Issue #4909)
[thirdparty/cups.git] / config-scripts / cups-compiler.m4
index e0c46296335a17426eef38ad294b75bd5d7184ba..4e71f0c3ce802b7510e5402993557c530d8cb757 100644 (file)
@@ -1,16 +1,14 @@
 dnl
-dnl "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $"
+dnl Compiler stuff for CUPS.
 dnl
-dnl   Compiler stuff for the Common UNIX Printing System (CUPS).
+dnl Copyright 2007-2014 by Apple Inc.
+dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
 dnl
-dnl   Copyright 2007-2009 by Apple Inc.
-dnl   Copyright 1997-2007 by Easy Software Products, all rights reserved.
-dnl
-dnl   These coded instructions, statements, and computer programs are the
-dnl   property of Apple Inc. and are protected by Federal copyright
-dnl   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-dnl   which should have been included with this file.  If this file is
-dnl   file is missing or damaged, see the license at "http://www.cups.org/".
+dnl These coded instructions, statements, and computer programs are the
+dnl property of Apple Inc. and are protected by Federal copyright
+dnl law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+dnl which should have been included with this file.  If this file is
+dnl file is missing or damaged, see the license at "http://www.cups.org/".
 dnl
 
 dnl Clear the debugging and non-shared library options unless the user asks
@@ -66,8 +64,8 @@ fi
 
 if test -z "$with_ldarchflags"; then
        if test "$uname" = Darwin; then
-               # Only create 32-bit programs by default
-               LDARCHFLAGS="`echo $ARCHFLAGS | sed -e '1,$s/-arch x86_64//' -e '1,$s/-arch ppc64//'`"
+               # Only create Intel programs by default
+               LDARCHFLAGS="`echo $ARCHFLAGS | sed -e '1,$s/-arch ppc64//'`"
        else
                LDARCHFLAGS="$ARCHFLAGS"
        fi
@@ -78,15 +76,6 @@ fi
 AC_SUBST(ARCHFLAGS)
 AC_SUBST(LDARCHFLAGS)
 
-dnl Setup support for separate 32/64-bit library generation...
-AC_ARG_WITH(arch32flags, [  --with-arch32flags      set 32-bit architecture flags])
-ARCH32FLAGS=""
-AC_SUBST(ARCH32FLAGS)
-
-AC_ARG_WITH(arch64flags, [  --with-arch64flags      set 64-bit architecture flags])
-ARCH64FLAGS=""
-AC_SUBST(ARCH64FLAGS)
-
 dnl Read-only data/program support on Linux...
 AC_ARG_ENABLE(relro, [  --enable-relro          build with the GCC relro option])
 
@@ -100,24 +89,6 @@ AC_SUBST(PIEFLAGS)
 RELROFLAGS=""
 AC_SUBST(RELROFLAGS)
 
-LIBCUPSORDER="libcups.order"
-AC_ARG_WITH(libcupsorder, [  --with-libcupsorder     set libcups secorder file, default=libcups.order],
-       if test -f "$withval"; then
-               LIBCUPSORDER="$withval"
-       fi)
-AC_SUBST(LIBCUPSORDER)
-
-LIBCUPSIMAGEORDER="libcupsimage.order"
-AC_ARG_WITH(libcupsimageorder, [  --with-libcupsimagesorder
-                          set libcupsimage secorder file, default=libcupsimage.order],
-       if test -f "$withval"; then
-               LIBCUPSIMAGEORDER="$withval"
-       fi)
-AC_SUBST(LIBCUPSIMAGEORDER)
-
-PHPOPTIONS=""
-AC_SUBST(PHPOPTIONS)
-
 if test -n "$GCC"; then
        # Add GCC-specific compiler options...
        if test -z "$OPTIM"; then
@@ -130,42 +101,89 @@ if test -n "$GCC"; then
        fi
 
        # Generate position-independent code as needed...
-       if test $PICFLAG = 1 -a $uname != AIX; then
+       if test $PICFLAG = 1; then
                OPTIM="-fPIC $OPTIM"
        fi
 
        # The -fstack-protector option is available with some versions of
        # GCC and adds "stack canaries" which detect when the return address
        # has been overwritten, preventing many types of exploit attacks.
-       AC_MSG_CHECKING(if GCC supports -fstack-protector)
+       AC_MSG_CHECKING(whether compiler supports -fstack-protector)
        OLDCFLAGS="$CFLAGS"
        CFLAGS="$CFLAGS -fstack-protector"
-       AC_TRY_COMPILE(,,
-               OPTIM="$OPTIM -fstack-protector"
+       AC_TRY_LINK(,,
+               if test "x$LSB_BUILD" = xy; then
+                       # Can't use stack-protector with LSB binaries...
+                       OPTIM="$OPTIM -fno-stack-protector"
+               else
+                       OPTIM="$OPTIM -fstack-protector"
+               fi
                AC_MSG_RESULT(yes),
                AC_MSG_RESULT(no))
        CFLAGS="$OLDCFLAGS"
 
-       # The -pie option is available with some versions of GCC and adds
-       # randomization of addresses, which avoids another class of exploits
-       # that depend on a fixed address for common functions.
-       AC_MSG_CHECKING(if GCC supports -pie)
-       OLDCFLAGS="$CFLAGS"
-       CFLAGS="$CFLAGS -pie -fPIE"
-       AC_TRY_COMPILE(,,
-               PIEFLAGS="-pie -fPIE"
-               AC_MSG_RESULT(yes),
-               AC_MSG_RESULT(no))
-       CFLAGS="$OLDCFLAGS"
+       if test "x$LSB_BUILD" != xy; then
+               # The -fPIE option is available with some versions of GCC and
+               # adds randomization of addresses, which avoids another class of
+               # exploits that depend on a fixed address for common functions.
+               #
+               # Not available to LSB binaries...
+               AC_MSG_CHECKING(whether compiler supports -fPIE)
+               OLDCFLAGS="$CFLAGS"
+               case "$uname" in
+                       Darwin*)
+                               CFLAGS="$CFLAGS -fPIE -Wl,-pie"
+                               AC_TRY_COMPILE(,,[
+                                       PIEFLAGS="-fPIE -Wl,-pie"
+                                       AC_MSG_RESULT(yes)],
+                                       AC_MSG_RESULT(no))
+                               ;;
+
+                       *)
+                               CFLAGS="$CFLAGS -fPIE -pie"
+                               AC_TRY_COMPILE(,,[
+                                       PIEFLAGS="-fPIE -pie"
+                                       AC_MSG_RESULT(yes)],
+                                       AC_MSG_RESULT(no))
+                               ;;
+               esac
+               CFLAGS="$OLDCFLAGS"
+       fi
 
        if test "x$with_optim" = x; then
                # Add useful warning options for tracking down problems...
-               OPTIM="-Wall -Wno-format-y2k $OPTIM"
+               OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
+
+               AC_MSG_CHECKING(whether compiler supports -Wno-unused-result)
+               OLDCFLAGS="$CFLAGS"
+               CFLAGS="$CFLAGS -Werror -Wno-unused-result"
+               AC_TRY_COMPILE(,,
+                       [OPTIM="$OPTIM -Wno-unused-result"
+                       AC_MSG_RESULT(yes)],
+                       AC_MSG_RESULT(no))
+               CFLAGS="$OLDCFLAGS"
+
+               AC_MSG_CHECKING(whether compiler supports -Wsign-conversion)
+               OLDCFLAGS="$CFLAGS"
+               CFLAGS="$CFLAGS -Werror -Wsign-conversion"
+               AC_TRY_COMPILE(,,
+                       [OPTIM="$OPTIM -Wsign-conversion"
+                       AC_MSG_RESULT(yes)],
+                       AC_MSG_RESULT(no))
+               CFLAGS="$OLDCFLAGS"
+
+               AC_MSG_CHECKING(whether compiler supports -Wno-tautological-compare)
+               OLDCFLAGS="$CFLAGS"
+               CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
+               AC_TRY_COMPILE(,,
+                       [OPTIM="$OPTIM -Wno-tautological-compare"
+                       AC_MSG_RESULT(yes)],
+                       AC_MSG_RESULT(no))
+               CFLAGS="$OLDCFLAGS"
+
                # Additional warning options for development testing...
                if test -d .svn; then
-                       OPTIM="-Wshadow -Wunused $OPTIM"
-                       CFLAGS="-Werror-implicit-function-declaration $CFLAGS"
-                       PHPOPTIONS="-Wno-shadow"
+                       OPTIM="-Werror $OPTIM"
                fi
        fi
 
@@ -175,283 +193,21 @@ if test -n "$GCC"; then
                        # checking, basically wrapping all string functions
                        # with buffer-limited ones.  Not strictly needed for
                        # CUPS since we already use buffer-limited calls, but
-                       # this will catch any additions that are broken.                
+                       # this will catch any additions that are broken.
                        CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
-
-                       if test x$enable_pie = xyes; then
-                               # GCC 4 on Mac OS X needs -Wl,-pie as well
-                               LDFLAGS="$LDFLAGS -Wl,-pie"
-                       fi
-                       ;;
-
-               HP-UX*)
-                       if test "x$enable_32bit" = xyes; then
-                               # Build 32-bit libraries, 64-bit base...
-                               if test -z "$with_arch32flags"; then
-                                       ARCH32FLAGS="-milp32"
-                               else
-                                       ARCH32FLAGS="$with_arch32flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch64flags"; then
-                                               ARCHFLAGS="-mlp64"
-                                       else
-                                               ARCHFLAGS="$with_arch64flags"
-                                       fi
-                               fi
-                       fi
-
-                       if test "x$enable_64bit" = xyes; then
-                               # Build 64-bit libraries, 32-bit base...
-                               if test -z "$with_arch64flags"; then
-                                       ARCH64FLAGS="-mlp64"
-                               else
-                                       ARCH64FLAGS="$with_arch64flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch32flags"; then
-                                               ARCHFLAGS="-milp32"
-                                       else
-                                               ARCHFLAGS="$with_arch32flags"
-                                       fi
-                               fi
-                       fi
-                       ;;
-
-               IRIX)
-                       if test "x$enable_32bit" = xyes; then
-                               # Build 32-bit libraries, 64-bit base...
-                               if test -z "$with_arch32flags"; then
-                                       ARCH32FLAGS="-n32 -mips3"
-                               else
-                                       ARCH32FLAGS="$with_arch32flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch64flags"; then
-                                               ARCHFLAGS="-64 -mips4"
-                                       else
-                                               ARCHFLAGS="$with_arch64flags"
-                                       fi
-                               fi
-                       fi
-
-                       if test "x$enable_64bit" = xyes; then
-                               # Build 64-bit libraries, 32-bit base...
-                               if test -z "$with_arch64flags"; then
-                                       ARCH64FLAGS="-64 -mips4"
-                               else
-                                       ARCH64FLAGS="$with_arch64flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch32flags"; then
-                                               ARCHFLAGS="-n32 -mips3"
-                                       else
-                                               ARCHFLAGS="$with_arch32flags"
-                                       fi
-                               fi
-                       fi
                        ;;
 
                Linux*)
                        # The -z relro option is provided by the Linux linker command to
                        # make relocatable data read-only.
                        if test x$enable_relro = xyes; then
-                               RELROFLAGS="-Wl,-z,relro"
-                       fi
-
-                       if test "x$enable_32bit" = xyes; then
-                               # Build 32-bit libraries, 64-bit base...
-                               if test -z "$with_arch32flags"; then
-                                       ARCH32FLAGS="-m32"
-                               else
-                                       ARCH32FLAGS="$with_arch32flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch64flags"; then
-                                               ARCHFLAGS="-m64"
-                                       else
-                                               ARCHFLAGS="$with_arch64flags"
-                                       fi
-                               fi
-                       fi
-
-                       if test "x$enable_64bit" = xyes; then
-                               # Build 64-bit libraries, 32-bit base...
-                               if test -z "$with_arch64flags"; then
-                                       ARCH64FLAGS="-m64"
-                               else
-                                       ARCH64FLAGS="$with_arch64flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch32flags"; then
-                                               ARCHFLAGS="-m32"
-                                       else
-                                               ARCHFLAGS="$with_arch32flags"
-                                       fi
-                               fi
-                       fi
-                       ;;
-
-               SunOS*)
-                       if test "x$enable_32bit" = xyes; then
-                               # Build 32-bit libraries, 64-bit base...
-                               if test -z "$with_arch32flags"; then
-                                       ARCH32FLAGS="-m32"
-                               else
-                                       ARCH32FLAGS="$with_arch32flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch64flags"; then
-                                               ARCHFLAGS="-m64"
-                                       else
-                                               ARCHFLAGS="$with_arch64flags"
-                                       fi
-                               fi
-                       fi
-
-                       if test "x$enable_64bit" = xyes; then
-                               # Build 64-bit libraries, 32-bit base...
-                               if test -z "$with_arch64flags"; then
-                                       ARCH64FLAGS="-m64"
-                               else
-                                       ARCH64FLAGS="$with_arch64flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch32flags"; then
-                                               ARCHFLAGS="-m32"
-                                       else
-                                               ARCHFLAGS="$with_arch32flags"
-                                       fi
-                               fi
+                               RELROFLAGS="-Wl,-z,relro,-z,now"
                        fi
                        ;;
        esac
 else
        # Add vendor-specific compiler options...
        case $uname in
-               AIX*)
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="-O2 -qmaxmem=6000"
-                               else
-                                       OPTIM="$with_optim $OPTIM"
-                               fi
-                       fi
-                       ;;
-               HP-UX*)
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="+O2"
-                               else
-                                       OPTIM="$with_optim $OPTIM"
-                               fi
-                       fi
-
-                       CFLAGS="-Ae $CFLAGS"
-
-                       if test $PICFLAG = 1; then
-                               OPTIM="+z $OPTIM"
-                       fi
-
-                       if test "x$enable_32bit" = xyes; then
-                               # Build 32-bit libraries, 64-bit base...
-                               if test -z "$with_arch32flags"; then
-                                       ARCH32FLAGS="+DD32"
-                               else
-                                       ARCH32FLAGS="$with_arch32flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch64flags"; then
-                                               ARCHFLAGS="+DD64"
-                                       else
-                                               ARCHFLAGS="$with_arch64flags"
-                                       fi
-                               fi
-                       fi
-
-                       if test "x$enable_64bit" = xyes; then
-                               # Build 64-bit libraries, 32-bit base...
-                               if test -z "$with_arch64flags"; then
-                                       ARCH64FLAGS="+DD64"
-                               else
-                                       ARCH64FLAGS="$with_arch64flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch32flags"; then
-                                               ARCHFLAGS="+DD32"
-                                       else
-                                               ARCHFLAGS="$with_arch32flags"
-                                       fi
-                               fi
-                       fi
-                       ;;
-               IRIX)
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="-O2"
-                               else
-                                       OPTIM="$with_optim $OPTIM"
-                               fi
-                       fi
-
-                       if test "x$with_optim" = x; then
-                               OPTIM="-fullwarn -woff 1183,1209,1349,1506,3201 $OPTIM"
-                       fi
-
-                       if test "x$enable_32bit" = xyes; then
-                               # Build 32-bit libraries, 64-bit base...
-                               if test -z "$with_arch32flags"; then
-                                       ARCH32FLAGS="-n32 -mips3"
-                               else
-                                       ARCH32FLAGS="$with_arch32flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch64flags"; then
-                                               ARCHFLAGS="-64 -mips4"
-                                       else
-                                               ARCHFLAGS="$with_arch64flags"
-                                       fi
-                               fi
-                       fi
-
-                       if test "x$enable_64bit" = xyes; then
-                               # Build 64-bit libraries, 32-bit base...
-                               if test -z "$with_arch64flags"; then
-                                       ARCH64FLAGS="-64 -mips4"
-                               else
-                                       ARCH64FLAGS="$with_arch64flags"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch32flags"; then
-                                               ARCHFLAGS="-n32 -mips3"
-                                       else
-                                               ARCHFLAGS="$with_arch32flags"
-                                       fi
-                               fi
-                       fi
-                       ;;
-               OSF*)
-                       # Tru64 UNIX aka Digital UNIX aka OSF/1
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="-O"
-                               else
-                                       OPTIM="$with_optim"
-                               fi
-                       fi
-                       ;;
                SunOS*)
                        # Solaris
                        if test -z "$OPTIM"; then
@@ -462,61 +218,6 @@ else
                                fi
                        fi
 
-                       if test $PICFLAG = 1; then
-                               OPTIM="-KPIC $OPTIM"
-                       fi
-
-                       if test "x$enable_32bit" = xyes; then
-                               # Compiling on a Solaris system, build 64-bit
-                               # binaries with separate 32-bit libraries...
-                               ARCH32FLAGS="-xarch=generic"
-
-                               if test "x$with_optim" = x; then
-                                       # Suppress all of Sun's questionable
-                                       # warning messages, and default to
-                                       # 64-bit compiles of everything else...
-                                       OPTIM="-w $OPTIM"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch64flags"; then
-                                               ARCHFLAGS="-xarch=generic64"
-                                       else
-                                               ARCHFLAGS="$with_arch64flags"
-                                       fi
-                               fi
-                       else
-                               if test "x$enable_64bit" = xyes; then
-                                       # Build 64-bit libraries...
-                                       ARCH64FLAGS="-xarch=generic64"
-                               fi
-
-                               if test "x$with_optim" = x; then
-                                       # Suppress all of Sun's questionable
-                                       # warning messages, and default to
-                                       # 32-bit compiles of everything else...
-                                       OPTIM="-w $OPTIM"
-                               fi
-
-                               if test -z "$with_archflags"; then
-                                       if test -z "$with_arch32flags"; then
-                                               ARCHFLAGS="-xarch=generic"
-                                       else
-                                               ARCHFLAGS="$with_arch32flags"
-                                       fi
-                               fi
-                       fi
-                       ;;
-               UNIX_SVR*)
-                       # UnixWare
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="-O"
-                               else
-                                       OPTIM="$with_optim $OPTIM"
-                               fi
-                       fi
-
                        if test $PICFLAG = 1; then
                                OPTIM="-KPIC $OPTIM"
                        fi
@@ -526,7 +227,7 @@ else
                        # should contribute the necessary options to
                        # cups-support@cups.org...
                        echo "Building CUPS with default compiler optimizations; contact"
-                       echo "cups-bugs@cups.org with uname and compiler options needed"
+                       echo "cups-devel@cups.org with uname and compiler options needed"
                        echo "for your platform, or set the CFLAGS and LDFLAGS environment"
                        echo "variables before running configure."
                        ;;
@@ -535,33 +236,9 @@ fi
 
 # Add general compiler options per platform...
 case $uname in
-       HP-UX*)
-               # HP-UX 10.20 (at least) needs this definition to get the
-               # h_errno global...
-               OPTIM="$OPTIM -D_XOPEN_SOURCE_EXTENDED"
-
-               # HP-UX 11.00 (at least) needs this definition to get the
-               # u_short type used by the IP headers...
-               OPTIM="$OPTIM -D_INCLUDE_HPUX_SOURCE"
-
-               # HP-UX 11.23 (at least) needs this definition to get the
-               # IPv6 header to work...
-               OPTIM="$OPTIM -D_HPUX_SOURCE"
-               ;;
-
        Linux*)
                # glibc 2.8 and higher breaks peer credentials unless you
                # define _GNU_SOURCE...
                OPTIM="$OPTIM -D_GNU_SOURCE"
                ;;
-
-       OSF*)
-               # Tru64 UNIX aka Digital UNIX aka OSF/1 need to be told
-               # to be POSIX-compliant...
-               OPTIM="$OPTIM -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_OSF_SOURCE"
-               ;;
 esac
-
-dnl
-dnl End of "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $".
-dnl