]> git.ipfire.org Git - thirdparty/cups.git/blob - config-scripts/cups-compiler.m4
Remove all of the Subversion keywords from various source files.
[thirdparty/cups.git] / config-scripts / cups-compiler.m4
1 dnl
2 dnl Compiler stuff for CUPS.
3 dnl
4 dnl Copyright 2007-2014 by Apple Inc.
5 dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
6 dnl
7 dnl These coded instructions, statements, and computer programs are the
8 dnl property of Apple Inc. and are protected by Federal copyright
9 dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
10 dnl which should have been included with this file. If this file is
11 dnl file is missing or damaged, see the license at "http://www.cups.org/".
12 dnl
13
14 dnl Clear the debugging and non-shared library options unless the user asks
15 dnl for them...
16 INSTALL_STRIP=""
17 OPTIM=""
18 AC_SUBST(INSTALL_STRIP)
19 AC_SUBST(OPTIM)
20
21 AC_ARG_WITH(optim, [ --with-optim set optimization flags ])
22 AC_ARG_ENABLE(debug, [ --enable-debug build with debugging symbols])
23 AC_ARG_ENABLE(debug_guards, [ --enable-debug-guards build with memory allocation guards])
24 AC_ARG_ENABLE(debug_printfs, [ --enable-debug-printfs build with CUPS_DEBUG_LOG support])
25 AC_ARG_ENABLE(unit_tests, [ --enable-unit-tests build and run unit tests])
26
27 dnl For debugging, keep symbols, otherwise strip them...
28 if test x$enable_debug = xyes; then
29 OPTIM="-g"
30 else
31 INSTALL_STRIP="-s"
32 fi
33
34 dnl Debug printfs can slow things down, so provide a separate option for that
35 if test x$enable_debug_printfs = xyes; then
36 CFLAGS="$CFLAGS -DDEBUG"
37 CXXFLAGS="$CXXFLAGS -DDEBUG"
38 fi
39
40 dnl Debug guards use an extra 4 bytes for some structures like strings in the
41 dnl string pool, so provide a separate option for that
42 if test x$enable_debug_guards = xyes; then
43 CFLAGS="$CFLAGS -DDEBUG_GUARDS"
44 CXXFLAGS="$CXXFLAGS -DDEBUG_GUARDS"
45 fi
46
47 dnl Unit tests take up time during a compile...
48 if test x$enable_unit_tests = xyes; then
49 UNITTESTS="unittests"
50 else
51 UNITTESTS=""
52 fi
53 AC_SUBST(UNITTESTS)
54
55 dnl Setup general architecture flags...
56 AC_ARG_WITH(archflags, [ --with-archflags set default architecture flags ])
57 AC_ARG_WITH(ldarchflags, [ --with-ldarchflags set program architecture flags ])
58
59 if test -z "$with_archflags"; then
60 ARCHFLAGS=""
61 else
62 ARCHFLAGS="$with_archflags"
63 fi
64
65 if test -z "$with_ldarchflags"; then
66 if test "$uname" = Darwin; then
67 # Only create Intel programs by default
68 LDARCHFLAGS="`echo $ARCHFLAGS | sed -e '1,$s/-arch ppc64//'`"
69 else
70 LDARCHFLAGS="$ARCHFLAGS"
71 fi
72 else
73 LDARCHFLAGS="$with_ldarchflags"
74 fi
75
76 AC_SUBST(ARCHFLAGS)
77 AC_SUBST(LDARCHFLAGS)
78
79 dnl Read-only data/program support on Linux...
80 AC_ARG_ENABLE(relro, [ --enable-relro build with the GCC relro option])
81
82 dnl Update compiler options...
83 CXXLIBS="${CXXLIBS:=}"
84 AC_SUBST(CXXLIBS)
85
86 PIEFLAGS=""
87 AC_SUBST(PIEFLAGS)
88
89 RELROFLAGS=""
90 AC_SUBST(RELROFLAGS)
91
92 if test -n "$GCC"; then
93 # Add GCC-specific compiler options...
94 if test -z "$OPTIM"; then
95 if test "x$with_optim" = x; then
96 # Default to optimize-for-size and debug
97 OPTIM="-Os -g"
98 else
99 OPTIM="$with_optim $OPTIM"
100 fi
101 fi
102
103 # Generate position-independent code as needed...
104 if test $PICFLAG = 1; then
105 OPTIM="-fPIC $OPTIM"
106 fi
107
108 # The -fstack-protector option is available with some versions of
109 # GCC and adds "stack canaries" which detect when the return address
110 # has been overwritten, preventing many types of exploit attacks.
111 AC_MSG_CHECKING(whether compiler supports -fstack-protector)
112 OLDCFLAGS="$CFLAGS"
113 CFLAGS="$CFLAGS -fstack-protector"
114 AC_TRY_LINK(,,
115 if test "x$LSB_BUILD" = xy; then
116 # Can't use stack-protector with LSB binaries...
117 OPTIM="$OPTIM -fno-stack-protector"
118 else
119 OPTIM="$OPTIM -fstack-protector"
120 fi
121 AC_MSG_RESULT(yes),
122 AC_MSG_RESULT(no))
123 CFLAGS="$OLDCFLAGS"
124
125 if test "x$LSB_BUILD" != xy; then
126 # The -fPIE option is available with some versions of GCC and
127 # adds randomization of addresses, which avoids another class of
128 # exploits that depend on a fixed address for common functions.
129 #
130 # Not available to LSB binaries...
131 AC_MSG_CHECKING(whether compiler supports -fPIE)
132 OLDCFLAGS="$CFLAGS"
133 case "$uname" in
134 Darwin*)
135 CFLAGS="$CFLAGS -fPIE -Wl,-pie"
136 AC_TRY_COMPILE(,,[
137 PIEFLAGS="-fPIE -Wl,-pie"
138 AC_MSG_RESULT(yes)],
139 AC_MSG_RESULT(no))
140 ;;
141
142 *)
143 CFLAGS="$CFLAGS -fPIE -pie"
144 AC_TRY_COMPILE(,,[
145 PIEFLAGS="-fPIE -pie"
146 AC_MSG_RESULT(yes)],
147 AC_MSG_RESULT(no))
148 ;;
149 esac
150 CFLAGS="$OLDCFLAGS"
151 fi
152
153 if test "x$with_optim" = x; then
154 # Add useful warning options for tracking down problems...
155 OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
156
157 AC_MSG_CHECKING(whether compiler supports -Wno-unused-result)
158 OLDCFLAGS="$CFLAGS"
159 CFLAGS="$CFLAGS -Werror -Wno-unused-result"
160 AC_TRY_COMPILE(,,
161 [OPTIM="$OPTIM -Wno-unused-result"
162 AC_MSG_RESULT(yes)],
163 AC_MSG_RESULT(no))
164 CFLAGS="$OLDCFLAGS"
165
166 AC_MSG_CHECKING(whether compiler supports -Wsign-conversion)
167 OLDCFLAGS="$CFLAGS"
168 CFLAGS="$CFLAGS -Werror -Wsign-conversion"
169 AC_TRY_COMPILE(,,
170 [OPTIM="$OPTIM -Wsign-conversion"
171 AC_MSG_RESULT(yes)],
172 AC_MSG_RESULT(no))
173 CFLAGS="$OLDCFLAGS"
174
175 AC_MSG_CHECKING(whether compiler supports -Wno-tautological-compare)
176 OLDCFLAGS="$CFLAGS"
177 CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
178 AC_TRY_COMPILE(,,
179 [OPTIM="$OPTIM -Wno-tautological-compare"
180 AC_MSG_RESULT(yes)],
181 AC_MSG_RESULT(no))
182 CFLAGS="$OLDCFLAGS"
183
184 # Additional warning options for development testing...
185 if test -d .svn; then
186 OPTIM="-Werror $OPTIM"
187 fi
188 fi
189
190 case "$uname" in
191 Darwin*)
192 # -D_FORTIFY_SOURCE=2 adds additional object size
193 # checking, basically wrapping all string functions
194 # with buffer-limited ones. Not strictly needed for
195 # CUPS since we already use buffer-limited calls, but
196 # this will catch any additions that are broken.
197 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
198 ;;
199
200 Linux*)
201 # The -z relro option is provided by the Linux linker command to
202 # make relocatable data read-only.
203 if test x$enable_relro = xyes; then
204 RELROFLAGS="-Wl,-z,relro,-z,now"
205 fi
206 ;;
207 esac
208 else
209 # Add vendor-specific compiler options...
210 case $uname in
211 SunOS*)
212 # Solaris
213 if test -z "$OPTIM"; then
214 if test "x$with_optim" = x; then
215 OPTIM="-xO2"
216 else
217 OPTIM="$with_optim $OPTIM"
218 fi
219 fi
220
221 if test $PICFLAG = 1; then
222 OPTIM="-KPIC $OPTIM"
223 fi
224 ;;
225 *)
226 # Running some other operating system; inform the user they
227 # should contribute the necessary options to
228 # cups-support@cups.org...
229 echo "Building CUPS with default compiler optimizations; contact"
230 echo "cups-devel@cups.org with uname and compiler options needed"
231 echo "for your platform, or set the CFLAGS and LDFLAGS environment"
232 echo "variables before running configure."
233 ;;
234 esac
235 fi
236
237 # Add general compiler options per platform...
238 case $uname in
239 Linux*)
240 # glibc 2.8 and higher breaks peer credentials unless you
241 # define _GNU_SOURCE...
242 OPTIM="$OPTIM -D_GNU_SOURCE"
243 ;;
244 esac