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