xref: /freebsd/contrib/file/configure.ac (revision 7af41682a96bf7058b82665c33bb9b1bfa079c17)
1dnl Process this file with autoconf to produce a configure script.
2AC_INIT([file],[5.48],[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 bzlib support)
43AC_ARG_ENABLE([bzlib],
44[AS_HELP_STRING([--disable-bzlib], [disable bz2lib compression support @<:@default=auto@:>@])])
45AC_MSG_RESULT($enable_bzlib)
46
47AC_MSG_CHECKING(for xzlib support)
48AC_ARG_ENABLE([xzlib],
49[AS_HELP_STRING([--disable-xzlib], [disable liblzma/xz compression support @<:@default=auto@:>@])])
50AC_MSG_RESULT($enable_xzlib)
51
52AC_MSG_CHECKING(for zstdlib support)
53AC_ARG_ENABLE([zstdlib],
54[AS_HELP_STRING([--disable-zstdlib], [disable zstdlib compression support @<:@default=auto@:>@])])
55AC_MSG_RESULT($enable_zstdlib)
56
57AC_MSG_CHECKING(for lzlib support)
58AC_ARG_ENABLE([lzlib],
59[AS_HELP_STRING([--disable-lzlib], [disable liblz (lzip) compression support @<:@default=auto@:>@])])
60AC_MSG_RESULT($enable_lzlib)
61
62AC_MSG_CHECKING(for lrziplib support)
63AC_ARG_ENABLE([lrziplib],
64[AS_HELP_STRING([--disable-lrziplib], [disable liblrzip (lrzip) compression support @<:@default=auto@:>@])])
65AC_MSG_RESULT($enable_lrziplib)
66
67AC_MSG_CHECKING(for libseccomp support)
68AC_ARG_ENABLE([libseccomp],
69[AS_HELP_STRING([--disable-libseccomp], [disable libseccomp sandboxing @<:@default=auto@:>@])])
70AC_MSG_RESULT($enable_libseccomp)
71
72AC_MSG_CHECKING(for Landlock LSM support)
73AC_ARG_ENABLE([landlock],
74[AS_HELP_STRING([--disable-landlock], [disable Landlock filesystem sandboxing @<:@default=auto@:>@])])
75AC_MSG_RESULT($enable_landlock)
76
77AC_MSG_CHECKING(for file formats in man section 5)
78AC_ARG_ENABLE(fsect-man5,
79[  --enable-fsect-man5      enable file formats in man section 5],
80[if test "${enableval}" = yes; then
81  AC_MSG_RESULT(yes)
82  fsect=5
83else
84  AC_MSG_RESULT(no)
85  fsect=4
86fi], [
87  # disable by default
88  AC_MSG_RESULT(no)
89  fsect=4
90])
91
92AC_CANONICAL_HOST
93case "$host_os" in
94   mingw32*)
95      MINGW=1
96      ;;
97   *)
98      MINGW=0
99      ;;
100esac
101AC_SUBST(MINGW)
102AM_CONDITIONAL(MINGW, test "$MINGW" = 1)
103
104AC_SUBST([pkgdatadir], ['$(datadir)/misc'])
105AC_SUBST(fsect)
106AM_CONDITIONAL(FSECT5, test x$fsect = x5)
107
108AC_SUBST(WARNINGS)
109
110dnl Checks for programs.
111AC_PROG_CC
112AC_USE_SYSTEM_EXTENSIONS
113AM_PROG_CC_C_O
114AC_C_BIGENDIAN
115AC_PROG_INSTALL
116AC_PROG_LN_S
117LT_INIT([disable-static pic-only])
118gl_VISIBILITY
119dnl Checks for headers
120AC_HEADER_MAJOR
121AC_HEADER_SYS_WAIT
122AC_CHECK_HEADERS(stdint.h fcntl.h inttypes.h unistd.h byteswap.h)
123AC_CHECK_HEADERS(spawn.h utime.h wchar.h wctype.h limits.h)
124AC_CHECK_HEADERS(getopt.h err.h xlocale.h)
125AC_CHECK_HEADERS(sys/bswap.h sys/mman.h sys/stat.h sys/types.h sys/utime.h sys/time.h sys/sysmacros.h sys/ioctl.h)
126if test "$enable_zlib" != "no"; then
127  AC_CHECK_HEADERS(zlib.h)
128fi
129if test "$enable_bzlib" != "no"; then
130  AC_CHECK_HEADERS(bzlib.h)
131fi
132if test "$enable_xzlib" != "no"; then
133  AC_CHECK_HEADERS(lzma.h)
134fi
135if test "$enable_zstdlib" != "no"; then
136  AC_CHECK_HEADERS(zstd.h zstd_errors.h)
137fi
138if test "$enable_lzlib" != "no"; then
139  AC_CHECK_HEADERS(lzlib.h)
140fi
141if test "$enable_lrziplib" != "no"; then
142  AC_CHECK_HEADERS(Lrzip.h)
143fi
144AC_CHECK_TYPE([sig_t],[AC_DEFINE([HAVE_SIG_T],1,[Have sig_t type])],,[#include <signal.h>])
145
146dnl Checks for typedefs, structures, and compiler characteristics.
147AC_TYPE_OFF_T
148AC_TYPE_SIZE_T
149AC_CHECK_MEMBERS([struct stat.st_rdev])
150
151AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[#include <time.h>])
152AC_STRUCT_TIMEZONE
153AC_STRUCT_TIMEZONE_DAYLIGHT
154AC_SYS_LARGEFILE
155AC_FUNC_FSEEKO
156AC_TYPE_MBSTATE_T
157
158AC_STRUCT_OPTION_GETOPT_H
159AC_TYPE_PID_T
160AC_TYPE_UINT8_T
161AC_TYPE_UINT16_T
162AC_TYPE_UINT32_T
163AC_TYPE_INT32_T
164AC_TYPE_UINT64_T
165AC_TYPE_INT64_T
166AC_TYPE_INTPTR_T
167AC_TYPE_UINTPTR_T
168m4_ifdef([AC_SYS_YEAR2038], [AC_SYS_YEAR2038], [
169# GNU libc only allows setting _TIME_BITS when FILE_OFFSET_BITS is also set.
170# GNU libc defines __TIMESIZE on systems where _TIME_BITS can be set.
171AS_IF([test X"$ac_cv_sys_file_offset_bits" = X"64"], [
172    AC_CHECK_DECL(__TIMESIZE, [
173	AC_DEFINE([_TIME_BITS], [64], [Number of bits in a timestamp, on hosts where this is settable.])
174    ], [], [
175AC_INCLUDES_DEFAULT
176#include <time.h>
177	])
178    ])
179])
180AC_FUNC_MMAP
181AC_FUNC_FORK
182AC_FUNC_MBRTOWC
183
184AC_MSG_CHECKING(for gcc compiler warnings)
185AC_ARG_ENABLE(warnings,
186[  --disable-warnings	disable compiler warnings],
187[if test "${enableval}" = no -o "$GCC" = no; then
188   AC_MSG_RESULT(no)
189   WARNINGS=
190else
191   AC_MSG_RESULT(yes)
192   WARNINGS="-Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith \
193       -Wmissing-declarations -Wredundant-decls -Wnested-externs \
194       -Wsign-compare -Wreturn-type -Wswitch -Wshadow \
195       -Wcast-qual -Wwrite-strings -Wextra -Wunused-parameter -Wformat=2"
196fi], [
197if test "$GCC" = yes; then
198   AC_MSG_RESULT(yes)
199   WARNINGS="-Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith \
200       -Wmissing-declarations -Wredundant-decls -Wnested-externs \
201       -Wsign-compare -Wreturn-type -Wswitch -Wshadow \
202       -Wcast-qual -Wwrite-strings -Wextra -Wunused-parameter -Wformat=2"
203else
204   WARNINGS=
205   AC_MSG_RESULT(no)
206fi])
207
208dnl Checks for functions
209AC_CHECK_FUNCS(strndup mkstemp mkostemp utimes utime wcwidth strtof newlocale uselocale freelocale memmem pipe2 posix_spawnp)
210
211dnl Provide implementation of some required functions if necessary
212AC_REPLACE_FUNCS(getopt_long asprintf vasprintf strlcpy strlcat getline ctime_r asctime_r localtime_r gmtime_r pread strcasestr fmtcheck dprintf)
213
214dnl Checks for libraries
215if test "$enable_zlib" != "no"; then
216  AC_CHECK_LIB(z, gzopen)
217fi
218if test "$enable_bzlib" != "no"; then
219  AC_CHECK_LIB(bz2, BZ2_bzCompressInit)
220fi
221if test "$enable_xzlib" != "no"; then
222  AC_CHECK_LIB(lzma, lzma_stream_decoder)
223fi
224if test "$enable_zstdlib" != "no"; then
225  AC_CHECK_LIB(zstd, ZSTD_createDStream)
226fi
227if test "$enable_lzlib" != "no"; then
228  AC_CHECK_LIB(lz, LZ_decompress_open)
229fi
230if test "$enable_lrziplib" != "no"; then
231  AC_CHECK_LIB(lrzip, lrzip_new)
232fi
233
234if test "$enable_libseccomp" != "no"; then
235    AC_CHECK_LIB(seccomp, seccomp_init)
236fi
237if test "$enable_landlock" != "no"; then
238    AC_CHECK_HEADERS(linux/landlock.h)
239fi
240if test "$MINGW" = 1; then
241  AC_CHECK_LIB(gnurx,regexec,,AC_MSG_ERROR([libgnurx is required to build file(1) with MinGW]))
242fi
243
244dnl See if we are cross-compiling
245AM_CONDITIONAL(IS_CROSS_COMPILE, test "$cross_compiling" = yes)
246
247dnl Final sanity checks
248if test "$enable_zlib" = "yes"; then
249  if test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" != "yesyes"; then
250    AC_MSG_ERROR([zlib support requested but not found])
251  fi
252fi
253if  test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" = "yesyes"; then
254  AC_DEFINE([ZLIBSUPPORT], 1, [Enable zlib compression support])
255fi
256if test "$enable_bzlib" = "yes"; then
257  if test "$ac_cv_header_bzlib_h$ac_cv_lib_bz2_BZ2_bzCompressInit" != "yesyes"; then
258    AC_MSG_ERROR([bzlib support requested but not found])
259  fi
260fi
261if  test "$ac_cv_header_bzlib_h$ac_cv_lib_bz2_BZ2_bzCompressInit" = "yesyes"; then
262  AC_DEFINE([BZLIBSUPPORT], 1, [Enable bzlib compression support])
263fi
264if test "$enable_xzlib" = "yes"; then
265  if test "$ac_cv_header_lzma_h$ac_cv_lib_lzma_lzma_stream_decoder" != "yesyes"; then
266    AC_MSG_ERROR([xzlib support requested but not found])
267  fi
268fi
269if  test "$ac_cv_header_lzma_h$ac_cv_lib_lzma_lzma_stream_decoder" = "yesyes"; then
270  AC_DEFINE([XZLIBSUPPORT], 1, [Enable xzlib compression support])
271fi
272if test "$enable_zstdlib" = "yes"; then
273  if test "$ac_cv_header_zstd_h$ac_cv_lib_zstd_ZSTD_createDStream" != "yesyes"; then
274    AC_MSG_ERROR([zstdlib support requested but not found])
275  fi
276fi
277if  test "$ac_cv_header_zstd_h$ac_cv_lib_zstd_ZSTD_createDStream" = "yesyes"; then
278  AC_DEFINE([ZSTDLIBSUPPORT], 1, [Enable zstdlib compression support])
279fi
280if test "$enable_lzlib" = "yes"; then
281  if test "$ac_cv_header_lzlib_h$ac_cv_lib_lz_LZ_decompress_open" != "yesyes"; then
282    AC_MSG_ERROR([lzlib support requested but not found])
283  fi
284fi
285if  test "$ac_cv_header_lzlib_h$ac_cv_lib_lz_LZ_decompress_open" = "yesyes"; then
286  AC_DEFINE([LZLIBSUPPORT], 1, [Enable lzlib compression support])
287fi
288
289if test "$enable_lrziplib" = "yes"; then
290  if test "$ac_cv_header_Lrzip_h$ac_cv_lib_lrzip_lrzip_new" != "yesyes"; then
291    AC_MSG_ERROR([lrzip support requested but not found])
292  fi
293fi
294if  test "$ac_cv_header_Lrzip_h$ac_cv_lib_lrzip_lrzip_new" = "yesyes"; then
295  AC_DEFINE([LRZIPLIBSUPPORT], 1, [Enable lrziplib compression support])
296fi
297
298AC_CONFIG_FILES([Makefile src/Makefile magic/Makefile tests/Makefile doc/Makefile python/Makefile libmagic.pc])
299AC_OUTPUT
300