]> git.ipfire.org Git - thirdparty/tar.git/blobdiff - configure.ac
tar: fix current_block confusion
[thirdparty/tar.git] / configure.ac
index 2310600677c9b1f8f0edcf68673e343db060b842..aba0d02f7677245ddb2ee758f826f39629175a03 100644 (file)
@@ -1,30 +1,28 @@
 # Configure template for GNU tar.  -*- autoconf -*-
 
-# Copyright (C) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-# Software Foundation, Inc.
+# Copyright 1991, 1994-2010, 2013-2024 Free Software Foundation, Inc.
 
-# This program is free software; you can redistribute it and/or modify
+# This file is part of GNU tar.
+
+# GNU tar is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
 
-# This program is distributed in the hope that it will be useful,
+# GNU tar is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-AC_INIT([GNU tar], [1.26.90], [bug-tar@gnu.org])
+AC_INIT([GNU tar], [1.35], [bug-tar@gnu.org])
 AC_CONFIG_SRCDIR([src/tar.c])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_HEADERS([config.h])
-AC_PREREQ([2.63])
-AM_INIT_AUTOMAKE([1.11 gnits tar-ustar dist-bzip2 dist-xz dist-shar std-options silent-rules])
+AC_PREREQ([2.71])
+AM_INIT_AUTOMAKE([1.15 gnits tar-ustar dist-bzip2 dist-xz std-options silent-rules])
 
 # Enable silent rules by default:
 AM_SILENT_RULES([yes])
@@ -34,10 +32,9 @@ AC_EXEEXT
 AC_PROG_RANLIB
 AC_PROG_YACC
 gl_EARLY
+AC_CHECK_TOOLS([AR], [ar])
 
 AC_SYS_LARGEFILE
-AC_ISC_POSIX
-AC_C_INLINE
 
 AC_CHECK_HEADERS_ONCE(fcntl.h linux/fd.h memory.h net/errno.h \
   sgtty.h string.h \
@@ -51,19 +48,18 @@ AC_CHECK_HEADERS([sys/buf.h], [], [],
 #include <sys/param.h>
 #endif])
 
-AC_HEADER_SYS_WAIT
-
-AC_HEADER_DIRENT
 AC_HEADER_MAJOR
-AC_HEADER_STAT
-AC_HEADER_STDC
 
 AC_MSG_CHECKING([for st_fstype string in struct stat])
 AC_CACHE_VAL(diff_cv_st_fstype_string,
-  [AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/stat.h>], [struct stat s; s.st_fstype[0] = 'x';],
-   diff_cv_st_fstype_string=yes,
-   diff_cv_st_fstype_string=no)])
+  [AC_COMPILE_IFELSE(
+     [AC_LANG_PROGRAM(
+        [[#include <sys/types.h>
+          #include <sys/stat.h>
+       ]],
+       [[struct stat s; s.st_fstype[0] = 'x';]])],
+     [diff_cv_st_fstype_string=yes],
+     [diff_cv_st_fstype_string=no])])
 AC_MSG_RESULT($diff_cv_st_fstype_string)
 if test $diff_cv_st_fstype_string = yes; then
   AC_DEFINE(HAVE_ST_FSTYPE_STRING, 1,
@@ -76,11 +72,13 @@ fi
 AC_ARG_WITH([posix-acls],
     AS_HELP_STRING([--without-posix-acls],
                    [do not use POSIX.1e access control lists]),
-    [with_posix_acls=no])
+    [],
+    [with_posix_acls=yes])
 if test "x$with_posix_acls" != "xno"; then
   AC_CHECK_HEADERS(sys/acl.h,, [with_posix_acls=no])
   for tar_acl_func in acl_get_file acl_get_fd acl_set_file acl_set_fd \
-                     acl_to_text acl_from_text; do \
+                     acl_to_text acl_from_text acl_delete_def_file \
+                     acl_free; do \
     test "x$with_posix_acls" = xno && break
     AC_SEARCH_LIBS([$tar_acl_func], [acl pacl], [], [with_posix_acls=no])
   done
@@ -92,11 +90,9 @@ else
   export enable_acl=no
 fi
 
-AC_TYPE_SIGNAL
 AC_TYPE_MODE_T
 AC_TYPE_PID_T
 AC_TYPE_OFF_T
-AC_TYPE_SIZE_T
 AC_TYPE_UID_T
 AC_CHECK_TYPE(major_t, , AC_DEFINE(major_t, int,
                                   [Type of major device numbers.]))
@@ -109,9 +105,53 @@ gt_TYPE_SSIZE_T
 
 # gnulib modules
 gl_INIT
+
+AC_DEFINE([GNULIB_EXCLUDE_SINGLE_THREAD], [1],
+  [Define if all programs in this package call functions of the Gnulib
+   'exclude' module only from a single thread.])
+AC_DEFINE([GNULIB_MBRTOWC_SINGLE_THREAD], [1],
+  [Define if all programs in this package call functions of the Gnulib
+   'mbtowc' module only from a single thread.])
+AC_DEFINE([GNULIB_REGEX_SINGLE_THREAD], [1],
+  [Define if all programs in this package call functions of the Gnulib
+   'regex' module only from a single thread.])
+AC_DEFINE([GNULIB_WCHAR_SINGLE_LOCALE], [1],
+  [Define if all programs in this package call locale-sensitive functions
+   like mbrtowc only after setting the locale, and never change the
+   locale once set.])
+
+if test $ac_cv_lib_error_at_line = no; then
+  # This means that the error() function is not present in libc, so
+  # the one from gnulib will be used instead. This function precedes
+  # error messages it prints with the program name as returned by getprogname()
+  # call, instead of using the name set by set_program_name.
+  # Install workaround.
+  AC_DEFINE([ENABLE_ERROR_PRINT_PROGNAME],[1],
+            [Enable the use of error_print_progname to print program name with error messages.
+            See comment to function tar_print_progname in src/tar.c])
+fi
+
 # paxutils modules
 tar_PAXUTILS
 
+# gl_GCC_VERSION_IFELSE([major], [minor], [run-if-found], [run-if-not-found])
+# ------------------------------------------------
+# If $CPP is gcc-MAJOR.MINOR or newer, then run RUN-IF-FOUND.
+# Otherwise, run RUN-IF-NOT-FOUND.
+AC_DEFUN([gl_GCC_VERSION_IFELSE],
+  [AC_PREPROC_IFELSE(
+    [AC_LANG_PROGRAM(
+      [[
+#if ($1) < __GNUC__ || (($1) == __GNUC__ && ($2) <= __GNUC_MINOR__)
+/* ok */
+#else
+# error "your version of gcc is older than $1.$2"
+#endif
+      ]]),
+    ], [$3], [$4])
+  ]
+)
+
 AC_ARG_ENABLE([gcc-warnings],
   [AS_HELP_STRING([--enable-gcc-warnings],
      [turn on many GCC warnings (for developers; best with GNU make)])],
@@ -120,10 +160,9 @@ AC_ARG_ENABLE([gcc-warnings],
      *)      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
+  [gl_gcc_warnings=no
+   if test -d "$srcdir"/.git; then
+     gl_GCC_VERSION_IFELSE([11], [2], [gl_gcc_warnings=yes])
    fi]
 )
 
@@ -140,6 +179,8 @@ if test "$gl_gcc_warnings" = yes; then
   nw="$nw -Winline"                 # It's OK to not inline.
   nw="$nw -Wstrict-overflow"       # It's OK to optimize strictly.
   nw="$nw -Wsuggest-attribute=pure" # Too many warnings for now.
+  nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
+  nw="$nw -Wstack-protector"
 
   gl_MANYWARN_ALL_GCC([ws])
   gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
@@ -148,12 +189,12 @@ if test "$gl_gcc_warnings" = yes; then
   done
   gl_WARN_ADD([-Wno-sign-compare])     # Too many warnings for now
   gl_WARN_ADD([-Wno-type-limits])      # It's OK to optimize based on types.
-  gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
   gl_WARN_ADD([-Wno-format-nonliteral])
 
   gl_WARN_ADD([-fdiagnostics-show-option])
   gl_WARN_ADD([-funit-at-a-time])
 
+
   AC_SUBST([WARN_CFLAGS])
 
   AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
@@ -202,6 +243,7 @@ AC_CHECK_DECLS([time],,, [#include <time.h>])
 
 AC_REPLACE_FUNCS(waitpid)
 
+AC_ARG_VAR([RSH], [Configure absolute path to default remote shell binary])
 AC_CACHE_CHECK(for remote shell, tar_cv_path_RSH,
   [if test -n "$RSH"; then
     tar_cv_path_RSH=$RSH
@@ -237,6 +279,7 @@ TAR_COMPR_PROGRAM(lzip)
 TAR_COMPR_PROGRAM(lzma)
 TAR_COMPR_PROGRAM(lzop)
 TAR_COMPR_PROGRAM(xz)
+TAR_COMPR_PROGRAM(zstd)
 
 AC_MSG_CHECKING(for default archive format)
 
@@ -330,7 +373,7 @@ AC_CHECK_TYPE(iconv_t,:,
 
 # Gettext.
 AM_GNU_GETTEXT([external], [need-formatstring-macros])
-AM_GNU_GETTEXT_VERSION([0.16])
+AM_GNU_GETTEXT_VERSION([0.21])
 
 # Initialize the test suite.
 AC_CONFIG_TESTDIR(tests)
@@ -340,8 +383,8 @@ AM_MISSING_PROG([AUTOM4TE], [autom4te])
 AC_SUBST(BACKUP_LIBEXEC_SCRIPTS)
 AC_SUBST(BACKUP_SBIN_SCRIPTS)
 AC_ARG_ENABLE(backup-scripts,
-             AC_HELP_STRING([--enable-backup-scripts],
-                             [Create and install backup and restore scripts]),
+             AS_HELP_STRING([--enable-backup-scripts],
+                            [Create and install backup and restore scripts]),
               [case $enableval in
               yes) BACKUP_LIBEXEC_SCRIPTS='$(BACKUP_LIBEXEC_SCRIPTS_LIST)'
                     BACKUP_SBIN_SCRIPTS='$(BACKUP_SBIN_SCRIPTS_LIST)'
@@ -355,7 +398,7 @@ else
        BACKUP_SED_COND='/^\#IF_DATE_FORMAT_OK/,/^\#ELSE_DATE_FORMAT_OK/d;/^\#ENDIF_DATE_FORMAT_OK/d'
 fi
 
-AC_OUTPUT([Makefile\
+AC_CONFIG_FILES([Makefile\
            doc/Makefile\
           gnu/Makefile\
            lib/Makefile\
@@ -363,3 +406,4 @@ AC_OUTPUT([Makefile\
            scripts/Makefile\
            rmt/Makefile\
            src/Makefile])
+AC_OUTPUT