2 dnl "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $"
4 dnl Compiler stuff for CUPS.
6 dnl Copyright 2007-2012 by Apple Inc.
7 dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
9 dnl These coded instructions, statements, and computer programs are the
10 dnl property of Apple Inc. and are protected by Federal copyright
11 dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
12 dnl which should have been included with this file. If this file is
13 dnl file is missing or damaged, see the license at "http://www.cups.org/".
16 dnl Clear the debugging and non-shared library options unless the user asks
20 AC_SUBST(INSTALL_STRIP)
23 AC_ARG_WITH(optim, [ --with-optim set optimization flags ])
24 AC_ARG_ENABLE(debug, [ --enable-debug build with debugging symbols])
25 AC_ARG_ENABLE(debug_guards, [ --enable-debug-guards build with memory allocation guards])
26 AC_ARG_ENABLE(debug_printfs, [ --enable-debug-printfs build with CUPS_DEBUG_LOG support])
27 AC_ARG_ENABLE(unit_tests, [ --enable-unit-tests build and run unit tests])
29 dnl For debugging, keep symbols, otherwise strip them...
30 if test x$enable_debug = xyes; then
36 dnl Debug printfs can slow things down, so provide a separate option for that
37 if test x$enable_debug_printfs = xyes; then
38 CFLAGS="$CFLAGS -DDEBUG"
39 CXXFLAGS="$CXXFLAGS -DDEBUG"
42 dnl Debug guards use an extra 4 bytes for some structures like strings in the
43 dnl string pool, so provide a separate option for that
44 if test x$enable_debug_guards = xyes; then
45 CFLAGS="$CFLAGS -DDEBUG_GUARDS"
46 CXXFLAGS="$CXXFLAGS -DDEBUG_GUARDS"
49 dnl Unit tests take up time during a compile...
50 if test x$enable_unit_tests = xyes; then
57 dnl Setup general architecture flags...
58 AC_ARG_WITH(archflags, [ --with-archflags set default architecture flags ])
59 AC_ARG_WITH(ldarchflags, [ --with-ldarchflags set program architecture flags ])
61 if test -z "$with_archflags"; then
64 ARCHFLAGS="$with_archflags"
67 if test -z "$with_ldarchflags"; then
68 if test "$uname" = Darwin; then
69 # Only create Intel programs by default
70 LDARCHFLAGS="`echo $ARCHFLAGS | sed -e '1,$s/-arch ppc64//'`"
72 LDARCHFLAGS="$ARCHFLAGS"
75 LDARCHFLAGS="$with_ldarchflags"
81 dnl Read-only data/program support on Linux...
82 AC_ARG_ENABLE(relro, [ --enable-relro build with the GCC relro option])
84 dnl Update compiler options...
85 CXXLIBS="${CXXLIBS:=}"
94 if test -n "$GCC"; then
95 # Add GCC-specific compiler options...
96 if test -z "$OPTIM"; then
97 if test "x$with_optim" = x; then
98 # Default to optimize-for-size and debug
101 OPTIM="$with_optim $OPTIM"
105 # Generate position-independent code as needed...
106 if test $PICFLAG = 1 -a $uname != AIX; then
110 # The -fstack-protector option is available with some versions of
111 # GCC and adds "stack canaries" which detect when the return address
112 # has been overwritten, preventing many types of exploit attacks.
113 AC_MSG_CHECKING(if GCC supports -fstack-protector)
115 CFLAGS="$CFLAGS -fstack-protector"
117 OPTIM="$OPTIM -fstack-protector"
122 # The -fPIE option is available with some versions of GCC and adds
123 # randomization of addresses, which avoids another class of exploits
124 # that depend on a fixed address for common functions.
125 AC_MSG_CHECKING(if GCC supports -fPIE)
127 CFLAGS="$CFLAGS -fPIE"
131 PIEFLAGS="-fPIE -Wl,-pie"
134 PIEFLAGS="-fPIE -pie"
141 if test "x$with_optim" = x; then
142 # Add useful warning options for tracking down problems...
143 OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
145 # Additional warning options for development testing...
146 if test -d .svn; then
147 OPTIM="-Wshadow -Werror $OPTIM"
149 AC_MSG_CHECKING(if GCC supports -Wno-tautological-compare)
151 CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
153 [OPTIM="$OPTIM -Wno-tautological-compare"
162 # -D_FORTIFY_SOURCE=2 adds additional object size
163 # checking, basically wrapping all string functions
164 # with buffer-limited ones. Not strictly needed for
165 # CUPS since we already use buffer-limited calls, but
166 # this will catch any additions that are broken.
167 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
171 # The -z relro option is provided by the Linux linker command to
172 # make relocatable data read-only.
173 if test x$enable_relro = xyes; then
174 RELROFLAGS="-Wl,-z,relro"
179 # Add vendor-specific compiler options...
182 if test -z "$OPTIM"; then
183 if test "x$with_optim" = x; then
184 OPTIM="-O2 -qmaxmem=6000"
186 OPTIM="$with_optim $OPTIM"
191 if test -z "$OPTIM"; then
192 if test "x$with_optim" = x; then
195 OPTIM="$with_optim $OPTIM"
201 if test $PICFLAG = 1; then
206 # Tru64 UNIX aka Digital UNIX aka OSF/1
207 if test -z "$OPTIM"; then
208 if test "x$with_optim" = x; then
217 if test -z "$OPTIM"; then
218 if test "x$with_optim" = x; then
221 OPTIM="$with_optim $OPTIM"
225 if test $PICFLAG = 1; then
231 if test -z "$OPTIM"; then
232 if test "x$with_optim" = x; then
235 OPTIM="$with_optim $OPTIM"
239 if test $PICFLAG = 1; then
244 # Running some other operating system; inform the user they
245 # should contribute the necessary options to
246 # cups-support@cups.org...
247 echo "Building CUPS with default compiler optimizations; contact"
248 echo "cups-bugs@cups.org with uname and compiler options needed"
249 echo "for your platform, or set the CFLAGS and LDFLAGS environment"
250 echo "variables before running configure."
255 # Add general compiler options per platform...
258 # HP-UX 10.20 (at least) needs this definition to get the
260 OPTIM="$OPTIM -D_XOPEN_SOURCE_EXTENDED"
262 # HP-UX 11.00 (at least) needs this definition to get the
263 # u_short type used by the IP headers...
264 OPTIM="$OPTIM -D_INCLUDE_HPUX_SOURCE"
266 # HP-UX 11.23 (at least) needs this definition to get the
267 # IPv6 header to work...
268 OPTIM="$OPTIM -D_HPUX_SOURCE"
272 # glibc 2.8 and higher breaks peer credentials unless you
273 # define _GNU_SOURCE...
274 OPTIM="$OPTIM -D_GNU_SOURCE"
278 # Tru64 UNIX aka Digital UNIX aka OSF/1 need to be told
279 # to be POSIX-compliant...
280 OPTIM="$OPTIM -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_OSF_SOURCE"
285 dnl End of "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $".