1AC_INIT(version.h) 2AC_PREREQ(2.54) 3AC_CONFIG_AUX_DIR(config) 4AC_CONFIG_HEADERS([lib/config.h]) 5AH_BOTTOM([#include <dirpaths.h>]) 6MCONFIG=./MCONFIG 7AC_SUBST_FILE(MCONFIG) 8BINARY_TYPE=bin 9dnl 10dnl This is to figure out the version number and the date.... 11dnl 12E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \ 13 | awk '{print $3}' | tr \" " " | awk '{print $1}'` 14E2FSPROGS_DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \ 15 | tr \" " " | awk '{print $1}'` 16E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{print $1}' | sed -e '/^[[1-9]]$/s/^/0/') 17MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'` 18YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'` 19 20if expr $YEAR ">" 1900 > /dev/null ; then 21 E2FSPROGS_YEAR=$YEAR 22elif expr $YEAR ">" 90 >/dev/null ; then 23 E2FSPROGS_YEAR=19$YEAR 24else 25 E2FSPROGS_YEAR=20$YEAR 26fi 27 28case $MONTH in 29Jan) MONTH_NUM=01; E2FSPROGS_MONTH="January" ;; 30Feb) MONTH_NUM=02; E2FSPROGS_MONTH="February" ;; 31Mar) MONTH_NUM=03; E2FSPROGS_MONTH="March" ;; 32Apr) MONTH_NUM=04; E2FSPROGS_MONTH="April" ;; 33May) MONTH_NUM=05; E2FSPROGS_MONTH="May" ;; 34Jun) MONTH_NUM=06; E2FSPROGS_MONTH="June" ;; 35Jul) MONTH_NUM=07; E2FSPROGS_MONTH="July" ;; 36Aug) MONTH_NUM=08; E2FSPROGS_MONTH="August" ;; 37Sep) MONTH_NUM=09; E2FSPROGS_MONTH="September" ;; 38Oct) MONTH_NUM=10; E2FSPROGS_MONTH="October" ;; 39Nov) MONTH_NUM=11; E2FSPROGS_MONTH="November" ;; 40Dec) MONTH_NUM=12; E2FSPROGS_MONTH="December" ;; 41*) AC_MSG_WARN([Unknown month $MONTH??]) ;; 42esac 43 44base_ver=`echo $E2FSPROGS_VERSION | \ 45 sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'` 46 47date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY} 48 49case $E2FSPROGS_VERSION in 50*-WIP|pre-*) 51 E2FSPROGS_PKGVER="$base_ver~WIP.$date_spec" 52 ;; 53*) 54 E2FSPROGS_PKGVER="$base_ver" 55 ;; 56esac 57 58unset DATE MONTH YEAR base_ver pre_vers date_spec 59AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION]) 60AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}]) 61AC_SUBST(E2FSPROGS_YEAR) 62AC_SUBST(E2FSPROGS_MONTH) 63AC_SUBST(E2FSPROGS_DAY) 64AC_SUBST(E2FSPROGS_VERSION) 65AC_SUBST(E2FSPROGS_PKGVER) 66AC_SUBST(E2FSPROGS_DATE) 67dnl 68dnl Use diet libc 69dnl 70WITH_DIET_LIBC= 71AC_ARG_WITH([diet-libc], 72[ --with-diet-libc use diet libc], 73CC="diet cc -nostdinc" 74WITH_DIET_LIBC=yes 75if test -z "$LIBS" 76then 77 LIBS="-lcompat" 78else 79 LIBS="$LIBS -lcompat" 80fi 81AC_MSG_RESULT(CC=$CC))dnl 82dnl 83AC_CANONICAL_HOST 84dnl 85dnl Check to see if libdl exists for the sake of dlopen 86dnl 87DLOPEN_LIB='' 88AC_CHECK_LIB(dl, dlopen,DLOPEN_LIB=-ldl) 89AC_SUBST(DLOPEN_LIB) 90dnl 91AC_ARG_WITH([cc], 92AC_HELP_STRING([--with-cc],[no longer supported, use CC= instead]), 93AC_MSG_ERROR([--with-cc no longer supported; use CC= instead])) 94dnl 95AC_ARG_WITH([ccopts], 96AC_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]), 97AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead])) 98dnl 99AC_ARG_WITH([ldopts], 100AC_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]), 101AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead])) 102dnl 103AC_PROG_CC 104if test "$GCC" = yes; then 105 RDYNAMIC="-rdynamic" 106 AC_SUBST(RDYNAMIC) 107fi 108AC_PROG_CPP 109dnl 110dnl Alpha computers use fast and imprecise floating point code that may 111dnl miss exceptions by default. Force sane options if we're using GCC. 112AC_MSG_CHECKING(for additional special compiler flags) 113if test "$GCC" = yes 114then 115 case "$host_cpu" in 116 alpha) addcflags="-mieee" ;; 117 esac 118fi 119if test "x$addcflags" != x 120then 121 AC_MSG_RESULT($addcflags) 122 CFLAGS="$addcflags $CFLAGS" 123else 124 AC_MSG_RESULT([[(none)]]) 125fi 126AC_USE_SYSTEM_EXTENSIONS 127dnl 128dnl Set default values for library extensions. Will be dealt with after 129dnl parsing configuration options, which may modify these 130dnl 131LIB_EXT=.a 132STATIC_LIB_EXT=.a 133PROFILED_LIB_EXT=.a 134dnl 135dnl Allow separate `root_prefix' to be specified 136dnl 137AC_ARG_WITH([root-prefix], 138[ --with-root-prefix=PREFIX override prefix variable for files to be placed in the root], 139root_prefix=$withval, 140root_prefix=NONE)dnl 141dnl 142dnl handle --enable-maintainer-mode 143dnl 144AC_ARG_ENABLE([maintainer-mode], 145[ --enable-maintainer-mode enable makefile rules useful for maintainers], 146if test "$enableval" = "no" 147then 148 MAINTAINER_CMT=# 149 AC_MSG_RESULT([Disabling maintainer mode]) 150else 151 MAINTAINER_CMT= 152 AC_MSG_RESULT([Enabling maintainer mode]) 153fi 154, 155MAINTAINER_CMT=# 156AC_MSG_RESULT([Disabling maintainer mode by default]) 157) 158AC_SUBST(MAINTAINER_CMT) 159dnl 160dnl handle --enable-symlink-install 161dnl 162AC_ARG_ENABLE([symlink-install], 163[ --enable-symlink-install use symlinks when installing instead of hard links], 164if test "$enableval" = "no" 165then 166 LINK_INSTALL_FLAGS=-f 167 AC_MSG_RESULT([Disabling symlinks for install]) 168else 169 LINK_INSTALL_FLAGS=-sf 170 AC_MSG_RESULT([Enabling symlinks for install]) 171fi 172, 173LINK_INSTALL_FLAGS=-f 174AC_MSG_RESULT([Disabling symlinks for install by default]) 175) 176AC_SUBST(LINK_INSTALL_FLAGS) 177dnl 178dnl handle --enable-relative-symlinks 179dnl 180relative_symlink_defined= 181AC_ARG_ENABLE([relative-symlinks], 182[ --enable-relative-symlinks use relative symlinks when installing], 183if test "$enableval" = "no" 184then 185 SYMLINK_RELATIVE= 186 relative_symlink_defined=yes 187 AC_MSG_RESULT([Disabling relative symlinks for install]) 188else 189 SYMLINK_RELATIVE=--relative 190 relative_symlink_defined=yes 191 AC_MSG_RESULT([Enabling relative symlinks for install]) 192fi) 193AC_ARG_ENABLE([symlink-relative-symlinks],, 194if test "$enableval" = "no" 195then 196 SYMLINK_RELATIVE=yes 197 AC_MSG_RESULT([Disabling relative symlinks for install]) 198else 199 SYMLINK_RELATIVE=--relative 200 AC_MSG_RESULT([Enabling relative symlinks for install]) 201fi 202, 203if test -z "$relative_symlink_defined" 204then 205 SYMLINK_RELATIVE= 206AC_MSG_RESULT([Disabling relative symlinks for install by default]) 207fi 208) 209AC_SUBST(SYMLINK_RELATIVE) 210dnl 211dnl handle --enable-symlink-build 212dnl 213AC_ARG_ENABLE([symlink-build], 214[ --enable-symlink-build use symlinks while building instead of hard links], 215if test "$enableval" = "no" 216then 217 LINK_BUILD_FLAGS= 218 AC_MSG_RESULT([Disabling symlinks for build]) 219else 220 LINK_BUILD_FLAGS=-s 221 AC_MSG_RESULT([Enabling symlinks for build]) 222fi 223, 224LINK_BUILD_FLAGS= 225AC_MSG_RESULT([Disabling symlinks for build by default]) 226) 227AC_SUBST(LINK_BUILD_FLAGS) 228dnl 229dnl handle --enable-verbose-makecmds 230dnl 231AC_ARG_ENABLE([verbose-makecmds], 232[ --enable-verbose-makecmds enable verbose make command output], 233if test "$enableval" = "no" 234then 235 AC_MSG_RESULT([Disabling verbose make commands]) 236 E=@echo 237 ES=echo 238 Q=@ 239else 240 AC_MSG_RESULT([Enabling verbose make commands]) 241 E=@\\# 242 ES=\\# 243 Q= 244fi 245, 246AC_MSG_RESULT([Disabling verbose make commands]) 247E=@echo 248ES=echo 249Q=@ 250) 251AC_SUBST(E) 252AC_SUBST(ES) 253AC_SUBST(Q) 254dnl 255dnl This needs to be before all of the --enable-*-shlibs options 256dnl 257E2_PKG_CONFIG_STATIC=--static 258LDFLAG_DYNAMIC= 259PRIVATE_LIBS_CMT= 260dnl 261dnl handle --enable-elf-shlibs 262dnl 263AC_ARG_ENABLE([elf-shlibs], 264[ --enable-elf-shlibs select ELF shared libraries], 265if test "$enableval" = "no" 266then 267 ELF_CMT=# 268 MAKEFILE_ELF=/dev/null 269 AC_MSG_RESULT([Disabling ELF shared libraries]) 270else 271 E2_PKG_CONFIG_STATIC= 272 ELF_CMT= 273 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib 274 [case "$host_os" in 275 solaris2.*) 276 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib 277 ;; 278 esac] 279 BINARY_TYPE=elfbin 280 LIB_EXT=.so 281 PRIVATE_LIBS_CMT=# 282 LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib'] 283 AC_MSG_RESULT([Enabling ELF shared libraries]) 284fi 285, 286MAKEFILE_ELF=/dev/null 287ELF_CMT=# 288AC_MSG_RESULT([Disabling ELF shared libraries by default]) 289) 290AC_SUBST(ELF_CMT) 291AC_SUBST_FILE(MAKEFILE_ELF) 292dnl 293dnl handle --enable-bsd-shlibs 294dnl 295AC_ARG_ENABLE([bsd-shlibs], 296[ --enable-bsd-shlibs select BSD shared libraries], 297if test "$enableval" = "no" 298then 299 BSDLIB_CMT=# 300 MAKEFILE_BSDLIB=/dev/null 301 AC_MSG_RESULT([Disabling BSD shared libraries]) 302else 303 E2_PKG_CONFIG_STATIC= 304 BSDLIB_CMT= 305 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib 306 LIB_EXT=.so 307 [case "$host_os" in 308 darwin*) 309 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib 310 LIB_EXT=.dylib 311 ;; 312 esac] 313 AC_MSG_RESULT([Enabling BSD shared libraries]) 314fi 315, 316MAKEFILE_BSDLIB=/dev/null 317BSDLIB_CMT=# 318AC_MSG_RESULT([Disabling BSD shared libraries by default]) 319) 320AC_SUBST(BSDLIB_CMT) 321AC_SUBST_FILE(MAKEFILE_BSDLIB) 322dnl 323dnl handle --enable-profile 324dnl 325AC_ARG_ENABLE([profile], 326[ --enable-profile build profiling libraries], 327if test "$enableval" = "no" 328then 329 PROFILE_CMT=# 330 MAKEFILE_PROFILE=/dev/null 331 AC_MSG_RESULT([Disabling profiling libraries]) 332else 333 PROFILE_CMT= 334 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile 335 PROFILED_LIB_EXT=_p.a 336 AC_MSG_RESULT([Building profiling libraries]) 337fi 338, 339PROFILE_CMT=# 340MAKEFILE_PROFILE=/dev/null 341AC_MSG_RESULT([Disabling profiling libraries by default]) 342) 343AC_SUBST(PROFILE_CMT) 344AC_SUBST_FILE(MAKEFILE_PROFILE) 345dnl 346dnl handle --enable-gcov 347dnl 348AC_ARG_ENABLE([gcov], 349[ --enable-gcov build for coverage testing using gcov], 350if test "$enableval" = "yes" 351then 352 CFLAGS="-g -fprofile-arcs -ftest-coverage" 353 LDFLAGS="-fprofile-arcs -ftest-coverage" 354 AC_MSG_RESULT([Enabling gcov support]) 355fi 356) 357dnl 358dnl handle --enable-hardening 359dnl 360CFLAGS_SHLIB="${CFLAGS_SHLIB:-$CFLAGS}" 361CFLAGS_STLIB="${CFLAGS_STLIB:-$CFLAGS}" 362LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS} 363LDFLAGS_STATIC=${LDFLAGS_STATIC:-$LDFLAGS} 364AC_ARG_ENABLE([hardening], 365[ --enable-hardening build for coverage testing using gcov], 366if test "$enableval" = "yes" 367then 368 HARDEN_CFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong" 369 HARDEN_LDFLAGS=["-Wl,-z,relro -Wl,-z,now"] 370 CFLAGS="$CFLAGS $HARDEN_CFLAGS -fPIE" 371 CFLAGS_SHLIB="$CFLAGS_SHLIB $HARDEN_CFLAGS" 372 CFLAGS_STLIB="$CFLAGS_STLIB $HARDEN_CFLAGS -fPIE" 373 LDFLAGS="$LDFLAGS $HARDEN_LDFLAGS -fPIE -pie" 374 LDFLAGS_STATIC="$LDFLAGS_STATIC $HARDEN_LDFLAGS" 375 LDFLAGS_SHLIB="$LDFLAGS_SHLIB $HARDEN_LDFLAGS" 376 AC_MSG_RESULT([Enabling hardening support]) 377fi 378) 379dnl 380dnl Substitute library extensions 381dnl 382AC_SUBST(LIB_EXT) 383AC_SUBST(STATIC_LIB_EXT) 384AC_SUBST(PROFILED_LIB_EXT) 385AC_SUBST(LDFLAG_DYNAMIC) 386AC_SUBST(PRIVATE_LIBS_CMT) 387dnl 388dnl handle --enable-jbd-debug 389dnl 390AC_ARG_ENABLE([jbd-debug], 391[ --enable-jbd-debug enable journal debugging], 392if test "$enableval" = "no" 393then 394 AC_MSG_RESULT([Disabling journal debugging]) 395else 396 AC_DEFINE(CONFIG_JBD_DEBUG, 1, 397 [Define to 1 if debugging ext3/4 journal code]) 398 AC_MSG_RESULT([Enabling journal debugging]) 399fi 400, 401AC_MSG_RESULT([Disabling journal debugging by default]) 402) 403dnl 404dnl handle --enable-blkid-debug 405dnl 406AC_ARG_ENABLE([blkid-debug], 407[ --enable-blkid-debug enable blkid debugging], 408if test "$enableval" = "no" 409then 410 AC_MSG_RESULT([Disabling blkid debugging]) 411else 412 AC_DEFINE(CONFIG_BLKID_DEBUG, 1, 413 [Define to 1 if debugging the blkid library]) 414 AC_MSG_RESULT([Enabling blkid debugging]) 415fi 416, 417AC_MSG_RESULT([Disabling blkid debugging by default]) 418) 419dnl 420dnl handle --enable-testio-debug 421dnl 422AC_ARG_ENABLE([testio-debug], 423[ --disable-testio-debug disable the use of the test I/O manager for debugging], 424AH_TEMPLATE([CONFIG_TESTIO_DEBUG], 425 [Define to 1 if the testio I/O manager should be enabled]) 426if test "$enableval" = "no" 427then 428 AC_MSG_RESULT([Disabling testio debugging]) 429 TEST_IO_CMT="#" 430else 431 TEST_IO_CMT= 432 AC_DEFINE(CONFIG_TESTIO_DEBUG, 1) 433 AC_MSG_RESULT([Enabling testio debugging]) 434fi 435, 436AC_MSG_RESULT([Enabling testio debugging by default]) 437AC_DEFINE(CONFIG_TESTIO_DEBUG, 1) 438TEST_IO_CMT= 439) 440AC_SUBST(TEST_IO_CMT) 441dnl 442dnl handle --disable-libuuid 443dnl 444PKG_PROG_PKG_CONFIG 445LIBUUID= 446DEPLIBUUID= 447STATIC_LIBUUID= 448DEPSTATIC_LIBUUID= 449PROFILED_LIBUUID= 450DEPPROFILED_LIBUUID= 451UUID_CMT= 452AC_ARG_ENABLE([libuuid], 453[ --enable-libuuid build and use private uuid library], 454if test "$enableval" = "no" 455then 456 if test -z "$PKG_CONFIG"; then 457 AC_MSG_ERROR([pkg-config not installed; please install it.]) 458 fi 459 460 AC_CHECK_LIB(uuid, uuid_generate, 461 [LIBUUID=`$PKG_CONFIG --libs uuid`; 462 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`], 463 [AC_MSG_ERROR([external uuid library not found])]) 464 PROFILED_LIBUUID=$LIBUUID 465 UUID_CMT=# 466 AC_MSG_RESULT([Disabling private uuid library]) 467else 468 LIBUUID='$(LIB)/libuuid'$LIB_EXT 469 DEPLIBUUID=$LIBUUID 470 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT 471 DEPSTATIC_LIBUUID=$STATIC_LIBUUID 472 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT 473 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID 474 AC_MSG_RESULT([Enabling private uuid library]) 475fi 476, 477if test -n "$PKG_CONFIG"; then 478 AC_CHECK_LIB(uuid, uuid_generate, 479 [LIBUUID=`$PKG_CONFIG --libs uuid`; 480 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`]) 481fi 482if test -n "$LIBUUID"; then 483 PROFILED_LIBUUID=$LIBUUID 484 UUID_CMT=# 485 AC_MSG_RESULT([Using system uuid by default]) 486else 487 LIBUUID='$(LIB)/libuuid'$LIB_EXT 488 DEPLIBUUID=$LIBUUID 489 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT 490 DEPSTATIC_LIBUUID=$STATIC_LIBUUID 491 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT 492 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID 493 AC_MSG_RESULT([Enabling private uuid library by default]) 494fi 495) 496AC_SUBST(LIBUUID) 497AC_SUBST(DEPLIBUUID) 498AC_SUBST(STATIC_LIBUUID) 499AC_SUBST(DEPSTATIC_LIBUUID) 500AC_SUBST(PROFILED_LIBUUID) 501AC_SUBST(DEPPROFILED_LIBUUID) 502AC_SUBST(UUID_CMT) 503dnl 504dnl handle --disable-libblkid 505dnl 506PKG_PROG_PKG_CONFIG 507LIBBLKID= 508DEPLIBBLKID= 509STATIC_LIBBLKID= 510DEPSTATIC_LIBBLKID= 511PROFILED_LIBBLKID= 512DEPPROFILED_LIBBLKID= 513BLKID_CMT= 514AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs]) 515AC_ARG_ENABLE([libblkid], 516[ --enable-libblkid build and use private blkid library], 517if test "$enableval" = "no" 518then 519 if test -z "$PKG_CONFIG"; then 520 AC_MSG_ERROR([pkg-config not installed; please install it.]) 521 fi 522 523 AC_CHECK_LIB(blkid, blkid_get_cache, 524 [LIBBLKID=`$PKG_CONFIG --libs blkid`; 525 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`], 526 [AC_MSG_ERROR([external blkid library not found])], -luuid) 527 BLKID_CMT=# 528 PROFILED_LIBBLKID=$LIBBLKID 529 AC_MSG_RESULT([Disabling private blkid library]) 530else 531 LIBBLKID='$(LIB)/libblkid'$LIB_EXT 532 DEPLIBBLKID=$LIBBLKID 533 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT 534 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID 535 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT 536 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID 537 AC_DEFINE(CONFIG_BUILD_FINDFS, 1) 538 AC_MSG_RESULT([Enabling private blkid library]) 539fi 540, 541if test -n "$PKG_CONFIG"; then 542 AC_CHECK_LIB(blkid, blkid_get_cache, 543 [LIBBLKID=`$PKG_CONFIG --libs blkid`; 544 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`]) 545fi 546if test -n "$LIBBLKID"; then 547 BLKID_CMT=# 548 PROFILED_LIBBLKID=$LIBBLKID 549 AC_MSG_RESULT([Using system blkid library by default]) 550else 551 LIBBLKID='$(LIB)/libblkid'$LIB_EXT 552 DEPLIBBLKID=$LIBBLKID 553 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT 554 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID 555 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT 556 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID 557 AC_DEFINE(CONFIG_BUILD_FINDFS, 1) 558 AC_MSG_RESULT([Enabling private blkid library by default]) 559fi 560) 561AC_SUBST(LIBBLKID) 562AC_SUBST(DEPLIBBLKID) 563AC_SUBST(STATIC_LIBBLKID) 564AC_SUBST(DEPSTATIC_LIBBLKID) 565AC_SUBST(PROFILED_LIBBLKID) 566AC_SUBST(DEPPROFILED_LIBBLKID) 567AC_SUBST(BLKID_CMT) 568dnl 569dnl handle --enable-subset 570dnl 571ALL_CMT= 572SUBSET_CMT= 573AC_ARG_ENABLE([subset], 574[ --enable-subset enable subset-only build], 575if test "$enableval" = "no" 576then 577 SUBSET_CMT=# 578 AC_MSG_RESULT([Disabling subset-only build]) 579else 580 ALL_CMT=# 581 AC_MSG_RESULT([Enabling subset-only-build]) 582fi 583,) 584AC_SUBST(ALL_CMT) 585AC_SUBST(SUBSET_CMT) 586dnl 587dnl handle --disable-backtrace 588dnl 589AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace]) 590AC_ARG_ENABLE([backtrace], 591[ --disable-backtrace disable use backtrace], 592if test "$enableval" = "no" 593then 594 AC_MSG_RESULT([Disabling use of backtrace]) 595 AC_DEFINE(DISABLE_BACKTRACE, 1) 596else 597 AC_MSG_RESULT([Enabling use of backtrace]) 598fi 599, 600AC_MSG_RESULT([Enabling use of backtrace by default]) 601) 602dnl 603dnl handle --enable-debugfs 604dnl 605AC_ARG_ENABLE([debugfs], 606[ --disable-debugfs disable support of debugfs program], 607if test "$enableval" = "no" 608then 609 AC_MSG_RESULT([Disabling debugfs support]) 610 DEBUGFS_CMT="#" 611else 612 DEBUGFS_CMT= 613 AC_MSG_RESULT([Enabling debugfs support]) 614fi 615, 616AC_MSG_RESULT([Enabling debugfs support by default]) 617DEBUGFS_CMT= 618) 619AC_SUBST(DEBUGFS_CMT) 620dnl 621dnl handle --enable-imager 622dnl 623AC_ARG_ENABLE([imager], 624[ --disable-imager disable support of e2image program], 625if test "$enableval" = "no" 626then 627 AC_MSG_RESULT([Disabling e2image support]) 628 IMAGER_CMT="#" 629else 630 IMAGER_CMT= 631 AC_MSG_RESULT([Enabling e2image support]) 632fi 633, 634AC_MSG_RESULT([Enabling e2image support by default]) 635IMAGER_CMT= 636) 637AC_SUBST(IMAGER_CMT) 638dnl 639dnl handle --enable-resizer 640dnl 641AC_ARG_ENABLE([resizer], 642[ --disable-resizer disable support of e2resize program], 643if test "$enableval" = "no" 644then 645 AC_MSG_RESULT([Disabling e2resize support]) 646 RESIZER_CMT="#" 647else 648 RESIZER_CMT= 649 AC_MSG_RESULT([Enabling e2resize support]) 650fi 651, 652AC_MSG_RESULT([Enabling e2resize support by default]) 653RESIZER_CMT= 654) 655AC_SUBST(RESIZER_CMT) 656dnl 657dnl handle --enable-defrag 658dnl 659AC_ARG_ENABLE([defrag], 660[ --disable-defrag disable support of e4defrag program], 661if test "$enableval" = "no" 662then 663 AC_MSG_RESULT([Disabling e4defrag support]) 664 DEFRAG_CMT="#" 665else 666 DEFRAG_CMT= 667 AC_MSG_RESULT([Enabling e4defrag support]) 668fi 669, 670if test -z "$WITH_DIET_LIBC" 671then 672 AC_MSG_RESULT([Enabling e4defrag support by default]) 673 DEFRAG_CMT= 674else 675 AC_MSG_RESULT([Disabling e4defrag support by default]) 676 DEFRAG_CMT="#" 677fi 678) 679AC_SUBST(DEFRAG_CMT) 680dnl 681dnl See whether to install the `fsck' wrapper program (that calls e2fsck) 682dnl 683AC_ARG_ENABLE([fsck], 684[ --enable-fsck build fsck wrapper program], 685[if test "$enableval" = "no" 686then 687 FSCK_PROG='' FSCK_MAN='' 688 AC_MSG_RESULT([Not building fsck wrapper]) 689else 690 FSCK_PROG=fsck FSCK_MAN=fsck.8 691 AC_MSG_RESULT([Building fsck wrapper]) 692fi] 693, 694[case "$host_os" in 695 gnu*) 696 FSCK_PROG='' FSCK_MAN='' 697 AC_MSG_RESULT([Not building fsck wrapper by default]) 698 ;; 699 *) 700 FSCK_PROG=fsck FSCK_MAN=fsck.8 701 AC_MSG_RESULT([Building fsck wrapper by default]) 702esac] 703) 704AC_SUBST(FSCK_PROG) 705AC_SUBST(FSCK_MAN) 706dnl 707dnl See whether to install the `e2initrd-helper' program 708dnl 709AC_ARG_ENABLE([e2initrd-helper], 710[ --enable-e2initrd-helper build e2initrd-helper program], 711[if test "$enableval" = "no" 712then 713 E2INITRD_PROG='' E2INITRD_MAN='' 714 AC_MSG_RESULT([Not building e2initrd helper]) 715else 716 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8 717 AC_MSG_RESULT([Building e2initrd helper]) 718fi] 719, 720E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8 721AC_MSG_RESULT([Building e2initrd helper by default]) 722) 723AC_SUBST(E2INITRD_PROG) 724AC_SUBST(E2INITRD_MAN) 725dnl 726dnl 727dnl 728AC_ARG_ENABLE([tls], 729[ --disable-tls disable use of thread local support], 730[if test "$enableval" = "no" 731then 732 try_tls="" 733 AC_MSG_RESULT([Disabling thread local support]) 734else 735 try_tls="yes" 736 AC_MSG_RESULT([Enabling thread local support]) 737fi] 738, 739if test -n "$WITH_DIET_LIBC" 740then 741 try_tls="" 742 AC_MSG_RESULT([Diet libc does not support thread local support]) 743else 744 try_tls="yes" 745 AC_MSG_RESULT([Try using thread local support by default]) 746fi 747) 748if test "$try_tls" = "yes" 749then 750AX_TLS 751fi 752dnl 753dnl 754dnl 755AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd]) 756AC_ARG_ENABLE([uuidd], 757[ --disable-uuidd disable building the uuid daemon], 758[if test "$enableval" = "no" 759then 760 AC_MSG_RESULT([Not building uuidd]) 761 UUIDD_CMT="#" 762else 763 AC_DEFINE(USE_UUIDD, 1) 764 UUIDD_CMT="" 765 AC_MSG_RESULT([Building uuidd]) 766fi] 767, 768AC_DEFINE(USE_UUIDD, 1) 769if test -z "$UUID_CMT" 770then 771 UUIDD_CMT="" 772 AC_MSG_RESULT([Building uuidd by default]) 773else 774 UUIDD_CMT="#" 775 AC_MSG_RESULT([Disabling uuidd by default]) 776fi 777) 778AC_SUBST(UUIDD_CMT) 779dnl 780dnl handle --disable-mmp 781dnl 782AH_TEMPLATE([CONFIG_MMP], [Define to 1 to enable mmp support]) 783AC_ARG_ENABLE([mmp], 784[ --disable-mmp disable support mmp, Multi Mount Protection], 785if test "$enableval" = "no" 786then 787 AC_MSG_RESULT([Disabling mmp support]) 788else 789 AC_MSG_RESULT([Enabling mmp support]) 790 AC_DEFINE(CONFIG_MMP, 1) 791fi 792, 793AC_MSG_RESULT([Enabling mmp support by default]) 794AC_DEFINE(CONFIG_MMP, 1) 795) 796dnl 797dnl handle --disable-tdb 798dnl 799AH_TEMPLATE([CONFIG_TDB], [Define to 1 to enable tdb support]) 800AC_ARG_ENABLE([tdb], 801[ --disable-tdb disable tdb support], 802if test "$enableval" = "no" 803then 804 AC_MSG_RESULT([Disabling tdb support]) 805 TDB_CMT="#" 806 TDB_MAN_COMMENT='.\"' 807else 808 AC_MSG_RESULT([Enabling tdb support]) 809 AC_DEFINE(CONFIG_TDB, 1) 810 TDB_CMT="" 811 TDB_MAN_COMMENT="" 812fi 813, 814AC_MSG_RESULT([Enabling mmp support by default]) 815AC_DEFINE(CONFIG_TDB, 1) 816TDB_CMT="" 817TDB_MAN_COMMENT="" 818) 819AC_SUBST(TDB_CMT) 820AC_SUBST(TDB_MAN_COMMENT) 821dnl 822dnl handle --disable-bmap-stats 823dnl 824AH_TEMPLATE([ENABLE_BMAP_STATS], [Define to 1 to enable bitmap stats.]) 825AC_ARG_ENABLE([bmap-stats], 826[ --disable-bmap-stats disable collection of bitmap stats.], 827if test "$enableval" = "no" 828then 829 AC_MSG_RESULT([Disabling bitmap statistics support]) 830else 831 AC_MSG_RESULT([Enabling bitmap statistics support]) 832 AC_DEFINE(ENABLE_BMAP_STATS, 1) 833fi 834, 835AC_MSG_RESULT([Enabling bitmap statistics support by default]) 836AC_DEFINE(ENABLE_BMAP_STATS, 1) 837) 838dnl 839dnl handle --enable-bmap-stats-ops 840dnl 841AH_TEMPLATE([ENABLE_BMAP_STATS_OPS], [Define to 1 to enable bitmap stats.]) 842AC_ARG_ENABLE([bmap-stats-ops], 843[ --enable-bmap-stats-ops enable collection of additional bitmap stats], 844if test "$enableval" = "no" 845then 846 AC_MSG_RESULT([Disabling additional bitmap statistics]) 847else 848 dnl There has to be a better way! 849 AS_IF([test "x${enable_bmap_stats}" = "xno"], 850 AC_MSG_FAILURE([Error --enable-bmap-stats-ops requires bmap-stats])) 851 852 AC_MSG_RESULT([Enabling additional bitmap statistics]) 853 AC_DEFINE(ENABLE_BMAP_STATS_OPS, 1) 854fi 855, 856AC_MSG_RESULT([Disabling additional bitmap statistics by default]) 857) 858dnl 859dnl 860dnl 861MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library 862AC_SUBST_FILE(MAKEFILE_LIBRARY) 863dnl 864dnl Add internationalization support, using gettext. 865dnl 866GETTEXT_PACKAGE=e2fsprogs 867PACKAGE=e2fsprogs 868VERSION="$E2FSPROGS_VERSION" 869VERSION=0.14.1 870AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext]) 871AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext]) 872AC_SUBST(GETTEXT_PACKAGE) 873AC_SUBST(PACKAGE) 874AC_SUBST(VERSION) 875 876AM_GNU_GETTEXT 877dnl 878dnl End of configuration options 879dnl 880AC_SUBST(BINARY_TYPE) 881AC_PROG_MAKE_SET 882CHECK_GNU_MAKE 883AC_PATH_PROG(LN, ln, ln) 884AC_PROG_MKDIR_P 885AC_PROG_LN_S 886AC_PATH_PROG(MV, mv, mv) 887AC_PATH_PROG(CP, cp, cp) 888AC_PATH_PROG(RM, rm, rm) 889AC_PATH_PROG(CHMOD, chmod, :) 890AC_PROG_AWK 891AC_PROG_EGREP 892AC_PATH_PROG(SED, sed, sed) 893AC_PATH_PROG(PERL, perl, perl) 894AC_PATH_PROG(LDCONFIG, ldconfig, :) 895AC_CHECK_TOOL(AR, ar, ar) 896AC_CHECK_TOOL(RANLIB, ranlib, :) 897AC_CHECK_TOOL(STRIP, strip, :) 898AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, ) 899if test "_$MAKEINFO" = "_"; then 900 MAKEINFO="echo Makeinfo is missing. Info documentation will not be built." 901else 902 case "$MAKEINFO" in 903 */missing.*) 904 AC_MSG_WARN([ 905*** Makeinfo is missing. Info documentation will not be built.]) 906 ;; 907 *) 908 ;; 909 esac 910fi 911AC_SUBST(MAKEINFO) 912AC_PROG_INSTALL 913# See if we need a separate native compiler. 914if test $cross_compiling = no; then 915 BUILD_CC="$CC" 916 AC_SUBST(BUILD_CC) 917else 918 AC_CHECK_PROGS(BUILD_CC, gcc cc) 919fi 920AC_CHECK_HEADERS(m4_flatten([ 921 dirent.h 922 errno.h 923 execinfo.h 924 getopt.h 925 malloc.h 926 mntent.h 927 paths.h 928 semaphore.h 929 setjmp.h 930 signal.h 931 stdarg.h 932 stdint.h 933 stdlib.h 934 termios.h 935 termio.h 936 unistd.h 937 utime.h 938 attr/xattr.h 939 linux/falloc.h 940 linux/fd.h 941 linux/fsmap.h 942 linux/major.h 943 linux/loop.h 944 linux/types.h 945 net/if_dl.h 946 netinet/in.h 947 sys/acl.h 948 sys/disklabel.h 949 sys/disk.h 950 sys/file.h 951 sys/ioctl.h 952 sys/key.h 953 sys/mkdev.h 954 sys/mman.h 955 sys/mount.h 956 sys/prctl.h 957 sys/resource.h 958 sys/select.h 959 sys/socket.h 960 sys/sockio.h 961 sys/stat.h 962 sys/syscall.h 963 sys/sysctl.h 964 sys/sysmacros.h 965 sys/time.h 966 sys/types.h 967 sys/un.h 968 sys/wait.h 969 sys/xattr.h 970])) 971dnl Check where to find a dd(1) that supports iflag=fullblock 972dnl and oflag=append 973AC_MSG_CHECKING([for a dd(1) program that supports iflag=fullblock]) 974DD= 975for i in dd gdd ; do 976 if "$i" if=/dev/null of=/dev/null count=1 bs=10k 2>/dev/null iflag=fullblock oflag=append ; then 977 DD=$i 978 break 979 fi 980done 981if test -n "$DD" ; then 982 AC_MSG_RESULT([$DD]) 983else 984 AC_MSG_RESULT([not found, using dd]) 985 DD=dd 986 AC_MSG_WARN([No GNU-compatible dd(1) program found, expect some self-test failures.]) 987fi 988AC_SUBST([DD]) 989 990AC_CHECK_HEADERS(net/if.h,,, 991[[ 992#if HAVE_SYS_TYPES_H 993#include <sys/types.h> 994#endif 995#if HAVE_SYS_SOCKET 996#include <sys/socket.h> 997#endif 998]]) 999AC_FUNC_VPRINTF 1000dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen 1001dnl is not declared. 1002AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1, 1003 [Define to 1 if dirent has d_reclen])],, 1004 [#include <dirent.h>]) 1005AC_CHECK_MEMBERS([struct stat.st_atim]) 1006dnl Check to see if ssize_t was declared 1007AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1, 1008 [Define to 1 if ssize_t declared])],, 1009 [#include <sys/types.h>]) 1010dnl 1011dnl Check to see if llseek() is declared in unistd.h. On some libc's 1012dnl it is, and on others it isn't..... Thank you glibc developers.... 1013dnl 1014AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1, 1015 [Define to 1 if llseek declared in unistd.h])],, 1016 [#include <unistd.h>]) 1017dnl 1018dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files 1019dnl are so convoluted that I can't tell whether it will always be defined, 1020dnl and if it isn't defined while lseek64 is defined in the library, 1021dnl disaster will strike. 1022dnl 1023dnl Warning! Use of --enable-gcc-wall may throw off this test. 1024dnl 1025dnl 1026AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1, 1027 [Define to 1 if lseek64 declared in unistd.h])],, 1028 [#define _LARGEFILE_SOURCE 1029 #define _LARGEFILE64_SOURCE 1030 #include <unistd.h>]) 1031dnl 1032dnl Word sizes... 1033dnl 1034AC_CHECK_SIZEOF(short) 1035AC_CHECK_SIZEOF(int) 1036AC_CHECK_SIZEOF(long) 1037AC_CHECK_SIZEOF(long long) 1038AC_CHECK_SIZEOF(off_t) 1039AC_CHECK_SIZEOF(time_t) 1040SIZEOF_SHORT=$ac_cv_sizeof_short 1041SIZEOF_INT=$ac_cv_sizeof_int 1042SIZEOF_LONG=$ac_cv_sizeof_long 1043SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long 1044SIZEOF_OFF_T=$ac_cv_sizeof_off_t 1045SIZEOF_TIME_T=$ac_cv_sizeof_time_t 1046AC_SUBST(SIZEOF_SHORT) 1047AC_SUBST(SIZEOF_INT) 1048AC_SUBST(SIZEOF_LONG) 1049AC_SUBST(SIZEOF_LONG_LONG) 1050AC_SUBST(SIZEOF_OFF_T) 1051AC_SUBST(SIZEOF_TIME_T) 1052AC_C_BIGENDIAN 1053if test $cross_compiling = no; then 1054 BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh 1055else 1056 CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh 1057fi 1058ASM_TYPES_HEADER=./asm_types.h 1059AC_SUBST_FILE(ASM_TYPES_HEADER) 1060dnl 1061dnl Save the configuration #defines needed for the public ext2fs.h 1062dnl header file 1063dnl 1064echo "/* These defines are needed for the public ext2fs.h header file */" \ 1065 > public_config.h 1066if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then 1067 uniq tmp_config.$$ >> public_config.h 1068else 1069 echo "#undef HAVE_SYS_TYPES_H" >> public_config.h 1070fi 1071if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then 1072 uniq tmp_config.$$ >> public_config.h 1073else 1074 echo "#undef WORDS_BIGENDIAN" >> public_config.h 1075fi 1076rm -f tmp_config.$$ 1077PUBLIC_CONFIG_HEADER=./public_config.h 1078AC_SUBST_FILE(PUBLIC_CONFIG_HEADER) 1079dnl 1080dnl See if we have inttypes.h and if intptr_t is defined 1081dnl 1082AC_CHECK_HEADERS([inttypes.h]) 1083AC_CHECK_TYPES(intptr_t) 1084dnl 1085dnl See if struct stat has a st_flags field, in which case we can get file 1086dnl flags somewhat portably. Also check for the analogous setter, chflags(). 1087dnl 1088AC_MSG_CHECKING(whether struct stat has a st_flags field) 1089AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags, 1090 AC_TRY_COMPILE([#include <sys/stat.h>], 1091 [struct stat stat; stat.st_flags = 0;], 1092 [e2fsprogs_cv_struct_st_flags=yes], 1093 [e2fsprogs_cv_struct_st_flags=no])) 1094AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags) 1095if test "$e2fsprogs_cv_struct_st_flags" = yes; then 1096 AC_MSG_CHECKING(whether st_flags field is useful) 1097 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut, 1098 AC_TRY_COMPILE([#include <sys/stat.h>], 1099 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;], 1100 [e2fsprogs_cv_struct_st_flags_immut=yes], 1101 [e2fsprogs_cv_struct_st_flags_immut=no])) 1102 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut) 1103 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then 1104 AC_DEFINE(HAVE_STAT_FLAGS, 1, 1105 [Define to 1 if struct stat has st_flags]) 1106 fi 1107fi 1108dnl 1109dnl Check for the presence of SA_LEN 1110dnl 1111AC_CHECK_MEMBER(struct sockaddr.sa_len, 1112 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1, 1113 [Define to 1 if if struct sockaddr contains sa_len]),, 1114 [#include <sys/types.h> 1115 #include <sys/socket.h>]) 1116dnl 1117dnl This will add -lblkid to the AC_CHECK_FUNCS search if we are using 1118dnl the system-provided blkid library 1119dnl 1120if test -n "$BLKID_CMT"; then 1121 AC_SEARCH_LIBS([blkid_probe_all], [blkid]) 1122fi 1123dnl 1124if test -n "$DLOPEN_LIB" ; then 1125 ac_cv_func_dlopen=yes 1126fi 1127AC_CHECK_FUNCS(m4_flatten([ 1128 __secure_getenv 1129 add_key 1130 backtrace 1131 blkid_probe_get_topology 1132 blkid_probe_enable_partitions 1133 chflags 1134 dlopen 1135 fadvise64 1136 fallocate 1137 fallocate64 1138 fchown 1139 fcntl 1140 fdatasync 1141 fstat64 1142 fsync 1143 ftruncate64 1144 futimes 1145 getcwd 1146 getdtablesize 1147 gethostname 1148 getmntinfo 1149 getpwuid_r 1150 getrlimit 1151 getrusage 1152 jrand48 1153 keyctl 1154 llistxattr 1155 llseek 1156 lseek64 1157 mallinfo 1158 mbstowcs 1159 memalign 1160 mempcpy 1161 mmap 1162 msync 1163 nanosleep 1164 open64 1165 pathconf 1166 posix_fadvise 1167 posix_fadvise64 1168 posix_memalign 1169 prctl 1170 pread 1171 pwrite 1172 pread64 1173 pwrite64 1174 secure_getenv 1175 setmntent 1176 setresgid 1177 setresuid 1178 snprintf 1179 srandom 1180 stpcpy 1181 strcasecmp 1182 strdup 1183 strnlen 1184 strptime 1185 strtoull 1186 sync_file_range 1187 sysconf 1188 usleep 1189 utime 1190 utimes 1191 valloc 1192])) 1193dnl 1194dnl Check to see if -lsocket is required (solaris) to make something 1195dnl that uses socket() to compile; this is needed for the UUID library 1196dnl 1197SOCKET_LIB='' 1198AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket]) 1199AC_SUBST(SOCKET_LIB) 1200dnl 1201dnl See if libmagic exists 1202dnl 1203AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic 1204AC_CHECK_HEADERS([magic.h])]) 1205if test "$ac_cv_func_dlopen" = yes ; then 1206 MAGIC_LIB=$DLOPEN_LIB 1207fi 1208AC_SUBST(MAGIC_LIB) 1209dnl 1210dnl Check to see if librt is required for clock_gettime() (glibc < 2.17) 1211dnl 1212AC_CHECK_LIB(rt, clock_gettime, [CLOCK_GETTIME_LIB=-lrt]) 1213AC_SUBST(CLOCK_GETTIME_LIB) 1214dnl 1215dnl Check to see if the FUSE library is -lfuse or -losxfuse 1216dnl 1217FUSE_CMT= 1218FUSE_LIB= 1219dnl osxfuse.dylib supersedes fuselib.dylib 1220AC_ARG_ENABLE([fuse2fs], 1221[ --disable-fuse2fs do not build fuse2fs], 1222if test "$enableval" = "no" 1223then 1224 FUSE_CMT="#" 1225 AC_MSG_RESULT([Disabling fuse2fs]) 1226else 1227 AC_CHECK_HEADERS([pthread.h fuse.h], [], 1228[AC_MSG_FAILURE([Cannot find fuse2fs headers.])], 1229[#define _FILE_OFFSET_BITS 64 1230#define FUSE_USE_VERSION 29]) 1231 1232 AC_PREPROC_IFELSE( 1233[AC_LANG_PROGRAM([[#define FUSE_USE_VERSION 29 1234#ifdef __linux__ 1235#include <linux/fs.h> 1236#include <linux/falloc.h> 1237#include <linux/xattr.h> 1238#endif 1239]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])]) 1240 1241 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse], 1242 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], 1243 [AC_MSG_FAILURE([Cannot find fuse library.])])]) 1244 AC_MSG_RESULT([Enabling fuse2fs]) 1245fi 1246, 1247AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"], 1248[#define _FILE_OFFSET_BITS 64 1249#define FUSE_USE_VERSION 29 1250#ifdef __linux__ 1251# include <linux/fs.h> 1252# include <linux/falloc.h> 1253# include <linux/xattr.h> 1254#endif]) 1255if test -z "$FUSE_CMT" 1256then 1257 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse], 1258[AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [FUSE_CMT="#"])]) 1259fi 1260if test -z "$FUSE_CMT" 1261then 1262 AC_MSG_RESULT([Enabling fuse2fs by default.]) 1263fi 1264) 1265AC_SUBST(FUSE_LIB) 1266AC_SUBST(FUSE_CMT) 1267dnl 1268dnl See if optreset exists 1269dnl 1270AC_MSG_CHECKING(for optreset) 1271AC_CACHE_VAL(ac_cv_have_optreset, 1272[AC_EGREP_HEADER(optreset, unistd.h, 1273 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl 1274AC_MSG_RESULT($ac_cv_have_optreset) 1275if test $ac_cv_have_optreset = yes; then 1276 AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present]) 1277fi 1278dnl 1279dnl Test for sem_init, and which library it might require: 1280dnl 1281AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists]) 1282SEM_INIT_LIB='' 1283echo GL_THREADS_API: ${gl_threads_api} 1284if test "${gl_threads_api}" != none 1285then 1286 AC_CHECK_FUNC(sem_init, , 1287 AC_CHECK_LIB(pthread, sem_init, 1288 AC_DEFINE(HAVE_SEM_INIT, 1) 1289 SEM_INIT_LIB=-lpthread, 1290 AC_CHECK_LIB(rt, sem_init, 1291 AC_DEFINE(HAVE_SEM_INIT, 1) 1292 SEM_INIT_LIB=-lrt, 1293 AC_CHECK_LIB(posix4, sem_init, 1294 AC_DEFINE(HAVE_SEM_INIT, 1) 1295 SEM_INIT_LIB=-lposix4))))dnl 1296fi 1297AC_SUBST(SEM_INIT_LIB) 1298dnl 1299dnl Check for unified diff 1300dnl 1301AC_MSG_CHECKING(for unified diff option) 1302if diff -u $0 $0 > /dev/null 2>&1 ; then 1303 UNI_DIFF_OPTS=-u 1304else 1305 UNI_DIFF_OPTS=-c 1306fi 1307AC_MSG_RESULT($UNI_DIFF_OPTS) 1308AC_SUBST(UNI_DIFF_OPTS) 1309dnl 1310dnl We use the EXT2 ioctls only under Linux 1311dnl 1312case "$host_os" in 1313linux*) 1314 AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present]) 1315 ;; 1316esac 1317dnl 1318dnl Enable LTO for all packages 1319dnl 1320AC_ARG_ENABLE([lto], 1321[ --enable-lto enable link time optimization],, 1322enable_lto=no) 1323if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then 1324 AC_MSG_CHECKING([if C compiler supports LTO]) 1325 OLD_CFLAGS="$CFLAGS" 1326 OLD_LDFLAGS="$LDFLAGS" 1327 LTO_FLAGS="-g -flto -ffat-lto-objects" 1328 CFLAGS="$CFLAGS $LTO_FLAGS" 1329 LDFLAGS="$LDFLAGS $LTO_FLAGS" 1330 AC_LINK_IFELSE([AC_LANG_PROGRAM([])], 1331 [AC_MSG_RESULT([yes])] 1332 [lto_cflags=$LTO_FLAGS] 1333 [lto_ldflags=$LTO_FLAGS] 1334 [AC_PATH_PROG(gcc_ar, gcc-ar,,)] 1335 [AC_PATH_PROG(gcc_ranlib, gcc-ranlib,,)], 1336 [AC_MSG_RESULT([no])]) 1337 if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then 1338 have_lto=yes 1339 AR="${gcc_ar}" 1340 RANLIB="${gcc_ranlib}" 1341 fi 1342 CFLAGS="${OLD_CFLAGS}" 1343 LDFLAGS="${OLD_LDFLAGS}" 1344 AC_SUBST(have_lto) 1345 AC_SUBST(lto_cflags) 1346 AC_SUBST(lto_ldflags) 1347fi 1348if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then 1349 AC_MSG_ERROR([LTO not supported by compiler.]) 1350fi 1351dnl 1352dnl Enable UBSAN for all packages 1353dnl 1354AC_ARG_ENABLE([ubsan], 1355[ --enable-ubsan enable undefined behavior sanitizer],, 1356enable_ubsan=no) 1357if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then 1358 AC_MSG_CHECKING([if C compiler supports UBSAN]) 1359 OLD_CFLAGS="$CFLAGS" 1360 OLD_LDFLAGS="$LDFLAGS" 1361 UBSAN_FLAGS="-fsanitize=undefined" 1362 CFLAGS="$CFLAGS $UBSAN_FLAGS" 1363 LDFLAGS="$LDFLAGS $UBSAN_FLAGS" 1364 AC_LINK_IFELSE([AC_LANG_PROGRAM([])], 1365 [AC_MSG_RESULT([yes])] 1366 [ubsan_cflags=$UBSAN_FLAGS] 1367 [ubsan_ldflags=$UBSAN_FLAGS] 1368 [have_ubsan=yes], 1369 [AC_MSG_RESULT([no])]) 1370 CFLAGS="${OLD_CFLAGS}" 1371 LDFLAGS="${OLD_LDFLAGS}" 1372 AC_SUBST(have_ubsan) 1373 AC_SUBST(ubsan_cflags) 1374 AC_SUBST(ubsan_ldflags) 1375fi 1376if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then 1377 AC_MSG_ERROR([UBSAN not supported by compiler.]) 1378fi 1379dnl 1380dnl Enable ADDRSAN for all packages 1381dnl 1382AC_ARG_ENABLE([addrsan], 1383[ --enable-addrsan enable address sanitizer],, 1384enable_addrsan=no) 1385if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then 1386 AC_MSG_CHECKING([if C compiler supports ADDRSAN]) 1387 OLD_CFLAGS="$CFLAGS" 1388 OLD_LDFLAGS="$LDFLAGS" 1389 ADDRSAN_FLAGS="-fsanitize=address" 1390 CFLAGS="$CFLAGS $ADDRSAN_FLAGS" 1391 LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS" 1392 AC_LINK_IFELSE([AC_LANG_PROGRAM([])], 1393 [AC_MSG_RESULT([yes])] 1394 [addrsan_cflags=$ADDRSAN_FLAGS] 1395 [addrsan_ldflags=$ADDRSAN_FLAGS] 1396 [have_addrsan=yes], 1397 [AC_MSG_RESULT([no])]) 1398 CFLAGS="${OLD_CFLAGS}" 1399 LDFLAGS="${OLD_LDFLAGS}" 1400 AC_SUBST(have_addrsan) 1401 AC_SUBST(addrsan_cflags) 1402 AC_SUBST(addrsan_ldflags) 1403fi 1404if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then 1405 AC_MSG_ERROR([ADDRSAN not supported by compiler.]) 1406fi 1407dnl 1408dnl Enable THREADSAN for all packages 1409dnl 1410AC_ARG_ENABLE([threadsan], 1411[ --enable-threadsan enable thread sanitizer],, 1412enable_threadsan=no) 1413if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then 1414 AC_MSG_CHECKING([if C compiler supports THREADSAN]) 1415 OLD_CFLAGS="$CFLAGS" 1416 OLD_LDFLAGS="$LDFLAGS" 1417 THREADSAN_FLAGS="-fsanitize=thread" 1418 CFLAGS="$CFLAGS $THREADSAN_FLAGS" 1419 LDFLAGS="$LDFLAGS $THREADSAN_FLAGS" 1420 AC_LINK_IFELSE([AC_LANG_PROGRAM([])], 1421 [AC_MSG_RESULT([yes])] 1422 [threadsan_cflags=$THREADSAN_FLAGS] 1423 [threadsan_ldflags=$THREADSAN_FLAGS] 1424 [have_threadsan=yes], 1425 [AC_MSG_RESULT([no])]) 1426 CFLAGS="${OLD_CFLAGS}" 1427 LDFLAGS="${OLD_LDFLAGS}" 1428 AC_SUBST(have_threadsan) 1429 AC_SUBST(threadsan_cflags) 1430 AC_SUBST(threadsan_ldflags) 1431fi 1432if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then 1433 AC_MSG_ERROR([THREADSAN not supported by compiler.]) 1434fi 1435if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then 1436 AC_MSG_WARN([ADDRSAN and THREADSAN are not known to work together.]) 1437fi 1438dnl 1439dnl OS-specific uncomment control 1440dnl 1441LINUX_CMT="#" 1442CYGWIN_CMT="#" 1443UNIX_CMT= 1444case "$host_os" in 1445linux*) 1446 LINUX_CMT= 1447 ;; 1448cygwin) 1449 CYGWIN_CMT= 1450 UNIX_CMT="#" 1451 ;; 1452esac 1453AC_SUBST(LINUX_CMT) 1454AC_SUBST(CYGWIN_CMT) 1455AC_SUBST(UNIX_CMT) 1456dnl 1457dnl e2scrub only builds on linux 1458dnl 1459E2SCRUB_CMT="$LINUX_CMT" 1460AC_SUBST(E2SCRUB_CMT) 1461dnl 1462dnl Linux and Hurd places root files in the / by default 1463dnl 1464case "$host_os" in 1465linux* | gnu* | k*bsd*-gnu) 1466 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then 1467 root_prefix=""; 1468 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to '']) 1469 fi 1470 ;; 1471esac 1472dnl 1473dnl On Linux/hurd, force the prefix to be /usr 1474dnl 1475case "$host_os" in 1476linux* | gnu* | k*bsd*-gnu) 1477 if test "$prefix" = NONE ; then 1478 prefix="/usr"; 1479 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr]) 1480 if test "$mandir" = '${prefix}/man' ; then 1481 AC_MSG_RESULT([...and mandir defaults to /usr/share/man]) 1482 mandir=/usr/share/man 1483 fi 1484 fi 1485;; 1486esac 1487if test "$root_prefix" = NONE ; then 1488 if test "$prefix" = NONE ; then 1489 root_prefix="$ac_default_prefix" 1490 else 1491 root_prefix="$prefix" 1492 fi 1493 root_bindir=$bindir 1494 root_sbindir=$sbindir 1495 root_libdir=$libdir 1496 root_sysconfdir=$sysconfdir 1497else 1498 root_bindir='${root_prefix}/bin' 1499 root_sbindir='${root_prefix}/sbin' 1500 root_libdir='${root_prefix}/lib' 1501 root_sysconfdir='${root_prefix}/etc' 1502fi 1503if test "$bindir" != '${exec_prefix}/bin'; then 1504 root_bindir=$bindir 1505 AC_MSG_RESULT([Setting root_bindir to $root_bindir]) 1506fi 1507if test "$sbindir" != '${exec_prefix}/sbin'; then 1508 root_sbindir=$sbindir 1509 AC_MSG_RESULT([Setting root_sbindir to $root_sbindir]) 1510fi 1511if test "$libdir" != '${exec_prefix}/lib'; then 1512 root_libdir=$libdir 1513 AC_MSG_RESULT([Setting root_libdir to $root_libdir]) 1514fi 1515if test "$sysconfdir" != '${prefix}/etc'; then 1516 root_sysconfdir=$sysconfdir 1517 AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir]) 1518fi 1519AC_SUBST(root_prefix) 1520AC_SUBST(root_bindir) 1521AC_SUBST(root_sbindir) 1522AC_SUBST(root_libdir) 1523AC_SUBST(root_sysconfdir) 1524dnl 1525dnl Allow specification of the multiarch arch 1526dnl 1527AC_ARG_WITH([multiarch], 1528[ --with-multiarch=ARCH specify the multiarch triplet], 1529if test "$withval" = "lib64"; then 1530 libdir=/usr/lib64 1531 root_libdir=/lib64 1532else 1533 libdir=$libdir/$withval 1534 root_libdir=$root_libdir/$withval 1535fi 1536) 1537dnl 1538dnl 1539dnl See if -static works. This could fail if the linker does not 1540dnl support -static, or if required external libraries are not available 1541dnl in static form. 1542dnl 1543AC_MSG_CHECKING([whether we can link with -static]) 1544AC_CACHE_VAL(ac_cv_e2fsprogs_use_static, 1545[SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS_STATIC -static" 1546AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);], 1547 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no) 1548LDFLAGS=$SAVE_LDFLAGS]) 1549dnl 1550dnl Regardless of how the test turns out, Solaris doesn't handle -static 1551dnl This is caused by the socket library requiring the nsl library, which 1552dnl requires the -dl library, which only works for dynamically linked 1553dnl programs. It basically means you can't have statically linked programs 1554dnl which use the network under Solaris. 1555dnl 1556case "$host_os" in 1557solaris2.*) 1558 ac_cv_e2fsprogs_use_static=no 1559;; 1560esac 1561AC_MSG_RESULT($ac_cv_e2fsprogs_use_static) 1562if test $ac_cv_e2fsprogs_use_static = yes; then 1563 LDFLAGS_STATIC="$LDFLAGS_STATIC -static" 1564fi 1565AC_SUBST(LDFLAGS_STATIC) 1566dnl 1567dnl Work around mysterious Darwin / GNU libintl problem 1568dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like 1569dnl Apple hacked gcc somehow?) 1570dnl 1571case "$host_os" in 1572darwin*) 1573 AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround]) 1574 AC_DEFINE(_INTL_REDIRECT_MACROS, 1, 1575 [Define to 1 if Apple Darwin libintl workaround is needed]) 1576 ;; 1577esac 1578dnl 1579dnl Only try to run the test suite if we're not cross compiling. 1580dnl 1581if test "$cross_compiling" = yes ; then 1582 DO_TEST_SUITE= 1583else 1584 DO_TEST_SUITE=check 1585fi 1586AC_SUBST(DO_TEST_SUITE) 1587dnl 1588dnl Only include the intl include files if we're building with them 1589dnl 1590INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib' 1591if test -n "$CPPFLAGS" ; then 1592 INCLUDES="$INCLUDES $CPPFLAGS" 1593fi 1594if test "$USE_INCLUDED_LIBINTL" = "yes" ; then 1595 INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl' 1596fi 1597if test -n "$WITH_DIET_LIBC" ; then 1598 INCLUDES="$INCLUDES -D_REENTRANT" 1599fi 1600AC_SUBST(INCLUDES) 1601dnl 1602dnl Build CFLAGS 1603dnl 1604if test $cross_compiling = no; then 1605 BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H" 1606 BUILD_LDFLAGS="$LDFLAGS" 1607fi 1608AC_SUBST(BUILD_CFLAGS) 1609AC_SUBST(BUILD_LDFLAGS) 1610dnl 1611dnl Define CFLAGS and LDFLAGS for shared libraries 1612dnl 1613CFLAGS_SHLIB=${CFLAGS_SHLIB:-$CFLAGS} 1614CFLAGS_STLIB=${CFLAGS_STLIB:-$CFLAGS} 1615LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS} 1616AC_SUBST(CFLAGS_SHLIB) 1617AC_SUBST(CFLAGS_STLIB) 1618AC_SUBST(LDFLAGS_SHLIB) 1619 1620dnl 1621dnl Where do udev rules go? 1622dnl 1623AC_ARG_WITH([udev_rules_dir], 1624 [AS_HELP_STRING([--with-udev-rules-dir@<:@=DIR@:>@], 1625 [Install udev rules into DIR.])], 1626 [], 1627 [with_udev_rules_dir=yes]) 1628AS_IF([test "x${with_udev_rules_dir}" != "xno"], 1629 [ 1630 AS_IF([test "x${with_udev_rules_dir}" = "xyes"], 1631 [ 1632 PKG_CHECK_MODULES([udev], [udev], 1633 [ 1634 with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d" 1635 ], [ 1636 with_udev_rules_dir="" 1637 ]) 1638 ]) 1639 AC_MSG_CHECKING([for udev rules dir]) 1640 pkg_udev_rules_dir="${with_udev_rules_dir}" 1641 AS_IF([test -n "${pkg_udev_rules_dir}"], 1642 [ 1643 AC_MSG_RESULT(${pkg_udev_rules_dir}) 1644 have_udev="yes" 1645 ], 1646 [ 1647 AC_MSG_RESULT(no) 1648 have_udev="no" 1649 ]) 1650 ], 1651 [ 1652 have_udev="disabled" 1653 ]) 1654AC_SUBST(have_udev) 1655AC_SUBST(pkg_udev_rules_dir) 1656 1657dnl 1658dnl Where do cron jobs go? 1659dnl 1660AC_ARG_WITH([crond_dir], 1661 [AS_HELP_STRING([--with-crond-dir@<:@=DIR@:>@], 1662 [Install system crontabs into DIR.])], 1663 [], 1664 [with_crond_dir=yes]) 1665AS_IF([test "x${with_crond_dir}" != "xno"], 1666 [ 1667 AS_IF([test "x${with_crond_dir}" = "xyes"], 1668 [ 1669 AS_IF([test -d "/etc/cron.d"], 1670 [with_crond_dir="/etc/cron.d"]) 1671 ]) 1672 AC_MSG_CHECKING([for system crontab dir]) 1673 crond_dir="${with_crond_dir}" 1674 AS_IF([test -n "${crond_dir}"], 1675 [ 1676 AC_MSG_RESULT(${crond_dir}) 1677 have_crond="yes" 1678 ], 1679 [ 1680 AC_MSG_RESULT(no) 1681 have_crond="no" 1682 ]) 1683 ], 1684 [ 1685 have_crond="disabled" 1686 ]) 1687AC_SUBST(have_crond) 1688AC_SUBST(crond_dir) 1689 1690dnl 1691dnl Where do systemd services go? 1692dnl 1693AC_ARG_WITH([systemd_unit_dir], 1694 [AS_HELP_STRING([--with-systemd-unit-dir@<:@=DIR@:>@], 1695 [Install systemd system units into DIR.])], 1696 [], 1697 [with_systemd_unit_dir=yes]) 1698AS_IF([test "x${with_systemd_unit_dir}" != "xno"], 1699 [ 1700 AS_IF([test "x${with_systemd_unit_dir}" = "xyes"], 1701 [ 1702 PKG_CHECK_MODULES([systemd], [systemd], 1703 [ 1704 with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)" 1705 ], [ 1706 with_systemd_unit_dir="" 1707 ]) 1708 m4_pattern_allow([^PKG_(MAJOR|MINOR|BUILD|REVISION)$]) 1709 ]) 1710 AC_MSG_CHECKING([for systemd system unit dir]) 1711 systemd_system_unit_dir="${with_systemd_unit_dir}" 1712 AS_IF([test -n "${systemd_system_unit_dir}"], 1713 [ 1714 AC_MSG_RESULT(${systemd_system_unit_dir}) 1715 have_systemd="yes" 1716 ], 1717 [ 1718 AC_MSG_RESULT(no) 1719 have_systemd="no" 1720 ]) 1721 ], 1722 [ 1723 have_systemd="disabled" 1724 ]) 1725AC_SUBST(have_systemd) 1726AC_SUBST(systemd_system_unit_dir) 1727 1728dnl 1729dnl Make our output files, being sure that we create the some miscellaneous 1730dnl directories 1731dnl 1732test -d lib || mkdir lib 1733test -d include || mkdir include 1734test -d include/linux || mkdir include/linux 1735test -d include/asm || mkdir include/asm 1736if test -z "$UUID_CMT" ; then 1737 uuid_out_list="lib/uuid/Makefile lib/uuid/uuid.pc \ 1738 lib/uuid/uuid_types.h" 1739fi 1740if test -z "$BLKID_CMT" ; then 1741 blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \ 1742 lib/blkid/blkid_types.h" 1743fi 1744for i in MCONFIG Makefile \ 1745 util/Makefile util/subst.conf util/gen-tarball util/install-symlink \ 1746 lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \ 1747 lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \ 1748 $uuid_out_list $blkid_out_list lib/support/Makefile \ 1749 lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \ 1750 misc/Makefile ext2ed/Makefile e2fsck/Makefile \ 1751 debugfs/Makefile tests/Makefile tests/progs/Makefile \ 1752 resize/Makefile doc/Makefile intl/Makefile \ 1753 intl/libgnuintl.h po/Makefile.in scrub/Makefile; do 1754 if test -d `dirname ${srcdir}/$i` ; then 1755 outlist="$outlist $i" 1756 fi 1757done 1758AC_OUTPUT($outlist) 1759if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi 1760