configure.ac 3.6 KB
Newer Older
1 2 3 4 5 6 7 8
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.67])
AC_INIT([libbsd], m4_esyscmd([./get-version]), [libbsd@lists.freedesktop.org])
AC_CONFIG_SRCDIR([src/fgetln.c])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])

9
AM_INIT_AUTOMAKE([1.8 foreign nostdinc no-dist-gzip dist-xz])
10 11 12 13

m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
                            [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])

14 15 16 17 18 19 20
LIBBSD_ABI_MAJOR=0
LIBBSD_ABI_MINOR=5
LIBBSD_ABI_PATCH=2

LIBBSD_ABI="$LIBBSD_ABI_MAJOR:$LIBBSD_ABI_MINOR:$LIBBSD_ABI_PATCH"
AC_SUBST([LIBBSD_ABI])

21 22 23
# Check and store if we got user supplied variables
user_CFLAGS=${CFLAGS-unset}

24 25 26 27 28 29 30 31 32 33 34
# Checks for operating system services and capabilities.
AC_USE_SYSTEM_EXTENSIONS
AC_SYS_LARGEFILE

LT_INIT

# Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S

35 36 37 38 39
# Set default compiler variables
if test "$user_CFLAGS" = unset && test "$GCC" = yes; then
  CFLAGS="$CFLAGS -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter"
fi

40 41 42
# Checks for libraries.

# Checks for header files.
43
AC_CHECK_HEADERS([sys/ndir.h sys/dir.h dir.h dirent.h])
44 45 46 47

# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_UID_T
AC_C_INLINE
48
AC_C_TYPEOF
49 50 51 52 53 54 55
AC_TYPE_INT64_T
AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T

56 57 58 59 60 61 62
AC_CHECK_DECL([F_CLOSEM],
              [AC_DEFINE([HAVE_FCNTL_CLOSEM], [1],
                         [Define to 1 if you have fcntl(F_CLOSEM)])],
              [],
              [#include <limits.h>
               #include <fcntl.h>])

63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
AC_CACHE_CHECK(
	[for GNU .init_array section support],
	[libbsd_cv_gnu_init_array_support],
	[AC_RUN_IFELSE(
		[AC_LANG_SOURCE(
[[
static int rc = 1;
static void init(int argc) { if (argc == 1) rc = 0; }
void (*init_func)(int argc) __attribute__((section(".init_array"))) = init;
int main() { return rc; }
]]
		)],
		[libbsd_cv_gnu_init_array_support=yes],
		[libbsd_cv_gnu_init_array_support=no],
		[AC_PREPROC_IFELSE(
			[AC_LANG_SOURCE(
[[
/* Look for a known libc that supports .init_array with the GNU extension
 * to pass main() arguments to the init functions. */
#include <stdlib.h>
#if defined __GLIBC_PREREQ
#  if __GLIBC_PREREQ(2, 4)
/* glibc supports GNU .init_array since 2.4. */
#  else
#    error glibc does not support GNU .init_array
#  endif
#else
/*
 * Basic SysV ABI .init_array support, init functions do not get arguments:
 * - Bionic since its inception.
 * - uClibc since 0.9.29.
 */
#  error unknown whether libc supports GNU .init_array
#endif
]]
			)],
			[libbsd_cv_gnu_init_array_support=yes],
			[libbsd_cv_gnu_init_array_support=no])
		]
	)]
)
if test "$libbsd_cv_gnu_init_array_support" = no; then
	AC_MSG_ERROR([missing required GNU .init_array section support])
fi

108
# Checks for library functions.
109 110 111 112 113 114 115 116 117
AC_MSG_CHECKING([for program_invocation_short_name])
AC_LINK_IFELSE(
	[AC_LANG_PROGRAM([[#include <errno.h>]],
	                 [[const char *p = program_invocation_short_name;]])],
	[AC_DEFINE([HAVE_PROGRAM_INVOCATION_SHORT_NAME], [1],
	           [Define to 1 if you have program_invocation_short_name])
	 AC_MSG_RESULT([yes])],
	[AC_MSG_RESULT([no])])

118 119 120 121 122 123 124 125 126
AC_MSG_CHECKING([for __progname])
AC_LINK_IFELSE(
	[AC_LANG_PROGRAM([[]],
	                 [[extern char *__progname;
	                   const char *p = __progname;]])],
	[AC_DEFINE([HAVE___PROGNAME], [1], [Define to 1 if you have __progname])
	 AC_MSG_RESULT([yes])],
	[AC_MSG_RESULT([no])])

127
AC_CHECK_FUNCS([clearenv dirfd __fpurge getexecname getline sysconf])
128 129 130 131 132 133 134 135

AC_CONFIG_FILES([
	Makefile
	include/Makefile
	man/Makefile
	src/Makefile
	src/libbsd.pc
	src/libbsd-overlay.pc
136
	test/Makefile
137 138 139
])
AC_CONFIG_HEADERS([config.h])
AC_OUTPUT