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 | |
---|
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, |
---|
20 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
---|
21 | asm (".globl start; start:"); |
---|
22 | void __main (void); |
---|
23 | void __main (void) {} |
---|
24 | int main (void); |
---|
25 | ]], [[]])], |
---|
26 | [grub_cv_prog_target_cc=yes], |
---|
27 | [grub_cv_prog_target_cc=no]) |
---|
28 | ]) |
---|
29 | AC_MSG_RESULT([$grub_cv_prog_target_cc]) |
---|
30 | |
---|
31 | if test "x$grub_cv_prog_target_cc" = xno; then |
---|
32 | AC_MSG_ERROR([cannot compile for the target]) |
---|
33 | fi |
---|
34 | ]) |
---|
35 | |
---|
36 | |
---|
37 | dnl grub_ASM_USCORE checks if C symbols get an underscore after |
---|
38 | dnl compiling to assembler. |
---|
39 | dnl Written by Pavel Roskin. Based on grub_ASM_EXT_C written by |
---|
40 | dnl Erich Boleyn and modified by Yoshinori K. Okuji. |
---|
41 | AC_DEFUN([grub_ASM_USCORE], |
---|
42 | [AC_REQUIRE([AC_PROG_CC]) |
---|
43 | AC_REQUIRE([AC_PROG_EGREP]) |
---|
44 | AC_MSG_CHECKING([if C symbols get an underscore after compilation]) |
---|
45 | AC_CACHE_VAL(grub_cv_asm_uscore, |
---|
46 | [cat > conftest.c <<\EOF |
---|
47 | int func (int *); |
---|
48 | int |
---|
49 | func (int *list) |
---|
50 | { |
---|
51 | *list = 0; |
---|
52 | return *list; |
---|
53 | } |
---|
54 | EOF |
---|
55 | |
---|
56 | if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -S conftest.c]) && test -s conftest.s; then |
---|
57 | true |
---|
58 | else |
---|
59 | AC_MSG_ERROR([${CC-cc} failed to produce assembly code]) |
---|
60 | fi |
---|
61 | |
---|
62 | if $EGREP '(^|[^_[:alnum]])_func' conftest.s >/dev/null 2>&1; then |
---|
63 | HAVE_ASM_USCORE=1 |
---|
64 | grub_cv_asm_uscore=yes |
---|
65 | else |
---|
66 | HAVE_ASM_USCORE=0 |
---|
67 | grub_cv_asm_uscore=no |
---|
68 | fi |
---|
69 | |
---|
70 | rm -f conftest*]) |
---|
71 | |
---|
72 | AC_MSG_RESULT([$grub_cv_asm_uscore]) |
---|
73 | ]) |
---|
74 | |
---|
75 | |
---|
76 | dnl Some versions of `objcopy -O binary' vary their output depending |
---|
77 | dnl on the link address. |
---|
78 | AC_DEFUN([grub_PROG_OBJCOPY_ABSOLUTE], |
---|
79 | [AC_MSG_CHECKING([whether ${TARGET_OBJCOPY} works for absolute addresses]) |
---|
80 | AC_CACHE_VAL(grub_cv_prog_objcopy_absolute, |
---|
81 | [cat > conftest.c <<\EOF |
---|
82 | void cmain (void); |
---|
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 |
---|
94 | grub_cv_prog_objcopy_absolute=yes |
---|
95 | for link_addr in 0x2000 0x8000 0x7C00; do |
---|
96 | if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},$link_addr conftest.o -o conftest.exec]); then : |
---|
97 | else |
---|
98 | AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr]) |
---|
99 | fi |
---|
100 | if AC_TRY_COMMAND([${TARGET_OBJCOPY-objcopy} --only-section=.text -O binary conftest.exec conftest]); then : |
---|
101 | else |
---|
102 | AC_MSG_ERROR([${TARGET_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 |
---|
107 | grub_cv_prog_objcopy_absolute=no |
---|
108 | break |
---|
109 | fi |
---|
110 | done |
---|
111 | rm -f conftest*]) |
---|
112 | AC_MSG_RESULT([$grub_cv_prog_objcopy_absolute]) |
---|
113 | |
---|
114 | if test "x$grub_cv_prog_objcopy_absolute" = xno; then |
---|
115 | AC_MSG_ERROR([GRUB requires a working absolute objcopy; upgrade your binutils]) |
---|
116 | fi |
---|
117 | ]) |
---|
118 | |
---|
119 | |
---|
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" |
---|
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]) |
---|
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 |
---|
135 | TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,--build-id=none" |
---|
136 | fi |
---|
137 | ]) |
---|
138 | |
---|
139 | dnl Check nm |
---|
140 | AC_DEFUN([grub_PROG_NM_WORKS], |
---|
141 | [AC_MSG_CHECKING([whether nm works]) |
---|
142 | AC_CACHE_VAL(grub_cv_prog_nm_works, |
---|
143 | [ |
---|
144 | nm_works_tmp_dir="$(mktemp -d "./confXXXXXX")" |
---|
145 | AC_LANG_CONFTEST([AC_LANG_PROGRAM([[]], [[]])]) |
---|
146 | $TARGET_CC $TARGET_CFLAGS -c conftest.c -o "$nm_works_tmp_dir/ef" |
---|
147 | if $TARGET_NM "$nm_works_tmp_dir/ef" > /dev/null; then |
---|
148 | grub_cv_prog_nm_works=yes |
---|
149 | else |
---|
150 | grub_cv_prog_nm_minus_p=no |
---|
151 | fi |
---|
152 | rm "$nm_works_tmp_dir/ef" |
---|
153 | rmdir "$nm_works_tmp_dir" |
---|
154 | ]) |
---|
155 | AC_MSG_RESULT([$grub_cv_prog_nm_works]) |
---|
156 | |
---|
157 | if test "x$grub_cv_prog_nm_works" != xyes; then |
---|
158 | AC_MSG_ERROR([nm does not work]) |
---|
159 | fi |
---|
160 | ]) |
---|
161 | |
---|
162 | dnl Supply -P to nm |
---|
163 | AC_DEFUN([grub_PROG_NM_MINUS_P], |
---|
164 | [AC_MSG_CHECKING([whether nm accepts -P]) |
---|
165 | AC_CACHE_VAL(grub_cv_prog_nm_minus_p, |
---|
166 | [ |
---|
167 | nm_minus_p_tmp_dir="$(mktemp -d "./confXXXXXX")" |
---|
168 | AC_LANG_CONFTEST([AC_LANG_PROGRAM([[]], [[]])]) |
---|
169 | $TARGET_CC $TARGET_CFLAGS -c conftest.c -o "$nm_minus_p_tmp_dir/ef" |
---|
170 | if $TARGET_NM -P "$nm_minus_p_tmp_dir/ef" 2>&1 > /dev/null; then |
---|
171 | grub_cv_prog_nm_minus_p=yes |
---|
172 | else |
---|
173 | grub_cv_prog_nm_minus_p=no |
---|
174 | fi |
---|
175 | rm "$nm_minus_p_tmp_dir/ef" |
---|
176 | rmdir "$nm_minus_p_tmp_dir" |
---|
177 | ]) |
---|
178 | AC_MSG_RESULT([$grub_cv_prog_nm_minus_p]) |
---|
179 | |
---|
180 | if test "x$grub_cv_prog_nm_minus_p" = xyes; then |
---|
181 | TARGET_NMFLAGS_MINUS_P="-P" |
---|
182 | else |
---|
183 | TARGET_NMFLAGS_MINUS_P= |
---|
184 | fi |
---|
185 | ]) |
---|
186 | |
---|
187 | dnl Supply --defined-only to nm |
---|
188 | AC_DEFUN([grub_PROG_NM_DEFINED_ONLY], |
---|
189 | [AC_MSG_CHECKING([whether nm accepts --defined-only]) |
---|
190 | AC_CACHE_VAL(grub_cv_prog_nm_defined_only, |
---|
191 | [ |
---|
192 | nm_defined_only_tmp_dir="$(mktemp -d "./confXXXXXX")" |
---|
193 | AC_LANG_CONFTEST([AC_LANG_PROGRAM([[]], [[]])]) |
---|
194 | $TARGET_CC $TARGET_CFLAGS -c conftest.c -o "$nm_defined_only_tmp_dir/ef" |
---|
195 | if $TARGET_NM --defined-only "$nm_defined_only_tmp_dir/ef" 2>&1 > /dev/null; then |
---|
196 | grub_cv_prog_nm_defined_only=yes |
---|
197 | else |
---|
198 | grub_cv_prog_nm_defined_only=no |
---|
199 | fi |
---|
200 | rm "$nm_defined_only_tmp_dir/ef" |
---|
201 | rmdir "$nm_defined_only_tmp_dir" |
---|
202 | ]) |
---|
203 | AC_MSG_RESULT([$grub_cv_prog_nm_defined_only]) |
---|
204 | |
---|
205 | if test "x$grub_cv_prog_nm_defined_only" = xyes; then |
---|
206 | TARGET_NMFLAGS_DEFINED_ONLY=--defined-only |
---|
207 | else |
---|
208 | TARGET_NMFLAGS_DEFINED_ONLY= |
---|
209 | fi |
---|
210 | ]) |
---|
211 | |
---|
212 | |
---|
213 | dnl Mass confusion! |
---|
214 | dnl Older versions of GAS interpret `.code16' to mean ``generate 32-bit |
---|
215 | dnl instructions, but implicitly insert addr32 and data32 bytes so |
---|
216 | dnl that the code works in real mode''. |
---|
217 | dnl |
---|
218 | dnl Newer versions of GAS interpret `.code16' to mean ``generate 16-bit |
---|
219 | dnl instructions,'' which seems right. This requires the programmer |
---|
220 | dnl to explicitly insert addr32 and data32 instructions when they want |
---|
221 | dnl them. |
---|
222 | dnl |
---|
223 | dnl We only support the newer versions, because the old versions cause |
---|
224 | dnl major pain, by requiring manual assembly to get 16-bit instructions into |
---|
225 | dnl asm files. |
---|
226 | AC_DEFUN([grub_I386_ASM_ADDR32], |
---|
227 | [AC_REQUIRE([AC_PROG_CC]) |
---|
228 | AC_REQUIRE([grub_I386_ASM_PREFIX_REQUIREMENT]) |
---|
229 | AC_MSG_CHECKING([for .code16 addr32 assembler support]) |
---|
230 | AC_CACHE_VAL(grub_cv_i386_asm_addr32, |
---|
231 | [cat > conftest.s.in <<\EOF |
---|
232 | .code16 |
---|
233 | l1: @ADDR32@ movb %al, l1 |
---|
234 | EOF |
---|
235 | |
---|
236 | if test "x$grub_cv_i386_asm_prefix_requirement" = xyes; then |
---|
237 | sed -e s/@ADDR32@/addr32/ < conftest.s.in > conftest.s |
---|
238 | else |
---|
239 | sed -e s/@ADDR32@/addr32\;/ < conftest.s.in > conftest.s |
---|
240 | fi |
---|
241 | |
---|
242 | if AC_TRY_COMMAND([${CC-cc} ${TARGET_CCASFLAGS} ${CFLAGS} -c conftest.s]) && test -s conftest.o; then |
---|
243 | grub_cv_i386_asm_addr32=yes |
---|
244 | else |
---|
245 | grub_cv_i386_asm_addr32=no |
---|
246 | fi |
---|
247 | |
---|
248 | rm -f conftest*]) |
---|
249 | |
---|
250 | AC_MSG_RESULT([$grub_cv_i386_asm_addr32])]) |
---|
251 | |
---|
252 | dnl Later versions of GAS requires that addr32 and data32 prefixes |
---|
253 | dnl appear in the same lines as the instructions they modify, while |
---|
254 | dnl earlier versions requires that they appear in separate lines. |
---|
255 | AC_DEFUN([grub_I386_ASM_PREFIX_REQUIREMENT], |
---|
256 | [AC_REQUIRE([AC_PROG_CC]) |
---|
257 | AC_MSG_CHECKING(dnl |
---|
258 | [whether addr32 must be in the same line as the instruction]) |
---|
259 | AC_CACHE_VAL(grub_cv_i386_asm_prefix_requirement, |
---|
260 | [cat > conftest.s <<\EOF |
---|
261 | .code16 |
---|
262 | l1: addr32 movb %al, l1 |
---|
263 | EOF |
---|
264 | |
---|
265 | if AC_TRY_COMMAND([${CC-cc} ${TARGET_CCASFLAGS} ${CFLAGS} -c conftest.s]) && test -s conftest.o; then |
---|
266 | grub_cv_i386_asm_prefix_requirement=yes |
---|
267 | else |
---|
268 | grub_cv_i386_asm_prefix_requirement=no |
---|
269 | fi |
---|
270 | |
---|
271 | rm -f conftest*]) |
---|
272 | |
---|
273 | if test "x$grub_cv_i386_asm_prefix_requirement" = xyes; then |
---|
274 | grub_tmp_addr32="addr32" |
---|
275 | grub_tmp_data32="data32" |
---|
276 | else |
---|
277 | grub_tmp_addr32="addr32;" |
---|
278 | grub_tmp_data32="data32;" |
---|
279 | fi |
---|
280 | |
---|
281 | ADDR32=$grub_tmp_addr32 |
---|
282 | DATA32=$grub_tmp_data32 |
---|
283 | |
---|
284 | AC_MSG_RESULT([$grub_cv_i386_asm_prefix_requirement])]) |
---|
285 | |
---|
286 | |
---|
287 | dnl Check what symbol is defined as a bss start symbol. |
---|
288 | dnl Written by Michael Hohmoth and Yoshinori K. Okuji. |
---|
289 | AC_DEFUN([grub_CHECK_BSS_START_SYMBOL], |
---|
290 | [AC_REQUIRE([AC_PROG_CC]) |
---|
291 | AC_MSG_CHECKING([if __bss_start is defined by the compiler]) |
---|
292 | AC_CACHE_VAL(grub_cv_check_uscore_uscore_bss_start_symbol, |
---|
293 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
---|
294 | asm (".globl start; start:"); |
---|
295 | void __main (void); |
---|
296 | void __main (void) {} |
---|
297 | int main (void); |
---|
298 | ]], |
---|
299 | [[asm ("incl __bss_start")]])], |
---|
300 | [grub_cv_check_uscore_uscore_bss_start_symbol=yes], |
---|
301 | [grub_cv_check_uscore_uscore_bss_start_symbol=no])]) |
---|
302 | |
---|
303 | AC_MSG_RESULT([$grub_cv_check_uscore_uscore_bss_start_symbol]) |
---|
304 | |
---|
305 | AC_MSG_CHECKING([if edata is defined by the compiler]) |
---|
306 | AC_CACHE_VAL(grub_cv_check_edata_symbol, |
---|
307 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
---|
308 | asm (".globl start; start:"); |
---|
309 | void __main (void); |
---|
310 | void __main (void) {} |
---|
311 | int main (void);]], |
---|
312 | [[asm ("incl edata")]])], |
---|
313 | [grub_cv_check_edata_symbol=yes], |
---|
314 | [grub_cv_check_edata_symbol=no])]) |
---|
315 | |
---|
316 | AC_MSG_RESULT([$grub_cv_check_edata_symbol]) |
---|
317 | |
---|
318 | AC_MSG_CHECKING([if _edata is defined by the compiler]) |
---|
319 | AC_CACHE_VAL(grub_cv_check_uscore_edata_symbol, |
---|
320 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
---|
321 | asm (".globl start; start:"); |
---|
322 | void __main (void); |
---|
323 | void __main (void) {} |
---|
324 | int main (void);]], |
---|
325 | [[asm ("incl _edata")]])], |
---|
326 | [grub_cv_check_uscore_edata_symbol=yes], |
---|
327 | [grub_cv_check_uscore_edata_symbol=no])]) |
---|
328 | |
---|
329 | AC_MSG_RESULT([$grub_cv_check_uscore_edata_symbol]) |
---|
330 | |
---|
331 | if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" = xyes; then |
---|
332 | BSS_START_SYMBOL=__bss_start |
---|
333 | elif test "x$grub_cv_check_edata_symbol" = xyes; then |
---|
334 | BSS_START_SYMBOL=edata |
---|
335 | elif test "x$grub_cv_check_uscore_edata_symbol" = xyes; then |
---|
336 | BSS_START_SYMBOL=_edata |
---|
337 | else |
---|
338 | AC_MSG_ERROR([none of __bss_start, edata or _edata is defined]) |
---|
339 | fi |
---|
340 | ]) |
---|
341 | |
---|
342 | dnl Check what symbol is defined as an end symbol. |
---|
343 | dnl Written by Yoshinori K. Okuji. |
---|
344 | AC_DEFUN([grub_CHECK_END_SYMBOL], |
---|
345 | [AC_REQUIRE([AC_PROG_CC]) |
---|
346 | AC_MSG_CHECKING([if end is defined by the compiler]) |
---|
347 | AC_CACHE_VAL(grub_cv_check_end_symbol, |
---|
348 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
---|
349 | asm (".globl start; start:"); |
---|
350 | void __main (void); |
---|
351 | void __main (void) {} |
---|
352 | int main (void);]], |
---|
353 | [[asm ("incl end")]])], |
---|
354 | [grub_cv_check_end_symbol=yes], |
---|
355 | [grub_cv_check_end_symbol=no])]) |
---|
356 | |
---|
357 | AC_MSG_RESULT([$grub_cv_check_end_symbol]) |
---|
358 | |
---|
359 | AC_MSG_CHECKING([if _end is defined by the compiler]) |
---|
360 | AC_CACHE_VAL(grub_cv_check_uscore_end_symbol, |
---|
361 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
---|
362 | asm (".globl start; start:"); |
---|
363 | void __main (void); |
---|
364 | void __main (void) {} |
---|
365 | int main (void);]], |
---|
366 | [[asm ("incl _end")]])], |
---|
367 | [grub_cv_check_uscore_end_symbol=yes], |
---|
368 | [grub_cv_check_uscore_end_symbol=no])]) |
---|
369 | |
---|
370 | AC_MSG_RESULT([$grub_cv_check_uscore_end_symbol]) |
---|
371 | |
---|
372 | if test "x$grub_cv_check_end_symbol" = xyes; then |
---|
373 | END_SYMBOL=end |
---|
374 | elif test "x$grub_cv_check_uscore_end_symbol" = xyes; then |
---|
375 | END_SYMBOL=_end |
---|
376 | else |
---|
377 | AC_MSG_ERROR([neither end nor _end is defined]) |
---|
378 | fi |
---|
379 | ]) |
---|
380 | |
---|
381 | |
---|
382 | dnl Check if the C compiler supports `-fstack-protector'. |
---|
383 | AC_DEFUN([grub_CHECK_STACK_PROTECTOR],[ |
---|
384 | [# Smashing stack protector. |
---|
385 | ssp_possible=yes] |
---|
386 | AC_MSG_CHECKING([whether `$CC' accepts `-fstack-protector']) |
---|
387 | # Is this a reliable test case? |
---|
388 | AC_LANG_CONFTEST([AC_LANG_SOURCE([[ |
---|
389 | void foo (void) { volatile char a[8]; a[3]; } |
---|
390 | ]])]) |
---|
391 | [# `$CC -c -o ...' might not be portable. But, oh, well... Is calling |
---|
392 | # `ac_compile' like this correct, after all? |
---|
393 | if eval "$ac_compile -S -fstack-protector -o conftest.s" 2> /dev/null; then] |
---|
394 | AC_MSG_RESULT([yes]) |
---|
395 | [# Should we clear up other files as well, having called `AC_LANG_CONFTEST'? |
---|
396 | rm -f conftest.s |
---|
397 | else |
---|
398 | ssp_possible=no] |
---|
399 | AC_MSG_RESULT([no]) |
---|
400 | [fi] |
---|
401 | ]) |
---|
402 | |
---|
403 | dnl Check if the C compiler supports `-mstack-arg-probe' (Cygwin). |
---|
404 | AC_DEFUN([grub_CHECK_STACK_ARG_PROBE],[ |
---|
405 | [# Smashing stack arg probe. |
---|
406 | sap_possible=yes] |
---|
407 | AC_MSG_CHECKING([whether `$CC' accepts `-mstack-arg-probe']) |
---|
408 | AC_LANG_CONFTEST([AC_LANG_SOURCE([[ |
---|
409 | void foo (void) { volatile char a[8]; a[3]; } |
---|
410 | ]])]) |
---|
411 | [if eval "$ac_compile -S -mstack-arg-probe -Werror -o conftest.s" 2> /dev/null; then] |
---|
412 | AC_MSG_RESULT([yes]) |
---|
413 | [# Should we clear up other files as well, having called `AC_LANG_CONFTEST'? |
---|
414 | rm -f conftest.s |
---|
415 | else |
---|
416 | sap_possible=no] |
---|
417 | AC_MSG_RESULT([no]) |
---|
418 | [fi] |
---|
419 | ]) |
---|
420 | |
---|
421 | dnl Check if ln can handle directories properly (mingw). |
---|
422 | AC_DEFUN([grub_CHECK_LINK_DIR],[ |
---|
423 | AC_MSG_CHECKING([whether ln can handle directories properly]) |
---|
424 | [mkdir testdir 2>/dev/null |
---|
425 | case $srcdir in |
---|
426 | [\\/$]* | ?:[\\/]* ) reldir=$srcdir/include/grub/util ;; |
---|
427 | *) reldir=../$srcdir/include/grub/util ;; |
---|
428 | esac |
---|
429 | if ln -s $reldir testdir/util 2>/dev/null ; then] |
---|
430 | AC_MSG_RESULT([yes]) |
---|
431 | [link_dir=yes |
---|
432 | else |
---|
433 | link_dir=no] |
---|
434 | AC_MSG_RESULT([no]) |
---|
435 | [fi |
---|
436 | rm -rf testdir] |
---|
437 | ]) |
---|
438 | |
---|
439 | dnl Check if the C compiler supports `-fPIE'. |
---|
440 | AC_DEFUN([grub_CHECK_PIE],[ |
---|
441 | [# Position independent executable. |
---|
442 | pie_possible=yes] |
---|
443 | AC_MSG_CHECKING([whether `$CC' has `-fPIE' as default]) |
---|
444 | # Is this a reliable test case? |
---|
445 | AC_LANG_CONFTEST([AC_LANG_SOURCE([[ |
---|
446 | #ifdef __PIE__ |
---|
447 | int main() { |
---|
448 | return 0; |
---|
449 | } |
---|
450 | #else |
---|
451 | #error NO __PIE__ DEFINED |
---|
452 | #endif |
---|
453 | ]])]) |
---|
454 | |
---|
455 | [# `$CC -c -o ...' might not be portable. But, oh, well... Is calling |
---|
456 | # `ac_compile' like this correct, after all? |
---|
457 | if eval "$ac_compile -S -o conftest.s" 2> /dev/null; then] |
---|
458 | AC_MSG_RESULT([yes]) |
---|
459 | [# Should we clear up other files as well, having called `AC_LANG_CONFTEST'? |
---|
460 | rm -f conftest.s |
---|
461 | else |
---|
462 | pie_possible=no] |
---|
463 | AC_MSG_RESULT([no]) |
---|
464 | [fi] |
---|
465 | ]) |
---|
466 | |
---|
467 | dnl Check if the C compiler supports `-fPIC'. |
---|
468 | AC_DEFUN([grub_CHECK_PIC],[ |
---|
469 | [# Position independent executable. |
---|
470 | pic_possible=yes] |
---|
471 | AC_MSG_CHECKING([whether `$CC' has `-fPIC' as default]) |
---|
472 | # Is this a reliable test case? |
---|
473 | AC_LANG_CONFTEST([AC_LANG_SOURCE([[ |
---|
474 | #ifdef __PIC__ |
---|
475 | int main() { |
---|
476 | return 0; |
---|
477 | } |
---|
478 | #else |
---|
479 | #error NO __PIC__ DEFINED |
---|
480 | #endif |
---|
481 | ]])]) |
---|
482 | |
---|
483 | [# `$CC -c -o ...' might not be portable. But, oh, well... Is calling |
---|
484 | # `ac_compile' like this correct, after all? |
---|
485 | if eval "$ac_compile -S -o conftest.s" 2> /dev/null; then] |
---|
486 | AC_MSG_RESULT([yes]) |
---|
487 | [# Should we clear up other files as well, having called `AC_LANG_CONFTEST'? |
---|
488 | rm -f conftest.s |
---|
489 | else |
---|
490 | pic_possible=no] |
---|
491 | AC_MSG_RESULT([no]) |
---|
492 | [fi] |
---|
493 | ]) |
---|
494 | |
---|
495 | dnl Create an output variable with the transformed name of a GRUB utility |
---|
496 | dnl program. |
---|
497 | AC_DEFUN([grub_TRANSFORM],[dnl |
---|
498 | AC_SUBST(AS_TR_SH([$1]), [`AS_ECHO([$1]) | sed "$program_transform_name"`])dnl |
---|
499 | ]) |
---|