# # Copyright (C) 2000-2021, Thomas Maier-Komor # # This is the source code of mbuffer. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # AC_INIT([mbuffer]) AC_CONFIG_HEADER([config.h]) AC_CONFIG_SRCDIR([mbuffer.c]) AC_LANG([C]) AC_CANONICAL_SYSTEM AC_EXEEXT AC_USE_SYSTEM_EXTENSIONS if test "${LD_LIBRARY_PATH}" != "" ; then echo "" echo " WARNING: LD_LIBRARY_PATH is set. This can cause severe problems!!!" echo " Please learn about using RUNPATH instead of LD_LIBRARY_PATH - e.g. here:" echo " - http://prefetch.net/articles/linkers.badldlibrary.html" echo " For gcc, you can pass LDFLAGS=\"-R/usr/local/lib\" to configure," echo " instead of setting LD_LIBRARY_PATH." echo "" sleep 5 fi AC_PREFIX_DEFAULT(/usr/local) test "$prefix" = NONE && prefix=/usr/local test "$exec_prefix" = NONE && exec_prefix=$prefix USRCFLAGS=${CFLAGS} AC_LANG_C AC_PROG_CC_C99(cc gcc) AC_PATH_PROG(TAR,[gtar tar]) AC_C_RESTRICT AC_C_INLINE if test "${USRCFLAGS}" = "" ; then if test "${GCC}" = "yes" ; then CFLAGS="${CFLAGS} -O2 -Wall" cflags_tmp="${CFLAGS}" CFLAGS="${CFLAGS} -m64" AC_MSG_CHECKING([whether $CC supports $CFLAGS]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])] CFLAGS="$cflags_tmp" ) else SUNCCVERSION=`${CC} -V 2>&1 | grep Sun` SUNCC=$? if test "${SUNCC}" == "0" ; then CFLAGS="${CFLAGS} -O" cflags_tmp="$CFLAGS" HAS_M64=`${CC} -flags | grep m64` if test "${HAS_M64}" != "" ; then CFLAGS="${CFLAGS} -m64" AC_MSG_CHECKING([whether $CC supports $CFLAGS]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])] CFLAGS="$cflags_tmp" ) else CFLAGS="${CFLAGS} -xarch=generic64" AC_MSG_CHECKING([whether $CC supports $CFLAGS]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])] CFLAGS="$cflags_tmp" ) fi else echo unknown cc CFLAGS="${CFLAGS} -O" fi fi fi cflags_tmp="$CFLAGS" CFLAGS="$CFLAGS -Wno-unused-result" AC_MSG_CHECKING([whether $CC provides -Wunused-result]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])] CFLAGS="$cflags_tmp" ) AC_SUBST(CFLAGS) AC_PROG_INSTALL AC_PATH_PROG(SH,sh) AC_PATH_PROG(RM,rm) AC_PATH_PROG(CP,cp) AC_PATH_PROG(MT,mt,AC_MSG_WARN(could not find the program mt - you might need this if you want autoloader support)) AC_PATH_PROGS(TAR,[gtar tar]) AC_PATH_PROG(AWK,awk) AC_SYS_LARGEFILE AC_STRUCT_ST_BLKSIZE AC_CHECK_TARGET_TOOLS(OBJDUMP,gobjdump objdump llvm-objdump) AC_HEADER_ASSERT AC_CHECK_LIB(pthread, pthread_mutex_init) AC_SEARCH_LIBS(dlsym,dl) AC_SEARCH_LIBS(clock_gettime,rt,,AC_MSG_ERROR(could not find the library containing clock_gettime!)) AC_SEARCH_LIBS(sem_init,rt posix,,AC_MSG_ERROR(could not find semaphore functions!)) AC_SEARCH_LIBS(rint,m,,AC_MSG_ERROR(unable to find rint)) AC_SEARCH_LIBS(seteuid,c,AC_DEFINE([HAVE_SETEUID], [1], [Define to 1 if you have the seteuid() function]),) AC_SEARCH_LIBS(hstrerror,resolv socket nsl,AC_DEFINE([HAVE_HSTRERROR], [1], [Define to 1 if you have the hstrerror() function]),) AC_SEARCH_LIBS(getaddrinfo,resolv socket nsl ,AC_DEFINE([HAVE_GETADDRINFO], [1], [Define to 1 if you have the getaddrinfo() function]) ,AC_MSG_WARN(support for systems without getaddrinfo is deprecated and will be removed in the future)) AC_SEARCH_LIBS(socket,socket,,AC_MSG_ERROR(could not find the library containing network functions!)) AC_SEARCH_LIBS(gethostbyname,nsl,,AC_MSG_ERROR(could not find the library containing name convertion functions!)) AC_SEARCH_LIBS(sendfile,sendfile,AC_DEFINE([HAVE_SENDFILE],[1],[libsendfile is available]),) AC_CHECK_HEADER(sys/sendfile.h,AC_DEFINE([HAVE_SENDFILE_H],[1],[sendfile in sendfile.h]),) AC_FUNC_ALLOCA AC_CHECK_FUNCS(mkostemp) AC_ARG_ENABLE(debug, [ --disable-debug disable verbose logging to console for debugging purpose], ,enable_debug=yes ) if test x$enable_debug = xyes ; then AC_DEFINE([DEBUG], [1], [Define to 1 to build in debugging mode]) fi AC_ARG_ENABLE(md5, [ --disable-md5 disable md5 hash generation], ,enable_md5=auto ) if test x$enable_md5 != xno ; then AC_SEARCH_LIBS(MD5Init,md5 md,AC_DEFINE([HAVE_LIBMD5], [1], [Define to 1 if you have the md5 library]),) AC_CHECK_HEADER(md5.h,AC_DEFINE([HAVE_MD5_H],[1],[found md5.h]),) AC_SEARCH_LIBS(MD5_Init,crypto,AC_DEFINE([HAVE_LIBCRYPTO], [1], [Define to 1 if you have the OpenSSL crypto library]),) fi AC_LANG(C) if test -z "$OBJDUMP"; then AC_MSG_WARN([unable to find objdump, which is needed to run tests]) else AC_MSG_CHECKING([linking open() and write() to detect libc names]) AC_LINK_IFELSE([ AC_LANG_SOURCE([[ #define _LARGEFILE64_SOURCE #include #include #include int main(int argc, char **argv) { unsigned x; struct stat st; open(*argv,O_RDONLY); fstat(0,&st); read(0,&x,sizeof(x)); write(1,"null",4); } ]])],[ AC_MSG_RESULT([OK]) AC_MSG_CHECKING([name of open() in C library]) libc_open=`$OBJDUMP -T conftest | $AWK '/\*UND\*/ && $NF ~ /^open/ { print $NF }'` AC_DEFINE_UNQUOTED([LIBC_OPEN], $libc_open, [name of open() in libc]) AC_MSG_RESULT($libc_open) AC_MSG_CHECKING([name of read() in C library]) libc_read=`$OBJDUMP -T conftest | $AWK '/\*UND\*/ && $NF ~ /^read/ { print $NF }'` AC_DEFINE_UNQUOTED([LIBC_READ], $libc_read, [name of write() in libc]) AC_MSG_RESULT($libc_read) AC_MSG_CHECKING([name of write() in C library]) libc_write=`$OBJDUMP -T conftest | $AWK '/\*UND\*/ && $NF ~ /^write/ { print $NF }'` AC_DEFINE_UNQUOTED([LIBC_WRITE], $libc_write, [name of write() in libc]) AC_MSG_RESULT($libc_write) AC_MSG_CHECKING([name of fstat() in C library]) libc_fstat=`$OBJDUMP -T conftest | $AWK '/\*UND\*/ && $NF ~ /^_*fstat/ { print $NF }'` AC_DEFINE_UNQUOTED([LIBC_FSTAT], $libc_fstat, [name of fstat() in libc]) AC_MSG_RESULT($libc_fstat) ], [AC_MSG_FAILURE([failed to link open/write test])] ) fi AC_SUBST(DEBUG) AC_SUBST(OBJDUMP) AC_SUBST(TAR) AC_SUBST(prefix) AC_SUBST(AUTOCONF) AC_DEFINE(_REENTRANT,1,Needed for thread safe compilation) AC_OUTPUT(Makefile) # vim:tw=0