X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2e91a01aea4566c37b5ebd80fc9501b77d60f30b..c9554803fa46f1749a45585f96e80bc459a5cd88:/build/aclocal/bakefile.m4 diff --git a/build/aclocal/bakefile.m4 b/build/aclocal/bakefile.m4 index a06c7e0f84..88478ca0ae 100644 --- a/build/aclocal/bakefile.m4 +++ b/build/aclocal/bakefile.m4 @@ -1,5 +1,5 @@ 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 @@ -126,8 +126,7 @@ AC_DEFUN([AC_BAKEFILE_PLATFORM], PLATFORM_BEOS=1 ;; * ) - dnl wxWidgets-specific: allow unknown Unix systems - dnl AC_MSG_ERROR([Unknown platform: $BAKEFILE_FORCE_PLATFORM]) + AC_MSG_ERROR([Unknown platform: $BAKEFILE_FORCE_PLATFORM]) ;; esac fi @@ -208,6 +207,10 @@ AC_DEFUN([AC_BAKEFILE_SUFFIXES], 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" @@ -309,27 +312,19 @@ AC_DEFUN([AC_BAKEFILE_SHARED_LD], ;; *-*-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* ) - 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" @@ -341,7 +336,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" - 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). @@ -494,29 +489,33 @@ AC_DEFUN([AC_BAKEFILE_SHARED_VERSIONS], USE_SOVERLINUX=0 USE_SOVERSOLARIS=0 USE_SOVERCYGWIN=0 - USE_SOSYMLINKS=0 + USE_SOTWOSYMLINKS=0 USE_MACVERSION=0 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_SOTWOSYMLINKS=1 ;; *-*-solaris2* ) SONAME_FLAG="-h " USE_SOVERSION=1 USE_SOVERSOLARIS=1 - USE_SOSYMLINKS=1 ;; *-*-darwin* ) USE_MACVERSION=1 USE_SOVERSION=1 - USE_SOSYMLINKS=1 + USE_SOTWOSYMLINKS=1 ;; *-*-cygwin* ) @@ -530,7 +529,7 @@ AC_DEFUN([AC_BAKEFILE_SHARED_VERSIONS], AC_SUBST(USE_SOVERSOLARIS) AC_SUBST(USE_SOVERCYGWIN) AC_SUBST(USE_MACVERSION) - AC_SUBST(USE_SOSYMLINKS) + AC_SUBST(USE_SOTWOSYMLINKS) AC_SUBST(SONAME_FLAG) ]) @@ -645,18 +644,21 @@ AC_DEFUN([AC_BAKEFILE_CHECK_BASIC_STUFF], 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= @@ -745,20 +747,19 @@ AC_DEFUN([AC_BAKEFILE_PRECOMP_HEADERS], 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 @@ -774,6 +775,8 @@ AC_DEFUN([AC_BAKEFILE_PRECOMP_HEADERS], 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) ]) @@ -804,6 +807,12 @@ AC_DEFUN([AC_BAKEFILE], [ 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.]) @@ -824,7 +833,11 @@ AC_DEFUN([AC_BAKEFILE], 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.8" dnl includes autoconf_inc.m4: $1 @@ -852,24 +865,20 @@ D='$' cat <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} -DEPSDIR=.deps DEPSFLAG="${DEPSFLAG}" - -mkdir -p ${D}DEPSDIR +DEPSDIRBASE=.deps 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 ) @@ -884,24 +893,37 @@ if test ${D}DEPSMODE = gcc ; then 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'\` + 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 - 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 - 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 - 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 + elif test ${D}DEPSMODE = mwcc ; then ${D}* || exit ${D}? # Run mwcc again with -MM and redirect into the dep file we want @@ -921,8 +943,15 @@ elif test ${D}DEPSMODE = mwcc ; then 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 + elif test ${D}DEPSMODE = unixcc; then ${D}* || exit ${D}? # Run compiler again with deps flag and redirect into the dep file. @@ -943,8 +972,15 @@ elif test ${D}DEPSMODE = unixcc; then 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 + else ${D}* exit ${D}? @@ -975,6 +1011,10 @@ objects="" 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 @@ -987,6 +1027,12 @@ while test ${D}# -gt 0; do 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 @@ -1027,9 +1073,9 @@ status=0 # 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 -c++ ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o +${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o status=${D}? # @@ -1038,9 +1084,9 @@ status=${D}? # 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 - c++ ${D}{linking_flag} master.${D}${D}.o ${D}{args} + ${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args} status=${D}? fi @@ -1063,7 +1109,7 @@ D='$' cat <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. @@ -1073,6 +1119,8 @@ header="${D}{2}" shift shift +builddir=\`echo ${D}outfile | sed -e 's,/\\.pch/.*${D},,g'\` + compiler="" headerfile="" @@ -1085,7 +1133,7 @@ while test ${D}{#} -gt 0; do headerfile="${D}{incdir}/${D}{header}" fi ;; - -use-pch|-use_pch ) + -use-pch|-use_pch|-pch-use ) shift add_to_cmdline=0 ;; @@ -1104,8 +1152,8 @@ else 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}" @@ -1117,7 +1165,7 @@ else #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