1 ###############################################################################
3 AC_INIT([wimlib], m4_esyscmd_s([tools/get-version-number]),
4 [https://wimlib.net/forums/])
5 AC_CONFIG_SRCDIR([src/wim.c])
6 AC_CONFIG_MACRO_DIR([m4])
7 AC_CONFIG_AUX_DIR([build-aux])
8 AM_INIT_AUTOMAKE([-Wall -Werror subdir-objects foreign])
11 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
14 AC_CONFIG_HEADERS([config.h])
15 AC_CONFIG_FILES([Makefile] [doc/Doxyfile] [wimlib.pc])
16 AC_CONFIG_FILES([programs/mkwinpeimg], [chmod +x programs/mkwinpeimg])
18 PKGCONFIG_PRIVATE_REQUIRES=""
19 PKGCONFIG_PRIVATE_LIBS=""
21 ###############################################################################
22 # General platform features #
23 ###############################################################################
29 WINDOWS_NATIVE_BUILD="no"
31 PLATFORM_CFLAGS="-fvisibility=hidden"
37 WINDOWS_NATIVE_BUILD="yes"
38 # -D__MINGW_USE_VC2005_COMPAT: make time_t 64-bit on 32-bit Windows.
39 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"
40 PLATFORM_CFLAGS="-municode -mno-ms-bitfields"
41 PLATFORM_LDFLAGS="-no-undefined"
42 WITH_NTFS_3G_DEFAULT="no"
43 WITH_FUSE_DEFAULT="no"
47 WITH_NTFS_3G_DEFAULT="yes"
48 WITH_FUSE_DEFAULT="yes"
52 WITH_NTFS_3G_DEFAULT="yes"
53 WITH_FUSE_DEFAULT="no"
57 AC_SUBST([PLATFORM_CPPFLAGS], [$PLATFORM_CPPFLAGS])
58 AC_SUBST([PLATFORM_CFLAGS], [$PLATFORM_CFLAGS])
59 AC_SUBST([PLATFORM_LDFLAGS], [$PLATFORM_LDFLAGS])
60 AM_CONDITIONAL([WINDOWS_NATIVE_BUILD], [test "$WINDOWS_NATIVE_BUILD" = "yes"])
62 # Useful functions which we can do without.
63 AC_CHECK_FUNCS([futimens utimensat flock mempcpy \
64 openat fstatat readlinkat fdopendir posix_fallocate \
65 llistxattr lgetxattr fsetxattr lsetxattr getopt_long_only])
67 # Header checks, most of which are only here to satisfy conditional includes
68 # made by the libntfs-3g headers.
69 AC_CHECK_HEADERS([alloca.h \
88 # Does stat() support nanosecond-precision timestamps? (This is relevant on
89 # UNIX but not on Windows.)
90 AC_CHECK_MEMBER([struct stat.st_mtim],
91 [AC_DEFINE([HAVE_STAT_NANOSECOND_PRECISION], [1],
92 [Define to 1 if stat() supports nanosecond precision
95 [#include <sys/stat.h>])
97 ###############################################################################
98 # Required libraries #
99 ###############################################################################
101 # ------------------------------ pthreads -------------------------------------
102 if test "$WINDOWS_NATIVE_BUILD" != "yes"; then
103 AX_PTHREAD([], [AC_MSG_ERROR(["cannot find pthreads library"])])
106 # ------------------------------ libxml2 --------------------------------------
107 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0])
108 PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES libxml-2.0"
110 ###############################################################################
111 # Configuration options #
112 ###############################################################################
114 # ------------------------- ntfs-3g support -----------------------------------
116 AC_MSG_CHECKING([whether to include support for ntfs-3g])
117 AC_ARG_WITH([ntfs-3g],
118 [AS_HELP_STRING([--without-ntfs-3g],
119 [build without libntfs-3g. This will disable the
120 ability to capture or apply a WIM image directly
121 from/to an unmounted NTFS volume.])],
122 [WITH_NTFS_3G=$withval],
123 [WITH_NTFS_3G=$WITH_NTFS_3G_DEFAULT])
124 AC_MSG_RESULT([$WITH_NTFS_3G])
126 if test "$WITH_NTFS_3G" = "yes"; then
127 PKG_CHECK_MODULES([LIBNTFS_3G], [libntfs-3g >= 2011.4.12], [],
128 [AC_MSG_ERROR([Cannot find libntfs-3g version 2011-4-12 or
129 later! Without libntfs-3g, wimlib cannot include support for
130 capturing or applying a WIM image directly from/to an unmounted
131 NTFS volume while preserving NTFS-specific data such as
132 security descriptors and named data streams. Either install
133 libntfs-3g, or configure --without-ntfs-3g to disable this
135 PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES libntfs-3g"
136 AC_DEFINE([WITH_NTFS_3G], [1], [Define to 1 if using NTFS-3G support])
138 AM_CONDITIONAL([WITH_NTFS_3G], [test "$WITH_NTFS_3G" = "yes"])
140 # ------------------------ FUSE mount support ---------------------------------
142 AC_MSG_CHECKING([whether to include support for mounting WIMs])
144 [AS_HELP_STRING([--without-fuse],
145 [build without libfuse. This will disable the
146 ability to mount WIM images.])],
147 [WITH_FUSE=$withval],
148 [WITH_FUSE=$WITH_FUSE_DEFAULT])
149 AC_MSG_RESULT([$WITH_FUSE])
151 if test "$WITH_FUSE" = "yes"; then
153 PKG_CHECK_MODULES([LIBFUSE], [fuse], [],
154 [AC_MSG_ERROR([Cannot find libfuse!
155 Without libfuse, wimlib cannot include support for mounting WIM
156 images. Either install libfuse, or configure --without-fuse to
157 disable this feature.])])
158 PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES fuse"
159 AC_DEFINE([WITH_FUSE], [1], [Define to 1 if using FUSE support])
161 AC_CHECK_LIB([rt], [mq_open], [],
162 [AC_MSG_ERROR([Cannot find librt (the POSIX.1b Realtime
163 Extensions Library)! wimlib needs this for the POSIX message queue
164 functions, which are used in the code for mounting WIM images. Recent
165 versions of glibc include this library. Either install this library, or
166 configure --without-fuse to disable support for mounting WIM images.])])
168 PKGCONFIG_PRIVATE_LIBS="$PKGCONFIG_PRIVATE_LIBS -lrt"
169 AC_SUBST([LIBRT_LIBS], [-lrt])
171 AM_CONDITIONAL([WITH_FUSE], [test "$WITH_FUSE" = "yes"])
173 # ----------------------------- Other options ---------------------------------
175 AC_ARG_WITH(pkgconfigdir,
176 [ --with-pkgconfigdir=DIR pkgconfig file in DIR @<:@LIBDIR/pkgconfig@:>@],
177 [pkgconfigdir=$withval],
178 [pkgconfigdir='${libdir}/pkgconfig'])
179 AC_SUBST(pkgconfigdir)
181 AC_MSG_CHECKING([whether to enable supporting code for tests])
182 AC_ARG_ENABLE([test-support],
183 [AS_HELP_STRING([--enable-test-support],
184 [Enable supporting code for tests (developers only)])],
185 [ENABLE_TEST_SUPPORT=$enableval],
186 [ENABLE_TEST_SUPPORT=no])
187 AC_MSG_RESULT([$ENABLE_TEST_SUPPORT])
188 if test "$ENABLE_TEST_SUPPORT" = "yes" ; then
189 AC_DEFINE([ENABLE_TEST_SUPPORT], [1],
190 [Define to 1 to enable supporting code for tests])
192 AM_CONDITIONAL([ENABLE_TEST_SUPPORT], [test "$ENABLE_TEST_SUPPORT" = "yes"])
194 ###############################################################################
196 AC_SUBST([PKGCONFIG_PRIVATE_REQUIRES], [$PKGCONFIG_PRIVATE_REQUIRES])
197 AC_SUBST([PKGCONFIG_PRIVATE_LIBS], [$PKGCONFIG_PRIVATE_LIBS])