1*33b1fccfSAndroid Build Coastguard Worker# -*- Autoconf -*- 2*33b1fccfSAndroid Build Coastguard Worker# Process this file with autoconf to produce a configure script. 3*33b1fccfSAndroid Build Coastguard Worker 4*33b1fccfSAndroid Build Coastguard WorkerAC_PREREQ([2.69]) 5*33b1fccfSAndroid Build Coastguard Worker 6*33b1fccfSAndroid Build Coastguard Workerm4_define([erofs_utils_version], m4_esyscmd_s([scripts/get-version-number])) 7*33b1fccfSAndroid Build Coastguard Workerm4_define([erofs_utils_date], m4_esyscmd([sed -n '2p' VERSION | tr -d '\n'])) 8*33b1fccfSAndroid Build Coastguard Worker 9*33b1fccfSAndroid Build Coastguard WorkerAC_INIT([erofs-utils], [erofs_utils_version], [[email protected]]) 10*33b1fccfSAndroid Build Coastguard WorkerAC_CONFIG_SRCDIR([config.h.in]) 11*33b1fccfSAndroid Build Coastguard WorkerAC_CONFIG_HEADERS([config.h]) 12*33b1fccfSAndroid Build Coastguard WorkerAC_CONFIG_MACRO_DIR([m4]) 13*33b1fccfSAndroid Build Coastguard WorkerAC_CONFIG_AUX_DIR(config) 14*33b1fccfSAndroid Build Coastguard WorkerAM_INIT_AUTOMAKE([foreign -Wall]) 15*33b1fccfSAndroid Build Coastguard Worker 16*33b1fccfSAndroid Build Coastguard Worker# Checks for programs. 17*33b1fccfSAndroid Build Coastguard WorkerAM_PROG_AR 18*33b1fccfSAndroid Build Coastguard WorkerAC_PROG_CC 19*33b1fccfSAndroid Build Coastguard WorkerAC_PROG_INSTALL 20*33b1fccfSAndroid Build Coastguard Worker 21*33b1fccfSAndroid Build Coastguard WorkerLT_INIT 22*33b1fccfSAndroid Build Coastguard Worker 23*33b1fccfSAndroid Build Coastguard Worker# Test presence of pkg-config 24*33b1fccfSAndroid Build Coastguard WorkerAC_MSG_CHECKING([pkg-config m4 macros]) 25*33b1fccfSAndroid Build Coastguard Workerif test m4_ifdef([PKG_CHECK_MODULES], [yes], [no]) = "yes"; then 26*33b1fccfSAndroid Build Coastguard Worker AC_MSG_RESULT([yes]); 27*33b1fccfSAndroid Build Coastguard Workerelse 28*33b1fccfSAndroid Build Coastguard Worker AC_MSG_RESULT([no]); 29*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([pkg-config is required. See pkg-config.freedesktop.org]) 30*33b1fccfSAndroid Build Coastguard Workerfi 31*33b1fccfSAndroid Build Coastguard Worker 32*33b1fccfSAndroid Build Coastguard Workerdnl Check if the flag is supported by compiler 33*33b1fccfSAndroid Build Coastguard Workerdnl CC_CHECK_CFLAGS_SILENT([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) 34*33b1fccfSAndroid Build Coastguard WorkerAC_DEFUN([CC_CHECK_CFLAGS_SILENT], [ 35*33b1fccfSAndroid Build Coastguard Worker AC_CACHE_VAL(AS_TR_SH([cc_cv_cflags_$1]), 36*33b1fccfSAndroid Build Coastguard Worker [ac_save_CFLAGS="$CFLAGS" 37*33b1fccfSAndroid Build Coastguard Worker CFLAGS="$CFLAGS $1" 38*33b1fccfSAndroid Build Coastguard Worker AC_LINK_IFELSE([AC_LANG_SOURCE([int main() { return 0; }])], 39*33b1fccfSAndroid Build Coastguard Worker [eval "AS_TR_SH([cc_cv_cflags_$1])='yes'"], 40*33b1fccfSAndroid Build Coastguard Worker [eval "AS_TR_SH([cc_cv_cflags_$1])='no'"]) 41*33b1fccfSAndroid Build Coastguard Worker CFLAGS="$ac_save_CFLAGS" 42*33b1fccfSAndroid Build Coastguard Worker ]) 43*33b1fccfSAndroid Build Coastguard Worker 44*33b1fccfSAndroid Build Coastguard Worker AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes], 45*33b1fccfSAndroid Build Coastguard Worker [$2], [$3]) 46*33b1fccfSAndroid Build Coastguard Worker]) 47*33b1fccfSAndroid Build Coastguard Worker 48*33b1fccfSAndroid Build Coastguard Workerdnl Check if the flag is supported by compiler (cacheable) 49*33b1fccfSAndroid Build Coastguard Workerdnl CC_CHECK_CFLAG([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) 50*33b1fccfSAndroid Build Coastguard WorkerAC_DEFUN([CC_CHECK_CFLAG], [ 51*33b1fccfSAndroid Build Coastguard Worker AC_CACHE_CHECK([if $CC supports $1 flag], 52*33b1fccfSAndroid Build Coastguard Worker AS_TR_SH([cc_cv_cflags_$1]), 53*33b1fccfSAndroid Build Coastguard Worker CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here! 54*33b1fccfSAndroid Build Coastguard Worker ) 55*33b1fccfSAndroid Build Coastguard Worker 56*33b1fccfSAndroid Build Coastguard Worker AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes], 57*33b1fccfSAndroid Build Coastguard Worker [$2], [$3]) 58*33b1fccfSAndroid Build Coastguard Worker]) 59*33b1fccfSAndroid Build Coastguard Worker 60*33b1fccfSAndroid Build Coastguard Workerdnl CC_CHECK_CFLAGS([FLAG1 FLAG2], [action-if-found], [action-if-not]) 61*33b1fccfSAndroid Build Coastguard WorkerAC_DEFUN([CC_CHECK_CFLAGS], [ 62*33b1fccfSAndroid Build Coastguard Worker for flag in $1; do 63*33b1fccfSAndroid Build Coastguard Worker CC_CHECK_CFLAG($flag, [$2], [$3]) 64*33b1fccfSAndroid Build Coastguard Worker done 65*33b1fccfSAndroid Build Coastguard Worker]) 66*33b1fccfSAndroid Build Coastguard Worker 67*33b1fccfSAndroid Build Coastguard Workerdnl EROFS_UTILS_PARSE_DIRECTORY 68*33b1fccfSAndroid Build Coastguard Workerdnl Input: $1 = a string to a relative or absolute directory 69*33b1fccfSAndroid Build Coastguard Workerdnl Output: $2 = the variable to set with the absolute directory 70*33b1fccfSAndroid Build Coastguard WorkerAC_DEFUN([EROFS_UTILS_PARSE_DIRECTORY], 71*33b1fccfSAndroid Build Coastguard Worker[ 72*33b1fccfSAndroid Build Coastguard Worker dnl Check if argument is a directory 73*33b1fccfSAndroid Build Coastguard Worker if test -d $1 ; then 74*33b1fccfSAndroid Build Coastguard Worker dnl Get the absolute path of the directory 75*33b1fccfSAndroid Build Coastguard Worker dnl in case of relative directory. 76*33b1fccfSAndroid Build Coastguard Worker dnl If realpath is not a valid command, 77*33b1fccfSAndroid Build Coastguard Worker dnl an error is produced and we keep the given path. 78*33b1fccfSAndroid Build Coastguard Worker local_tmp=`realpath $1 2>/dev/null` 79*33b1fccfSAndroid Build Coastguard Worker if test "$local_tmp" != "" ; then 80*33b1fccfSAndroid Build Coastguard Worker if test -d "$local_tmp" ; then 81*33b1fccfSAndroid Build Coastguard Worker $2="$local_tmp" 82*33b1fccfSAndroid Build Coastguard Worker else 83*33b1fccfSAndroid Build Coastguard Worker $2=$1 84*33b1fccfSAndroid Build Coastguard Worker fi 85*33b1fccfSAndroid Build Coastguard Worker else 86*33b1fccfSAndroid Build Coastguard Worker $2=$1 87*33b1fccfSAndroid Build Coastguard Worker fi 88*33b1fccfSAndroid Build Coastguard Worker dnl Check for space in the directory 89*33b1fccfSAndroid Build Coastguard Worker if test `echo $1|cut -d' ' -f1` != $1 ; then 90*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR($1 directory shall not contain any space.) 91*33b1fccfSAndroid Build Coastguard Worker fi 92*33b1fccfSAndroid Build Coastguard Worker else 93*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR($1 shall be a valid directory) 94*33b1fccfSAndroid Build Coastguard Worker fi 95*33b1fccfSAndroid Build Coastguard Worker]) 96*33b1fccfSAndroid Build Coastguard Worker 97*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_VAR([MAX_BLOCK_SIZE], [The maximum block size which erofs-utils supports]) 98*33b1fccfSAndroid Build Coastguard Worker 99*33b1fccfSAndroid Build Coastguard WorkerAC_MSG_CHECKING([whether to enable multi-threading support]) 100*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_ENABLE([multithreading], 101*33b1fccfSAndroid Build Coastguard Worker AS_HELP_STRING([--enable-multithreading], 102*33b1fccfSAndroid Build Coastguard Worker [enable multi-threading support (EXPERIMENTAL) @<:@default=no@:>@]), 103*33b1fccfSAndroid Build Coastguard Worker [enable_multithreading="$enableval"], 104*33b1fccfSAndroid Build Coastguard Worker [enable_multithreading="no"]) 105*33b1fccfSAndroid Build Coastguard WorkerAC_MSG_RESULT([$enable_multithreading]) 106*33b1fccfSAndroid Build Coastguard Worker 107*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_ENABLE([debug], 108*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--enable-debug], 109*33b1fccfSAndroid Build Coastguard Worker [enable debugging mode @<:@default=no@:>@])], 110*33b1fccfSAndroid Build Coastguard Worker [enable_debug="$enableval"], 111*33b1fccfSAndroid Build Coastguard Worker [enable_debug="no"]) 112*33b1fccfSAndroid Build Coastguard Worker 113*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_ENABLE([werror], 114*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--enable-werror], 115*33b1fccfSAndroid Build Coastguard Worker [enable -Werror @<:@default=no@:>@])], 116*33b1fccfSAndroid Build Coastguard Worker [enable_werror="$enableval"], 117*33b1fccfSAndroid Build Coastguard Worker [enable_werror="no"]) 118*33b1fccfSAndroid Build Coastguard Worker 119*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_ENABLE([fuzzing], 120*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--enable-fuzzing], 121*33b1fccfSAndroid Build Coastguard Worker [set up fuzzing mode @<:@default=no@:>@])], 122*33b1fccfSAndroid Build Coastguard Worker [enable_fuzzing="$enableval"], 123*33b1fccfSAndroid Build Coastguard Worker [enable_fuzzing="no"]) 124*33b1fccfSAndroid Build Coastguard Worker 125*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_ENABLE(lz4, 126*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--disable-lz4], [disable LZ4 compression support @<:@default=enabled@:>@])], 127*33b1fccfSAndroid Build Coastguard Worker [enable_lz4="$enableval"], [enable_lz4="yes"]) 128*33b1fccfSAndroid Build Coastguard Worker 129*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_ENABLE(lzma, 130*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--disable-lzma], [disable LZMA compression support @<:@default=auto@:>@])], 131*33b1fccfSAndroid Build Coastguard Worker [enable_lzma="$enableval"]) 132*33b1fccfSAndroid Build Coastguard Worker 133*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_WITH(zlib, 134*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--without-zlib], 135*33b1fccfSAndroid Build Coastguard Worker [Ignore presence of zlib inflate support @<:@default=auto@:>@])]) 136*33b1fccfSAndroid Build Coastguard Worker 137*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_WITH(libdeflate, 138*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--with-libdeflate], 139*33b1fccfSAndroid Build Coastguard Worker [Enable and build with libdeflate inflate support @<:@default=disabled@:>@])], [], 140*33b1fccfSAndroid Build Coastguard Worker [with_libdeflate="no"]) 141*33b1fccfSAndroid Build Coastguard Worker 142*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_WITH(libzstd, 143*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--with-libzstd], 144*33b1fccfSAndroid Build Coastguard Worker [Enable and build with of libzstd support @<:@default=auto@:>@])]) 145*33b1fccfSAndroid Build Coastguard Worker 146*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_WITH(qpl, 147*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--with-qpl], 148*33b1fccfSAndroid Build Coastguard Worker [Enable and build with Intel QPL support @<:@default=disabled@:>@])], [], 149*33b1fccfSAndroid Build Coastguard Worker [with_qpl="no"]) 150*33b1fccfSAndroid Build Coastguard Worker 151*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_ENABLE(fuse, 152*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--enable-fuse], [enable erofsfuse @<:@default=no@:>@])], 153*33b1fccfSAndroid Build Coastguard Worker [enable_fuse="$enableval"], [enable_fuse="no"]) 154*33b1fccfSAndroid Build Coastguard Worker 155*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_ENABLE([static-fuse], 156*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--enable-static-fuse], 157*33b1fccfSAndroid Build Coastguard Worker [build erofsfuse as a static library @<:@default=no@:>@])], 158*33b1fccfSAndroid Build Coastguard Worker [enable_static_fuse="$enableval"], 159*33b1fccfSAndroid Build Coastguard Worker [enable_static_fuse="no"]) 160*33b1fccfSAndroid Build Coastguard Worker 161*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_WITH(uuid, 162*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--without-uuid], 163*33b1fccfSAndroid Build Coastguard Worker [Ignore presence of libuuid and disable uuid support @<:@default=enabled@:>@])]) 164*33b1fccfSAndroid Build Coastguard Worker 165*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_WITH(selinux, 166*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--with-selinux], 167*33b1fccfSAndroid Build Coastguard Worker [enable and build with selinux support @<:@default=no@:>@])], 168*33b1fccfSAndroid Build Coastguard Worker [case "$with_selinux" in 169*33b1fccfSAndroid Build Coastguard Worker yes|no) ;; 170*33b1fccfSAndroid Build Coastguard Worker *) AC_MSG_ERROR([invalid argument to --with-selinux]) 171*33b1fccfSAndroid Build Coastguard Worker ;; 172*33b1fccfSAndroid Build Coastguard Worker esac], [with_selinux=no]) 173*33b1fccfSAndroid Build Coastguard Worker 174*33b1fccfSAndroid Build Coastguard Worker# Checks for libraries. 175*33b1fccfSAndroid Build Coastguard Worker# Use customized LZ4 library path when specified. 176*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_WITH(lz4-incdir, 177*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--with-lz4-incdir=DIR], [LZ4 include directory])], [ 178*33b1fccfSAndroid Build Coastguard Worker EROFS_UTILS_PARSE_DIRECTORY(["$withval"],[withval])]) 179*33b1fccfSAndroid Build Coastguard Worker 180*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_WITH(lz4-libdir, 181*33b1fccfSAndroid Build Coastguard Worker [AS_HELP_STRING([--with-lz4-libdir=DIR], [LZ4 lib directory])], [ 182*33b1fccfSAndroid Build Coastguard Worker EROFS_UTILS_PARSE_DIRECTORY(["$withval"],[withval])]) 183*33b1fccfSAndroid Build Coastguard Worker 184*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_VAR([LZ4_CFLAGS], [C compiler flags for lz4]) 185*33b1fccfSAndroid Build Coastguard WorkerAC_ARG_VAR([LZ4_LIBS], [linker flags for lz4]) 186*33b1fccfSAndroid Build Coastguard Worker 187*33b1fccfSAndroid Build Coastguard Worker# Checks for header files. 188*33b1fccfSAndroid Build Coastguard WorkerAC_CHECK_HEADERS(m4_flatten([ 189*33b1fccfSAndroid Build Coastguard Worker dirent.h 190*33b1fccfSAndroid Build Coastguard Worker execinfo.h 191*33b1fccfSAndroid Build Coastguard Worker fcntl.h 192*33b1fccfSAndroid Build Coastguard Worker getopt.h 193*33b1fccfSAndroid Build Coastguard Worker inttypes.h 194*33b1fccfSAndroid Build Coastguard Worker linux/aufs_type.h 195*33b1fccfSAndroid Build Coastguard Worker linux/falloc.h 196*33b1fccfSAndroid Build Coastguard Worker linux/fs.h 197*33b1fccfSAndroid Build Coastguard Worker linux/types.h 198*33b1fccfSAndroid Build Coastguard Worker linux/xattr.h 199*33b1fccfSAndroid Build Coastguard Worker limits.h 200*33b1fccfSAndroid Build Coastguard Worker stddef.h 201*33b1fccfSAndroid Build Coastguard Worker stdint.h 202*33b1fccfSAndroid Build Coastguard Worker stdlib.h 203*33b1fccfSAndroid Build Coastguard Worker string.h 204*33b1fccfSAndroid Build Coastguard Worker sys/ioctl.h 205*33b1fccfSAndroid Build Coastguard Worker sys/mman.h 206*33b1fccfSAndroid Build Coastguard Worker sys/random.h 207*33b1fccfSAndroid Build Coastguard Worker sys/sendfile.h 208*33b1fccfSAndroid Build Coastguard Worker sys/stat.h 209*33b1fccfSAndroid Build Coastguard Worker sys/statfs.h 210*33b1fccfSAndroid Build Coastguard Worker sys/sysmacros.h 211*33b1fccfSAndroid Build Coastguard Worker sys/time.h 212*33b1fccfSAndroid Build Coastguard Worker unistd.h 213*33b1fccfSAndroid Build Coastguard Worker])) 214*33b1fccfSAndroid Build Coastguard Worker 215*33b1fccfSAndroid Build Coastguard WorkerAC_HEADER_TIOCGWINSZ 216*33b1fccfSAndroid Build Coastguard Worker 217*33b1fccfSAndroid Build Coastguard Worker# Checks for typedefs, structures, and compiler characteristics. 218*33b1fccfSAndroid Build Coastguard WorkerAC_C_INLINE 219*33b1fccfSAndroid Build Coastguard WorkerAC_TYPE_INT64_T 220*33b1fccfSAndroid Build Coastguard WorkerAC_TYPE_SIZE_T 221*33b1fccfSAndroid Build Coastguard WorkerAC_TYPE_SSIZE_T 222*33b1fccfSAndroid Build Coastguard WorkerAC_CHECK_MEMBERS([struct stat.st_rdev]) 223*33b1fccfSAndroid Build Coastguard WorkerAC_CHECK_MEMBERS([struct stat.st_atim]) 224*33b1fccfSAndroid Build Coastguard WorkerAC_CHECK_MEMBERS([struct stat.st_atimensec]) 225*33b1fccfSAndroid Build Coastguard WorkerAC_TYPE_UINT64_T 226*33b1fccfSAndroid Build Coastguard Worker 227*33b1fccfSAndroid Build Coastguard Worker# 228*33b1fccfSAndroid Build Coastguard Worker# Check to see if llseek() is declared in unistd.h. On some libc's 229*33b1fccfSAndroid Build Coastguard Worker# it is, and on others it isn't..... Thank you glibc developers.... 230*33b1fccfSAndroid Build Coastguard Worker# 231*33b1fccfSAndroid Build Coastguard WorkerAC_CHECK_DECL(llseek, 232*33b1fccfSAndroid Build Coastguard Worker [AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1, 233*33b1fccfSAndroid Build Coastguard Worker [Define to 1 if llseek declared in unistd.h])],, 234*33b1fccfSAndroid Build Coastguard Worker [#include <unistd.h>]) 235*33b1fccfSAndroid Build Coastguard Worker 236*33b1fccfSAndroid Build Coastguard Worker# 237*33b1fccfSAndroid Build Coastguard Worker# Check to see if lseek64() is declared in unistd.h. Glibc's header files 238*33b1fccfSAndroid Build Coastguard Worker# are so convoluted that I can't tell whether it will always be defined, 239*33b1fccfSAndroid Build Coastguard Worker# and if it isn't defined while lseek64 is defined in the library, 240*33b1fccfSAndroid Build Coastguard Worker# disaster will strike. 241*33b1fccfSAndroid Build Coastguard Worker# 242*33b1fccfSAndroid Build Coastguard Worker# Warning! Use of --enable-gcc-wall may throw off this test. 243*33b1fccfSAndroid Build Coastguard Worker# 244*33b1fccfSAndroid Build Coastguard WorkerAC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1, 245*33b1fccfSAndroid Build Coastguard Worker [Define to 1 if lseek64 declared in unistd.h])],, 246*33b1fccfSAndroid Build Coastguard Worker [#define _LARGEFILE_SOURCE 247*33b1fccfSAndroid Build Coastguard Worker #define _LARGEFILE64_SOURCE 248*33b1fccfSAndroid Build Coastguard Worker #include <unistd.h>]) 249*33b1fccfSAndroid Build Coastguard Worker 250*33b1fccfSAndroid Build Coastguard WorkerAC_CHECK_DECL(memrchr,[AC_DEFINE(HAVE_MEMRCHR, 1, 251*33b1fccfSAndroid Build Coastguard Worker [Define to 1 if memrchr declared in string.h])],, 252*33b1fccfSAndroid Build Coastguard Worker [#define _GNU_SOURCE 253*33b1fccfSAndroid Build Coastguard Worker #include <string.h>]) 254*33b1fccfSAndroid Build Coastguard Worker 255*33b1fccfSAndroid Build Coastguard Worker# Checks for library functions. 256*33b1fccfSAndroid Build Coastguard WorkerAC_CHECK_FUNCS(m4_flatten([ 257*33b1fccfSAndroid Build Coastguard Worker backtrace 258*33b1fccfSAndroid Build Coastguard Worker copy_file_range 259*33b1fccfSAndroid Build Coastguard Worker fallocate 260*33b1fccfSAndroid Build Coastguard Worker gettimeofday 261*33b1fccfSAndroid Build Coastguard Worker lgetxattr 262*33b1fccfSAndroid Build Coastguard Worker llistxattr 263*33b1fccfSAndroid Build Coastguard Worker memset 264*33b1fccfSAndroid Build Coastguard Worker realpath 265*33b1fccfSAndroid Build Coastguard Worker lseek64 266*33b1fccfSAndroid Build Coastguard Worker ftello64 267*33b1fccfSAndroid Build Coastguard Worker pread64 268*33b1fccfSAndroid Build Coastguard Worker pwrite64 269*33b1fccfSAndroid Build Coastguard Worker posix_fadvise 270*33b1fccfSAndroid Build Coastguard Worker fstatfs 271*33b1fccfSAndroid Build Coastguard Worker sendfile 272*33b1fccfSAndroid Build Coastguard Worker strdup 273*33b1fccfSAndroid Build Coastguard Worker strerror 274*33b1fccfSAndroid Build Coastguard Worker strrchr 275*33b1fccfSAndroid Build Coastguard Worker strtoull 276*33b1fccfSAndroid Build Coastguard Worker sysconf 277*33b1fccfSAndroid Build Coastguard Worker tmpfile64 278*33b1fccfSAndroid Build Coastguard Worker utimensat])) 279*33b1fccfSAndroid Build Coastguard Worker 280*33b1fccfSAndroid Build Coastguard Worker# Detect maximum block size if necessary 281*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$MAX_BLOCK_SIZE" = "x"], [ 282*33b1fccfSAndroid Build Coastguard Worker AC_CACHE_CHECK([sysconf (_SC_PAGESIZE)], [erofs_cv_max_block_size], 283*33b1fccfSAndroid Build Coastguard Worker AC_RUN_IFELSE([AC_LANG_PROGRAM( 284*33b1fccfSAndroid Build Coastguard Worker[[ 285*33b1fccfSAndroid Build Coastguard Worker#include <unistd.h> 286*33b1fccfSAndroid Build Coastguard Worker#include <stdio.h> 287*33b1fccfSAndroid Build Coastguard Worker]], 288*33b1fccfSAndroid Build Coastguard Worker[[ 289*33b1fccfSAndroid Build Coastguard Worker int result; 290*33b1fccfSAndroid Build Coastguard Worker FILE *f; 291*33b1fccfSAndroid Build Coastguard Worker 292*33b1fccfSAndroid Build Coastguard Worker result = sysconf(_SC_PAGESIZE); 293*33b1fccfSAndroid Build Coastguard Worker if (result < 0) 294*33b1fccfSAndroid Build Coastguard Worker return 1; 295*33b1fccfSAndroid Build Coastguard Worker 296*33b1fccfSAndroid Build Coastguard Worker f = fopen("conftest.out", "w"); 297*33b1fccfSAndroid Build Coastguard Worker if (!f) 298*33b1fccfSAndroid Build Coastguard Worker return 1; 299*33b1fccfSAndroid Build Coastguard Worker 300*33b1fccfSAndroid Build Coastguard Worker fprintf(f, "%d", result); 301*33b1fccfSAndroid Build Coastguard Worker fclose(f); 302*33b1fccfSAndroid Build Coastguard Worker return 0; 303*33b1fccfSAndroid Build Coastguard Worker]])], 304*33b1fccfSAndroid Build Coastguard Worker [erofs_cv_max_block_size=`cat conftest.out`], 305*33b1fccfSAndroid Build Coastguard Worker [erofs_cv_max_block_size=4096], 306*33b1fccfSAndroid Build Coastguard Worker [erofs_cv_max_block_size=4096])) 307*33b1fccfSAndroid Build Coastguard Worker], [erofs_cv_max_block_size=$MAX_BLOCK_SIZE]) 308*33b1fccfSAndroid Build Coastguard Worker 309*33b1fccfSAndroid Build Coastguard Worker# Configure multi-threading support 310*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$enable_multithreading" != "xno"], [ 311*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_HEADERS([pthread.h]) 312*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_LIB([pthread], [pthread_mutex_lock], [], 313*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([libpthread is required for multi-threaded build])) 314*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE(EROFS_MT_ENABLED, 1, [Enable multi-threading support]) 315*33b1fccfSAndroid Build Coastguard Worker], []) 316*33b1fccfSAndroid Build Coastguard Worker 317*33b1fccfSAndroid Build Coastguard Worker# Configure debug mode 318*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$enable_debug" != "xno"], [], [ 319*33b1fccfSAndroid Build Coastguard Worker dnl Turn off all assert checking. 320*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="$CPPFLAGS -DNDEBUG" 321*33b1fccfSAndroid Build Coastguard Worker]) 322*33b1fccfSAndroid Build Coastguard Worker 323*33b1fccfSAndroid Build Coastguard Worker# Configure -Werror 324*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$enable_werror" != "xyes"], [], [ 325*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="$CPPFLAGS -Werror" 326*33b1fccfSAndroid Build Coastguard Worker]) 327*33b1fccfSAndroid Build Coastguard Worker 328*33b1fccfSAndroid Build Coastguard Worker# Configure libuuid 329*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$with_uuid" != "xno"], [ 330*33b1fccfSAndroid Build Coastguard Worker PKG_CHECK_MODULES([libuuid], [uuid]) 331*33b1fccfSAndroid Build Coastguard Worker # Paranoia: don't trust the result reported by pkgconfig before trying out 332*33b1fccfSAndroid Build Coastguard Worker saved_LIBS="$LIBS" 333*33b1fccfSAndroid Build Coastguard Worker saved_CPPFLAGS=${CPPFLAGS} 334*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${libuuid_CFLAGS} ${CPPFLAGS}" 335*33b1fccfSAndroid Build Coastguard Worker LIBS="${libuuid_LIBS} $LIBS" 336*33b1fccfSAndroid Build Coastguard Worker AC_MSG_CHECKING([libuuid usability]) 337*33b1fccfSAndroid Build Coastguard Worker AC_TRY_LINK([ 338*33b1fccfSAndroid Build Coastguard Worker#include <uuid.h> 339*33b1fccfSAndroid Build Coastguard Worker], [ 340*33b1fccfSAndroid Build Coastguard Workeruuid_t tmp; 341*33b1fccfSAndroid Build Coastguard Worker 342*33b1fccfSAndroid Build Coastguard Workeruuid_generate(tmp); 343*33b1fccfSAndroid Build Coastguard Workerreturn 0; 344*33b1fccfSAndroid Build Coastguard Worker], [have_uuid="yes" 345*33b1fccfSAndroid Build Coastguard Worker AC_MSG_RESULT([yes])], [ 346*33b1fccfSAndroid Build Coastguard Worker have_uuid="no" 347*33b1fccfSAndroid Build Coastguard Worker AC_MSG_RESULT([no]) 348*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([libuuid doesn't work properly])]) 349*33b1fccfSAndroid Build Coastguard Worker LIBS="${saved_LIBS}" 350*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${saved_CPPFLAGS}"], [have_uuid="no"]) 351*33b1fccfSAndroid Build Coastguard Worker 352*33b1fccfSAndroid Build Coastguard Worker# Configure selinux 353*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$with_selinux" != "xno"], [ 354*33b1fccfSAndroid Build Coastguard Worker PKG_CHECK_MODULES([libselinux], [libselinux]) 355*33b1fccfSAndroid Build Coastguard Worker # Paranoia: don't trust the result reported by pkgconfig before trying out 356*33b1fccfSAndroid Build Coastguard Worker saved_LIBS="$LIBS" 357*33b1fccfSAndroid Build Coastguard Worker saved_CPPFLAGS=${CPPFLAGS} 358*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${libselinux_CFLAGS} ${CPPFLAGS}" 359*33b1fccfSAndroid Build Coastguard Worker LIBS="${libselinux_LIBS} $LIBS" 360*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_LIB(selinux, selabel_lookup, [ 361*33b1fccfSAndroid Build Coastguard Worker have_selinux="yes" ], [ 362*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([libselinux doesn't work properly])]) 363*33b1fccfSAndroid Build Coastguard Worker LIBS="${saved_LIBS}" 364*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${saved_CPPFLAGS}"], [have_selinux="no"]) 365*33b1fccfSAndroid Build Coastguard Worker 366*33b1fccfSAndroid Build Coastguard Worker# Configure fuse 367*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$enable_fuse" != "xno"], [ 368*33b1fccfSAndroid Build Coastguard Worker # Paranoia: don't trust the result reported by pkgconfig before trying out 369*33b1fccfSAndroid Build Coastguard Worker saved_LIBS="$LIBS" 370*33b1fccfSAndroid Build Coastguard Worker saved_CPPFLAGS=${CPPFLAGS} 371*33b1fccfSAndroid Build Coastguard Worker PKG_CHECK_MODULES([libfuse3], [fuse3 >= 3.0], [ 372*33b1fccfSAndroid Build Coastguard Worker PKG_CHECK_MODULES([libfuse3_0], [fuse3 >= 3.0 fuse3 < 3.2], [ 373*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([FUSE_USE_VERSION], [30], [used FUSE API version]) 374*33b1fccfSAndroid Build Coastguard Worker ], [ 375*33b1fccfSAndroid Build Coastguard Worker PKG_CHECK_MODULES([libfuse3_2], [fuse3 >= 3.2], [ 376*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([FUSE_USE_VERSION], [32], [used FUSE API version]) 377*33b1fccfSAndroid Build Coastguard Worker ]) 378*33b1fccfSAndroid Build Coastguard Worker ]) 379*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${libfuse3_CFLAGS} ${CPPFLAGS}" 380*33b1fccfSAndroid Build Coastguard Worker LIBS="${libfuse3_LIBS} $LIBS" 381*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_LIB(fuse3, fuse_session_new, [], [ 382*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([libfuse3 (>= 3.0) doesn't work properly for lowlevel api])]) 383*33b1fccfSAndroid Build Coastguard Worker have_fuse="yes" 384*33b1fccfSAndroid Build Coastguard Worker ], [ 385*33b1fccfSAndroid Build Coastguard Worker PKG_CHECK_MODULES([libfuse2], [fuse >= 2.6], [ 386*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([FUSE_USE_VERSION], [26], [used FUSE API version]) 387*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${libfuse2_CFLAGS} ${CPPFLAGS}" 388*33b1fccfSAndroid Build Coastguard Worker LIBS="${libfuse2_LIBS} $LIBS" 389*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_LIB(fuse, fuse_lowlevel_new, [], [ 390*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([libfuse (>= 2.6) doesn't work properly for lowlevel api])]) 391*33b1fccfSAndroid Build Coastguard Worker have_fuse="yes" 392*33b1fccfSAndroid Build Coastguard Worker ], [have_fuse="no"]) 393*33b1fccfSAndroid Build Coastguard Worker ]) 394*33b1fccfSAndroid Build Coastguard Worker LIBS="${saved_LIBS}" 395*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${saved_CPPFLAGS}"], [have_fuse="no"]) 396*33b1fccfSAndroid Build Coastguard Worker 397*33b1fccfSAndroid Build Coastguard Worker# Configure lz4 398*33b1fccfSAndroid Build Coastguard Workertest -z $LZ4_LIBS && LZ4_LIBS='-llz4' 399*33b1fccfSAndroid Build Coastguard Worker 400*33b1fccfSAndroid Build Coastguard Workerif test "x$enable_lz4" = "xyes"; then 401*33b1fccfSAndroid Build Coastguard Worker test -z "${with_lz4_incdir}" || LZ4_CFLAGS="-I$with_lz4_incdir $LZ4_CFLAGS" 402*33b1fccfSAndroid Build Coastguard Worker 403*33b1fccfSAndroid Build Coastguard Worker saved_CPPFLAGS=${CPPFLAGS} 404*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${LZ4_CFLAGS} ${CPPFLAGS}" 405*33b1fccfSAndroid Build Coastguard Worker 406*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_HEADERS([lz4.h],[have_lz4h="yes"], []) 407*33b1fccfSAndroid Build Coastguard Worker 408*33b1fccfSAndroid Build Coastguard Worker if test "x${have_lz4h}" = "xyes" ; then 409*33b1fccfSAndroid Build Coastguard Worker saved_LIBS="$LIBS" 410*33b1fccfSAndroid Build Coastguard Worker saved_LDFLAGS=${LDFLAGS} 411*33b1fccfSAndroid Build Coastguard Worker test -z "${with_lz4_libdir}" || LDFLAGS="-L$with_lz4_libdir ${LDFLAGS}" 412*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_LIB(lz4, LZ4_compress_destSize, [ 413*33b1fccfSAndroid Build Coastguard Worker have_lz4="yes" 414*33b1fccfSAndroid Build Coastguard Worker have_lz4hc="yes" 415*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_LIB(lz4, LZ4_compress_HC_destSize, [], [ 416*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_DECL(LZ4_compress_HC_destSize, [lz4_force_static="yes"], 417*33b1fccfSAndroid Build Coastguard Worker [have_lz4hc="no"], [[ 418*33b1fccfSAndroid Build Coastguard Worker#define LZ4_HC_STATIC_LINKING_ONLY (1) 419*33b1fccfSAndroid Build Coastguard Worker#include <lz4hc.h> 420*33b1fccfSAndroid Build Coastguard Worker ]]) 421*33b1fccfSAndroid Build Coastguard Worker ]) 422*33b1fccfSAndroid Build Coastguard Worker ], [AC_MSG_ERROR([Cannot find proper lz4 version (>= 1.8.0)])]) 423*33b1fccfSAndroid Build Coastguard Worker LDFLAGS=${saved_LDFLAGS} 424*33b1fccfSAndroid Build Coastguard Worker LIBS="${saved_LIBS}" 425*33b1fccfSAndroid Build Coastguard Worker fi 426*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS=${saved_CPPFLAGS} 427*33b1fccfSAndroid Build Coastguard Workerfi 428*33b1fccfSAndroid Build Coastguard Worker 429*33b1fccfSAndroid Build Coastguard Worker# Configure liblzma 430*33b1fccfSAndroid Build Coastguard Workerhave_liblzma="no" 431*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$enable_lzma" != "xno"], [ 432*33b1fccfSAndroid Build Coastguard Worker saved_CPPFLAGS=${CPPFLAGS} 433*33b1fccfSAndroid Build Coastguard Worker PKG_CHECK_MODULES([liblzma], [liblzma], [ 434*33b1fccfSAndroid Build Coastguard Worker # Paranoia: don't trust the result reported by pkgconfig before trying out 435*33b1fccfSAndroid Build Coastguard Worker saved_LIBS="$LIBS" 436*33b1fccfSAndroid Build Coastguard Worker saved_CPPFLAGS=${CPPFLAGS} 437*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${liblzma_CFLAGS} ${CPPFLAGS}" 438*33b1fccfSAndroid Build Coastguard Worker LIBS="${liblzma_LIBS} $LIBS" 439*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_HEADERS([lzma.h],[ 440*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_LIB(lzma, lzma_microlzma_encoder, [ 441*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_DECL(lzma_microlzma_encoder, [have_liblzma="yes"], 442*33b1fccfSAndroid Build Coastguard Worker [], [[ 443*33b1fccfSAndroid Build Coastguard Worker#include <lzma.h> 444*33b1fccfSAndroid Build Coastguard Worker ]]) 445*33b1fccfSAndroid Build Coastguard Worker ]) 446*33b1fccfSAndroid Build Coastguard Worker ]) 447*33b1fccfSAndroid Build Coastguard Worker LIBS="${saved_LIBS}" 448*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${saved_CPPFLAGS}" 449*33b1fccfSAndroid Build Coastguard Worker ], [[]]) 450*33b1fccfSAndroid Build Coastguard Worker AS_IF([test "x$enable_lzma" = "xyes" -a "x$have_liblzma" != "xyes"], [ 451*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([Cannot find a proper liblzma version]) 452*33b1fccfSAndroid Build Coastguard Worker ]) 453*33b1fccfSAndroid Build Coastguard Worker]) 454*33b1fccfSAndroid Build Coastguard Worker 455*33b1fccfSAndroid Build Coastguard Worker# Configure zlib 456*33b1fccfSAndroid Build Coastguard Workerhave_zlib="no" 457*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$with_zlib" != "xno"], [ 458*33b1fccfSAndroid Build Coastguard Worker PKG_CHECK_MODULES([zlib], [zlib], [ 459*33b1fccfSAndroid Build Coastguard Worker # Paranoia: don't trust the result reported by pkgconfig before trying out 460*33b1fccfSAndroid Build Coastguard Worker saved_LIBS="$LIBS" 461*33b1fccfSAndroid Build Coastguard Worker saved_CPPFLAGS=${CPPFLAGS} 462*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${zlib_CFLAGS} ${CPPFLAGS}" 463*33b1fccfSAndroid Build Coastguard Worker LIBS="${zlib_LIBS} $LIBS" 464*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_HEADERS([zlib.h],[ 465*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_LIB(z, inflate, [], [ 466*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([zlib doesn't work properly])]) 467*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_DECL(inflate, [have_zlib="yes"], 468*33b1fccfSAndroid Build Coastguard Worker [AC_MSG_ERROR([zlib doesn't work properly])], [[ 469*33b1fccfSAndroid Build Coastguard Worker#include <zlib.h> 470*33b1fccfSAndroid Build Coastguard Worker ]]) 471*33b1fccfSAndroid Build Coastguard Worker ]) 472*33b1fccfSAndroid Build Coastguard Worker LIBS="${saved_LIBS}" 473*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${saved_CPPFLAGS}"], [ 474*33b1fccfSAndroid Build Coastguard Worker AS_IF([test "x$with_zlib" = "xyes"], [ 475*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([Cannot find proper zlib]) 476*33b1fccfSAndroid Build Coastguard Worker ]) 477*33b1fccfSAndroid Build Coastguard Worker ]) 478*33b1fccfSAndroid Build Coastguard Worker]) 479*33b1fccfSAndroid Build Coastguard Worker 480*33b1fccfSAndroid Build Coastguard Worker# Configure libdeflate 481*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$with_libdeflate" != "xno"], [ 482*33b1fccfSAndroid Build Coastguard Worker PKG_CHECK_MODULES([libdeflate], [libdeflate]) 483*33b1fccfSAndroid Build Coastguard Worker # Paranoia: don't trust the result reported by pkgconfig before trying out 484*33b1fccfSAndroid Build Coastguard Worker saved_LIBS="$LIBS" 485*33b1fccfSAndroid Build Coastguard Worker saved_CPPFLAGS=${CPPFLAGS} 486*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${libdeflate_CFLAGS} ${CPPFLAGS}" 487*33b1fccfSAndroid Build Coastguard Worker LIBS="${libdeflate_LIBS} $LIBS" 488*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_LIB(deflate, libdeflate_deflate_decompress, [ 489*33b1fccfSAndroid Build Coastguard Worker have_libdeflate="yes" ], [ 490*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([libdeflate doesn't work properly])]) 491*33b1fccfSAndroid Build Coastguard Worker LIBS="${saved_LIBS}" 492*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${saved_CPPFLAGS}"], [have_libdeflate="no"]) 493*33b1fccfSAndroid Build Coastguard Worker 494*33b1fccfSAndroid Build Coastguard Worker# Configure libzstd 495*33b1fccfSAndroid Build Coastguard Workerhave_libzstd="no" 496*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$with_libzstd" != "xno"], [ 497*33b1fccfSAndroid Build Coastguard Worker PKG_CHECK_MODULES([libzstd], [libzstd >= 1.4.0], [ 498*33b1fccfSAndroid Build Coastguard Worker # Paranoia: don't trust the result reported by pkgconfig before trying out 499*33b1fccfSAndroid Build Coastguard Worker saved_LIBS="$LIBS" 500*33b1fccfSAndroid Build Coastguard Worker saved_CPPFLAGS=${CPPFLAGS} 501*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${libzstd_CFLAGS} ${CPPFLAGS}" 502*33b1fccfSAndroid Build Coastguard Worker LIBS="${libzstd_LIBS} $LIBS" 503*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_HEADERS([zstd.h],[ 504*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_LIB(zstd, ZSTD_compress2, [], [ 505*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([libzstd doesn't work properly])]) 506*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_DECL(ZSTD_compress2, [have_libzstd="yes"], 507*33b1fccfSAndroid Build Coastguard Worker [AC_MSG_ERROR([libzstd doesn't work properly])], [[ 508*33b1fccfSAndroid Build Coastguard Worker#include <zstd.h> 509*33b1fccfSAndroid Build Coastguard Worker ]]) 510*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_FUNCS([ZSTD_getFrameContentSize]) 511*33b1fccfSAndroid Build Coastguard Worker ]) 512*33b1fccfSAndroid Build Coastguard Worker LIBS="${saved_LIBS}" 513*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${saved_CPPFLAGS}"], [ 514*33b1fccfSAndroid Build Coastguard Worker AS_IF([test "x$with_libzstd" = "xyes"], [ 515*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([Cannot find proper libzstd]) 516*33b1fccfSAndroid Build Coastguard Worker ]) 517*33b1fccfSAndroid Build Coastguard Worker ]) 518*33b1fccfSAndroid Build Coastguard Worker]) 519*33b1fccfSAndroid Build Coastguard Worker 520*33b1fccfSAndroid Build Coastguard Worker# Configure Intel QPL 521*33b1fccfSAndroid Build Coastguard Workerhave_qpl="no" 522*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$with_qpl" != "xno"], [ 523*33b1fccfSAndroid Build Coastguard Worker PKG_CHECK_MODULES([libqpl], [qpl >= 1.5.0], [ 524*33b1fccfSAndroid Build Coastguard Worker # Paranoia: don't trust the result reported by pkgconfig before trying out 525*33b1fccfSAndroid Build Coastguard Worker saved_LIBS="$LIBS" 526*33b1fccfSAndroid Build Coastguard Worker saved_CPPFLAGS=${CPPFLAGS} 527*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${libqpl_CFLAGS} ${CPPFLAGS}" 528*33b1fccfSAndroid Build Coastguard Worker LIBS="${libqpl_LIBS} $LIBS" 529*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_HEADERS([qpl/qpl.h],[ 530*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_LIB(qpl, qpl_execute_job, [], [ 531*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([libqpl doesn't work properly])]) 532*33b1fccfSAndroid Build Coastguard Worker AC_CHECK_DECL(qpl_execute_job, [have_qpl="yes"], 533*33b1fccfSAndroid Build Coastguard Worker [AC_MSG_ERROR([libqpl doesn't work properly])], [[ 534*33b1fccfSAndroid Build Coastguard Worker#include <qpl/qpl.h> 535*33b1fccfSAndroid Build Coastguard Worker ]]) 536*33b1fccfSAndroid Build Coastguard Worker ]) 537*33b1fccfSAndroid Build Coastguard Worker LIBS="${saved_LIBS}" 538*33b1fccfSAndroid Build Coastguard Worker CPPFLAGS="${saved_CPPFLAGS}"], [ 539*33b1fccfSAndroid Build Coastguard Worker AS_IF([test "x$with_qpl" = "xyes"], [ 540*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([Cannot find proper libqpl]) 541*33b1fccfSAndroid Build Coastguard Worker ]) 542*33b1fccfSAndroid Build Coastguard Worker ]) 543*33b1fccfSAndroid Build Coastguard Worker]) 544*33b1fccfSAndroid Build Coastguard Worker 545*33b1fccfSAndroid Build Coastguard Worker# Enable 64-bit off_t 546*33b1fccfSAndroid Build Coastguard WorkerCFLAGS+=" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" 547*33b1fccfSAndroid Build Coastguard Worker 548*33b1fccfSAndroid Build Coastguard Worker# Configure fuzzing mode 549*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$enable_fuzzing" != "xyes"], [], [ 550*33b1fccfSAndroid Build Coastguard Worker CC_CHECK_CFLAGS(["-fsanitize=address,fuzzer-no-link"], [ 551*33b1fccfSAndroid Build Coastguard Worker CFLAGS="$CFLAGS -g -O1 -fsanitize=address,fuzzer-no-link" 552*33b1fccfSAndroid Build Coastguard Worker ], [ 553*33b1fccfSAndroid Build Coastguard Worker AC_MSG_ERROR([Compiler doesn't support `-fsanitize=address,fuzzer-no-link`]) 554*33b1fccfSAndroid Build Coastguard Worker ]) 555*33b1fccfSAndroid Build Coastguard Worker]) 556*33b1fccfSAndroid Build Coastguard WorkerAM_CONDITIONAL([ENABLE_FUZZING], [test "x${enable_fuzzing}" = "xyes"]) 557*33b1fccfSAndroid Build Coastguard Worker 558*33b1fccfSAndroid Build Coastguard Worker# Set up needed symbols, conditionals and compiler/linker flags 559*33b1fccfSAndroid Build Coastguard WorkerAM_CONDITIONAL([ENABLE_EROFS_MT], [test "x${enable_multithreading}" != "xno"]) 560*33b1fccfSAndroid Build Coastguard WorkerAM_CONDITIONAL([ENABLE_LZ4], [test "x${have_lz4}" = "xyes"]) 561*33b1fccfSAndroid Build Coastguard WorkerAM_CONDITIONAL([ENABLE_LZ4HC], [test "x${have_lz4hc}" = "xyes"]) 562*33b1fccfSAndroid Build Coastguard WorkerAM_CONDITIONAL([ENABLE_FUSE], [test "x${have_fuse}" = "xyes"]) 563*33b1fccfSAndroid Build Coastguard WorkerAM_CONDITIONAL([ENABLE_LIBLZMA], [test "x${have_liblzma}" = "xyes"]) 564*33b1fccfSAndroid Build Coastguard WorkerAM_CONDITIONAL([ENABLE_LIBDEFLATE], [test "x${have_libdeflate}" = "xyes"]) 565*33b1fccfSAndroid Build Coastguard WorkerAM_CONDITIONAL([ENABLE_LIBZSTD], [test "x${have_libzstd}" = "xyes"]) 566*33b1fccfSAndroid Build Coastguard WorkerAM_CONDITIONAL([ENABLE_QPL], [test "x${have_qpl}" = "xyes"]) 567*33b1fccfSAndroid Build Coastguard WorkerAM_CONDITIONAL([ENABLE_STATIC_FUSE], [test "x${enable_static_fuse}" = "xyes"]) 568*33b1fccfSAndroid Build Coastguard Worker 569*33b1fccfSAndroid Build Coastguard Workerif test "x$have_uuid" = "xyes"; then 570*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([HAVE_LIBUUID], 1, [Define to 1 if libuuid is found]) 571*33b1fccfSAndroid Build Coastguard Workerfi 572*33b1fccfSAndroid Build Coastguard Worker 573*33b1fccfSAndroid Build Coastguard Workerif test "x$have_selinux" = "xyes"; then 574*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([HAVE_LIBSELINUX], 1, [Define to 1 if libselinux is found]) 575*33b1fccfSAndroid Build Coastguard Workerfi 576*33b1fccfSAndroid Build Coastguard Worker 577*33b1fccfSAndroid Build Coastguard Workerif test "x${have_lz4}" = "xyes"; then 578*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([LZ4_ENABLED], [1], [Define to 1 if lz4 is enabled.]) 579*33b1fccfSAndroid Build Coastguard Worker 580*33b1fccfSAndroid Build Coastguard Worker if test "x${have_lz4hc}" = "xyes"; then 581*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([LZ4HC_ENABLED], [1], [Define to 1 if lz4hc is enabled.]) 582*33b1fccfSAndroid Build Coastguard Worker fi 583*33b1fccfSAndroid Build Coastguard Worker 584*33b1fccfSAndroid Build Coastguard Worker if test "x${lz4_force_static}" = "xyes"; then 585*33b1fccfSAndroid Build Coastguard Worker LZ4_LIBS="-Wl,-Bstatic -Wl,-whole-archive -Xlinker ${LZ4_LIBS} -Wl,-no-whole-archive -Wl,-Bdynamic" 586*33b1fccfSAndroid Build Coastguard Worker test -z "${with_lz4_libdir}" || LZ4_LIBS="-L${with_lz4_libdir} $LZ4_LIBS" 587*33b1fccfSAndroid Build Coastguard Worker else 588*33b1fccfSAndroid Build Coastguard Worker test -z "${with_lz4_libdir}" || LZ4_LIBS="-L${with_lz4_libdir} -R${with_lz4_libdir} $LZ4_LIBS" 589*33b1fccfSAndroid Build Coastguard Worker fi 590*33b1fccfSAndroid Build Coastguard Worker liblz4_LIBS="${LZ4_LIBS}" 591*33b1fccfSAndroid Build Coastguard Workerfi 592*33b1fccfSAndroid Build Coastguard WorkerAC_SUBST([liblz4_LIBS]) 593*33b1fccfSAndroid Build Coastguard Worker 594*33b1fccfSAndroid Build Coastguard Workerif test "x${have_liblzma}" = "xyes"; then 595*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([HAVE_LIBLZMA], [1], [Define to 1 if liblzma is enabled.]) 596*33b1fccfSAndroid Build Coastguard Worker liblzma_LIBS="-llzma" 597*33b1fccfSAndroid Build Coastguard Worker test -z "${with_liblzma_libdir}" || 598*33b1fccfSAndroid Build Coastguard Worker liblzma_LIBS="-L${with_liblzma_libdir} $liblzma_LIBS" 599*33b1fccfSAndroid Build Coastguard Worker test -z "${with_liblzma_incdir}" || 600*33b1fccfSAndroid Build Coastguard Worker liblzma_CFLAGS="-I${with_liblzma_incdir}" 601*33b1fccfSAndroid Build Coastguard Worker AC_SUBST([liblzma_LIBS]) 602*33b1fccfSAndroid Build Coastguard Worker AC_SUBST([liblzma_CFLAGS]) 603*33b1fccfSAndroid Build Coastguard Workerfi 604*33b1fccfSAndroid Build Coastguard Worker 605*33b1fccfSAndroid Build Coastguard Workerif test "x$have_zlib" = "xyes"; then 606*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([HAVE_ZLIB], 1, [Define to 1 if zlib is found]) 607*33b1fccfSAndroid Build Coastguard Workerfi 608*33b1fccfSAndroid Build Coastguard Worker 609*33b1fccfSAndroid Build Coastguard Workerif test "x$have_libdeflate" = "xyes"; then 610*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([HAVE_LIBDEFLATE], 1, [Define to 1 if libdeflate is found]) 611*33b1fccfSAndroid Build Coastguard Workerfi 612*33b1fccfSAndroid Build Coastguard Worker 613*33b1fccfSAndroid Build Coastguard Workerif test "x$have_libzstd" = "xyes"; then 614*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([HAVE_LIBZSTD], 1, [Define to 1 if libzstd is found]) 615*33b1fccfSAndroid Build Coastguard Workerfi 616*33b1fccfSAndroid Build Coastguard Worker 617*33b1fccfSAndroid Build Coastguard Workerif test "x$have_qpl" = "xyes"; then 618*33b1fccfSAndroid Build Coastguard Worker AC_DEFINE([HAVE_QPL], 1, [Define to 1 if qpl is found]) 619*33b1fccfSAndroid Build Coastguard Worker AC_SUBST([libqpl_LIBS]) 620*33b1fccfSAndroid Build Coastguard Worker AC_SUBST([libqpl_CFLAGS]) 621*33b1fccfSAndroid Build Coastguard Workerfi 622*33b1fccfSAndroid Build Coastguard Worker 623*33b1fccfSAndroid Build Coastguard Worker# Dump maximum block size 624*33b1fccfSAndroid Build Coastguard WorkerAS_IF([test "x$erofs_cv_max_block_size" = "x"], 625*33b1fccfSAndroid Build Coastguard Worker [$erofs_cv_max_block_size = 4096], []) 626*33b1fccfSAndroid Build Coastguard Worker 627*33b1fccfSAndroid Build Coastguard WorkerAC_DEFINE_UNQUOTED([EROFS_MAX_BLOCK_SIZE], [$erofs_cv_max_block_size], 628*33b1fccfSAndroid Build Coastguard Worker [The maximum block size which erofs-utils supports]) 629*33b1fccfSAndroid Build Coastguard Worker 630*33b1fccfSAndroid Build Coastguard WorkerAC_CONFIG_FILES([Makefile 631*33b1fccfSAndroid Build Coastguard Worker man/Makefile 632*33b1fccfSAndroid Build Coastguard Worker lib/Makefile 633*33b1fccfSAndroid Build Coastguard Worker mkfs/Makefile 634*33b1fccfSAndroid Build Coastguard Worker dump/Makefile 635*33b1fccfSAndroid Build Coastguard Worker fuse/Makefile 636*33b1fccfSAndroid Build Coastguard Worker fsck/Makefile]) 637*33b1fccfSAndroid Build Coastguard WorkerAC_OUTPUT 638