xref: /freebsd/contrib/file/configure.ac (revision 6966ac055c3b7a39266fb982493330df7a097997)
1dnl Process this file with autoconf to produce a configure script.
2AC_INIT([file],[5.37],[christos@astron.com])
3AM_INIT_AUTOMAKE([subdir-objects foreign])
4m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
5
6AC_CONFIG_HEADERS([config.h])
7AC_CONFIG_MACRO_DIR([m4])
8
9AC_MSG_CHECKING(for builtin ELF support)
10AC_ARG_ENABLE(elf,
11[  --disable-elf            disable builtin ELF support],
12[if test "${enableval}" = yes; then
13  AC_MSG_RESULT(yes)
14  AC_DEFINE([BUILTIN_ELF], 1, [Define if built-in ELF support is used])
15else
16  AC_MSG_RESULT(no)
17fi], [
18  # enable by default
19  AC_MSG_RESULT(yes)
20  AC_DEFINE([BUILTIN_ELF], 1, [Define in built-in ELF support is used])
21])
22
23AC_MSG_CHECKING(for ELF core file support)
24AC_ARG_ENABLE(elf-core,
25[  --disable-elf-core       disable ELF core file support],
26[if test "${enableval}" = yes; then
27  AC_MSG_RESULT(yes)
28  AC_DEFINE([ELFCORE], 1, [Define for ELF core file support])
29else
30  AC_MSG_RESULT(no)
31fi], [
32  # enable by default
33  AC_MSG_RESULT(yes)
34  AC_DEFINE([ELFCORE], 1, [Define for ELF core file support])
35])
36
37AC_MSG_CHECKING(for zlib support)
38AC_ARG_ENABLE([zlib],
39[AS_HELP_STRING([--disable-zlib], [disable zlib compression support @<:@default=auto@:>@])])
40AC_MSG_RESULT($enable_zlib)
41
42AC_MSG_CHECKING(for libseccomp support)
43AC_ARG_ENABLE([libseccomp],
44[AS_HELP_STRING([--disable-libseccomp], [disable libseccomp sandboxing @<:@default=auto@:>@])])
45AC_MSG_RESULT($enable_libseccomp)
46
47AC_MSG_CHECKING(for file formats in man section 5)
48AC_ARG_ENABLE(fsect-man5,
49[  --enable-fsect-man5      enable file formats in man section 5],
50[if test "${enableval}" = yes; then
51  AC_MSG_RESULT(yes)
52  fsect=5
53else
54  AC_MSG_RESULT(no)
55  fsect=4
56fi], [
57  # disable by default
58  AC_MSG_RESULT(no)
59  fsect=4
60])
61
62AC_CANONICAL_HOST
63case "$host_os" in
64   mingw32*)
65      MINGW=1
66      ;;
67   *)
68      MINGW=0
69      ;;
70esac
71AC_SUBST(MINGW)
72AM_CONDITIONAL(MINGW, test "$MINGW" = 1)
73
74AC_SUBST([pkgdatadir], ['$(datadir)/misc'])
75AC_SUBST(fsect)
76AM_CONDITIONAL(FSECT5, test x$fsect = x5)
77
78AC_SUBST(WARNINGS)
79
80dnl Checks for programs.
81AC_PROG_CC_STDC
82AC_USE_SYSTEM_EXTENSIONS
83AM_PROG_CC_C_O
84AC_C_BIGENDIAN
85AC_PROG_INSTALL
86AC_PROG_LN_S
87LT_INIT([disable-static pic-only])
88gl_VISIBILITY
89dnl Checks for headers
90AC_HEADER_STDC
91AC_HEADER_MAJOR
92AC_HEADER_SYS_WAIT
93AC_CHECK_HEADERS(stdint.h fcntl.h inttypes.h unistd.h)
94AC_CHECK_HEADERS(utime.h wchar.h wctype.h)
95AC_CHECK_HEADERS(getopt.h err.h xlocale.h)
96AC_CHECK_HEADERS(sys/mman.h sys/stat.h sys/types.h sys/utime.h sys/time.h sys/sysmacros.h)
97if test "$enable_zlib" != "no"; then
98  AC_CHECK_HEADERS(zlib.h)
99fi
100AC_CHECK_TYPE([sig_t],[AC_DEFINE([HAVE_SIG_T],1,[Have sig_t type])],,[#include <signal.h>])
101
102dnl Checks for typedefs, structures, and compiler characteristics.
103AC_C_CONST
104AC_TYPE_OFF_T
105AC_TYPE_SIZE_T
106AC_CHECK_MEMBERS([struct stat.st_rdev])
107
108AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[#include <time.h>])
109AC_STRUCT_TIMEZONE
110AC_STRUCT_TIMEZONE_DAYLIGHT
111AC_SYS_LARGEFILE
112AC_FUNC_FSEEKO
113AC_TYPE_MBSTATE_T
114
115AC_STRUCT_OPTION_GETOPT_H
116AC_TYPE_PID_T
117AC_TYPE_UINT8_T
118AC_TYPE_UINT16_T
119AC_TYPE_UINT32_T
120AC_TYPE_INT32_T
121AC_TYPE_UINT64_T
122AC_TYPE_INT64_T
123AC_TYPE_INTPTR_T
124AC_TYPE_UINTPTR_T
125AC_FUNC_MMAP
126AC_FUNC_FORK
127AC_FUNC_MBRTOWC
128
129AC_MSG_CHECKING(for gcc compiler warnings)
130AC_ARG_ENABLE(warnings,
131[  --disable-warnings	disable compiler warnings],
132[if test "${enableval}" = no -o "$GCC" = no; then
133   AC_MSG_RESULT(no)
134   WARNINGS=
135else
136   AC_MSG_RESULT(yes)
137   WARNINGS="-Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith \
138       -Wmissing-declarations -Wredundant-decls -Wnested-externs \
139       -Wsign-compare -Wreturn-type -Wswitch -Wshadow \
140       -Wcast-qual -Wwrite-strings -Wextra -Wunused-parameter -Wformat=2"
141fi], [
142if test "$GCC" = yes; then
143   AC_MSG_RESULT(yes)
144   WARNINGS="-Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith \
145       -Wmissing-declarations -Wredundant-decls -Wnested-externs \
146       -Wsign-compare -Wreturn-type -Wswitch -Wshadow \
147       -Wcast-qual -Wwrite-strings -Wextra -Wunused-parameter -Wformat=2"
148else
149   WARNINGS=
150   AC_MSG_RESULT(no)
151fi])
152
153dnl Checks for functions
154AC_CHECK_FUNCS(strndup mkstemp mkostemp utimes utime wcwidth strtof newlocale uselocale freelocale memmem)
155
156dnl Provide implementation of some required functions if necessary
157AC_REPLACE_FUNCS(getopt_long asprintf vasprintf strlcpy strlcat getline ctime_r asctime_r localtime_r gmtime_r pread strcasestr fmtcheck dprintf)
158
159dnl Checks for libraries
160if test "$enable_zlib" != "no"; then
161  AC_CHECK_LIB(z, gzopen)
162fi
163if test "$enable_libseccomp" != "no"; then
164    AC_CHECK_LIB(seccomp, seccomp_init)
165fi
166if test "$MINGW" = 1; then
167  AC_CHECK_LIB(gnurx,regexec,,AC_MSG_ERROR([libgnurx is required to build file(1) with MinGW]))
168fi
169
170dnl See if we are cross-compiling
171AM_CONDITIONAL(IS_CROSS_COMPILE, test "$cross_compiling" = yes)
172
173dnl Final sanity checks
174if test "$enable_zlib" = "yes"; then
175  if test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" != "yesyes"; then
176    AC_MSG_ERROR([zlib support requested but not found])
177  fi
178fi
179if  test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" = "yesyes"; then
180  AC_DEFINE([ZLIBSUPPORT], 1, [Enable zlib compression support])
181fi
182
183AC_CONFIG_FILES([Makefile src/Makefile magic/Makefile tests/Makefile doc/Makefile python/Makefile])
184AC_OUTPUT
185