]>
Commit | Line | Data |
---|---|---|
63f745e8 | 1 | dnl Redefine AC_LANG_PROGRAM with a "-Wstrict-prototypes -Werror"-friendly |
2 | dnl version. Patch submitted to bug-autoconf in 2009-09-16. | |
3 | m4_define([AC_LANG_PROGRAM(C)], | |
4 | [$1 | |
5 | int | |
6 | main (void) | |
7 | { | |
8 | dnl Do *not* indent the following line: there may be CPP directives. | |
9 | dnl Don't move the `;' right after for the same reason. | |
10 | $2 | |
11 | ; | |
12 | return 0; | |
13 | }]) | |
14 | ||
15 | ||
f6130a12 | 16 | dnl Check whether target compiler is working |
17 | AC_DEFUN(grub_PROG_TARGET_CC, | |
18 | [AC_MSG_CHECKING([whether target compiler is working]) | |
19 | AC_CACHE_VAL(grub_cv_prog_target_cc, | |
26586d98 | 20 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
21 | asm (".globl start; start: nop"); | |
22 | int main (void); | |
23 | ]], [[]])], | |
eb73121d | 24 | [grub_cv_prog_target_cc=yes], |
25 | [grub_cv_prog_target_cc=no]) | |
f6130a12 | 26 | ]) |
27 | AC_MSG_RESULT([$grub_cv_prog_target_cc]) | |
28 | ||
29 | if test "x$grub_cv_prog_target_cc" = xno; then | |
30 | AC_MSG_ERROR([cannot compile for the target]) | |
31 | fi | |
32 | ]) | |
33 | ||
34 | ||
4b13b216 | 35 | dnl grub_ASM_USCORE checks if C symbols get an underscore after |
6a161fa9 | 36 | dnl compiling to assembler. |
37 | dnl Written by Pavel Roskin. Based on grub_ASM_EXT_C written by | |
38 | dnl Erich Boleyn and modified by Yoshinori K. Okuji. | |
4b13b216 | 39 | AC_DEFUN(grub_ASM_USCORE, |
6a161fa9 | 40 | [AC_REQUIRE([AC_PROG_CC]) |
41 | AC_MSG_CHECKING([if C symbols get an underscore after compilation]) | |
4b13b216 | 42 | AC_CACHE_VAL(grub_cv_asm_uscore, |
6a161fa9 | 43 | [cat > conftest.c <<\EOF |
63f745e8 | 44 | int func (int *); |
6a161fa9 | 45 | int |
46 | func (int *list) | |
47 | { | |
48 | *list = 0; | |
49 | return *list; | |
50 | } | |
51 | EOF | |
52 | ||
53 | if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -S conftest.c]) && test -s conftest.s; then | |
54 | true | |
55 | else | |
56 | AC_MSG_ERROR([${CC-cc} failed to produce assembly code]) | |
57 | fi | |
58 | ||
59 | if grep _func conftest.s >/dev/null 2>&1; then | |
4b13b216 | 60 | grub_cv_asm_uscore=yes |
6a161fa9 | 61 | else |
4b13b216 | 62 | grub_cv_asm_uscore=no |
6a161fa9 | 63 | fi |
64 | ||
65 | rm -f conftest*]) | |
66 | ||
4b13b216 | 67 | if test "x$grub_cv_asm_uscore" = xyes; then |
68 | AC_DEFINE_UNQUOTED([HAVE_ASM_USCORE], $grub_cv_asm_uscore, | |
6a161fa9 | 69 | [Define if C symbols get an underscore after compilation]) |
70 | fi | |
71 | ||
4b13b216 | 72 | AC_MSG_RESULT([$grub_cv_asm_uscore]) |
6a161fa9 | 73 | ]) |
74 | ||
75 | ||
76 | dnl Some versions of `objcopy -O binary' vary their output depending | |
77 | dnl on the link address. | |
4b13b216 | 78 | AC_DEFUN(grub_PROG_OBJCOPY_ABSOLUTE, |
6a161fa9 | 79 | [AC_MSG_CHECKING([whether ${OBJCOPY} works for absolute addresses]) |
4b13b216 | 80 | AC_CACHE_VAL(grub_cv_prog_objcopy_absolute, |
6a161fa9 | 81 | [cat > conftest.c <<\EOF |
63f745e8 | 82 | void cmain (void); |
6a161fa9 | 83 | void |
84 | cmain (void) | |
85 | { | |
86 | *((int *) 0x1000) = 2; | |
87 | } | |
88 | EOF | |
89 | ||
90 | if AC_TRY_EVAL(ac_compile) && test -s conftest.o; then : | |
91 | else | |
92 | AC_MSG_ERROR([${CC-cc} cannot compile C source code]) | |
93 | fi | |
4b13b216 | 94 | grub_cv_prog_objcopy_absolute=yes |
c926e1d5 | 95 | for link_addr in 0x2000 0x8000 0x7C00; do |
2a8a80e4 | 96 | if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib ${TARGET_IMG_LDFLAGS_AC} -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec]); then : |
6a161fa9 | 97 | else |
98 | AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr]) | |
99 | fi | |
1977517d | 100 | if AC_TRY_COMMAND([${OBJCOPY-objcopy} --only-section=.text -O binary conftest.exec conftest]); then : |
6a161fa9 | 101 | else |
102 | AC_MSG_ERROR([${OBJCOPY-objcopy} cannot create binary files]) | |
103 | fi | |
104 | if test ! -f conftest.old || AC_TRY_COMMAND([cmp -s conftest.old conftest]); then | |
105 | mv -f conftest conftest.old | |
106 | else | |
4b13b216 | 107 | grub_cv_prog_objcopy_absolute=no |
6a161fa9 | 108 | break |
109 | fi | |
110 | done | |
111 | rm -f conftest*]) | |
4b13b216 | 112 | AC_MSG_RESULT([$grub_cv_prog_objcopy_absolute]) |
6a161fa9 | 113 | |
4b13b216 | 114 | if test "x$grub_cv_prog_objcopy_absolute" = xno; then |
115 | AC_MSG_ERROR([GRUB requires a working absolute objcopy; upgrade your binutils]) | |
6a161fa9 | 116 | fi |
117 | ]) | |
118 | ||
119 | ||
cb71ba20 | 120 | dnl Supply --build-id=none to ld if building modules. |
121 | dnl This suppresses warnings from ld on some systems | |
122 | AC_DEFUN(grub_PROG_LD_BUILD_ID_NONE, | |
123 | [AC_MSG_CHECKING([whether linker accepts --build-id=none]) | |
124 | AC_CACHE_VAL(grub_cv_prog_ld_build_id_none, | |
125 | [save_LDFLAGS="$LDFLAGS" | |
126 | LDFLAGS="$LDFLAGS -Wl,--build-id=none" | |
eb73121d | 127 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], |
128 | [grub_cv_prog_ld_build_id_none=yes], | |
129 | [grub_cv_prog_ld_build_id_none=no]) | |
cb71ba20 | 130 | LDFLAGS="$save_LDFLAGS" |
131 | ]) | |
132 | AC_MSG_RESULT([$grub_cv_prog_ld_build_id_none]) | |
133 | ||
134 | if test "x$grub_cv_prog_ld_build_id_none" = xyes; then | |
5ec9740b | 135 | TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,--build-id=none" |
cb71ba20 | 136 | fi |
137 | ]) | |
138 | ||
139 | ||
6a161fa9 | 140 | dnl Mass confusion! |
141 | dnl Older versions of GAS interpret `.code16' to mean ``generate 32-bit | |
142 | dnl instructions, but implicitly insert addr32 and data32 bytes so | |
143 | dnl that the code works in real mode''. | |
144 | dnl | |
145 | dnl Newer versions of GAS interpret `.code16' to mean ``generate 16-bit | |
146 | dnl instructions,'' which seems right. This requires the programmer | |
147 | dnl to explicitly insert addr32 and data32 instructions when they want | |
148 | dnl them. | |
149 | dnl | |
150 | dnl We only support the newer versions, because the old versions cause | |
151 | dnl major pain, by requiring manual assembly to get 16-bit instructions into | |
152 | dnl asm files. | |
4b13b216 | 153 | AC_DEFUN(grub_I386_ASM_ADDR32, |
6a161fa9 | 154 | [AC_REQUIRE([AC_PROG_CC]) |
4b13b216 | 155 | AC_REQUIRE([grub_I386_ASM_PREFIX_REQUIREMENT]) |
6a161fa9 | 156 | AC_MSG_CHECKING([for .code16 addr32 assembler support]) |
4b13b216 | 157 | AC_CACHE_VAL(grub_cv_i386_asm_addr32, |
6a161fa9 | 158 | [cat > conftest.s.in <<\EOF |
159 | .code16 | |
160 | l1: @ADDR32@ movb %al, l1 | |
161 | EOF | |
162 | ||
4b13b216 | 163 | if test "x$grub_cv_i386_asm_prefix_requirement" = xyes; then |
6a161fa9 | 164 | sed -e s/@ADDR32@/addr32/ < conftest.s.in > conftest.s |
165 | else | |
166 | sed -e s/@ADDR32@/addr32\;/ < conftest.s.in > conftest.s | |
167 | fi | |
168 | ||
169 | if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -c conftest.s]) && test -s conftest.o; then | |
4b13b216 | 170 | grub_cv_i386_asm_addr32=yes |
6a161fa9 | 171 | else |
4b13b216 | 172 | grub_cv_i386_asm_addr32=no |
6a161fa9 | 173 | fi |
174 | ||
175 | rm -f conftest*]) | |
176 | ||
4b13b216 | 177 | AC_MSG_RESULT([$grub_cv_i386_asm_addr32])]) |
6a161fa9 | 178 | |
2b167a72 | 179 | dnl check if our compiler is apple cc |
180 | dnl because it requires numerous workarounds | |
181 | AC_DEFUN(grub_apple_cc, | |
182 | [AC_REQUIRE([AC_PROG_CC]) | |
183 | AC_MSG_CHECKING([whether our compiler is apple cc]) | |
184 | AC_CACHE_VAL(grub_cv_apple_cc, | |
185 | [if $CC -v 2>&1 | grep "Apple Inc." > /dev/null; then | |
186 | grub_cv_apple_cc=yes | |
187 | else | |
188 | grub_cv_apple_cc=no | |
189 | fi | |
190 | ]) | |
191 | ||
192 | AC_MSG_RESULT([$grub_cv_apple_cc])]) | |
193 | ||
194 | dnl check if our target compiler is apple cc | |
195 | dnl because it requires numerous workarounds | |
196 | AC_DEFUN(grub_apple_target_cc, | |
197 | [AC_REQUIRE([AC_PROG_CC]) | |
198 | AC_MSG_CHECKING([whether our target compiler is apple cc]) | |
199 | AC_CACHE_VAL(grub_cv_apple_target_cc, | |
200 | [if $CC -v 2>&1 | grep "Apple Inc." > /dev/null; then | |
201 | grub_cv_apple_target_cc=yes | |
202 | else | |
203 | grub_cv_apple_target_cc=no | |
204 | fi | |
205 | ]) | |
206 | ||
207 | AC_MSG_RESULT([$grub_cv_apple_target_cc])]) | |
208 | ||
6a161fa9 | 209 | |
210 | dnl Later versions of GAS requires that addr32 and data32 prefixes | |
211 | dnl appear in the same lines as the instructions they modify, while | |
212 | dnl earlier versions requires that they appear in separate lines. | |
4b13b216 | 213 | AC_DEFUN(grub_I386_ASM_PREFIX_REQUIREMENT, |
6a161fa9 | 214 | [AC_REQUIRE([AC_PROG_CC]) |
215 | AC_MSG_CHECKING(dnl | |
216 | [whether addr32 must be in the same line as the instruction]) | |
4b13b216 | 217 | AC_CACHE_VAL(grub_cv_i386_asm_prefix_requirement, |
6a161fa9 | 218 | [cat > conftest.s <<\EOF |
219 | .code16 | |
220 | l1: addr32 movb %al, l1 | |
221 | EOF | |
222 | ||
223 | if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -c conftest.s]) && test -s conftest.o; then | |
4b13b216 | 224 | grub_cv_i386_asm_prefix_requirement=yes |
6a161fa9 | 225 | else |
4b13b216 | 226 | grub_cv_i386_asm_prefix_requirement=no |
6a161fa9 | 227 | fi |
228 | ||
229 | rm -f conftest*]) | |
230 | ||
4b13b216 | 231 | if test "x$grub_cv_i386_asm_prefix_requirement" = xyes; then |
232 | grub_tmp_addr32="addr32" | |
233 | grub_tmp_data32="data32" | |
6a161fa9 | 234 | else |
4b13b216 | 235 | grub_tmp_addr32="addr32;" |
236 | grub_tmp_data32="data32;" | |
6a161fa9 | 237 | fi |
238 | ||
4b13b216 | 239 | AC_DEFINE_UNQUOTED([ADDR32], $grub_tmp_addr32, |
6a161fa9 | 240 | [Define it to \"addr32\" or \"addr32;\" to make GAS happy]) |
4b13b216 | 241 | AC_DEFINE_UNQUOTED([DATA32], $grub_tmp_data32, |
6a161fa9 | 242 | [Define it to \"data32\" or \"data32;\" to make GAS happy]) |
243 | ||
4b13b216 | 244 | AC_MSG_RESULT([$grub_cv_i386_asm_prefix_requirement])]) |
6a161fa9 | 245 | |
246 | ||
247 | dnl Older versions of GAS require that absolute indirect calls/jumps are | |
248 | dnl not prefixed with `*', while later versions warn if not prefixed. | |
4b13b216 | 249 | AC_DEFUN(grub_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK, |
6a161fa9 | 250 | [AC_REQUIRE([AC_PROG_CC]) |
251 | AC_MSG_CHECKING(dnl | |
252 | [whether an absolute indirect call/jump must not be prefixed with an asterisk]) | |
4b13b216 | 253 | AC_CACHE_VAL(grub_cv_i386_asm_absolute_without_asterisk, |
6a161fa9 | 254 | [cat > conftest.s <<\EOF |
b39f9d20 | 255 | lcall *(offset) |
6a161fa9 | 256 | offset: |
257 | .long 0 | |
258 | .word 0 | |
259 | EOF | |
260 | ||
261 | if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -c conftest.s]) && test -s conftest.o; then | |
4b13b216 | 262 | grub_cv_i386_asm_absolute_without_asterisk=no |
6a161fa9 | 263 | else |
4b13b216 | 264 | grub_cv_i386_asm_absolute_without_asterisk=yes |
6a161fa9 | 265 | fi |
266 | ||
267 | rm -f conftest*]) | |
268 | ||
4b13b216 | 269 | if test "x$grub_cv_i386_asm_absolute_without_asterisk" = xyes; then |
6a161fa9 | 270 | AC_DEFINE([ABSOLUTE_WITHOUT_ASTERISK], 1, |
271 | [Define it if GAS requires that absolute indirect calls/jumps are not prefixed with an asterisk]) | |
272 | fi | |
273 | ||
4b13b216 | 274 | AC_MSG_RESULT([$grub_cv_i386_asm_absolute_without_asterisk])]) |
6a161fa9 | 275 | |
276 | ||
6a161fa9 | 277 | dnl Check what symbol is defined as a bss start symbol. |
278 | dnl Written by Michael Hohmoth and Yoshinori K. Okuji. | |
4b13b216 | 279 | AC_DEFUN(grub_CHECK_BSS_START_SYMBOL, |
6a161fa9 | 280 | [AC_REQUIRE([AC_PROG_CC]) |
281 | AC_MSG_CHECKING([if __bss_start is defined by the compiler]) | |
4b13b216 | 282 | AC_CACHE_VAL(grub_cv_check_uscore_uscore_bss_start_symbol, |
eb73121d | 283 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], |
284 | [[asm ("incl __bss_start")]])], | |
285 | [grub_cv_check_uscore_uscore_bss_start_symbol=yes], | |
286 | [grub_cv_check_uscore_uscore_bss_start_symbol=no])]) | |
6a161fa9 | 287 | |
4b13b216 | 288 | AC_MSG_RESULT([$grub_cv_check_uscore_uscore_bss_start_symbol]) |
6a161fa9 | 289 | |
290 | AC_MSG_CHECKING([if edata is defined by the compiler]) | |
4b13b216 | 291 | AC_CACHE_VAL(grub_cv_check_edata_symbol, |
eb73121d | 292 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], |
293 | [[asm ("incl edata")]])], | |
294 | [grub_cv_check_edata_symbol=yes], | |
295 | [grub_cv_check_edata_symbol=no])]) | |
6a161fa9 | 296 | |
4b13b216 | 297 | AC_MSG_RESULT([$grub_cv_check_edata_symbol]) |
6a161fa9 | 298 | |
299 | AC_MSG_CHECKING([if _edata is defined by the compiler]) | |
4b13b216 | 300 | AC_CACHE_VAL(grub_cv_check_uscore_edata_symbol, |
eb73121d | 301 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], |
302 | [[asm ("incl _edata")]])], | |
303 | [grub_cv_check_uscore_edata_symbol=yes], | |
304 | [grub_cv_check_uscore_edata_symbol=no])]) | |
6a161fa9 | 305 | |
4b13b216 | 306 | AC_MSG_RESULT([$grub_cv_check_uscore_edata_symbol]) |
6a161fa9 | 307 | |
308 | AH_TEMPLATE([BSS_START_SYMBOL], [Define it to one of __bss_start, edata and _edata]) | |
309 | ||
4b13b216 | 310 | if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" = xyes; then |
6a161fa9 | 311 | AC_DEFINE([BSS_START_SYMBOL], [__bss_start]) |
4b13b216 | 312 | elif test "x$grub_cv_check_edata_symbol" = xyes; then |
6a161fa9 | 313 | AC_DEFINE([BSS_START_SYMBOL], [edata]) |
4b13b216 | 314 | elif test "x$grub_cv_check_uscore_edata_symbol" = xyes; then |
6a161fa9 | 315 | AC_DEFINE([BSS_START_SYMBOL], [_edata]) |
316 | else | |
317 | AC_MSG_ERROR([none of __bss_start, edata or _edata is defined]) | |
318 | fi | |
319 | ]) | |
320 | ||
321 | dnl Check what symbol is defined as an end symbol. | |
322 | dnl Written by Yoshinori K. Okuji. | |
4b13b216 | 323 | AC_DEFUN(grub_CHECK_END_SYMBOL, |
6a161fa9 | 324 | [AC_REQUIRE([AC_PROG_CC]) |
325 | AC_MSG_CHECKING([if end is defined by the compiler]) | |
4b13b216 | 326 | AC_CACHE_VAL(grub_cv_check_end_symbol, |
eb73121d | 327 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], |
328 | [[asm ("incl end")]])], | |
329 | [grub_cv_check_end_symbol=yes], | |
330 | [grub_cv_check_end_symbol=no])]) | |
6a161fa9 | 331 | |
4b13b216 | 332 | AC_MSG_RESULT([$grub_cv_check_end_symbol]) |
6a161fa9 | 333 | |
334 | AC_MSG_CHECKING([if _end is defined by the compiler]) | |
4b13b216 | 335 | AC_CACHE_VAL(grub_cv_check_uscore_end_symbol, |
eb73121d | 336 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], |
337 | [[asm ("incl _end")]])], | |
338 | [grub_cv_check_uscore_end_symbol=yes], | |
339 | [grub_cv_check_uscore_end_symbol=no])]) | |
6a161fa9 | 340 | |
4b13b216 | 341 | AC_MSG_RESULT([$grub_cv_check_uscore_end_symbol]) |
6a161fa9 | 342 | |
343 | AH_TEMPLATE([END_SYMBOL], [Define it to either end or _end]) | |
344 | ||
4b13b216 | 345 | if test "x$grub_cv_check_end_symbol" = xyes; then |
6a161fa9 | 346 | AC_DEFINE([END_SYMBOL], [end]) |
4b13b216 | 347 | elif test "x$grub_cv_check_uscore_end_symbol" = xyes; then |
6a161fa9 | 348 | AC_DEFINE([END_SYMBOL], [_end]) |
349 | else | |
350 | AC_MSG_ERROR([neither end nor _end is defined]) | |
351 | fi | |
352 | ]) | |
5aded270 | 353 | |
9035dce4 | 354 | dnl Check if the C compiler generates calls to `__enable_execute_stack()'. |
355 | AC_DEFUN(grub_CHECK_ENABLE_EXECUTE_STACK,[ | |
356 | AC_MSG_CHECKING([whether `$CC' generates calls to `__enable_execute_stack()']) | |
357 | AC_LANG_CONFTEST([[ | |
358 | void f (int (*p) (void)); | |
359 | void g (int i) | |
360 | { | |
361 | int nestedfunc (void) { return i; } | |
362 | f (nestedfunc); | |
363 | } | |
364 | ]]) | |
365 | if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -S conftest.c]) && test -s conftest.s; then | |
366 | true | |
367 | else | |
368 | AC_MSG_ERROR([${CC-cc} failed to produce assembly code]) | |
369 | fi | |
370 | if grep __enable_execute_stack conftest.s >/dev/null 2>&1; then | |
371 | AC_DEFINE([NEED_ENABLE_EXECUTE_STACK], 1, | |
372 | [Define to 1 if GCC generates calls to __enable_execute_stack()]) | |
373 | AC_MSG_RESULT([yes]) | |
374 | else | |
375 | AC_MSG_RESULT([no]) | |
376 | fi | |
377 | rm -f conftest* | |
378 | ]) | |
379 | ||
baa2a121 | 380 | \f |
381 | dnl Check if the C compiler supports `-fstack-protector'. | |
382 | AC_DEFUN(grub_CHECK_STACK_PROTECTOR,[ | |
383 | [# Smashing stack protector. | |
384 | ssp_possible=yes] | |
385 | AC_MSG_CHECKING([whether `$CC' accepts `-fstack-protector']) | |
386 | # Is this a reliable test case? | |
387 | AC_LANG_CONFTEST([[void foo (void) { volatile char a[8]; a[3]; }]]) | |
388 | [# `$CC -c -o ...' might not be portable. But, oh, well... Is calling | |
389 | # `ac_compile' like this correct, after all? | |
390 | if eval "$ac_compile -S -fstack-protector -o conftest.s" 2> /dev/null; then] | |
391 | AC_MSG_RESULT([yes]) | |
392 | [# Should we clear up other files as well, having called `AC_LANG_CONFTEST'? | |
393 | rm -f conftest.s | |
394 | else | |
395 | ssp_possible=no] | |
396 | AC_MSG_RESULT([no]) | |
397 | [fi] | |
398 | ]) | |
2a8a80e4 | 399 | |
400 | dnl Check if the C compiler supports `-mstack-arg-probe' (Cygwin). | |
401 | AC_DEFUN(grub_CHECK_STACK_ARG_PROBE,[ | |
402 | [# Smashing stack arg probe. | |
403 | sap_possible=yes] | |
404 | AC_MSG_CHECKING([whether `$CC' accepts `-mstack-arg-probe']) | |
405 | AC_LANG_CONFTEST([[void foo (void) { volatile char a[8]; a[3]; }]]) | |
406 | [if eval "$ac_compile -S -mstack-arg-probe -o conftest.s" 2> /dev/null; then] | |
407 | AC_MSG_RESULT([yes]) | |
408 | [# Should we clear up other files as well, having called `AC_LANG_CONFTEST'? | |
409 | rm -f conftest.s | |
410 | else | |
411 | sap_possible=no] | |
412 | AC_MSG_RESULT([no]) | |
413 | [fi] | |
414 | ]) | |
1f4147aa | 415 | |
416 | dnl Check if ln can handle directories properly (mingw). | |
417 | AC_DEFUN(grub_CHECK_LINK_DIR,[ | |
418 | AC_MSG_CHECKING([whether ln can handle directories properly]) | |
419 | [mkdir testdir 2>/dev/null | |
420 | case $srcdir in | |
421 | [\\/$]* | ?:[\\/]* ) reldir=$srcdir/include/grub/util ;; | |
422 | *) reldir=../$srcdir/include/grub/util ;; | |
423 | esac | |
424 | if ln -s $reldir testdir/util 2>/dev/null ; then] | |
425 | AC_MSG_RESULT([yes]) | |
426 | [link_dir=yes | |
427 | else | |
428 | link_dir=no] | |
429 | AC_MSG_RESULT([no]) | |
430 | [fi | |
431 | rm -rf testdir] | |
432 | ]) | |
93a81088 | 433 | |
434 | dnl Check if the C compiler supports `-fPIE'. | |
435 | AC_DEFUN(grub_CHECK_PIE,[ | |
436 | [# Position independent executable. | |
437 | pie_possible=yes] | |
438 | AC_MSG_CHECKING([whether `$CC' has `-fPIE' as default]) | |
439 | # Is this a reliable test case? | |
440 | AC_LANG_CONFTEST([[ | |
441 | #ifdef __PIE__ | |
442 | int main() { | |
443 | return 0; | |
444 | } | |
445 | #else | |
446 | #error NO __PIE__ DEFINED | |
447 | #endif | |
448 | ]]) | |
449 | ||
450 | [# `$CC -c -o ...' might not be portable. But, oh, well... Is calling | |
451 | # `ac_compile' like this correct, after all? | |
452 | if eval "$ac_compile -S -o conftest.s" 2> /dev/null; then] | |
453 | AC_MSG_RESULT([yes]) | |
454 | [# Should we clear up other files as well, having called `AC_LANG_CONFTEST'? | |
455 | rm -f conftest.s | |
456 | else | |
457 | pie_possible=no] | |
458 | AC_MSG_RESULT([no]) | |
459 | [fi] | |
460 | ]) |