2 dnl This file is part of Bakefile (http://bakefile.sourceforge.net)
4 dnl Copyright (C) 2003-2007 Vaclav Slavik and others
6 dnl Permission is hereby granted, free of charge, to any person obtaining a
7 dnl copy of this software and associated documentation files (the "Software"),
8 dnl to deal in the Software without restriction, including without limitation
9 dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 dnl and/or sell copies of the Software, and to permit persons to whom the
11 dnl Software is furnished to do so, subject to the following conditions:
13 dnl The above copyright notice and this permission notice shall be included in
14 dnl all copies or substantial portions of the Software.
16 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 dnl DEALINGS IN THE SOFTWARE.
26 dnl Support macros for makefiles generated by BAKEFILE.
30 dnl ---------------------------------------------------------------------------
31 dnl Lots of compiler & linker detection code contained here was taken from
32 dnl wxWidgets configure.in script (see http://www.wxwidgets.org)
33 dnl ---------------------------------------------------------------------------
37 dnl ---------------------------------------------------------------------------
38 dnl AC_BAKEFILE_GNUMAKE
41 dnl ---------------------------------------------------------------------------
43 AC_DEFUN([AC_BAKEFILE_GNUMAKE],
45 dnl does make support "-include" (only GNU make does AFAIK)?
46 AC_CACHE_CHECK([if make is GNU make], bakefile_cv_prog_makeisgnu,
48 if ( ${SHELL-sh} -c "${MAKE-make} --version" 2> /dev/null |
49 egrep -s GNU > /dev/null); then
50 bakefile_cv_prog_makeisgnu="yes"
52 bakefile_cv_prog_makeisgnu="no"
56 if test "x$bakefile_cv_prog_makeisgnu" = "xyes"; then
64 dnl ---------------------------------------------------------------------------
65 dnl AC_BAKEFILE_PLATFORM
67 dnl Detects platform and sets PLATFORM_XXX variables accordingly
68 dnl ---------------------------------------------------------------------------
70 AC_DEFUN([AC_BAKEFILE_PLATFORM],
81 if test "x$BAKEFILE_FORCE_PLATFORM" = "x"; then
82 case "${BAKEFILE_HOST}" in
89 *-pc-os2_emx | *-pc-os2-emx )
99 powerpc-apple-macos* )
108 case "$BAKEFILE_FORCE_PLATFORM" in
129 dnl wxWidgets-specific: allow unknown Unix systems
130 dnl AC_MSG_ERROR([Unknown platform: $BAKEFILE_FORCE_PLATFORM])
135 AC_SUBST(PLATFORM_UNIX)
136 AC_SUBST(PLATFORM_WIN32)
137 AC_SUBST(PLATFORM_MSDOS)
138 AC_SUBST(PLATFORM_MAC)
139 AC_SUBST(PLATFORM_MACOS)
140 AC_SUBST(PLATFORM_MACOSX)
141 AC_SUBST(PLATFORM_OS2)
142 AC_SUBST(PLATFORM_BEOS)
146 dnl ---------------------------------------------------------------------------
147 dnl AC_BAKEFILE_PLATFORM_SPECIFICS
149 dnl Sets misc platform-specific settings
150 dnl ---------------------------------------------------------------------------
152 AC_DEFUN([AC_BAKEFILE_PLATFORM_SPECIFICS],
154 AC_ARG_ENABLE([omf], AS_HELP_STRING([--enable-omf],
155 [use OMF object format (OS/2)]),
156 [bk_os2_use_omf="$enableval"])
158 case "${BAKEFILE_HOST}" in
160 dnl For Unix to MacOS X porting instructions, see:
161 dnl http://fink.sourceforge.net/doc/porting/porting.html
162 if test "x$GCC" = "xyes"; then
163 CFLAGS="$CFLAGS -fno-common"
164 CXXFLAGS="$CXXFLAGS -fno-common"
166 if test "x$XLCC" = "xyes"; then
167 CFLAGS="$CFLAGS -qnocommon"
168 CXXFLAGS="$CXXFLAGS -qnocommon"
172 *-pc-os2_emx | *-pc-os2-emx )
173 if test "x$bk_os2_use_omf" = "xyes" ; then
176 LDFLAGS="-Zomf $LDFLAGS"
177 CFLAGS="-Zomf $CFLAGS"
178 CXXFLAGS="-Zomf $CXXFLAGS"
186 LDFLAGS="-L/boot/develop/lib/x86 $LDFLAGS"
191 dnl ---------------------------------------------------------------------------
192 dnl AC_BAKEFILE_SUFFIXES
194 dnl Detects shared various suffixes for shared libraries, libraries, programs,
196 dnl ---------------------------------------------------------------------------
198 AC_DEFUN([AC_BAKEFILE_SUFFIXES],
201 SO_SUFFIX_MODULE="so"
210 case "${BAKEFILE_HOST}" in
213 SO_SUFFIX_MODULE="sl"
217 dnl http://www-1.ibm.com/servers/esdd/articles/gnu.html:
218 dnl Both archive libraries and shared libraries on AIX have an
219 dnl .a extension. This will explain why you can't link with an
220 dnl .so and why it works with the name changed to .a.
226 SO_SUFFIX_MODULE="dll"
227 DLLIMP_SUFFIX="dll.a"
234 SO_SUFFIX_MODULE="dll"
235 DLLIMP_SUFFIX="dll.a"
245 *-pc-os2_emx | *-pc-os2-emx )
247 SO_SUFFIX_MODULE="dll"
248 DLLIMP_SUFFIX=$OS2_LIBEXT
252 LIBEXT=".$OS2_LIBEXT"
257 SO_SUFFIX_MODULE="bundle"
261 if test "x$DLLIMP_SUFFIX" = "x" ; then
262 DLLIMP_SUFFIX="$SO_SUFFIX"
266 AC_SUBST(SO_SUFFIX_MODULE)
267 AC_SUBST(DLLIMP_SUFFIX)
272 AC_SUBST(DLLPREFIX_MODULE)
277 dnl ---------------------------------------------------------------------------
278 dnl AC_BAKEFILE_SHARED_LD
280 dnl Detects command for making shared libraries, substitutes SHARED_LD_CC
281 dnl and SHARED_LD_CXX.
282 dnl ---------------------------------------------------------------------------
284 AC_DEFUN([AC_BAKEFILE_SHARED_LD],
286 dnl the extra compiler flags needed for compilation of shared library
288 if test "x$GCC" = "xyes"; then
289 dnl the switch for gcc is the same under all platforms
293 dnl Defaults for GCC and ELF .so shared libs:
294 SHARED_LD_CC="\$(CC) -shared ${PIC_FLAG} -o"
295 SHARED_LD_CXX="\$(CXX) -shared ${PIC_FLAG} -o"
298 case "${BAKEFILE_HOST}" in
300 dnl default settings are good for gcc but not for the native HP-UX
301 if test "x$GCC" != "xyes"; then
302 dnl no idea why it wants it, but it does
303 LDFLAGS="$LDFLAGS -L/usr/lib"
305 SHARED_LD_CC="${CC} -b -o"
306 SHARED_LD_CXX="${CXX} -b -o"
312 if test "$INTELCC" = "yes"; then
314 elif test "x$SUNCXX" = "xyes"; then
315 SHARED_LD_CC="${CC} -G -o"
316 SHARED_LD_CXX="${CXX} -G -o"
322 if test "x$SUNCXX" = xyes ; then
323 SHARED_LD_CC="${CC} -G -o"
324 SHARED_LD_CXX="${CXX} -G -o"
330 AC_BAKEFILE_CREATE_FILE_SHARED_LD_SH
331 chmod +x shared-ld-sh
333 SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -headerpad_max_install_names -o"
334 SHARED_LD_MODULE_CXX="$SHARED_LD_MODULE_CC"
336 dnl Most apps benefit from being fully binded (its faster and static
337 dnl variables initialized at startup work).
338 dnl This can be done either with the exe linker flag -Wl,-bind_at_load
339 dnl or with a double stage link in order to create a single module
340 dnl "-init _wxWindowsDylibInit" not useful with lazy linking solved
342 dnl If using newer dev tools then there is a -single_module flag that
343 dnl we can use to do this for dylibs, otherwise we'll need to use a helper
344 dnl script. Check the version of gcc to see which way we can go:
345 AC_CACHE_CHECK([for gcc 3.1 or later], bakefile_cv_gcc31, [
348 #if (__GNUC__ < 3) || \
349 ((__GNUC__ == 3) && (__GNUC_MINOR__ < 1))
354 bakefile_cv_gcc31=yes
361 if test "$bakefile_cv_gcc31" = "no"; then
362 dnl Use the shared-ld-sh helper script
363 SHARED_LD_CC="`pwd`/shared-ld-sh -dynamiclib -headerpad_max_install_names -o"
364 SHARED_LD_CXX="$SHARED_LD_CC"
366 dnl Use the -single_module flag and let the linker do it for us
367 SHARED_LD_CC="\${CC} -dynamiclib -single_module -headerpad_max_install_names -o"
368 SHARED_LD_CXX="\${CXX} -dynamiclib -single_module -headerpad_max_install_names -o"
371 if test "x$GCC" == "xyes"; then
372 PIC_FLAG="-dynamic -fPIC"
374 if test "x$XLCC" = "xyes"; then
375 PIC_FLAG="-dynamic -DPIC"
380 if test "x$GCC" = "xyes"; then
381 dnl at least gcc 2.95 warns that -fPIC is ignored when
382 dnl compiling each and every file under AIX which is annoying,
383 dnl so don't use it there (it's useless as AIX runs on
384 dnl position-independent architectures only anyhow)
387 dnl -bexpfull is needed by AIX linker to export all symbols (by
388 dnl default it doesn't export any and even with -bexpall it
389 dnl doesn't export all C++ support symbols, e.g. vtable
390 dnl pointers) but it's only available starting from 5.1 (with
391 dnl maintenance pack 2, whatever this is), see
392 dnl http://www-128.ibm.com/developerworks/eserver/articles/gnu.html
393 case "${BAKEFILE_HOST}" in
395 LD_EXPFULL="-Wl,-bexpfull"
399 SHARED_LD_CC="\$(CC) -shared $LD_EXPFULL -o"
400 SHARED_LD_CXX="\$(CXX) -shared $LD_EXPFULL -o"
402 dnl FIXME: makeC++SharedLib is obsolete, what should we do for
403 dnl recent AIX versions?
404 AC_CHECK_PROG(AIX_CXX_LD, makeC++SharedLib,
405 makeC++SharedLib, /usr/lpp/xlC/bin/makeC++SharedLib)
406 SHARED_LD_CC="$AIX_CC_LD -p 0 -o"
407 SHARED_LD_CXX="$AIX_CXX_LD -p 0 -o"
412 dnl can't use gcc under BeOS for shared library creation because it
413 dnl complains about missing 'main'
414 SHARED_LD_CC="${LD} -nostart -o"
415 SHARED_LD_CXX="${LD} -nostart -o"
419 dnl default settings are ok for gcc
420 if test "x$GCC" != "xyes"; then
425 *-*-cygwin* | *-*-mingw32* )
427 SHARED_LD_CC="\$(CC) -shared -o"
428 SHARED_LD_CXX="\$(CXX) -shared -o"
432 *-pc-os2_emx | *-pc-os2-emx )
433 SHARED_LD_CC="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
434 SHARED_LD_CXX="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
436 AC_BAKEFILE_CREATE_FILE_DLLAR_SH
440 powerpc-apple-macos* | \
441 *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | *-*-k*bsd*-gnu | \
452 AC_MSG_ERROR(unknown system type $BAKEFILE_HOST.)
455 if test "x$PIC_FLAG" != "x" ; then
456 PIC_FLAG="$PIC_FLAG -DPIC"
459 if test "x$SHARED_LD_MODULE_CC" = "x" ; then
460 SHARED_LD_MODULE_CC="$SHARED_LD_CC"
462 if test "x$SHARED_LD_MODULE_CXX" = "x" ; then
463 SHARED_LD_MODULE_CXX="$SHARED_LD_CXX"
466 AC_SUBST(SHARED_LD_CC)
467 AC_SUBST(SHARED_LD_CXX)
468 AC_SUBST(SHARED_LD_MODULE_CC)
469 AC_SUBST(SHARED_LD_MODULE_CXX)
471 AC_SUBST(WINDOWS_IMPLIB)
475 dnl ---------------------------------------------------------------------------
476 dnl AC_BAKEFILE_SHARED_VERSIONS
478 dnl Detects linker options for attaching versions (sonames) to shared libs.
479 dnl ---------------------------------------------------------------------------
481 AC_DEFUN([AC_BAKEFILE_SHARED_VERSIONS],
491 case "${BAKEFILE_HOST}" in
492 *-*-linux* | *-*-freebsd* | *-*-k*bsd*-gnu )
493 if test "x$SUNCXX" = "xyes"; then
496 SONAME_FLAG="-Wl,-soname,"
522 AC_SUBST(USE_SOVERSION)
523 AC_SUBST(USE_SOVERLINUX)
524 AC_SUBST(USE_SOVERSOLARIS)
525 AC_SUBST(USE_SOVERCYGWIN)
526 AC_SUBST(USE_MACVERSION)
527 AC_SUBST(USE_SOSYMLINKS)
528 AC_SUBST(SONAME_FLAG)
532 dnl ---------------------------------------------------------------------------
535 dnl Detects available C/C++ dependency tracking options
536 dnl ---------------------------------------------------------------------------
538 AC_DEFUN([AC_BAKEFILE_DEPS],
540 AC_ARG_ENABLE([dependency-tracking],
541 AS_HELP_STRING([--disable-dependency-tracking],
542 [don't use dependency tracking even if the compiler can]),
543 [bk_use_trackdeps="$enableval"])
545 AC_MSG_CHECKING([for dependency tracking method])
548 if test "x$bk_use_trackdeps" = "xno" ; then
550 AC_MSG_RESULT([disabled])
554 if test "x$GCC" = "xyes"; then
556 case "${BAKEFILE_HOST}" in
558 dnl -cpp-precomp (the default) conflicts with -MMD option
559 dnl used by bk-deps (see also http://developer.apple.com/documentation/Darwin/Conceptual/PortingUnix/compiling/chapter_4_section_3.html)
560 DEPSFLAG="-no-cpp-precomp -MMD"
567 elif test "x$MWCC" = "xyes"; then
570 AC_MSG_RESULT([mwcc])
571 elif test "x$SUNCC" = "xyes"; then
574 AC_MSG_RESULT([Sun cc])
575 elif test "x$SGICC" = "xyes"; then
578 AC_MSG_RESULT([SGI cc])
579 elif test "x$HPCC" = "xyes"; then
582 AC_MSG_RESULT([HP cc])
583 elif test "x$COMPAQCC" = "xyes"; then
586 AC_MSG_RESULT([Compaq cc])
589 AC_MSG_RESULT([none])
592 if test $DEPS_TRACKING = 1 ; then
593 AC_BAKEFILE_CREATE_FILE_BK_DEPS
595 dnl FIXME: make this $(top_builddir)/bk-deps once autoconf-2.60
596 dnl is required (and so top_builddir is never empty):
597 BK_DEPS="`pwd`/bk-deps"
601 AC_SUBST(DEPS_TRACKING)
605 dnl ---------------------------------------------------------------------------
606 dnl AC_BAKEFILE_CHECK_BASIC_STUFF
608 dnl Checks for presence of basic programs, such as C and C++ compiler, "ranlib"
610 dnl ---------------------------------------------------------------------------
612 AC_DEFUN([AC_BAKEFILE_CHECK_BASIC_STUFF],
621 if test "x$SUNCXX" = "xyes"; then
622 dnl Sun C++ compiler requires special way of creating static libs;
623 dnl see here for more details:
624 dnl https://sourceforge.net/tracker/?func=detail&atid=109863&aid=1229751&group_id=9863
628 elif test "x$SGICC" = "xyes"; then
629 dnl Almost the same as above for SGI mipsPro compiler
634 AC_CHECK_TOOL(AR, ar, ar)
639 AC_CHECK_TOOL(STRIP, strip, :)
640 AC_CHECK_TOOL(NM, nm, :)
642 case ${BAKEFILE_HOST} in
644 dnl HP-UX install doesn't handle the "-d" switch so don't
646 INSTALL_DIR="mkdir -p"
649 dnl we must refer to makefile's $(INSTALL) variable and not
650 dnl current value of shell variable, hence the single quoting:
651 INSTALL_DIR='$(INSTALL) -d'
654 AC_SUBST(INSTALL_DIR)
657 case ${BAKEFILE_HOST} in
658 *-*-cygwin* | *-*-mingw32* )
659 LDFLAGS_GUI="-mwindows"
661 AC_SUBST(LDFLAGS_GUI)
665 dnl ---------------------------------------------------------------------------
666 dnl AC_BAKEFILE_RES_COMPILERS
668 dnl Checks for presence of resource compilers for win32 or mac
669 dnl ---------------------------------------------------------------------------
671 AC_DEFUN([AC_BAKEFILE_RES_COMPILERS],
673 case ${BAKEFILE_HOST} in
674 *-*-cygwin* | *-*-mingw32* )
675 dnl Check for win32 resources compiler:
676 AC_CHECK_TOOL(WINDRES, windres)
679 *-*-darwin* | powerpc-apple-macos* )
680 AC_CHECK_PROG(REZ, Rez, Rez, /Developer/Tools/Rez)
681 AC_CHECK_PROG(SETFILE, SetFile, SetFile, /Developer/Tools/SetFile)
690 dnl ---------------------------------------------------------------------------
691 dnl AC_BAKEFILE_PRECOMP_HEADERS
693 dnl Check for precompiled headers support (GCC >= 3.4)
694 dnl ---------------------------------------------------------------------------
696 AC_DEFUN([AC_BAKEFILE_PRECOMP_HEADERS],
699 AC_ARG_ENABLE([precomp-headers],
700 AS_HELP_STRING([--disable-precomp-headers],
701 [don't use precompiled headers even if compiler can]),
702 [bk_use_pch="$enableval"])
709 case ${BAKEFILE_HOST} in
711 dnl PCH support is broken in cygwin gcc because of unportable
712 dnl assumptions about mmap() in gcc code which make PCH generation
713 dnl fail erratically; disable PCH completely until this is fixed
718 if test "x$bk_use_pch" = "x" -o "x$bk_use_pch" = "xyes" ; then
719 if test "x$GCC" = "xyes"; then
720 dnl test if we have gcc-3.4:
721 AC_MSG_CHECKING([if the compiler supports precompiled headers])
724 #if !defined(__GNUC__) || !defined(__GNUC_MINOR__)
725 There is no PCH support
728 There is no PCH support
730 #if (__GNUC__ == 3) && \
731 ((!defined(__APPLE_CC__) && (__GNUC_MINOR__ < 4)) || \
732 ( defined(__APPLE_CC__) && (__GNUC_MINOR__ < 3))) || \
733 ( defined(__INTEL_COMPILER) )
734 There is no PCH support
744 #if !defined(__INTEL_COMPILER) || \
745 (__INTEL_COMPILER < 800)
746 There is no PCH support
757 if test $GCC_PCH = 1 -o $ICC_PCH = 1 ; then
759 AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH
761 dnl FIXME: make this $(top_builddir)/bk-make-pch once
762 dnl autoconf-2.60 is required (and so top_builddir is
764 BK_MAKE_PCH="`pwd`/bk-make-pch"
771 AC_SUBST(BK_MAKE_PCH)
776 dnl ---------------------------------------------------------------------------
777 dnl AC_BAKEFILE([autoconf_inc.m4 inclusion])
779 dnl To be used in configure.in of any project using Bakefile-generated mks
781 dnl Behaviour can be modified by setting following variables:
782 dnl BAKEFILE_CHECK_BASICS set to "no" if you don't want bakefile to
783 dnl to perform check for basic tools like ranlib
784 dnl BAKEFILE_HOST set this to override host detection, defaults
786 dnl BAKEFILE_FORCE_PLATFORM set to override platform detection
790 dnl AC_BAKEFILE([FOO(autoconf_inc.m4)])
792 dnl (replace FOO with m4_include above, aclocal would die otherwise)
793 dnl (yes, it's ugly, but thanks to a bug in aclocal, it's the only thing
795 dnl ---------------------------------------------------------------------------
797 AC_DEFUN([AC_BAKEFILE],
801 if test "x$BAKEFILE_HOST" = "x"; then
802 if test "x${host}" = "x" ; then
803 AC_MSG_ERROR([You must call the autoconf "CANONICAL_HOST" macro in your configure.ac (or .in) file.])
806 BAKEFILE_HOST="${host}"
809 if test "x$BAKEFILE_CHECK_BASICS" != "xno"; then
810 AC_BAKEFILE_CHECK_BASIC_STUFF
814 AC_BAKEFILE_PLATFORM_SPECIFICS
816 AC_BAKEFILE_SHARED_LD
817 AC_BAKEFILE_SHARED_VERSIONS
819 AC_BAKEFILE_RES_COMPILERS
821 BAKEFILE_BAKEFILE_M4_VERSION="0.2.2"
823 dnl includes autoconf_inc.m4:
826 if test "$BAKEFILE_AUTOCONF_INC_M4_VERSION" = "" ; then
827 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)?])
830 if test "$BAKEFILE_BAKEFILE_M4_VERSION" != "$BAKEFILE_AUTOCONF_INC_M4_VERSION" ; then
831 AC_MSG_ERROR([Versions of Bakefile used to generate makefiles ($BAKEFILE_AUTOCONF_INC_M4_VERSION) and configure ($BAKEFILE_BAKEFILE_M4_VERSION) do not match.])
836 dnl ---------------------------------------------------------------------------
837 dnl Embedded copies of helper scripts follow:
838 dnl ---------------------------------------------------------------------------
840 AC_DEFUN([AC_BAKEFILE_CREATE_FILE_BK_DEPS],
842 dnl ===================== bk-deps begins here =====================
843 dnl (Created by merge-scripts.py from bk-deps
844 dnl file do not edit here!)
849 # This script is part of Bakefile (http://bakefile.sourceforge.net) autoconf
850 # script. It is used to track C/C++ files dependencies in portable way.
852 # Permission is given to use this file in any way.
856 DEPSFLAG="${DEPSFLAG}"
860 if test ${D}DEPSMODE = gcc ; then
863 if test ${D}{status} != 0 ; then
866 # move created file to the location we want it in:
867 while test ${D}# -gt 0; do
881 depfile=\`basename ${D}srcfile | sed -e 's/\\..*${D}/.d/g'\`
882 depobjname=\`echo ${D}depfile |sed -e 's/\\.d/.o/g'\`
883 if test -f ${D}depfile ; then
884 sed -e "s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{DEPSDIR}/${D}{objfile}.d
887 # "g++ -MMD -o fooobj.o foosrc.cpp" produces fooobj.d
888 depfile=\`basename ${D}objfile | sed -e 's/\\..*${D}/.d/g'\`
889 if test ! -f ${D}depfile ; then
890 # "cxx -MD -o fooobj.o foosrc.cpp" creates fooobj.o.d (Compaq C++)
891 depfile="${D}objfile.d"
893 if test -f ${D}depfile ; then
894 sed -e "/^${D}objfile/!s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{DEPSDIR}/${D}{objfile}.d
899 elif test ${D}DEPSMODE = mwcc ; then
901 # Run mwcc again with -MM and redirect into the dep file we want
902 # NOTE: We can't use shift here because we need ${D}* to be valid
904 for arg in ${D}* ; do
905 if test "${D}prevarg" = "-o"; then
918 ${D}* ${D}DEPSFLAG >${D}{DEPSDIR}/${D}{objfile}.d
920 elif test ${D}DEPSMODE = unixcc; then
922 # Run compiler again with deps flag and redirect into the dep file.
923 # It doesn't work if the '-o FILE' option is used, but without it the
924 # dependency file will contain the wrong name for the object. So it is
925 # removed from the command line, and the dep file is fixed with sed.
927 while test ${D}# -gt 0; do
934 eval arg${D}#=\\${D}1
935 cmd="${D}cmd \\${D}arg${D}#"
940 eval "${D}cmd ${D}DEPSFLAG" | sed "s|.*:|${D}objfile:|" >${D}{DEPSDIR}/${D}{objfile}.d
947 dnl ===================== bk-deps ends here =====================
950 AC_DEFUN([AC_BAKEFILE_CREATE_FILE_SHARED_LD_SH],
952 dnl ===================== shared-ld-sh begins here =====================
953 dnl (Created by merge-scripts.py from shared-ld-sh
954 dnl file do not edit here!)
956 cat <<EOF >shared-ld-sh
958 #-----------------------------------------------------------------------------
959 #-- Name: distrib/mac/shared-ld-sh
960 #-- Purpose: Link a mach-o dynamic shared library for Darwin / Mac OS X
961 #-- Author: Gilles Depeyrot
962 #-- Copyright: (c) 2002 Gilles Depeyrot
963 #-- Licence: any use permitted
964 #-----------------------------------------------------------------------------
969 linking_flag="-dynamiclib"
970 ldargs="-r -keep_private_externs -nostdlib"
972 while test ${D}# -gt 0; do
979 -o|-compatibility_version|-current_version|-framework|-undefined|-install_name)
980 # collect these options and values
981 args="${D}{args} ${D}1 ${D}2"
986 # collect these load args
987 ldargs="${D}{ldargs} ${D}1"
990 -l*|-L*|-flat_namespace|-headerpad_max_install_names)
991 # collect these options
992 args="${D}{args} ${D}1"
1000 echo "shared-ld: unhandled option '${D}1'"
1004 *.o | *.a | *.dylib)
1005 # collect object files
1006 objects="${D}{objects} ${D}1"
1010 echo "shared-ld: unhandled argument '${D}1'"
1021 # Link one module containing all the others
1023 if test ${D}{verbose} = 1; then
1024 echo "c++ ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o"
1026 c++ ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o
1030 # Link the shared library from the single module created, but only if the
1031 # previous command didn't fail:
1033 if test ${D}{status} = 0; then
1034 if test ${D}{verbose} = 1; then
1035 echo "c++ ${D}{linking_flag} master.${D}${D}.o ${D}{args}"
1037 c++ ${D}{linking_flag} master.${D}${D}.o ${D}{args}
1042 # Remove intermediate module
1044 rm -f master.${D}${D}.o
1048 dnl ===================== shared-ld-sh ends here =====================
1051 AC_DEFUN([AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH],
1053 dnl ===================== bk-make-pch begins here =====================
1054 dnl (Created by merge-scripts.py from bk-make-pch
1055 dnl file do not edit here!)
1057 cat <<EOF >bk-make-pch
1060 # This script is part of Bakefile (http://bakefile.sourceforge.net) autoconf
1061 # script. It is used to generated precompiled headers.
1063 # Permission is given to use this file in any way.
1073 while test ${D}{#} -gt 0; do
1077 incdir=\`echo ${D}{1} | sed -e 's/-I\\(.*\\)/\\1/g'\`
1078 if test "x${D}{headerfile}" = "x" -a -f "${D}{incdir}/${D}{header}" ; then
1079 headerfile="${D}{incdir}/${D}{header}"
1087 if test ${D}add_to_cmdline = 1 ; then
1088 compiler="${D}{compiler} ${D}{1}"
1093 if test "x${D}{headerfile}" = "x" ; then
1094 echo "error: can't find header ${D}{header} in include paths" >&2
1096 if test -f ${D}{outfile} ; then
1099 mkdir -p \`dirname ${D}{outfile}\`
1101 depsfile=".deps/\`echo ${D}{outfile} | tr '/.' '__'\`.d"
1103 if test "x${GCC_PCH}" = "x1" ; then
1104 # can do this because gcc is >= 3.4:
1105 ${D}{compiler} -o ${D}{outfile} -MMD -MF "${D}{depsfile}" "${D}{headerfile}"
1106 elif test "x${ICC_PCH}" = "x1" ; then
1107 filename=pch_gen-${D}${D}
1108 file=${D}{filename}.c
1109 dfile=${D}{filename}.d
1110 cat > ${D}file <<EOT
1111 #include "${D}header"
1113 # using -MF icc complains about differing command lines in creation/use
1114 ${D}compiler -c -create_pch ${D}outfile -MMD ${D}file && \\
1115 sed -e "s,^.*:,${D}outfile:," -e "s, ${D}file,," < ${D}dfile > ${D}depsfile && \\
1116 rm -f ${D}file ${D}dfile ${D}{filename}.o
1121 dnl ===================== bk-make-pch ends here =====================