File: configure.ac

package info (click to toggle)
wimlib 1.14.4-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,044 kB
  • sloc: ansic: 49,927; sh: 7,148; makefile: 293
file content (199 lines) | stat: -rw-r--r-- 7,314 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
###############################################################################

AC_INIT([wimlib], m4_esyscmd_s([dpkg-parsechangelog --show-field Version | sed -E 's/-[0-9]+$//']),
	[https://wimlib.net/forums/])
AC_CONFIG_SRCDIR([src/wim.c])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([-Wall -Werror subdir-objects foreign])
AM_SILENT_RULES([yes])
AC_C_BIGENDIAN
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
LT_INIT
PKG_PROG_PKG_CONFIG

AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile] [doc/Doxyfile] [wimlib.pc])
AC_CONFIG_FILES([programs/mkwinpeimg], [chmod +x programs/mkwinpeimg])

PKGCONFIG_PRIVATE_REQUIRES=""
PKGCONFIG_PRIVATE_LIBS=""

###############################################################################
#			  General platform features			      #
###############################################################################

AC_PROG_CC
AM_PROG_CC_C_O
AC_CANONICAL_HOST

WINDOWS_NATIVE_BUILD="no"
PLATFORM_CPPFLAGS=""
PLATFORM_CFLAGS="-fvisibility=hidden"
PLATFORM_LDFLAGS=""

case "$host_os" in
mingw*)
	# Native Windows
	WINDOWS_NATIVE_BUILD="yes"
	# -D__MINGW_USE_VC2005_COMPAT: make time_t 64-bit on 32-bit Windows.
	PLATFORM_CPPFLAGS="-D_POSIX -D_POSIX_THREAD_SAFE_FUNCTIONS -DUNICODE -D_UNICODE -D_CRT_NON_CONFORMING_SWPRINTFS -D__MINGW_USE_VC2005_COMPAT -D_WIN32_WINNT=0x0600"
	PLATFORM_CFLAGS="-municode -mno-ms-bitfields"
	PLATFORM_LDFLAGS="-no-undefined"
	WITH_NTFS_3G_DEFAULT="no"
	WITH_FUSE_DEFAULT="no"
	;;
linux*)
	# Linux
	WITH_NTFS_3G_DEFAULT="yes"
	WITH_FUSE_DEFAULT="yes"
	;;
*)
	# Other UNIX
	WITH_NTFS_3G_DEFAULT="yes"
	WITH_FUSE_DEFAULT="no"
	;;
esac

AC_SUBST([PLATFORM_CPPFLAGS], [$PLATFORM_CPPFLAGS])
AC_SUBST([PLATFORM_CFLAGS], [$PLATFORM_CFLAGS])
AC_SUBST([PLATFORM_LDFLAGS], [$PLATFORM_LDFLAGS])
AM_CONDITIONAL([WINDOWS_NATIVE_BUILD], [test "$WINDOWS_NATIVE_BUILD" = "yes"])

# Useful functions which we can do without.
AC_CHECK_FUNCS([futimens utimensat flock mempcpy	\
		openat fstatat readlinkat fdopendir posix_fallocate \
		llistxattr lgetxattr fsetxattr lsetxattr getopt_long_only])

# Header checks, most of which are only here to satisfy conditional includes
# made by the libntfs-3g headers.
AC_CHECK_HEADERS([alloca.h		\
		  byteswap.h		\
		  endian.h		\
		  errno.h		\
		  glob.h		\
		  machine/endian.h	\
		  stdarg.h		\
		  stddef.h		\
		  stdlib.h		\
		  sys/byteorder.h	\
		  sys/endian.h		\
		  sys/file.h		\
		  sys/syscall.h		\
		  sys/sysctl.h		\
		  sys/times.h		\
		  sys/xattr.h		\
		  time.h		\
		  utime.h])

# Does stat() support nanosecond-precision timestamps?  (This is relevant on
# UNIX but not on Windows.)
AC_CHECK_MEMBER([struct stat.st_mtim],
		[AC_DEFINE([HAVE_STAT_NANOSECOND_PRECISION], [1],
			   [Define to 1 if stat() supports nanosecond precision
			    timestamps])],
		[],
		[#include <sys/stat.h>])

###############################################################################
#			     Required libraries				      #
###############################################################################

# ------------------------------ pthreads -------------------------------------
if test "$WINDOWS_NATIVE_BUILD" != "yes"; then
	AX_PTHREAD([], [AC_MSG_ERROR(["cannot find pthreads library"])])
fi

###############################################################################
#			  Configuration options				      #
###############################################################################

# ------------------------- ntfs-3g support -----------------------------------

AC_MSG_CHECKING([whether to include support for ntfs-3g])
AC_ARG_WITH([ntfs-3g],
	    [AS_HELP_STRING([--without-ntfs-3g],
			    [build without libntfs-3g.  This will disable the
			     ability to capture or apply a WIM image directly
			     from/to an unmounted NTFS volume.])],
	    [WITH_NTFS_3G=$withval],
	    [WITH_NTFS_3G=$WITH_NTFS_3G_DEFAULT])
AC_MSG_RESULT([$WITH_NTFS_3G])

if test "$WITH_NTFS_3G" = "yes"; then
	PKG_CHECK_MODULES([LIBNTFS_3G], [libntfs-3g >= 2011.4.12], [],
		[AC_MSG_ERROR([Cannot find libntfs-3g version 2011-4-12 or
		 later!  Without libntfs-3g, wimlib cannot include support for
		 capturing or applying a WIM image directly from/to an unmounted
		 NTFS volume while preserving NTFS-specific data such as
		 security descriptors and named data streams.  Either install
		 libntfs-3g, or configure --without-ntfs-3g to disable this
		 feature.  If your operating system packages development files
		 separately, the package you need to install may be called
		 ntfs-3g-dev, ntfs-3g-devel, or similar.])])
	PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES libntfs-3g"
	AC_DEFINE([WITH_NTFS_3G], [1], [Define to 1 if using NTFS-3G support])
fi
AM_CONDITIONAL([WITH_NTFS_3G], [test "$WITH_NTFS_3G" = "yes"])

# ------------------------ FUSE mount support ---------------------------------

AC_MSG_CHECKING([whether to include support for mounting WIMs])
AC_ARG_WITH([fuse],
	    [AS_HELP_STRING([--without-fuse],
			    [build without libfuse3.  This will disable the
			     ability to mount WIM images.])],
	    [WITH_FUSE=$withval],
	    [WITH_FUSE=$WITH_FUSE_DEFAULT])
AC_MSG_RESULT([$WITH_FUSE])

if test "$WITH_FUSE" = "yes"; then

	PKG_CHECK_MODULES([LIBFUSE], [fuse3], [],
		[AC_MSG_ERROR([Cannot find libfuse3!
		Without libfuse3, wimlib cannot include support for mounting WIM
		images.  Either install libfuse3, or configure --without-fuse to
		disable this feature.  If your operating system packages
		development files separately, the package you need to install
		may be called libfuse3-dev, fuse-devel, or similar.])])
	PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES fuse"
	AC_DEFINE([WITH_FUSE], [1], [Define to 1 if using FUSE support])

	AC_CHECK_LIB([rt], [mq_open], [],
		     [AC_MSG_ERROR([Cannot find librt (the POSIX.1b Realtime
	Extensions Library)!  wimlib needs this for the POSIX message queue
	functions, which are used in the code for mounting WIM images.  Recent
	versions of glibc include this library.  Either install this library, or
	configure --without-fuse to disable support for mounting WIM images.])])

	PKGCONFIG_PRIVATE_LIBS="$PKGCONFIG_PRIVATE_LIBS -lrt"
	AC_SUBST([LIBRT_LIBS], [-lrt])
fi
AM_CONDITIONAL([WITH_FUSE], [test "$WITH_FUSE" = "yes"])

# ----------------------------- Other options ---------------------------------

AC_ARG_WITH(pkgconfigdir,
            [  --with-pkgconfigdir=DIR      pkgconfig file in DIR @<:@LIBDIR/pkgconfig@:>@],
            [pkgconfigdir=$withval],
            [pkgconfigdir='${libdir}/pkgconfig'])
AC_SUBST(pkgconfigdir)

AC_MSG_CHECKING([whether to enable supporting code for tests])
AC_ARG_ENABLE([test-support],
	      [AS_HELP_STRING([--enable-test-support],
			      [Enable supporting code for tests (developers only)])],
	      [ENABLE_TEST_SUPPORT=$enableval],
	      [ENABLE_TEST_SUPPORT=no])
AC_MSG_RESULT([$ENABLE_TEST_SUPPORT])
if test "$ENABLE_TEST_SUPPORT" = "yes" ; then
	AC_DEFINE([ENABLE_TEST_SUPPORT], [1],
		  [Define to 1 to enable supporting code for tests])
fi
AM_CONDITIONAL([ENABLE_TEST_SUPPORT], [test "$ENABLE_TEST_SUPPORT" = "yes"])

###############################################################################

AC_SUBST([PKGCONFIG_PRIVATE_REQUIRES], [$PKGCONFIG_PRIVATE_REQUIRES])
AC_SUBST([PKGCONFIG_PRIVATE_LIBS], [$PKGCONFIG_PRIVATE_LIBS])
AC_OUTPUT