]> git.saurik.com Git - wxWidgets.git/blobdiff - build/aclocal/bakefile.m4
Added build/msw/wx_propgrid.dsp to vc manifest (I hope this fixes #10564)
[wxWidgets.git] / build / aclocal / bakefile.m4
index a06c7e0f84312598841f152c16f3a68100b08854..737f1ce429c1da558662c474de32254c5e411b97 100644 (file)
@@ -1,5 +1,5 @@
 dnl
 dnl
-dnl  This file is part of Bakefile (http://bakefile.sourceforge.net)
+dnl  This file is part of Bakefile (http://www.bakefile.org)
 dnl
 dnl  Copyright (C) 2003-2007 Vaclav Slavik and others
 dnl
 dnl
 dnl  Copyright (C) 2003-2007 Vaclav Slavik and others
 dnl
@@ -208,6 +208,10 @@ AC_DEFUN([AC_BAKEFILE_SUFFIXES],
     dlldir="$libdir"
 
     case "${BAKEFILE_HOST}" in
     dlldir="$libdir"
 
     case "${BAKEFILE_HOST}" in
+        dnl PA-RISC HP systems used .sl but IA64 use ELF-64 and so use the
+        dnl standard .so extension
+        ia64-hp-hpux* )
+        ;;
         *-hp-hpux* )
             SO_SUFFIX="sl"
             SO_SUFFIX_MODULE="sl"
         *-hp-hpux* )
             SO_SUFFIX="sl"
             SO_SUFFIX_MODULE="sl"
@@ -309,27 +313,19 @@ AC_DEFUN([AC_BAKEFILE_SHARED_LD],
       ;;
 
       *-*-linux* )
       ;;
 
       *-*-linux* )
-        if test "x$GCC" != "xyes"; then
-            AC_CACHE_CHECK([for Intel compiler], bakefile_cv_prog_icc,
-            [
-                AC_TRY_COMPILE([],
-                    [
-                        #ifndef __INTEL_COMPILER
-                        This is not ICC
-                        #endif
-                    ],
-                    bakefile_cv_prog_icc=yes,
-                    bakefile_cv_prog_icc=no
-                )
-            ])
-            if test "$bakefile_cv_prog_icc" = "yes"; then
-                PIC_FLAG="-KPIC"
-            fi
+        dnl newer icc versions use -fPIC just as gcc does and, in fact, the
+        dnl newest (v10+) ones don't even understand -KPIC any longer
+        if test "$INTELCC" = "yes" -a "$INTELCC8" != "yes"; then
+            PIC_FLAG="-KPIC"
+        elif test "x$SUNCXX" = "xyes"; then
+            SHARED_LD_CC="${CC} -G -o"
+            SHARED_LD_CXX="${CXX} -G -o"
+            PIC_FLAG="-KPIC"
         fi
       ;;
 
       *-*-solaris2* )
         fi
       ;;
 
       *-*-solaris2* )
-        if test "x$GCC" != xyes ; then
+        if test "x$SUNCXX" = xyes ; then
             SHARED_LD_CC="${CC} -G -o"
             SHARED_LD_CXX="${CXX} -G -o"
             PIC_FLAG="-KPIC"
             SHARED_LD_CC="${CC} -G -o"
             SHARED_LD_CXX="${CXX} -G -o"
             PIC_FLAG="-KPIC"
@@ -341,7 +337,7 @@ AC_DEFUN([AC_BAKEFILE_SHARED_LD],
         chmod +x shared-ld-sh
 
         SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -headerpad_max_install_names -o"
         chmod +x shared-ld-sh
 
         SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -headerpad_max_install_names -o"
-        SHARED_LD_MODULE_CXX="$SHARED_LD_MODULE_CC"
+        SHARED_LD_MODULE_CXX="CXX=\$(CXX) $SHARED_LD_MODULE_CC"
 
         dnl Most apps benefit from being fully binded (its faster and static
         dnl variables initialized at startup work).
 
         dnl Most apps benefit from being fully binded (its faster and static
         dnl variables initialized at startup work).
@@ -499,8 +495,13 @@ AC_DEFUN([AC_BAKEFILE_SHARED_VERSIONS],
     SONAME_FLAG=
 
     case "${BAKEFILE_HOST}" in
     SONAME_FLAG=
 
     case "${BAKEFILE_HOST}" in
-      *-*-linux* | *-*-freebsd* | *-*-k*bsd*-gnu )
-        SONAME_FLAG="-Wl,-soname,"
+      *-*-linux* | *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \
+      *-*-k*bsd*-gnu | *-*-mirbsd* )
+        if test "x$SUNCXX" = "xyes"; then
+            SONAME_FLAG="-h "
+        else
+            SONAME_FLAG="-Wl,-soname,"
+        fi
         USE_SOVERSION=1
         USE_SOVERLINUX=1
         USE_SOSYMLINKS=1
         USE_SOVERSION=1
         USE_SOVERLINUX=1
         USE_SOSYMLINKS=1
@@ -645,18 +646,21 @@ AC_DEFUN([AC_BAKEFILE_CHECK_BASIC_STUFF],
     AC_CHECK_TOOL(STRIP, strip, :)
     AC_CHECK_TOOL(NM, nm, :)
 
     AC_CHECK_TOOL(STRIP, strip, :)
     AC_CHECK_TOOL(NM, nm, :)
 
-    case ${BAKEFILE_HOST} in
-        *-hp-hpux* )
-            dnl HP-UX install doesn't handle the "-d" switch so don't
-            dnl use it there
-            INSTALL_DIR="mkdir -p"
-            ;;
-        * )
-            dnl we must refer to makefile's $(INSTALL) variable and not
-            dnl current value of shell variable, hence the single quoting:
-            INSTALL_DIR='$(INSTALL) -d'
-            ;;
-    esac
+    dnl This check is necessary because "install -d" doesn't exist on
+    dnl all platforms (e.g. HP/UX), see http://www.bakefile.org/ticket/80
+    AC_MSG_CHECKING([for command to install directories])
+    INSTALL_TEST_DIR=acbftest$$
+    $INSTALL -d $INSTALL_TEST_DIR > /dev/null 2>&1
+    if test $? = 0 -a -d $INSTALL_TEST_DIR; then
+        rmdir $INSTALL_TEST_DIR
+        dnl we must refer to makefile's $(INSTALL) variable and not
+        dnl current value of shell variable, hence the single quoting:
+        INSTALL_DIR='$(INSTALL) -d'
+        AC_MSG_RESULT([$INSTALL -d])
+    else
+        INSTALL_DIR="mkdir -p"
+        AC_MSG_RESULT([mkdir -p])
+    fi
     AC_SUBST(INSTALL_DIR)
 
     LDFLAGS_GUI=
     AC_SUBST(INSTALL_DIR)
 
     LDFLAGS_GUI=
@@ -745,20 +749,19 @@ AC_DEFUN([AC_BAKEFILE_PRECOMP_HEADERS],
                     GCC_PCH=1
                 ],
                 [
                     GCC_PCH=1
                 ],
                 [
-                    AC_TRY_COMPILE([],
-                        [
-                            #if !defined(__INTEL_COMPILER) || \
-                                (__INTEL_COMPILER < 800)
-                                There is no PCH support
-                            #endif
-                        ],
-                        [
-                            AC_MSG_RESULT([yes])
-                            ICC_PCH=1
-                        ],
-                        [
-                            AC_MSG_RESULT([no])
-                        ])
+                    if test "$INTELCXX8" = "yes"; then
+                        AC_MSG_RESULT([yes])
+                        ICC_PCH=1
+                        if test "$INTELCXX10" = "yes"; then
+                            ICC_PCH_CREATE_SWITCH="-pch-create"
+                            ICC_PCH_USE_SWITCH="-pch-use"
+                        else
+                            ICC_PCH_CREATE_SWITCH="-create-pch"
+                            ICC_PCH_USE_SWITCH="-use-pch"
+                        fi
+                    else
+                        AC_MSG_RESULT([no])
+                    fi
                 ])
             if test $GCC_PCH = 1 -o $ICC_PCH = 1 ; then
                 USE_PCH=1
                 ])
             if test $GCC_PCH = 1 -o $ICC_PCH = 1 ; then
                 USE_PCH=1
@@ -774,6 +777,8 @@ AC_DEFUN([AC_BAKEFILE_PRECOMP_HEADERS],
 
     AC_SUBST(GCC_PCH)
     AC_SUBST(ICC_PCH)
 
     AC_SUBST(GCC_PCH)
     AC_SUBST(ICC_PCH)
+    AC_SUBST(ICC_PCH_CREATE_SWITCH)
+    AC_SUBST(ICC_PCH_USE_SWITCH)
     AC_SUBST(BK_MAKE_PCH)
 ])
 
     AC_SUBST(BK_MAKE_PCH)
 ])
 
@@ -804,6 +809,12 @@ AC_DEFUN([AC_BAKEFILE],
 [
     AC_PREREQ([2.58])
 
 [
     AC_PREREQ([2.58])
 
+    dnl We need to always run C/C++ compiler tests, but it's also possible
+    dnl for the user to call these macros manually, hence this instead of
+    dnl simply calling these macros. See http://www.bakefile.org/ticket/64
+    AC_REQUIRE([AC_BAKEFILE_PROG_CC])
+    AC_REQUIRE([AC_BAKEFILE_PROG_CXX])
+
     if test "x$BAKEFILE_HOST" = "x"; then
                if test "x${host}" = "x" ; then
                        AC_MSG_ERROR([You must call the autoconf "CANONICAL_HOST" macro in your configure.ac (or .in) file.])
     if test "x$BAKEFILE_HOST" = "x"; then
                if test "x${host}" = "x" ; then
                        AC_MSG_ERROR([You must call the autoconf "CANONICAL_HOST" macro in your configure.ac (or .in) file.])
@@ -824,7 +835,11 @@ AC_DEFUN([AC_BAKEFILE],
     AC_BAKEFILE_DEPS
     AC_BAKEFILE_RES_COMPILERS
 
     AC_BAKEFILE_DEPS
     AC_BAKEFILE_RES_COMPILERS
 
-    BAKEFILE_BAKEFILE_M4_VERSION="0.2.2"
+    dnl OBJCFLAGS is set by Autoconf, but OBJCXXFLAGS is not:
+    AC_SUBST(OBJCXXFLAGS)
+
+
+    BAKEFILE_BAKEFILE_M4_VERSION="0.2.5"
 
     dnl includes autoconf_inc.m4:
     $1
 
     dnl includes autoconf_inc.m4:
     $1
@@ -852,24 +867,20 @@ D='$'
 cat <<EOF >bk-deps
 #!/bin/sh
 
 cat <<EOF >bk-deps
 #!/bin/sh
 
-# This script is part of Bakefile (http://bakefile.sourceforge.net) autoconf
+# This script is part of Bakefile (http://www.bakefile.org) autoconf
 # script. It is used to track C/C++ files dependencies in portable way.
 #
 # Permission is given to use this file in any way.
 
 DEPSMODE=${DEPSMODE}
 # script. It is used to track C/C++ files dependencies in portable way.
 #
 # Permission is given to use this file in any way.
 
 DEPSMODE=${DEPSMODE}
-DEPSDIR=.deps
 DEPSFLAG="${DEPSFLAG}"
 DEPSFLAG="${DEPSFLAG}"
-
-mkdir -p ${D}DEPSDIR
+DEPSDIRBASE=.deps
 
 if test ${D}DEPSMODE = gcc ; then
     ${D}* ${D}{DEPSFLAG}
     status=${D}?
 
 if test ${D}DEPSMODE = gcc ; then
     ${D}* ${D}{DEPSFLAG}
     status=${D}?
-    if test ${D}{status} != 0 ; then
-        exit ${D}{status}
-    fi
-    # move created file to the location we want it in:
+
+    # determine location of created files:
     while test ${D}# -gt 0; do
         case "${D}1" in
             -o )
     while test ${D}# -gt 0; do
         case "${D}1" in
             -o )
@@ -884,24 +895,37 @@ if test ${D}DEPSMODE = gcc ; then
         esac
         shift
     done
         esac
         shift
     done
+    objfilebase=\`basename ${D}objfile\`
+    builddir=\`dirname ${D}objfile\`
     depfile=\`basename ${D}srcfile | sed -e 's/\\..*${D}/.d/g'\`
     depobjname=\`echo ${D}depfile |sed -e 's/\\.d/.o/g'\`
     depfile=\`basename ${D}srcfile | sed -e 's/\\..*${D}/.d/g'\`
     depobjname=\`echo ${D}depfile |sed -e 's/\\.d/.o/g'\`
+    depsdir=${D}builddir/${D}DEPSDIRBASE
+    mkdir -p ${D}depsdir
+
+    # if the compiler failed, we're done:
+    if test ${D}{status} != 0 ; then
+        rm -f ${D}depfile
+        exit ${D}{status}
+    fi
+
+    # move created file to the location we want it in:
     if test -f ${D}depfile ; then
     if test -f ${D}depfile ; then
-        sed -e "s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{DEPSDIR}/${D}{objfile}.d
+        sed -e "s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d
         rm -f ${D}depfile
     else
         # "g++ -MMD -o fooobj.o foosrc.cpp" produces fooobj.d
         rm -f ${D}depfile
     else
         # "g++ -MMD -o fooobj.o foosrc.cpp" produces fooobj.d
-        depfile=\`basename ${D}objfile | sed -e 's/\\..*${D}/.d/g'\`
+        depfile=\`echo "${D}objfile" | sed -e 's/\\..*${D}/.d/g'\`
         if test ! -f ${D}depfile ; then
             # "cxx -MD -o fooobj.o foosrc.cpp" creates fooobj.o.d (Compaq C++)
             depfile="${D}objfile.d"
         fi
         if test -f ${D}depfile ; then
         if test ! -f ${D}depfile ; then
             # "cxx -MD -o fooobj.o foosrc.cpp" creates fooobj.o.d (Compaq C++)
             depfile="${D}objfile.d"
         fi
         if test -f ${D}depfile ; then
-            sed -e "/^${D}objfile/!s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{DEPSDIR}/${D}{objfile}.d
+            sed -e "\\,^${D}objfile,!s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d
             rm -f ${D}depfile
         fi
     fi
     exit 0
             rm -f ${D}depfile
         fi
     fi
     exit 0
+
 elif test ${D}DEPSMODE = mwcc ; then
     ${D}* || exit ${D}?
     # Run mwcc again with -MM and redirect into the dep file we want
 elif test ${D}DEPSMODE = mwcc ; then
     ${D}* || exit ${D}?
     # Run mwcc again with -MM and redirect into the dep file we want
@@ -921,8 +945,15 @@ elif test ${D}DEPSMODE = mwcc ; then
         fi
         prevarg="${D}arg"
     done
         fi
         prevarg="${D}arg"
     done
-    ${D}* ${D}DEPSFLAG >${D}{DEPSDIR}/${D}{objfile}.d
+
+    objfilebase=\`basename ${D}objfile\`
+    builddir=\`dirname ${D}objfile\`
+    depsdir=${D}builddir/${D}DEPSDIRBASE
+    mkdir -p ${D}depsdir
+
+    ${D}* ${D}DEPSFLAG >${D}{depsdir}/${D}{objfilebase}.d
     exit 0
     exit 0
+
 elif test ${D}DEPSMODE = unixcc; then
     ${D}* || exit ${D}?
     # Run compiler again with deps flag and redirect into the dep file.
 elif test ${D}DEPSMODE = unixcc; then
     ${D}* || exit ${D}?
     # Run compiler again with deps flag and redirect into the dep file.
@@ -943,8 +974,15 @@ elif test ${D}DEPSMODE = unixcc; then
         esac
         shift
     done
         esac
         shift
     done
-    eval "${D}cmd ${D}DEPSFLAG" | sed "s|.*:|${D}objfile:|" >${D}{DEPSDIR}/${D}{objfile}.d
+
+    objfilebase=\`basename ${D}objfile\`
+    builddir=\`dirname ${D}objfile\`
+    depsdir=${D}builddir/${D}DEPSDIRBASE
+    mkdir -p ${D}depsdir
+
+    eval "${D}cmd ${D}DEPSFLAG" | sed "s|.*:|${D}objfile:|" >${D}{depsdir}/${D}{objfilebase}.d
     exit 0
     exit 0
+
 else
     ${D}*
     exit ${D}?
 else
     ${D}*
     exit ${D}?
@@ -975,6 +1013,10 @@ objects=""
 linking_flag="-dynamiclib"
 ldargs="-r -keep_private_externs -nostdlib"
 
 linking_flag="-dynamiclib"
 ldargs="-r -keep_private_externs -nostdlib"
 
+if test "x${D}CXX" = "x"; then
+    CXX="c++"
+fi
+
 while test ${D}# -gt 0; do
     case ${D}1 in
 
 while test ${D}# -gt 0; do
     case ${D}1 in
 
@@ -987,6 +1029,12 @@ while test ${D}# -gt 0; do
         args="${D}{args} ${D}1 ${D}2"
         shift
         ;;
         args="${D}{args} ${D}1 ${D}2"
         shift
         ;;
+       
+       -arch|-isysroot)
+        # collect these options and values
+        ldargs="${D}{ldargs} ${D}1 ${D}2"
+        shift
+        ;;
 
        -s|-Wl,*)
         # collect these load args
 
        -s|-Wl,*)
         # collect these load args
@@ -1027,9 +1075,9 @@ status=0
 # Link one module containing all the others
 #
 if test ${D}{verbose} = 1; then
 # Link one module containing all the others
 #
 if test ${D}{verbose} = 1; then
-    echo "c++ ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o"
+    echo "${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o"
 fi
 fi
-c++ ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o
+${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o
 status=${D}?
 
 #
 status=${D}?
 
 #
@@ -1038,9 +1086,9 @@ status=${D}?
 #
 if test ${D}{status} = 0; then
     if test ${D}{verbose} = 1; then
 #
 if test ${D}{status} = 0; then
     if test ${D}{verbose} = 1; then
-        echo "c++ ${D}{linking_flag} master.${D}${D}.o ${D}{args}"
+        echo "${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args}"
     fi
     fi
-    c++ ${D}{linking_flag} master.${D}${D}.o ${D}{args}
+    ${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args}
     status=${D}?
 fi
 
     status=${D}?
 fi
 
@@ -1063,7 +1111,7 @@ D='$'
 cat <<EOF >bk-make-pch
 #!/bin/sh
 
 cat <<EOF >bk-make-pch
 #!/bin/sh
 
-# This script is part of Bakefile (http://bakefile.sourceforge.net) autoconf
+# This script is part of Bakefile (http://www.bakefile.org) autoconf
 # script. It is used to generated precompiled headers.
 #
 # Permission is given to use this file in any way.
 # script. It is used to generated precompiled headers.
 #
 # Permission is given to use this file in any way.
@@ -1073,6 +1121,8 @@ header="${D}{2}"
 shift
 shift
 
 shift
 shift
 
+builddir=\`echo ${D}outfile | sed -e 's,/\\.pch/.*${D},,g'\`
+
 compiler=""
 headerfile=""
 
 compiler=""
 headerfile=""
 
@@ -1085,7 +1135,7 @@ while test ${D}{#} -gt 0; do
                 headerfile="${D}{incdir}/${D}{header}"
             fi
         ;;
                 headerfile="${D}{incdir}/${D}{header}"
             fi
         ;;
-        -use-pch|-use_pch )
+        -use-pch|-use_pch|-pch-use )
             shift
             add_to_cmdline=0
         ;;
             shift
             add_to_cmdline=0
         ;;
@@ -1104,8 +1154,8 @@ else
     else
         mkdir -p \`dirname ${D}{outfile}\`
     fi
     else
         mkdir -p \`dirname ${D}{outfile}\`
     fi
-    depsfile=".deps/\`echo ${D}{outfile} | tr '/.' '__'\`.d"
-    mkdir -p .deps
+    depsfile="${D}{builddir}/.deps/\`echo ${D}{outfile} | tr '/.' '__'\`.d"
+    mkdir -p ${D}{builddir}/.deps
     if test "x${GCC_PCH}" = "x1" ; then
         # can do this because gcc is >= 3.4:
         ${D}{compiler} -o ${D}{outfile} -MMD -MF "${D}{depsfile}" "${D}{headerfile}"
     if test "x${GCC_PCH}" = "x1" ; then
         # can do this because gcc is >= 3.4:
         ${D}{compiler} -o ${D}{outfile} -MMD -MF "${D}{depsfile}" "${D}{headerfile}"
@@ -1117,7 +1167,7 @@ else
 #include "${D}header"
 EOT
         # using -MF icc complains about differing command lines in creation/use
 #include "${D}header"
 EOT
         # using -MF icc complains about differing command lines in creation/use
-        ${D}compiler -c -create_pch ${D}outfile -MMD ${D}file && \\
+        ${D}compiler -c ${ICC_PCH_CREATE_SWITCH} ${D}outfile -MMD ${D}file && \\
           sed -e "s,^.*:,${D}outfile:," -e "s, ${D}file,," < ${D}dfile > ${D}depsfile && \\
           rm -f ${D}file ${D}dfile ${D}{filename}.o
     fi
           sed -e "s,^.*:,${D}outfile:," -e "s, ${D}file,," < ${D}dfile > ${D}depsfile && \\
           rm -f ${D}file ${D}dfile ${D}{filename}.o
     fi