diff options
Diffstat (limited to '')
-rw-r--r-- | configure.ac | 573 |
1 files changed, 573 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..cf9fb8a --- /dev/null +++ b/configure.ac @@ -0,0 +1,573 @@ +dnl GNU Parted - a library and front end for manipulation hard disk partitions +dnl Copyright (C) 1998-2002, 2005-2014, 2019-2023 Free Software Foundation, +dnl Inc. +dnl +dnl This file may be modified and/or distributed without restriction. + +AC_PREREQ([2.71]) +AC_INIT([GNU parted],[m4_esyscmd(build-aux/git-version-gen .version)],[bug-parted@gnu.org]) + +# When the most recent signed tag is v1.8.8.1, +# the above might set e.g., PACKAGE_VERSION='1.8.8.1.1-0bfc' + +AC_CONFIG_SRCDIR([include/parted/parted.in.h]) + +AC_CONFIG_HEADERS([lib/config.h:lib/config.h.in]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_MACRO_DIR([m4]) + +dnl Versioning +dnl Shamelessly pulled straight from glib's configure.in ... +dnl Making releases: +dnl PED_MICRO_VERSION += 1; +dnl PED_INTERFACE_AGE += 1; +dnl PED_BINARY_AGE += 1; +dnl if any functions have been added, set PED_INTERFACE_AGE to 0. +dnl if backwards compatibility has been broken (eg. functions removed, +dnl function signatures changed), +dnl set PED_BINARY_AGE _and_ PED_INTERFACE_AGE to 0. + +# Derive these numbers from $PACKAGE_VERSION, which is set +# when autoconf creates configure (see AC_INIT, above). +PED_MAJOR_VERSION=`echo "$PACKAGE_VERSION"|sed 's/\..*//'` +PED_MINOR_VERSION=`echo "$PACKAGE_VERSION"|sed 's/^[[0-9]][[0-9]]*\.//;s/\..*//'` +case $PACKAGE_VERSION in + *.*.*.*.*) + PED_MICRO_VERSION=`echo "$PACKAGE_VERSION" \ + | sed 's/^[^.]*\.[^.]*\.//;s/\..*//'` + ;; + *) PED_MICRO_VERSION=0;; +esac + +PED_INTERFACE_AGE=0 +PED_BINARY_AGE=0 +PED_VERSION_SUFFIX= +PED_VERSION=$PED_MAJOR_VERSION.$PED_MINOR_VERSION.$PED_MICRO_VERSION$PED_VERSION_SUFFIX + +LT_RELEASE=$PED_MAJOR_VERSION.$PED_MINOR_VERSION +LT_CURRENT=`expr $PED_MICRO_VERSION - $PED_INTERFACE_AGE` +LT_REVISION=$PED_INTERFACE_AGE +LT_AGE=`expr $PED_BINARY_AGE - $PED_INTERFACE_AGE` +AC_SUBST([LT_RELEASE]) +AC_SUBST([LT_CURRENT]) +AC_SUBST([LT_REVISION]) +AC_SUBST([LT_AGE]) + +AM_INIT_AUTOMAKE([1.11.6 no-dist-gzip dist-xz color-tests parallel-tests + subdir-objects -Wno-portability]) +AM_SILENT_RULES([yes]) # make --enable-silent-rules the default. + +AC_CANONICAL_HOST +case "$host_os" in + linux*|uclinux*) OS=linux ;; + gnu*) OS=gnu ;; + beos*) OS=beos ;; + *) AC_MSG_ERROR([Unknown or unsupported OS "$host_os". Only "linux", "uclinux", "gnu" and "beos" are supported in this version of GNU Parted.]) ;; +esac +AC_SUBST([OS]) + +dnl Command-line options +AC_ARG_WITH([readline], + [ --with-readline support fancy command line editing], , + with_readline=yes +) + +AC_ARG_ENABLE([mtrace], + [ --enable-mtrace enable malloc() debugging], , + enable_mtrace=no +) +if test "$enable_mtrace" = yes; then + AC_DEFINE([ENABLE_MTRACE], [1], [Mtrace malloc() debugging]) +fi + +AC_SUBST([ENABLE_DEVICE_MAPPER]) +ENABLE_DEVICE_MAPPER=yes +AC_ARG_ENABLE([device-mapper], + [ --enable-device-mapper enable device mapper support [default=yes]], + [ENABLE_DEVICE_MAPPER=$enable_device_mapper]) +if test $ENABLE_DEVICE_MAPPER = yes; then + AC_DEFINE([ENABLE_DEVICE_MAPPER], + 1, [device mapper (libdevmapper) support]) +fi + +AC_ARG_ENABLE([discover-only], + [ --enable-discover-only support only reading/probing [default=no]], , + enable_discover_only=no +) +if test "$enable_discover_only" = yes; then + AC_DEFINE([DISCOVER_ONLY], [1], [Probing functionality only]) +fi + +PARTED_LIBS="" + +AC_ARG_ENABLE([debug], + [ --enable-debug compile in assertions [default=yes]], , + enable_debug=yes +) + +if test "$enable_debug" = yes; then + AC_DEFINE([DEBUG], [1], [Enable assertions, etc.]) +fi + +AC_ARG_ENABLE([read-only], + [ --enable-read-only disable writing (for debugging) [default=no]] + , , + enable_read_only=no +) +if test "$enable_read_only" = yes; then + AC_DEFINE([READ_ONLY], [1], [Disable all writing code]) +fi + +PARTEDLDFLAGS= +AC_SUBST([PARTEDLDFLAGS]) + +AC_ARG_ENABLE([pc98], + [ --enable-pc98 build with pc98 support [default=yes]], , + enable_pc98=yes +) +if test "$enable_pc98" = yes; then + AC_DEFINE([ENABLE_PC98], [1], + [Include PC98 partition tables. (Sometimes excluded to avoid + collisions with msdos partition tables]) +fi + +AC_ARG_ENABLE([hfs-extract-fs], + [ --enable-hfs-extract-fs Extract special HFS files for debugging [default=no]], , + enable_hfs_extract_fs=no +) +if test "$enable_hfs_extract_fs" = yes; then + AC_DEFINE([HFS_EXTRACT_FS], [1], + [Extract low level special HFS(+) files for debugging purposes + when using the "check" command (NOT FOR PACKAGING)]) +fi + +dnl make libc threadsafe (not required for us, but useful other users of +dnl libparted) +AM_CPPFLAGS="$AM_CPPFLAGS -D_REENTRANT" + +dnl Check for programs. +AC_SEARCH_LIBS([strerror],[cposix]) +AC_PROG_CC +AC_PROG_GCC_TRADITIONAL +AM_PROG_CC_C_O + +gl_EARLY +parted_FIND_USABLE_TEST_DIR + +dnl This test must come as early as possible after the compiler configuration +dnl tests, because the choice of the file model can (in principle) affect +dnl whether functions and headers are available, whether they work, etc. +AC_SYS_LARGEFILE + +gl_INIT + +AC_ARG_ENABLE([gcc-warnings], + [AS_HELP_STRING([--enable-gcc-warnings], + [turn on lots of GCC warnings (for developers)])], + [case $enableval in + yes|no) ;; + *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;; + esac + gl_gcc_warnings=$enableval], + [if test -d "$srcdir"/.git; then + gl_gcc_warnings=yes + else + gl_gcc_warnings=no + fi] +) + +if test "$gl_gcc_warnings" = yes; then + nw= + # This, $nw, is the list of warnings we disable. + nw="$nw -Wdeclaration-after-statement" # too useful to forbid + nw="$nw -Waggregate-return" # anachronistic + nw="$nw -Wlong-long" # C90 is anachronistic (lib/gethrxtime.h) + nw="$nw -Wc++-compat" # We don't care about C++ compilers + nw="$nw -Wundef" # Warns on '#if GNULIB_FOO' etc in gnulib + nw="$nw -Wtraditional" # Warns on #elif which we use often + nw="$nw -Wcast-qual" # Too many warnings for now + nw="$nw -Wconversion" # Too many warnings for now + nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings + nw="$nw -Wsign-conversion" # Too many warnings for now + nw="$nw -Wtraditional-conversion" # Too many warnings for now + nw="$nw -Wunreachable-code" # Too many warnings for now + nw="$nw -Wpadded" # Our structs are not padded + nw="$nw -Wredundant-decls" # openat.h declares e.g., mkdirat + nw="$nw -Wlogical-op" # any use of fwrite provokes this + nw="$nw -Wvla" # warnings in gettext.h + nw="$nw -Wnested-externs" # use of XARGMATCH/verify_function__ + nw="$nw -Wswitch-enum" # Too many warnings for now + nw="$nw -Wswitch-default" # Too many warnings for now + # Too many warnings for now + nw="$nw -Wattributes" + nw="$nw -Wstrict-prototypes" + nw="$nw -Wold-style-definition" + nw="$nw -Wpacked" + nw="$nw -Wmissing-prototypes" + nw="$nw -Wmissing-declarations" + nw="$nw -Wsuggest-attribute=noreturn" + # things I might fix soon: + nw="$nw -Wfloat-equal" # sort.c, seq.c + nw="$nw -Wmissing-format-attribute" # copy.c + nw="$nw -Wunsafe-loop-optimizations" # a few src/*.c + nw="$nw -Winline" # system.h's readdir_ignoring_dot_and_dotdot + nw="$nw -Wstrict-overflow" # expr.c, pr.c, tr.c, factor.c + nw="$nw -Wstack-protector" # libparted/label/gpt.c + # ?? -Wstrict-overflow + nw="$nw -Wsuggest-attribute=format" # suggests to use gnu_printf for vsnprintf + + gl_MANYWARN_ALL_GCC([ws]) + gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw]) + for w in $ws; do + gl_WARN_ADD([$w]) + done + gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one + gl_WARN_ADD([-Wno-sign-compare]) # Too many warnings for now + gl_WARN_ADD([-Wno-pointer-sign]) # Too many warnings for now + gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now + gl_WARN_ADD([-Wno-unused-macros]) # Too many warnings for now + gl_WARN_ADD([-Wno-format-nonliteral]) + gl_WARN_ADD([-Wabi=2]) # Avoid compile failure with GCC8 + + # FIXME: investigate these + gl_WARN_ADD([-Wno-jump-misses-init]) + + # In spite of excluding -Wlogical-op above, it is enabled, as of + # gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c + gl_WARN_ADD([-Wno-logical-op]) + + gl_WARN_ADD([-fdiagnostics-show-option]) + + # Make sure it recognizes /* FALLTHROUGH */ comment + gl_WARN_ADD([-Wimplicit-fallthrough=3]) + + AC_SUBST([WARN_CFLAGS]) + + AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.]) + AC_DEFINE([_FORTIFY_SOURCE], [2], + [enable compile-time and run-time bounds-checking, and some warnings]) + AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks]) +fi + + + +AC_CHECK_SIZEOF([off_t], [64], [ + #include <stdio.h> + #include <sys/types.h> + #include <unistd.h> +]) + +AC_ENABLE_SHARED([]) +if test "$OS" = linux && test $ac_cv_sizeof_off_t -lt 8; then + dnl Need to disable shared libraries, to get llseek() to work. Long + dnl story. The short story is: lseek() isn't in glibc, so a syscall + dnl must be made. syscalls can't be made from within shared libraries, + dnl because of a bug (?) in gcc. + AC_MSG_WARN( +off_t is less than 8 bytes. Using llseek syscall, and disabling shared +libraries.) + AC_DISABLE_SHARED([]) +fi +LT_INIT +LT_INIT + +AM_ICONV + +AM_GNU_GETTEXT_VERSION([0.18]) +AM_GNU_GETTEXT([external]) +if test "$USE_INCLUDED_LIBINTL" = "yes"; then + AC_MSG_ERROR([ +GNU Parted requires gettext to be installed for compilation - +if native language support is desired. Either disable native language support +with: + $ ./configure --disable-nls +Or install gettext. GNU gettext is available from + http://ftp.gnu.org/gnu/gettext +]) +fi + +dnl Check for libuuid +UUID_LIBS="" +AC_CHECK_LIB([uuid], [uuid_generate], [UUID_LIBS="-luuid"], + [AC_MSG_ERROR(dnl +[GNU Parted requires libuuid - a part of the util-linux-ng package (but +usually distributed separately in libuuid-devel, uuid-dev or similar) +This can probably be found on your distribution's CD or FTP site or at: + http://userweb.kernel.org/~kzak/util-linux-ng/ +Note: originally, libuuid was part of the e2fsprogs package. Later, it +moved to util-linux-ng-2.16, and that package is now the preferred source.])]) +AC_SUBST([UUID_LIBS]) + +dnl Check for libdevmapper +DM_LIBS= +if test $ENABLE_DEVICE_MAPPER = yes; then + AC_CHECK_LIB([devmapper], [dm_task_create], + [DM_LIBS=-ldevmapper], + [AC_MSG_ERROR(dnl +[libdevmapper could not be found, but is required for the +--enable-device-mapper option, which is enabled by default. Either disable +device-mapper support with --disable-device-mapper or download and install +device-mapper from: + http://sources.redhat.com/dm/ +Note: if you are using precompiled packages you will need the development +package as well (it may be called device-mapper-devel or something similar).] + )] + ) +fi +AC_SUBST([DM_LIBS]) + +dnl Check for termcap +if test "$with_readline" = yes; then + OLD_LIBS="$LIBS" + LIBS="" + AC_SEARCH_LIBS([tgetent], [tinfo ncurses curses termcap termlib], + [PARTED_LIBS="$PARTED_LIBS $LIBS"], + [AC_MSG_ERROR(dnl +[termcap could not be found which is required for the +--with-readline option (which is enabled by default). Either disable readline +support with --without-readline or download and install termcap from: + ftp.gnu.org/gnu/termcap +Note: if you are using precompiled packages you will also need the development + package as well (which may be called termcap-devel or something similar). +Note: (n)curses also seems to work as a substitute for termcap. This was + not found either - but you could try installing that as well.])]) + LIBS="$OLD_LIBS" +fi + +dnl Check for readline +dnl NOTE: We need to remove the gl_cv_ignore_unused_libraries flag if we +dnl detected one earlier. libreadline on some platforms (e.g., RHEL and +dnl Fedora) is left with +if test "$with_readline" = yes; then + OLD_LIBS="$LIBS" + LIBS="$LIBS $PARTED_LIBS" + found_working_libreadline=no + AC_CHECK_LIB([readline], [readline], + found_working_libreadline=yes, + AC_MSG_ERROR( +[GNU Readline could not be found which is required for the +--with-readline (which is enabled by default). Either disable readline support with +--without-readline or downloaded and install it from: + ftp.gnu.org/gnu/readline +Note: if you are using precompiled packages you will also need the development +package as well (which may be called readline-devel or something similar). +]) + , + $PARTED_LIBS + ) + LIBS="$OLD_LIBS $PARTED_LIBS" + + # See if libreadline is too old to be used. + # The readline function in Debian's libreadline5 5.0-10 fails to + # print to stdout the response (from stdin) to a prompt, when stdout + # is redirected, while 5.2-3 works fine. That failure would cause + # several of parted's tests to failure. + # The purist approach would be to write a run-test, but that's + # not friendly to cross-compilers, so here's a compromise: + # + # See if libreadline defines one of these symbols: + # [this is the list of public symbols that are in 5.2, but not 5.0] + # + # $ diff -u /tmp/readline-5.[02]|grep '+T.[^_]' + # +T rl_vi_rubout + # +T rl_variable_value + # +T rl_reset_screen_size + # +T alloc_history_entry + # +T copy_history_entry + # +T replace_history_data + # + # If not, then reject this readline lib. + AC_CHECK_LIB([readline], [rl_variable_value], + , + AC_MSG_ERROR( +[Your version of libreadline is too old to be used. +Consider upgrading to version 5.2 or newer.]) + found_working_libreadline=no, + $PARTED_LIBS) + + if test $found_working_libreadline = yes; then + PARTED_LIBS="-lreadline $PARTED_LIBS" + AC_DEFINE([HAVE_LIBREADLINE], [1], [have readline]) + fi + LIBS="$OLD_LIBS" +fi + +AC_SUBST([PARTED_LIBS]) + +dnl Check for OS specific libraries + +dnl GNU/Hurd: +if test "$OS" = gnu; then +dnl libshouldbeinlibc + AC_CHECK_LIB([shouldbeinlibc], [vm_deallocate], + OS_LIBS="$OS_LIBS -lshouldbeinlibc", + AC_MSG_ERROR( +[GNU Parted requires libshouldbeinlibc when running on +GNU/Hurd systems. It is a standard part of a GNU/Hurd system.] + ) + ) + +dnl libstore may depend on libparted being present. +dnl Aren't circular dependencies wonderful? + OLD_LIBS="$LIBS" + LIBS= + + AC_CHECK_LIB([parted], [ped_device_read]) + +dnl libstore + AC_CHECK_LIB([store], [store_open], + OS_LIBS="$OS_LIBS -lstore", + AC_MSG_ERROR( +[GNU Parted requires libstore when running on GNU/Hurd +systems. It is a standard part of a GNU/Hurd system.] + ) + , + $OS_LIBS $UUID_LIBS $DM_LIBS $LIBS + ) + LIBS="$OLD_LIBS" +fi + +dnl BeOS/ZETA/Haiku: + +if test "$OS" = beos; then + dnl Include the socket library, as it is a depedency of libuuid + dnl and so also of us (due to socket() call in libuuid) + OS_LIBS="$OS_LIBS -lsocket" +fi + +AC_SUBST([OS_LIBS]) + +dnl One day, gettext might support libtool... +dnl if test "$USE_INCLUDED_LIBINTL" = "yes"; then +dnl INTLINCS='-I$(top_srcdir)/intl' +dnl fi +AC_SUBST([INTLINCS]) + + +dnl Checks for header files. +AC_CHECK_HEADER([uuid/uuid.h], , + [AC_MSG_ERROR( +[GNU Parted requires libuuid - a part of the e2fsprogs package. +You seem to have the library installed but not the headers. These are usually +found in a corresponding development package (usually called e2fsprogs-devel). +If you can't find one try: + http://web.mit.edu/tytso/www/linux/e2fsprogs.html])] +) + +AC_CHECK_HEADERS([getopt.h]) +AC_CHECK_HEADERS([linux/ext2_fs.h]) + +dnl required for libparted/llseek.c (TODO: make linux-x86 only) +if test "$OS" = linux; then + AC_CHECK_HEADER([linux/unistd.h]) +fi + +if test "$with_readline" = yes; then + AC_CHECK_HEADERS([readline/readline.h readline/history.h], , + [AC_MSG_ERROR( +[The headers for GNU Readline could not be found which +are required for the --with-readline option. You seem to have the GNU readline +library installed but not the headers. These are usually found in a +corresponding development package (usually called readline-devel). If you can't +find one try: + ftp.gnu.org/gnu/readline +Alternatively you can disable readline support with --without-readline])] + ) +fi + +AC_CHECK_HEADERS([termcap.h]) + +if test "$USE_NLS" = yes; then + AC_CHECK_HEADERS([wctype.h], , + [AC_MSG_ERROR( +[One or more of the header files that are required for +native language support (wctype.h) could not be found. Either get a newer +version of GNU libc and its headers - which can be obtained from: + ftp.gnu.org/gnu/glibc +Or disable native language support with the --disable-nls option])] + ) +fi + +AC_CHECK_HEADER([execinfo.h], [ + AC_CHECK_LIB([c], [backtrace], [ + AC_DEFINE([HAVE_BACKTRACE], [1], [Has backtrace support]) + LDFLAGS="$LDFLAGS -rdynamic" + ]) +]) + +AM_CONDITIONAL([COMPILE_FOR_S390], [test "$host_cpu" = s390 || test "$host_cpu" = s390x]) + +dnl check for "check", unit testing library/header +PKG_CHECK_MODULES([CHECK], [check >= 0.9.3], have_check=yes, have_check=no) +if test "$have_check" != "yes"; then + AC_MSG_RESULT([Unable to locate check version 0.9.3 or higher: not building]) +fi +AM_CONDITIONAL([HAVE_CHECK], [test "$have_check" = yes]) + +dnl Checks for typedefs, structures and compiler characteristics. +LT_PATH_LD + +AC_C_BIGENDIAN +AC_C_INLINE +AC_C_CONST +AC_C_RESTRICT + +dnl Checks for library functions. +AC_CHECK_FUNCS([sigaction]) +AC_CHECK_FUNCS([getuid]) + +dnl NOTE: We need to remove the gl_cv_ignore_unused_libraries flag if we +dnl detected one earlier. libreadline on some platforms (e.g., RHEL and +dnl Fedora) is left with +if test "$with_readline" = yes; then + OLD_LIBS="$LIBS" + LIBS="$LIBS $PARTED_LIBS -lreadline" + AC_CHECK_FUNCS([rl_completion_matches]) + LIBS="$OLD_LIBS" +fi + +AC_CHECK_FUNCS([canonicalize_file_name]) + +DATE=$(date '+%d %b %Y %H:%M') +USER=$(whoami) +HOST=$(hostname) +BUILDINFO="$USER@$HOST, $DATE" +AC_SUBST([BUILDINFO]) + +LIB_BLKID= +AC_SUBST([LIB_BLKID]) +pe_saved_libs=$LIBS + AC_SEARCH_LIBS([blkid_probe_get_topology], [blkid], + [test "$ac_cv_search_blkid_probe_get_topology" = "none required" \ + || LIB_BLKID=$ac_cv_search_blkid_probe_get_topology]) + AC_CHECK_FUNC([blkid_probe_get_topology], [use_blkid=1], [use_blkid=0]) +LIBS=$pe_saved_libs +AC_DEFINE_UNQUOTED([USE_BLKID], [$use_blkid], + [Define if you have sufficient blkid support.]) +AC_CHECK_HEADERS_ONCE([blkid/blkid.h]) + +AC_CONFIG_FILES([ +Makefile +lib/Makefile +include/Makefile +include/parted/Makefile +libparted/Makefile +libparted/labels/Makefile +libparted/fs/Makefile +libparted/tests/Makefile +libparted.pc +libparted-fs-resize.pc +parted/Makefile +partprobe/Makefile +doc/Makefile +doc/C/Makefile +doc/pt_BR/Makefile +debug/Makefile +debug/test/Makefile +tests/Makefile +po/Makefile.in +]) +AC_OUTPUT + +echo +echo Type \'make\' to compile parted. |