]> git.saurik.com Git - wxWidgets.git/blame_incremental - build/aclocal/bakefile.m4
using ordinary Show for popup windows as on MSW which activates it as well, I'll...
[wxWidgets.git] / build / aclocal / bakefile.m4
... / ...
CommitLineData
1dnl
2dnl This file is part of Bakefile (http://www.bakefile.org)
3dnl
4dnl Copyright (C) 2003-2007 Vaclav Slavik and others
5dnl
6dnl Permission is hereby granted, free of charge, to any person obtaining a
7dnl copy of this software and associated documentation files (the "Software"),
8dnl to deal in the Software without restriction, including without limitation
9dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
10dnl and/or sell copies of the Software, and to permit persons to whom the
11dnl Software is furnished to do so, subject to the following conditions:
12dnl
13dnl The above copyright notice and this permission notice shall be included in
14dnl all copies or substantial portions of the Software.
15dnl
16dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22dnl DEALINGS IN THE SOFTWARE.
23dnl
24dnl $Id$
25dnl
26dnl Support macros for makefiles generated by BAKEFILE.
27dnl
28
29
30dnl ---------------------------------------------------------------------------
31dnl Lots of compiler & linker detection code contained here was taken from
32dnl wxWidgets configure.in script (see http://www.wxwidgets.org)
33dnl ---------------------------------------------------------------------------
34
35
36
37dnl ---------------------------------------------------------------------------
38dnl AC_BAKEFILE_GNUMAKE
39dnl
40dnl Detects GNU make
41dnl ---------------------------------------------------------------------------
42
43AC_DEFUN([AC_BAKEFILE_GNUMAKE],
44[
45 dnl does make support "-include" (only GNU make does AFAIK)?
46 AC_CACHE_CHECK([if make is GNU make], bakefile_cv_prog_makeisgnu,
47 [
48 if ( ${SHELL-sh} -c "${MAKE-make} --version" 2> /dev/null |
49 egrep -s GNU > /dev/null); then
50 bakefile_cv_prog_makeisgnu="yes"
51 else
52 bakefile_cv_prog_makeisgnu="no"
53 fi
54 ])
55
56 if test "x$bakefile_cv_prog_makeisgnu" = "xyes"; then
57 IF_GNU_MAKE=""
58 else
59 IF_GNU_MAKE="#"
60 fi
61 AC_SUBST(IF_GNU_MAKE)
62])
63
64dnl ---------------------------------------------------------------------------
65dnl AC_BAKEFILE_PLATFORM
66dnl
67dnl Detects platform and sets PLATFORM_XXX variables accordingly
68dnl ---------------------------------------------------------------------------
69
70AC_DEFUN([AC_BAKEFILE_PLATFORM],
71[
72 PLATFORM_UNIX=0
73 PLATFORM_WIN32=0
74 PLATFORM_MSDOS=0
75 PLATFORM_MAC=0
76 PLATFORM_MACOS=0
77 PLATFORM_MACOSX=0
78 PLATFORM_OS2=0
79 PLATFORM_BEOS=0
80
81 if test "x$BAKEFILE_FORCE_PLATFORM" = "x"; then
82 case "${BAKEFILE_HOST}" in
83 *-*-mingw32* )
84 PLATFORM_WIN32=1
85 ;;
86 *-pc-msdosdjgpp )
87 PLATFORM_MSDOS=1
88 ;;
89 *-pc-os2_emx | *-pc-os2-emx )
90 PLATFORM_OS2=1
91 ;;
92 *-*-darwin* )
93 PLATFORM_MAC=1
94 PLATFORM_MACOSX=1
95 ;;
96 *-*-beos* )
97 PLATFORM_BEOS=1
98 ;;
99 powerpc-apple-macos* )
100 PLATFORM_MAC=1
101 PLATFORM_MACOS=1
102 ;;
103 * )
104 PLATFORM_UNIX=1
105 ;;
106 esac
107 else
108 case "$BAKEFILE_FORCE_PLATFORM" in
109 win32 )
110 PLATFORM_WIN32=1
111 ;;
112 msdos )
113 PLATFORM_MSDOS=1
114 ;;
115 os2 )
116 PLATFORM_OS2=1
117 ;;
118 darwin )
119 PLATFORM_MAC=1
120 PLATFORM_MACOSX=1
121 ;;
122 unix )
123 PLATFORM_UNIX=1
124 ;;
125 beos )
126 PLATFORM_BEOS=1
127 ;;
128 * )
129 AC_MSG_ERROR([Unknown platform: $BAKEFILE_FORCE_PLATFORM])
130 ;;
131 esac
132 fi
133
134 AC_SUBST(PLATFORM_UNIX)
135 AC_SUBST(PLATFORM_WIN32)
136 AC_SUBST(PLATFORM_MSDOS)
137 AC_SUBST(PLATFORM_MAC)
138 AC_SUBST(PLATFORM_MACOS)
139 AC_SUBST(PLATFORM_MACOSX)
140 AC_SUBST(PLATFORM_OS2)
141 AC_SUBST(PLATFORM_BEOS)
142])
143
144
145dnl ---------------------------------------------------------------------------
146dnl AC_BAKEFILE_PLATFORM_SPECIFICS
147dnl
148dnl Sets misc platform-specific settings
149dnl ---------------------------------------------------------------------------
150
151AC_DEFUN([AC_BAKEFILE_PLATFORM_SPECIFICS],
152[
153 AC_ARG_ENABLE([omf], AS_HELP_STRING([--enable-omf],
154 [use OMF object format (OS/2)]),
155 [bk_os2_use_omf="$enableval"])
156
157 case "${BAKEFILE_HOST}" in
158 *-*-darwin* )
159 dnl For Unix to MacOS X porting instructions, see:
160 dnl http://fink.sourceforge.net/doc/porting/porting.html
161 if test "x$GCC" = "xyes"; then
162 CFLAGS="$CFLAGS -fno-common"
163 CXXFLAGS="$CXXFLAGS -fno-common"
164 fi
165 if test "x$XLCC" = "xyes"; then
166 CFLAGS="$CFLAGS -qnocommon"
167 CXXFLAGS="$CXXFLAGS -qnocommon"
168 fi
169 ;;
170
171 *-pc-os2_emx | *-pc-os2-emx )
172 if test "x$bk_os2_use_omf" = "xyes" ; then
173 AR=emxomfar
174 RANLIB=:
175 LDFLAGS="-Zomf $LDFLAGS"
176 CFLAGS="-Zomf $CFLAGS"
177 CXXFLAGS="-Zomf $CXXFLAGS"
178 OS2_LIBEXT="lib"
179 else
180 OS2_LIBEXT="a"
181 fi
182 ;;
183
184 i*86-*-beos* )
185 LDFLAGS="-L/boot/develop/lib/x86 $LDFLAGS"
186 ;;
187 esac
188])
189
190dnl ---------------------------------------------------------------------------
191dnl AC_BAKEFILE_SUFFIXES
192dnl
193dnl Detects shared various suffixes for shared libraries, libraries, programs,
194dnl plugins etc.
195dnl ---------------------------------------------------------------------------
196
197AC_DEFUN([AC_BAKEFILE_SUFFIXES],
198[
199 SO_SUFFIX="so"
200 SO_SUFFIX_MODULE="so"
201 EXEEXT=""
202 LIBPREFIX="lib"
203 LIBEXT=".a"
204 DLLPREFIX="lib"
205 DLLPREFIX_MODULE=""
206 DLLIMP_SUFFIX=""
207 dlldir="$libdir"
208
209 case "${BAKEFILE_HOST}" in
210 dnl PA-RISC HP systems used .sl but IA64 use ELF-64 and so use the
211 dnl standard .so extension
212 ia64-hp-hpux* )
213 ;;
214 *-hp-hpux* )
215 SO_SUFFIX="sl"
216 SO_SUFFIX_MODULE="sl"
217 ;;
218 *-*-aix* )
219 dnl quoting from
220 dnl http://www-1.ibm.com/servers/esdd/articles/gnu.html:
221 dnl Both archive libraries and shared libraries on AIX have an
222 dnl .a extension. This will explain why you can't link with an
223 dnl .so and why it works with the name changed to .a.
224 SO_SUFFIX="a"
225 SO_SUFFIX_MODULE="a"
226 ;;
227 *-*-cygwin* )
228 SO_SUFFIX="dll"
229 SO_SUFFIX_MODULE="dll"
230 DLLIMP_SUFFIX="dll.a"
231 EXEEXT=".exe"
232 DLLPREFIX="cyg"
233 dlldir="$bindir"
234 ;;
235 *-*-mingw32* )
236 SO_SUFFIX="dll"
237 SO_SUFFIX_MODULE="dll"
238 DLLIMP_SUFFIX="dll.a"
239 EXEEXT=".exe"
240 DLLPREFIX=""
241 dlldir="$bindir"
242 ;;
243 *-pc-msdosdjgpp )
244 EXEEXT=".exe"
245 DLLPREFIX=""
246 dlldir="$bindir"
247 ;;
248 *-pc-os2_emx | *-pc-os2-emx )
249 SO_SUFFIX="dll"
250 SO_SUFFIX_MODULE="dll"
251 DLLIMP_SUFFIX=$OS2_LIBEXT
252 EXEEXT=".exe"
253 DLLPREFIX=""
254 LIBPREFIX=""
255 LIBEXT=".$OS2_LIBEXT"
256 dlldir="$bindir"
257 ;;
258 *-*-darwin* )
259 SO_SUFFIX="dylib"
260 SO_SUFFIX_MODULE="bundle"
261 ;;
262 esac
263
264 if test "x$DLLIMP_SUFFIX" = "x" ; then
265 DLLIMP_SUFFIX="$SO_SUFFIX"
266 fi
267
268 AC_SUBST(SO_SUFFIX)
269 AC_SUBST(SO_SUFFIX_MODULE)
270 AC_SUBST(DLLIMP_SUFFIX)
271 AC_SUBST(EXEEXT)
272 AC_SUBST(LIBPREFIX)
273 AC_SUBST(LIBEXT)
274 AC_SUBST(DLLPREFIX)
275 AC_SUBST(DLLPREFIX_MODULE)
276 AC_SUBST(dlldir)
277])
278
279
280dnl ---------------------------------------------------------------------------
281dnl AC_BAKEFILE_SHARED_LD
282dnl
283dnl Detects command for making shared libraries, substitutes SHARED_LD_CC
284dnl and SHARED_LD_CXX.
285dnl ---------------------------------------------------------------------------
286
287AC_DEFUN([AC_BAKEFILE_SHARED_LD],
288[
289 dnl the extra compiler flags needed for compilation of shared library
290 PIC_FLAG=""
291 if test "x$GCC" = "xyes"; then
292 dnl the switch for gcc is the same under all platforms
293 PIC_FLAG="-fPIC"
294 fi
295
296 dnl Defaults for GCC and ELF .so shared libs:
297 SHARED_LD_CC="\$(CC) -shared ${PIC_FLAG} -o"
298 SHARED_LD_CXX="\$(CXX) -shared ${PIC_FLAG} -o"
299 WINDOWS_IMPLIB=0
300
301 case "${BAKEFILE_HOST}" in
302 *-hp-hpux* )
303 dnl default settings are good for gcc but not for the native HP-UX
304 if test "x$GCC" != "xyes"; then
305 dnl no idea why it wants it, but it does
306 LDFLAGS="$LDFLAGS -L/usr/lib"
307
308 SHARED_LD_CC="${CC} -b -o"
309 SHARED_LD_CXX="${CXX} -b -o"
310 PIC_FLAG="+Z"
311 fi
312 ;;
313
314 *-*-linux* )
315 dnl newer icc versions use -fPIC just as gcc does and, in fact, the
316 dnl newest (v10+) ones don't even understand -KPIC any longer
317 if test "$INTELCC" = "yes" -a "$INTELCC8" != "yes"; then
318 PIC_FLAG="-KPIC"
319 elif test "x$SUNCXX" = "xyes"; then
320 SHARED_LD_CC="${CC} -G -o"
321 SHARED_LD_CXX="${CXX} -G -o"
322 PIC_FLAG="-KPIC"
323 fi
324 ;;
325
326 *-*-solaris2* )
327 if test "x$SUNCXX" = xyes ; then
328 SHARED_LD_CC="${CC} -G -o"
329 SHARED_LD_CXX="${CXX} -G -o"
330 PIC_FLAG="-KPIC"
331 fi
332 ;;
333
334 *-*-darwin* )
335 AC_BAKEFILE_CREATE_FILE_SHARED_LD_SH
336 chmod +x shared-ld-sh
337
338 SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -headerpad_max_install_names -o"
339 SHARED_LD_MODULE_CXX="CXX=\"\$(CXX)\" $SHARED_LD_MODULE_CC"
340
341 dnl Most apps benefit from being fully binded (its faster and static
342 dnl variables initialized at startup work).
343 dnl This can be done either with the exe linker flag -Wl,-bind_at_load
344 dnl or with a double stage link in order to create a single module
345 dnl "-init _wxWindowsDylibInit" not useful with lazy linking solved
346
347 dnl If using newer dev tools then there is a -single_module flag that
348 dnl we can use to do this for dylibs, otherwise we'll need to use a helper
349 dnl script. Check the version of gcc to see which way we can go:
350 AC_CACHE_CHECK([for gcc 3.1 or later], bakefile_cv_gcc31, [
351 AC_TRY_COMPILE([],
352 [
353 #if (__GNUC__ < 3) || \
354 ((__GNUC__ == 3) && (__GNUC_MINOR__ < 1))
355 This is old gcc
356 #endif
357 ],
358 [
359 bakefile_cv_gcc31=yes
360 ],
361 [
362 bakefile_cv_gcc31=no
363 ]
364 )
365 ])
366 if test "$bakefile_cv_gcc31" = "no"; then
367 dnl Use the shared-ld-sh helper script
368 SHARED_LD_CC="`pwd`/shared-ld-sh -dynamiclib -headerpad_max_install_names -o"
369 SHARED_LD_CXX="$SHARED_LD_CC"
370 else
371 dnl Use the -single_module flag and let the linker do it for us
372 SHARED_LD_CC="\${CC} -dynamiclib -single_module -headerpad_max_install_names -o"
373 SHARED_LD_CXX="\${CXX} -dynamiclib -single_module -headerpad_max_install_names -o"
374 fi
375
376 if test "x$GCC" == "xyes"; then
377 PIC_FLAG="-dynamic -fPIC"
378 fi
379 if test "x$XLCC" = "xyes"; then
380 PIC_FLAG="-dynamic -DPIC"
381 fi
382 ;;
383
384 *-*-aix* )
385 if test "x$GCC" = "xyes"; then
386 dnl at least gcc 2.95 warns that -fPIC is ignored when
387 dnl compiling each and every file under AIX which is annoying,
388 dnl so don't use it there (it's useless as AIX runs on
389 dnl position-independent architectures only anyhow)
390 PIC_FLAG=""
391
392 dnl -bexpfull is needed by AIX linker to export all symbols (by
393 dnl default it doesn't export any and even with -bexpall it
394 dnl doesn't export all C++ support symbols, e.g. vtable
395 dnl pointers) but it's only available starting from 5.1 (with
396 dnl maintenance pack 2, whatever this is), see
397 dnl http://www-128.ibm.com/developerworks/eserver/articles/gnu.html
398 case "${BAKEFILE_HOST}" in
399 *-*-aix5* )
400 LD_EXPFULL="-Wl,-bexpfull"
401 ;;
402 esac
403
404 SHARED_LD_CC="\$(CC) -shared $LD_EXPFULL -o"
405 SHARED_LD_CXX="\$(CXX) -shared $LD_EXPFULL -o"
406 else
407 dnl FIXME: makeC++SharedLib is obsolete, what should we do for
408 dnl recent AIX versions?
409 AC_CHECK_PROG(AIX_CXX_LD, makeC++SharedLib,
410 makeC++SharedLib, /usr/lpp/xlC/bin/makeC++SharedLib)
411 SHARED_LD_CC="$AIX_CC_LD -p 0 -o"
412 SHARED_LD_CXX="$AIX_CXX_LD -p 0 -o"
413 fi
414 ;;
415
416 *-*-beos* )
417 dnl can't use gcc under BeOS for shared library creation because it
418 dnl complains about missing 'main'
419 SHARED_LD_CC="${LD} -nostart -o"
420 SHARED_LD_CXX="${LD} -nostart -o"
421 ;;
422
423 *-*-irix* )
424 dnl default settings are ok for gcc
425 if test "x$GCC" != "xyes"; then
426 PIC_FLAG="-KPIC"
427 fi
428 ;;
429
430 *-*-cygwin* | *-*-mingw32* )
431 PIC_FLAG=""
432 SHARED_LD_CC="\$(CC) -shared -o"
433 SHARED_LD_CXX="\$(CXX) -shared -o"
434 WINDOWS_IMPLIB=1
435 ;;
436
437 *-pc-os2_emx | *-pc-os2-emx )
438 SHARED_LD_CC="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
439 SHARED_LD_CXX="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
440 PIC_FLAG=""
441 AC_BAKEFILE_CREATE_FILE_DLLAR_SH
442 chmod +x dllar.sh
443 ;;
444
445 powerpc-apple-macos* | \
446 *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | *-*-k*bsd*-gnu | \
447 *-*-mirbsd* | \
448 *-*-sunos4* | \
449 *-*-osf* | \
450 *-*-dgux5* | \
451 *-*-sysv5* | \
452 *-pc-msdosdjgpp )
453 dnl defaults are ok
454 ;;
455
456 *)
457 AC_MSG_ERROR(unknown system type $BAKEFILE_HOST.)
458 esac
459
460 if test "x$PIC_FLAG" != "x" ; then
461 PIC_FLAG="$PIC_FLAG -DPIC"
462 fi
463
464 if test "x$SHARED_LD_MODULE_CC" = "x" ; then
465 SHARED_LD_MODULE_CC="$SHARED_LD_CC"
466 fi
467 if test "x$SHARED_LD_MODULE_CXX" = "x" ; then
468 SHARED_LD_MODULE_CXX="$SHARED_LD_CXX"
469 fi
470
471 AC_SUBST(SHARED_LD_CC)
472 AC_SUBST(SHARED_LD_CXX)
473 AC_SUBST(SHARED_LD_MODULE_CC)
474 AC_SUBST(SHARED_LD_MODULE_CXX)
475 AC_SUBST(PIC_FLAG)
476 AC_SUBST(WINDOWS_IMPLIB)
477])
478
479
480dnl ---------------------------------------------------------------------------
481dnl AC_BAKEFILE_SHARED_VERSIONS
482dnl
483dnl Detects linker options for attaching versions (sonames) to shared libs.
484dnl ---------------------------------------------------------------------------
485
486AC_DEFUN([AC_BAKEFILE_SHARED_VERSIONS],
487[
488 USE_SOVERSION=0
489 USE_SOVERLINUX=0
490 USE_SOVERSOLARIS=0
491 USE_SOVERCYGWIN=0
492 USE_SOTWOSYMLINKS=0
493 USE_MACVERSION=0
494 SONAME_FLAG=
495
496 case "${BAKEFILE_HOST}" in
497 *-*-linux* | *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \
498 *-*-k*bsd*-gnu | *-*-mirbsd* )
499 if test "x$SUNCXX" = "xyes"; then
500 SONAME_FLAG="-h "
501 else
502 SONAME_FLAG="-Wl,-soname,"
503 fi
504 USE_SOVERSION=1
505 USE_SOVERLINUX=1
506 USE_SOTWOSYMLINKS=1
507 ;;
508
509 *-*-solaris2* )
510 SONAME_FLAG="-h "
511 USE_SOVERSION=1
512 USE_SOVERSOLARIS=1
513 ;;
514
515 *-*-darwin* )
516 USE_MACVERSION=1
517 USE_SOVERSION=1
518 USE_SOTWOSYMLINKS=1
519 ;;
520
521 *-*-cygwin* )
522 USE_SOVERSION=1
523 USE_SOVERCYGWIN=1
524 ;;
525 esac
526
527 AC_SUBST(USE_SOVERSION)
528 AC_SUBST(USE_SOVERLINUX)
529 AC_SUBST(USE_SOVERSOLARIS)
530 AC_SUBST(USE_SOVERCYGWIN)
531 AC_SUBST(USE_MACVERSION)
532 AC_SUBST(USE_SOTWOSYMLINKS)
533 AC_SUBST(SONAME_FLAG)
534])
535
536
537dnl ---------------------------------------------------------------------------
538dnl AC_BAKEFILE_DEPS
539dnl
540dnl Detects available C/C++ dependency tracking options
541dnl ---------------------------------------------------------------------------
542
543AC_DEFUN([AC_BAKEFILE_DEPS],
544[
545 AC_ARG_ENABLE([dependency-tracking],
546 AS_HELP_STRING([--disable-dependency-tracking],
547 [don't use dependency tracking even if the compiler can]),
548 [bk_use_trackdeps="$enableval"])
549
550 AC_MSG_CHECKING([for dependency tracking method])
551
552 BK_DEPS=""
553 if test "x$bk_use_trackdeps" = "xno" ; then
554 DEPS_TRACKING=0
555 AC_MSG_RESULT([disabled])
556 else
557 DEPS_TRACKING=1
558
559 if test "x$GCC" = "xyes"; then
560 DEPSMODE=gcc
561 DEPSFLAG="-MMD"
562 AC_MSG_RESULT([gcc])
563 elif test "x$MWCC" = "xyes"; then
564 DEPSMODE=mwcc
565 DEPSFLAG="-MM"
566 AC_MSG_RESULT([mwcc])
567 elif test "x$SUNCC" = "xyes"; then
568 DEPSMODE=unixcc
569 DEPSFLAG="-xM1"
570 AC_MSG_RESULT([Sun cc])
571 elif test "x$SGICC" = "xyes"; then
572 DEPSMODE=unixcc
573 DEPSFLAG="-M"
574 AC_MSG_RESULT([SGI cc])
575 elif test "x$HPCC" = "xyes"; then
576 DEPSMODE=unixcc
577 DEPSFLAG="+make"
578 AC_MSG_RESULT([HP cc])
579 elif test "x$COMPAQCC" = "xyes"; then
580 DEPSMODE=gcc
581 DEPSFLAG="-MD"
582 AC_MSG_RESULT([Compaq cc])
583 else
584 DEPS_TRACKING=0
585 AC_MSG_RESULT([none])
586 fi
587
588 if test $DEPS_TRACKING = 1 ; then
589 AC_BAKEFILE_CREATE_FILE_BK_DEPS
590 chmod +x bk-deps
591 dnl FIXME: make this $(top_builddir)/bk-deps once autoconf-2.60
592 dnl is required (and so top_builddir is never empty):
593 BK_DEPS="`pwd`/bk-deps"
594 fi
595 fi
596
597 AC_SUBST(DEPS_TRACKING)
598 AC_SUBST(BK_DEPS)
599])
600
601dnl ---------------------------------------------------------------------------
602dnl AC_BAKEFILE_CHECK_BASIC_STUFF
603dnl
604dnl Checks for presence of basic programs, such as C and C++ compiler, "ranlib"
605dnl or "install"
606dnl ---------------------------------------------------------------------------
607
608AC_DEFUN([AC_BAKEFILE_CHECK_BASIC_STUFF],
609[
610 AC_PROG_RANLIB
611 AC_PROG_INSTALL
612 AC_PROG_LN_S
613
614 AC_PROG_MAKE_SET
615 AC_SUBST(MAKE_SET)
616
617 if test "x$SUNCXX" = "xyes"; then
618 dnl Sun C++ compiler requires special way of creating static libs;
619 dnl see here for more details:
620 dnl https://sourceforge.net/tracker/?func=detail&atid=109863&aid=1229751&group_id=9863
621 AR=$CXX
622 AROPTIONS="-xar -o"
623 AC_SUBST(AR)
624 elif test "x$SGICC" = "xyes"; then
625 dnl Almost the same as above for SGI mipsPro compiler
626 AR=$CXX
627 AROPTIONS="-ar -o"
628 AC_SUBST(AR)
629 else
630 AC_CHECK_TOOL(AR, ar, ar)
631 AROPTIONS=rcu
632 fi
633 AC_SUBST(AROPTIONS)
634
635 AC_CHECK_TOOL(STRIP, strip, :)
636 AC_CHECK_TOOL(NM, nm, :)
637
638 dnl Don't use `install -d`, see http://trac.wxwidgets.org/ticket/13452
639 INSTALL_DIR="mkdir -p"
640 AC_SUBST(INSTALL_DIR)
641
642 LDFLAGS_GUI=
643 case ${BAKEFILE_HOST} in
644 *-*-cygwin* | *-*-mingw32* )
645 LDFLAGS_GUI="-mwindows"
646 esac
647 AC_SUBST(LDFLAGS_GUI)
648])
649
650
651dnl ---------------------------------------------------------------------------
652dnl AC_BAKEFILE_RES_COMPILERS
653dnl
654dnl Checks for presence of resource compilers for win32 or mac
655dnl ---------------------------------------------------------------------------
656
657AC_DEFUN([AC_BAKEFILE_RES_COMPILERS],
658[
659 case ${BAKEFILE_HOST} in
660 *-*-cygwin* | *-*-mingw32* )
661 dnl Check for win32 resources compiler:
662 AC_CHECK_TOOL(WINDRES, windres)
663 ;;
664
665 *-*-darwin* | powerpc-apple-macos* )
666 AC_CHECK_PROG(REZ, Rez, Rez, /Developer/Tools/Rez)
667 AC_CHECK_PROG(SETFILE, SetFile, SetFile, /Developer/Tools/SetFile)
668 ;;
669 esac
670
671 AC_SUBST(WINDRES)
672 AC_SUBST(REZ)
673 AC_SUBST(SETFILE)
674])
675
676dnl ---------------------------------------------------------------------------
677dnl AC_BAKEFILE_PRECOMP_HEADERS
678dnl
679dnl Check for precompiled headers support (GCC >= 3.4)
680dnl ---------------------------------------------------------------------------
681
682AC_DEFUN([AC_BAKEFILE_PRECOMP_HEADERS],
683[
684
685 AC_ARG_ENABLE([precomp-headers],
686 AS_HELP_STRING([--disable-precomp-headers],
687 [don't use precompiled headers even if compiler can]),
688 [bk_use_pch="$enableval"])
689
690 GCC_PCH=0
691 ICC_PCH=0
692 USE_PCH=0
693 BK_MAKE_PCH=""
694
695 case ${BAKEFILE_HOST} in
696 *-*-cygwin* )
697 dnl PCH support is broken in cygwin gcc because of unportable
698 dnl assumptions about mmap() in gcc code which make PCH generation
699 dnl fail erratically; disable PCH completely until this is fixed
700 bk_use_pch="no"
701 ;;
702 esac
703
704 if test "x$bk_use_pch" = "x" -o "x$bk_use_pch" = "xyes" ; then
705 if test "x$GCC" = "xyes"; then
706 dnl test if we have gcc-3.4:
707 AC_MSG_CHECKING([if the compiler supports precompiled headers])
708 AC_TRY_COMPILE([],
709 [
710 #if !defined(__GNUC__) || !defined(__GNUC_MINOR__)
711 There is no PCH support
712 #endif
713 #if (__GNUC__ < 3)
714 There is no PCH support
715 #endif
716 #if (__GNUC__ == 3) && \
717 ((!defined(__APPLE_CC__) && (__GNUC_MINOR__ < 4)) || \
718 ( defined(__APPLE_CC__) && (__GNUC_MINOR__ < 3))) || \
719 ( defined(__INTEL_COMPILER) )
720 There is no PCH support
721 #endif
722 ],
723 [
724 AC_MSG_RESULT([yes])
725 GCC_PCH=1
726 ],
727 [
728 if test "$INTELCXX8" = "yes"; then
729 AC_MSG_RESULT([yes])
730 ICC_PCH=1
731 if test "$INTELCXX10" = "yes"; then
732 ICC_PCH_CREATE_SWITCH="-pch-create"
733 ICC_PCH_USE_SWITCH="-pch-use"
734 else
735 ICC_PCH_CREATE_SWITCH="-create-pch"
736 ICC_PCH_USE_SWITCH="-use-pch"
737 fi
738 else
739 AC_MSG_RESULT([no])
740 fi
741 ])
742 if test $GCC_PCH = 1 -o $ICC_PCH = 1 ; then
743 USE_PCH=1
744 AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH
745 chmod +x bk-make-pch
746 dnl FIXME: make this $(top_builddir)/bk-make-pch once
747 dnl autoconf-2.60 is required (and so top_builddir is
748 dnl never empty):
749 BK_MAKE_PCH="`pwd`/bk-make-pch"
750 fi
751 fi
752 fi
753
754 AC_SUBST(GCC_PCH)
755 AC_SUBST(ICC_PCH)
756 AC_SUBST(ICC_PCH_CREATE_SWITCH)
757 AC_SUBST(ICC_PCH_USE_SWITCH)
758 AC_SUBST(BK_MAKE_PCH)
759])
760
761
762
763dnl ---------------------------------------------------------------------------
764dnl AC_BAKEFILE([autoconf_inc.m4 inclusion])
765dnl
766dnl To be used in configure.in of any project using Bakefile-generated mks
767dnl
768dnl Behaviour can be modified by setting following variables:
769dnl BAKEFILE_CHECK_BASICS set to "no" if you don't want bakefile to
770dnl to perform check for basic tools like ranlib
771dnl BAKEFILE_HOST set this to override host detection, defaults
772dnl to ${host}
773dnl BAKEFILE_FORCE_PLATFORM set to override platform detection
774dnl
775dnl Example usage:
776dnl
777dnl AC_BAKEFILE([FOO(autoconf_inc.m4)])
778dnl
779dnl (replace FOO with m4_include above, aclocal would die otherwise)
780dnl (yes, it's ugly, but thanks to a bug in aclocal, it's the only thing
781dnl we can do...)
782dnl ---------------------------------------------------------------------------
783
784AC_DEFUN([AC_BAKEFILE],
785[
786 AC_PREREQ([2.58])
787
788 dnl We need to always run C/C++ compiler tests, but it's also possible
789 dnl for the user to call these macros manually, hence this instead of
790 dnl simply calling these macros. See http://www.bakefile.org/ticket/64
791 AC_REQUIRE([AC_BAKEFILE_PROG_CC])
792 AC_REQUIRE([AC_BAKEFILE_PROG_CXX])
793
794 if test "x$BAKEFILE_HOST" = "x"; then
795 if test "x${host}" = "x" ; then
796 AC_MSG_ERROR([You must call the autoconf "CANONICAL_HOST" macro in your configure.ac (or .in) file.])
797 fi
798
799 BAKEFILE_HOST="${host}"
800 fi
801
802 if test "x$BAKEFILE_CHECK_BASICS" != "xno"; then
803 AC_BAKEFILE_CHECK_BASIC_STUFF
804 fi
805 AC_BAKEFILE_GNUMAKE
806 AC_BAKEFILE_PLATFORM
807 AC_BAKEFILE_PLATFORM_SPECIFICS
808 AC_BAKEFILE_SUFFIXES
809 AC_BAKEFILE_SHARED_LD
810 AC_BAKEFILE_SHARED_VERSIONS
811 AC_BAKEFILE_DEPS
812 AC_BAKEFILE_RES_COMPILERS
813
814 dnl OBJCFLAGS is set by Autoconf, but OBJCXXFLAGS is not:
815 AC_SUBST(OBJCXXFLAGS)
816
817
818 BAKEFILE_BAKEFILE_M4_VERSION="0.2.9"
819
820 dnl includes autoconf_inc.m4:
821 $1
822
823 if test "$BAKEFILE_AUTOCONF_INC_M4_VERSION" = "" ; then
824 AC_MSG_ERROR([No version found in autoconf_inc.m4 - bakefile macro was changed to take additional argument, perhaps configure.in wasn't updated (see the documentation)?])
825 fi
826
827 if test "$BAKEFILE_BAKEFILE_M4_VERSION" != "$BAKEFILE_AUTOCONF_INC_M4_VERSION" ; then
828 AC_MSG_ERROR([Versions of Bakefile used to generate makefiles ($BAKEFILE_AUTOCONF_INC_M4_VERSION) and configure ($BAKEFILE_BAKEFILE_M4_VERSION) do not match.])
829 fi
830])
831
832
833dnl ---------------------------------------------------------------------------
834dnl Embedded copies of helper scripts follow:
835dnl ---------------------------------------------------------------------------
836
837AC_DEFUN([AC_BAKEFILE_CREATE_FILE_BK_DEPS],
838[
839dnl ===================== bk-deps begins here =====================
840dnl (Created by merge-scripts.py from bk-deps
841dnl file do not edit here!)
842D='$'
843cat <<EOF >bk-deps
844#!/bin/sh
845
846# This script is part of Bakefile (http://www.bakefile.org) autoconf
847# script. It is used to track C/C++ files dependencies in portable way.
848#
849# Permission is given to use this file in any way.
850
851DEPSMODE=${DEPSMODE}
852DEPSFLAG="${DEPSFLAG}"
853DEPSDIRBASE=.deps
854
855if test ${D}DEPSMODE = gcc ; then
856 ${D}* ${D}{DEPSFLAG}
857 status=${D}?
858
859 # determine location of created files:
860 while test ${D}# -gt 0; do
861 case "${D}1" in
862 -o )
863 shift
864 objfile=${D}1
865 ;;
866 -* )
867 ;;
868 * )
869 srcfile=${D}1
870 ;;
871 esac
872 shift
873 done
874 objfilebase=\`basename ${D}objfile\`
875 builddir=\`dirname ${D}objfile\`
876 depfile=\`basename ${D}srcfile | sed -e 's/\\..*${D}/.d/g'\`
877 depobjname=\`echo ${D}depfile |sed -e 's/\\.d/.o/g'\`
878 depsdir=${D}builddir/${D}DEPSDIRBASE
879 mkdir -p ${D}depsdir
880
881 # if the compiler failed, we're done:
882 if test ${D}{status} != 0 ; then
883 rm -f ${D}depfile
884 exit ${D}{status}
885 fi
886
887 # move created file to the location we want it in:
888 if test -f ${D}depfile ; then
889 sed -e "s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d
890 rm -f ${D}depfile
891 else
892 # "g++ -MMD -o fooobj.o foosrc.cpp" produces fooobj.d
893 depfile=\`echo "${D}objfile" | sed -e 's/\\..*${D}/.d/g'\`
894 if test ! -f ${D}depfile ; then
895 # "cxx -MD -o fooobj.o foosrc.cpp" creates fooobj.o.d (Compaq C++)
896 depfile="${D}objfile.d"
897 fi
898 if test -f ${D}depfile ; then
899 sed -e "\\,^${D}objfile,!s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d
900 rm -f ${D}depfile
901 fi
902 fi
903 exit 0
904
905elif test ${D}DEPSMODE = mwcc ; then
906 ${D}* || exit ${D}?
907 # Run mwcc again with -MM and redirect into the dep file we want
908 # NOTE: We can't use shift here because we need ${D}* to be valid
909 prevarg=
910 for arg in ${D}* ; do
911 if test "${D}prevarg" = "-o"; then
912 objfile=${D}arg
913 else
914 case "${D}arg" in
915 -* )
916 ;;
917 * )
918 srcfile=${D}arg
919 ;;
920 esac
921 fi
922 prevarg="${D}arg"
923 done
924
925 objfilebase=\`basename ${D}objfile\`
926 builddir=\`dirname ${D}objfile\`
927 depsdir=${D}builddir/${D}DEPSDIRBASE
928 mkdir -p ${D}depsdir
929
930 ${D}* ${D}DEPSFLAG >${D}{depsdir}/${D}{objfilebase}.d
931 exit 0
932
933elif test ${D}DEPSMODE = unixcc; then
934 ${D}* || exit ${D}?
935 # Run compiler again with deps flag and redirect into the dep file.
936 # It doesn't work if the '-o FILE' option is used, but without it the
937 # dependency file will contain the wrong name for the object. So it is
938 # removed from the command line, and the dep file is fixed with sed.
939 cmd=""
940 while test ${D}# -gt 0; do
941 case "${D}1" in
942 -o )
943 shift
944 objfile=${D}1
945 ;;
946 * )
947 eval arg${D}#=\\${D}1
948 cmd="${D}cmd \\${D}arg${D}#"
949 ;;
950 esac
951 shift
952 done
953
954 objfilebase=\`basename ${D}objfile\`
955 builddir=\`dirname ${D}objfile\`
956 depsdir=${D}builddir/${D}DEPSDIRBASE
957 mkdir -p ${D}depsdir
958
959 eval "${D}cmd ${D}DEPSFLAG" | sed "s|.*:|${D}objfile:|" >${D}{depsdir}/${D}{objfilebase}.d
960 exit 0
961
962else
963 ${D}*
964 exit ${D}?
965fi
966EOF
967dnl ===================== bk-deps ends here =====================
968])
969
970AC_DEFUN([AC_BAKEFILE_CREATE_FILE_SHARED_LD_SH],
971[
972dnl ===================== shared-ld-sh begins here =====================
973dnl (Created by merge-scripts.py from shared-ld-sh
974dnl file do not edit here!)
975D='$'
976cat <<EOF >shared-ld-sh
977#!/bin/sh
978#-----------------------------------------------------------------------------
979#-- Name: distrib/mac/shared-ld-sh
980#-- Purpose: Link a mach-o dynamic shared library for Darwin / Mac OS X
981#-- Author: Gilles Depeyrot
982#-- Copyright: (c) 2002 Gilles Depeyrot
983#-- Licence: any use permitted
984#-----------------------------------------------------------------------------
985
986verbose=0
987args=""
988objects=""
989linking_flag="-dynamiclib"
990ldargs="-r -keep_private_externs -nostdlib"
991
992if test "x${D}CXX" = "x"; then
993 CXX="c++"
994fi
995
996while test ${D}# -gt 0; do
997 case ${D}1 in
998
999 -v)
1000 verbose=1
1001 ;;
1002
1003 -o|-compatibility_version|-current_version|-framework|-undefined|-install_name)
1004 # collect these options and values
1005 args="${D}{args} ${D}1 ${D}2"
1006 shift
1007 ;;
1008
1009 -arch|-isysroot)
1010 # collect these options and values
1011 ldargs="${D}{ldargs} ${D}1 ${D}2"
1012 shift
1013 ;;
1014
1015 -s|-Wl,*)
1016 # collect these load args
1017 ldargs="${D}{ldargs} ${D}1"
1018 ;;
1019
1020 -l*|-L*|-flat_namespace|-headerpad_max_install_names)
1021 # collect these options
1022 args="${D}{args} ${D}1"
1023 ;;
1024
1025 -dynamiclib|-bundle)
1026 linking_flag="${D}1"
1027 ;;
1028
1029 -*)
1030 echo "shared-ld: unhandled option '${D}1'"
1031 exit 1
1032 ;;
1033
1034 *.o | *.a | *.dylib)
1035 # collect object files
1036 objects="${D}{objects} ${D}1"
1037 ;;
1038
1039 *)
1040 echo "shared-ld: unhandled argument '${D}1'"
1041 exit 1
1042 ;;
1043
1044 esac
1045 shift
1046done
1047
1048status=0
1049
1050#
1051# Link one module containing all the others
1052#
1053if test ${D}{verbose} = 1; then
1054 echo "${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o"
1055fi
1056${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o
1057status=${D}?
1058
1059#
1060# Link the shared library from the single module created, but only if the
1061# previous command didn't fail:
1062#
1063if test ${D}{status} = 0; then
1064 if test ${D}{verbose} = 1; then
1065 echo "${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args}"
1066 fi
1067 ${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args}
1068 status=${D}?
1069fi
1070
1071#
1072# Remove intermediate module
1073#
1074rm -f master.${D}${D}.o
1075
1076exit ${D}status
1077EOF
1078dnl ===================== shared-ld-sh ends here =====================
1079])
1080
1081AC_DEFUN([AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH],
1082[
1083dnl ===================== bk-make-pch begins here =====================
1084dnl (Created by merge-scripts.py from bk-make-pch
1085dnl file do not edit here!)
1086D='$'
1087cat <<EOF >bk-make-pch
1088#!/bin/sh
1089
1090# This script is part of Bakefile (http://www.bakefile.org) autoconf
1091# script. It is used to generated precompiled headers.
1092#
1093# Permission is given to use this file in any way.
1094
1095outfile="${D}{1}"
1096header="${D}{2}"
1097shift
1098shift
1099
1100builddir=\`echo ${D}outfile | sed -e 's,/\\.pch/.*${D},,g'\`
1101
1102compiler=""
1103headerfile=""
1104
1105while test ${D}{#} -gt 0; do
1106 add_to_cmdline=1
1107 case "${D}{1}" in
1108 -I* )
1109 incdir=\`echo ${D}{1} | sed -e 's/-I\\(.*\\)/\\1/g'\`
1110 if test "x${D}{headerfile}" = "x" -a -f "${D}{incdir}/${D}{header}" ; then
1111 headerfile="${D}{incdir}/${D}{header}"
1112 fi
1113 ;;
1114 -use-pch|-use_pch|-pch-use )
1115 shift
1116 add_to_cmdline=0
1117 ;;
1118 esac
1119 if test ${D}add_to_cmdline = 1 ; then
1120 compiler="${D}{compiler} ${D}{1}"
1121 fi
1122 shift
1123done
1124
1125if test "x${D}{headerfile}" = "x" ; then
1126 echo "error: can't find header ${D}{header} in include paths" >&2
1127else
1128 if test -f ${D}{outfile} ; then
1129 rm -f ${D}{outfile}
1130 else
1131 mkdir -p \`dirname ${D}{outfile}\`
1132 fi
1133 depsfile="${D}{builddir}/.deps/\`echo ${D}{outfile} | tr '/.' '__'\`.d"
1134 mkdir -p ${D}{builddir}/.deps
1135 if test "x${GCC_PCH}" = "x1" ; then
1136 # can do this because gcc is >= 3.4:
1137 ${D}{compiler} -o ${D}{outfile} -MMD -MF "${D}{depsfile}" "${D}{headerfile}"
1138 elif test "x${ICC_PCH}" = "x1" ; then
1139 filename=pch_gen-${D}${D}
1140 file=${D}{filename}.c
1141 dfile=${D}{filename}.d
1142 cat > ${D}file <<EOT
1143#include "${D}header"
1144EOT
1145 # using -MF icc complains about differing command lines in creation/use
1146 ${D}compiler -c ${ICC_PCH_CREATE_SWITCH} ${D}outfile -MMD ${D}file && \\
1147 sed -e "s,^.*:,${D}outfile:," -e "s, ${D}file,," < ${D}dfile > ${D}depsfile && \\
1148 rm -f ${D}file ${D}dfile ${D}{filename}.o
1149 fi
1150 exit ${D}{?}
1151fi
1152EOF
1153dnl ===================== bk-make-pch ends here =====================
1154])