2
dnl "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $"
4
dnl Compiler stuff for CUPS.
6
dnl Copyright 2007-2013 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
if test "x$LSB_BUILD" = xy; then
118
# Can't use stack-protector with LSB binaries...
119
OPTIM="$OPTIM -fno-stack-protector"
121
OPTIM="$OPTIM -fstack-protector"
127
if test "x$LSB_BUILD" != xy; then
128
# The -fPIE option is available with some versions of GCC and
129
# adds randomization of addresses, which avoids another class of
130
# exploits that depend on a fixed address for common functions.
132
# Not available to LSB binaries...
133
AC_MSG_CHECKING(if GCC supports -fPIE)
137
CFLAGS="$CFLAGS -fPIE -Wl,-pie"
139
PIEFLAGS="-fPIE -Wl,-pie"
145
CFLAGS="$CFLAGS -fPIE -pie"
147
PIEFLAGS="-fPIE -pie"
155
if test "x$with_optim" = x; then
156
# Add useful warning options for tracking down problems...
157
OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
159
# Additional warning options for development testing...
160
if test -d .svn; then
161
OPTIM="-Wshadow -Werror $OPTIM"
163
AC_MSG_CHECKING(if GCC supports -Wno-tautological-compare)
165
CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
167
[OPTIM="$OPTIM -Wno-tautological-compare"
176
# -D_FORTIFY_SOURCE=2 adds additional object size
177
# checking, basically wrapping all string functions
178
# with buffer-limited ones. Not strictly needed for
179
# CUPS since we already use buffer-limited calls, but
180
# this will catch any additions that are broken.
181
CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
185
# The -z relro option is provided by the Linux linker command to
186
# make relocatable data read-only.
187
if test x$enable_relro = xyes; then
188
RELROFLAGS="-Wl,-z,relro"
193
# Add vendor-specific compiler options...
196
if test -z "$OPTIM"; then
197
if test "x$with_optim" = x; then
198
OPTIM="-O2 -qmaxmem=6000"
200
OPTIM="$with_optim $OPTIM"
205
if test -z "$OPTIM"; then
206
if test "x$with_optim" = x; then
209
OPTIM="$with_optim $OPTIM"
215
if test $PICFLAG = 1; then
220
# Tru64 UNIX aka Digital UNIX aka OSF/1
221
if test -z "$OPTIM"; then
222
if test "x$with_optim" = x; 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
245
if test -z "$OPTIM"; then
246
if test "x$with_optim" = x; then
249
OPTIM="$with_optim $OPTIM"
253
if test $PICFLAG = 1; then
258
# Running some other operating system; inform the user they
259
# should contribute the necessary options to
260
# cups-support@cups.org...
261
echo "Building CUPS with default compiler optimizations; contact"
262
echo "cups-bugs@cups.org with uname and compiler options needed"
263
echo "for your platform, or set the CFLAGS and LDFLAGS environment"
264
echo "variables before running configure."
269
# Add general compiler options per platform...
272
# HP-UX 10.20 (at least) needs this definition to get the
274
OPTIM="$OPTIM -D_XOPEN_SOURCE_EXTENDED"
276
# HP-UX 11.00 (at least) needs this definition to get the
277
# u_short type used by the IP headers...
278
OPTIM="$OPTIM -D_INCLUDE_HPUX_SOURCE"
280
# HP-UX 11.23 (at least) needs this definition to get the
281
# IPv6 header to work...
282
OPTIM="$OPTIM -D_HPUX_SOURCE"
286
# glibc 2.8 and higher breaks peer credentials unless you
287
# define _GNU_SOURCE...
288
OPTIM="$OPTIM -D_GNU_SOURCE"
292
# Tru64 UNIX aka Digital UNIX aka OSF/1 need to be told
293
# to be POSIX-compliant...
294
OPTIM="$OPTIM -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_OSF_SOURCE"
299
dnl End of "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $".