📄 bakefile.m4
字号:
fi
;;
*-*-beos* )
dnl can't use gcc under BeOS for shared library creation because it
dnl complains about missing 'main'
SHARED_LD_CC="${LD} -nostart -o"
SHARED_LD_CXX="${LD} -nostart -o"
;;
*-*-irix* )
dnl default settings are ok for gcc
if test "x$GCC" != "xyes"; then
PIC_FLAG="-KPIC"
fi
;;
*-*-cygwin* | *-*-mingw32* )
PIC_FLAG=""
SHARED_LD_CC="\$(CC) -shared -o"
SHARED_LD_CXX="\$(CXX) -shared -o"
WINDOWS_IMPLIB=1
;;
*-pc-os2_emx | *-pc-os2-emx )
SHARED_LD_CC="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
SHARED_LD_CXX="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
PIC_FLAG=""
AC_BAKEFILE_CREATE_FILE_DLLAR_SH
chmod +x dllar.sh
;;
powerpc-apple-macos* | \
*-*-freebsd* | *-*-openbsd* | *-*-netbsd* | *-*-k*bsd*-gnu | \
*-*-sunos4* | \
*-*-osf* | \
*-*-dgux5* | \
*-*-sysv5* | \
*-pc-msdosdjgpp )
dnl defaults are ok
;;
*)
AC_MSG_ERROR(unknown system type $BAKEFILE_HOST.)
esac
if test "x$PIC_FLAG" != "x" ; then
PIC_FLAG="$PIC_FLAG -DPIC"
fi
if test "x$SHARED_LD_MODULE_CC" = "x" ; then
SHARED_LD_MODULE_CC="$SHARED_LD_CC"
fi
if test "x$SHARED_LD_MODULE_CXX" = "x" ; then
SHARED_LD_MODULE_CXX="$SHARED_LD_CXX"
fi
AC_SUBST(SHARED_LD_CC)
AC_SUBST(SHARED_LD_CXX)
AC_SUBST(SHARED_LD_MODULE_CC)
AC_SUBST(SHARED_LD_MODULE_CXX)
AC_SUBST(PIC_FLAG)
AC_SUBST(WINDOWS_IMPLIB)
])
dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE_SHARED_VERSIONS
dnl
dnl Detects linker options for attaching versions (sonames) to shared libs.
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_SHARED_VERSIONS],
[
USE_SOVERSION=0
USE_SOVERLINUX=0
USE_SOVERSOLARIS=0
USE_SOVERCYGWIN=0
USE_SOSYMLINKS=0
USE_MACVERSION=0
SONAME_FLAG=
case "${BAKEFILE_HOST}" in
*-*-linux* | *-*-freebsd* | *-*-k*bsd*-gnu )
SONAME_FLAG="-Wl,-soname,"
USE_SOVERSION=1
USE_SOVERLINUX=1
USE_SOSYMLINKS=1
;;
*-*-solaris2* )
SONAME_FLAG="-h "
USE_SOVERSION=1
USE_SOVERSOLARIS=1
USE_SOSYMLINKS=1
;;
*-*-darwin* )
USE_MACVERSION=1
USE_SOVERSION=1
USE_SOSYMLINKS=1
;;
*-*-cygwin* )
USE_SOVERSION=1
USE_SOVERCYGWIN=1
;;
esac
AC_SUBST(USE_SOVERSION)
AC_SUBST(USE_SOVERLINUX)
AC_SUBST(USE_SOVERSOLARIS)
AC_SUBST(USE_SOVERCYGWIN)
AC_SUBST(USE_MACVERSION)
AC_SUBST(USE_SOSYMLINKS)
AC_SUBST(SONAME_FLAG)
])
dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE_DEPS
dnl
dnl Detects available C/C++ dependency tracking options
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_DEPS],
[
AC_ARG_ENABLE([dependency-tracking],
AS_HELP_STRING([--disable-dependency-tracking],
[don't use dependency tracking even if the compiler can]),
[bk_use_trackdeps="$enableval"])
AC_MSG_CHECKING([for dependency tracking method])
if test "x$bk_use_trackdeps" = "xno" ; then
DEPS_TRACKING=0
AC_MSG_RESULT([disabled])
else
DEPS_TRACKING=1
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
AC_MSG_RESULT([gcc])
elif test "x$MWCC" = "xyes"; then
DEPSMODE=mwcc
DEPSFLAG="-MM"
AC_MSG_RESULT([mwcc])
elif test "x$SUNCC" = "xyes"; then
DEPSMODE=unixcc
DEPSFLAG="-xM1"
AC_MSG_RESULT([Sun cc])
elif test "x$SGICC" = "xyes"; then
DEPSMODE=unixcc
DEPSFLAG="-M"
AC_MSG_RESULT([SGI cc])
elif test "x$HPCC" = "xyes"; then
DEPSMODE=unixcc
DEPSFLAG="+make"
AC_MSG_RESULT([HP cc])
elif test "x$COMPAQCC" = "xyes"; then
DEPSMODE=gcc
DEPSFLAG="-MD"
AC_MSG_RESULT([Compaq cc])
else
DEPS_TRACKING=0
AC_MSG_RESULT([none])
fi
if test $DEPS_TRACKING = 1 ; then
AC_BAKEFILE_CREATE_FILE_BK_DEPS
chmod +x bk-deps
fi
fi
AC_SUBST(DEPS_TRACKING)
])
dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE_CHECK_BASIC_STUFF
dnl
dnl Checks for presence of basic programs, such as C and C++ compiler, "ranlib"
dnl or "install"
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_CHECK_BASIC_STUFF],
[
AC_PROG_RANLIB
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_SUBST(MAKE_SET)
AC_CHECK_TOOL(AR, ar, ar)
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"
;;
*) INSTALL_DIR="$INSTALL -d"
;;
esac
AC_SUBST(INSTALL_DIR)
LDFLAGS_GUI=
case ${BAKEFILE_HOST} in
*-*-cygwin* | *-*-mingw32* )
LDFLAGS_GUI="-mwindows"
esac
AC_SUBST(LDFLAGS_GUI)
])
dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE_RES_COMPILERS
dnl
dnl Checks for presence of resource compilers for win32 or mac
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_RES_COMPILERS],
[
case ${BAKEFILE_HOST} in
*-*-cygwin* | *-*-mingw32* )
dnl Check for win32 resources compiler:
AC_CHECK_TOOL(WINDRES, windres)
;;
*-*-darwin* | powerpc-apple-macos* )
AC_CHECK_PROG(REZ, Rez, Rez, /Developer/Tools/Rez)
AC_CHECK_PROG(SETFILE, SetFile, SetFile, /Developer/Tools/SetFile)
;;
esac
AC_SUBST(WINDRES)
AC_SUBST(REZ)
AC_SUBST(SETFILE)
])
dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE_PRECOMP_HEADERS
dnl
dnl Check for precompiled headers support (GCC >= 3.4)
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_PRECOMP_HEADERS],
[
AC_ARG_ENABLE([precomp-headers],
AS_HELP_STRING([--disable-precomp-headers],
[don't use precompiled headers even if compiler can]),
[bk_use_pch="$enableval"])
GCC_PCH=0
ICC_PCH=0
USE_PCH=0
case ${BAKEFILE_HOST} in
*-*-cygwin* )
dnl PCH support is broken in cygwin gcc because of unportable
dnl assumptions about mmap() in gcc code which make PCH generation
dnl fail erratically; disable PCH completely until this is fixed
bk_use_pch="no"
;;
esac
if test "x$bk_use_pch" = "x" -o "x$bk_use_pch" = "xyes" ; then
if test "x$GCC" = "xyes"; then
dnl test if we have gcc-3.4:
AC_MSG_CHECKING([if the compiler supports precompiled headers])
AC_TRY_COMPILE([],
[
#if !defined(__GNUC__) || !defined(__GNUC_MINOR__)
#error "no pch support"
#endif
#if (__GNUC__ < 3)
#error "no pch support"
#endif
#if (__GNUC__ == 3) && \
((!defined(__APPLE_CC__) && (__GNUC_MINOR__ < 4)) || \
( defined(__APPLE_CC__) && (__GNUC_MINOR__ < 3))) || \
( defined(__INTEL_COMPILER) )
#error "no pch support"
#endif
],
[
AC_MSG_RESULT([yes])
GCC_PCH=1
],
[
AC_TRY_COMPILE([],
[
#if !defined(__INTEL_COMPILER) || \
(__INTEL_COMPILER < 800)
#error "no pch support"
#endif
],
[
AC_MSG_RESULT([yes])
ICC_PCH=1
],
[
AC_MSG_RESULT([no])
])
])
if test $GCC_PCH = 1 -o $ICC_PCH = 1 ; then
USE_PCH=1
AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH
chmod +x bk-make-pch
fi
fi
fi
AC_SUBST(GCC_PCH)
AC_SUBST(ICC_PCH)
])
dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE([autoconf_inc.m4 inclusion])
dnl
dnl To be used in configure.in of any project using Bakefile-generated mks
dnl
dnl Behaviour can be modified by setting following variables:
dnl BAKEFILE_CHECK_BASICS set to "no" if you don't want bakefile to
dnl to perform check for basic tools like ranlib
dnl BAKEFILE_HOST set this to override host detection, defaults
dnl to ${host}
dnl BAKEFILE_FORCE_PLATFORM set to override platform detection
dnl
dnl Example usage:
dnl
dnl AC_BAKEFILE([FOO(autoconf_inc.m4)])
dnl
dnl (replace FOO with m4_include above, aclocal would die otherwise)
dnl (yes, it's ugly, but thanks to a bug in aclocal, it's the only thing
dnl we can do...)
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE],
[
AC_PREREQ(2.58)
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.])
fi
BAKEFILE_HOST="${host}"
fi
if test "x$BAKEFILE_CHECK_BASICS" != "xno"; then
AC_BAKEFILE_CHECK_BASIC_STUFF
fi
AC_BAKEFILE_GNUMAKE
AC_BAKEFILE_PLATFORM
AC_BAKEFILE_PLATFORM_SPECIFICS
AC_BAKEFILE_SUFFIXES
AC_BAKEFILE_SHARED_LD
AC_BAKEFILE_SHARED_VERSIONS
AC_BAKEFILE_DEPS
AC_BAKEFILE_RES_COMPILERS
BAKEFILE_BAKEFILE_M4_VERSION="0.2.0"
dnl includes autoconf_inc.m4:
$1
if test "$BAKEFILE_AUTOCONF_INC_M4_VERSION" = "" ; then
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)?])
fi
if test "$BAKEFILE_BAKEFILE_M4_VERSION" != "$BAKEFILE_AUTOCONF_INC_M4_VERSION" ; then
AC_MSG_ERROR([Versions of Bakefile used to generate makefiles ($BAKEFILE_AUTOCONF_INC_M4_VERSION) and configure ($BAKEFILE_BAKEFILE_M4_VERSION) do not match.])
fi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -