X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9435c35e401468a5380378acd8ebeb1ad757e982..04a123c642b0fc589e29cdd507faf11b85973f79:/build/aclocal/bakefile.m4 diff --git a/build/aclocal/bakefile.m4 b/build/aclocal/bakefile.m4 index e35ca5426f..8d539f04be 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,7 +312,9 @@ AC_DEFUN([AC_BAKEFILE_SHARED_LD], ;; *-*-linux* ) - if test "$INTELCC" = "yes"; then + 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" @@ -331,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). @@ -484,12 +489,13 @@ 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 ) + *-*-linux* | *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \ + *-*-k*bsd*-gnu | *-*-mirbsd* ) if test "x$SUNCXX" = "xyes"; then SONAME_FLAG="-h " else @@ -497,20 +503,19 @@ AC_DEFUN([AC_BAKEFILE_SHARED_VERSIONS], 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* ) @@ -524,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) ]) @@ -553,16 +558,7 @@ AC_DEFUN([AC_BAKEFILE_DEPS], if test "x$GCC" = "xyes"; then DEPSMODE=gcc - case "${BAKEFILE_HOST}" in - *-*-darwin* ) - dnl -cpp-precomp (the default) conflicts with -MMD option - dnl used by bk-deps (see also http://developer.apple.com/documentation/Darwin/Conceptual/PortingUnix/compiling/chapter_4_section_3.html) - DEPSFLAG="-no-cpp-precomp -MMD" - ;; - * ) - DEPSFLAG="-MMD" - ;; - esac + DEPSFLAG="-MMD" AC_MSG_RESULT([gcc]) elif test "x$MWCC" = "xyes"; then DEPSMODE=mwcc @@ -639,18 +635,8 @@ 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 Don't use `install -d`, see http://trac.wxwidgets.org/ticket/13452 + INSTALL_DIR="mkdir -p" AC_SUBST(INSTALL_DIR) LDFLAGS_GUI= @@ -739,20 +725,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 @@ -768,6 +753,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) ]) @@ -798,6 +785,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.]) @@ -818,7 +811,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.9" dnl includes autoconf_inc.m4: $1 @@ -846,24 +843,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 ) @@ -878,24 +871,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 @@ -915,8 +921,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. @@ -937,8 +950,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}? @@ -969,6 +989,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 @@ -981,6 +1005,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 @@ -1021,9 +1051,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}? # @@ -1032,9 +1062,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 @@ -1057,7 +1087,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. @@ -1067,6 +1097,8 @@ header="${D}{2}" shift shift +builddir=\`echo ${D}outfile | sed -e 's,/\\.pch/.*${D},,g'\` + compiler="" headerfile="" @@ -1079,7 +1111,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 ;; @@ -1098,8 +1130,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}" @@ -1111,7 +1143,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