git: 62f3971e6c06 - stable/14 - libarchive: Clean up the build configuration

From: Dag-Erling Smørgrav <des_at_FreeBSD.org>
Date: Mon, 08 Jun 2026 23:01:09 UTC
The branch stable/14 has been updated by des:

URL: https://cgit.FreeBSD.org/src/commit/?id=62f3971e6c062d67660e4236e6106cc51e6492f0

commit 62f3971e6c062d67660e4236e6106cc51e6492f0
Author:     Dag-Erling Smørgrav <des@FreeBSD.org>
AuthorDate: 2026-06-04 13:12:23 +0000
Commit:     Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2026-06-08 23:00:52 +0000

    libarchive: Clean up the build configuration
    
    * Move settings duplicated in libarchive, bsdcat, bsdcpio, bsdtar, and
      bsdunzip into libarchive's Makefile.inc.
    
    * Drop some CFLAGS that merely duplicated some of the contents of our
      platform configuration header.
    
    MFC after:      1 week
    Reviewed by:    mm
    Differential Revision:  https://reviews.freebsd.org/D57307
    
    (cherry picked from commit eb3a0a74a069d0f294e1596504676459282bb308)
    
    libarchive: Fix typo in sed command
    
    MFC after:      1 week
    Fixes:          eb3a0a74a069 ("libarchive: Clean up the build configuration")
    Reported by:    Shawn Webb <shawn.webb@hardenedbsd.org>
    
    (cherry picked from commit ba0d22eacd6008e9f3b7395b41056de2423aef3d)
---
 lib/libarchive/Makefile       |  7 ++-----
 lib/libarchive/Makefile.inc   | 16 +++++++++++-----
 lib/libarchive/tests/Makefile |  8 ++++----
 usr.bin/bsdcat/Makefile       | 17 ++++++-----------
 usr.bin/bsdcat/tests/Makefile | 14 ++++++--------
 usr.bin/cpio/Makefile         | 18 +++++-------------
 usr.bin/cpio/tests/Makefile   | 14 ++++++--------
 usr.bin/tar/Makefile          | 13 +++----------
 usr.bin/tar/tests/Makefile    | 12 ++++++------
 usr.bin/unzip/Makefile        | 14 ++++----------
 usr.bin/unzip/tests/Makefile  | 12 ++++++------
 11 files changed, 59 insertions(+), 86 deletions(-)

diff --git a/lib/libarchive/Makefile b/lib/libarchive/Makefile
index fed73c388318..f9c5f758382c 100644
--- a/lib/libarchive/Makefile
+++ b/lib/libarchive/Makefile
@@ -1,7 +1,8 @@
 .include <src.opts.mk>
 
+.include "Makefile.inc"
+
 PACKAGE=lib${LIB}
-_LIBARCHIVEDIR=	${SRCTOP}/contrib/libarchive
 
 LIB=	archive
 
@@ -9,10 +10,6 @@ LIB=	archive
 # It has no real relation to the libarchive version number.
 SHLIB_MAJOR= 7
 
-CFLAGS+=	-I${.OBJDIR}
-CFLAGS+=	-I${SRCTOP}/sys/contrib/zstd/lib
-.include "Makefile.inc"
-
 .if ${MACHINE_ARCH:Marm*} != "" || ${MACHINE_ARCH:Mpowerpc*} != ""
 NO_WCAST_ALIGN=	yes
 .if ${MACHINE_ARCH:M*64*} == ""
diff --git a/lib/libarchive/Makefile.inc b/lib/libarchive/Makefile.inc
index 755a39ec01e8..514ce205d560 100644
--- a/lib/libarchive/Makefile.inc
+++ b/lib/libarchive/Makefile.inc
@@ -2,11 +2,17 @@
 # them in sync we can get run-time crashes while running tests due to mismatches
 # between structures such as archive_md5_ctx, etc.
 
-LIBADD=	z bz2 lzma bsdxml zstd
-CFLAGS+=	-DHAVE_BZLIB_H=1 -DHAVE_LIBLZMA=1 -DHAVE_LZMA_H=1 \
-		-DHAVE_ZSTD_H=1 -DHAVE_LIBZSTD=1 -DHAVE_ZSTD_compressStream=1 \
-		-DHAVE_SYSCONF=1
-CFLAGS+=	-DPLATFORM_CONFIG_H=\"${.CURDIR}/config_freebsd.h\"
+_LIBARCHIVEDIR=	${SRCTOP}/contrib/libarchive
+LIBARCHIVE_VERSION_ONLY_STRING!= \
+	sed -n '/define.*ARCHIVE_VERSION_ONLY_STRING/{s,[^0-9.],,gp;q;}' \
+	    ${_LIBARCHIVEDIR}/libarchive/archive.h
+
+LIBADD+=	z bz2 lzma bsdxml zstd
+CFLAGS+=	-DPLATFORM_CONFIG_H=\"config_freebsd.h\"
+CFLAGS+=	-I${SRCTOP}/lib/libarchive
+CFLAGS+=	-I${_LIBARCHIVEDIR}/libarchive
+CFLAGS+=	-I${_LIBARCHIVEDIR}/libarchive_fe
+CFLAGS+=	-I${SRCTOP}/sys/contrib/zstd/lib
 
 .if ${MK_OPENSSL} != "no"
 CFLAGS+=	-DWITH_OPENSSL
diff --git a/lib/libarchive/tests/Makefile b/lib/libarchive/tests/Makefile
index 3a03725054f4..3210938bc117 100644
--- a/lib/libarchive/tests/Makefile
+++ b/lib/libarchive/tests/Makefile
@@ -1,11 +1,11 @@
 .include <src.opts.mk>
 
+.include "${SRCTOP}/lib/libarchive/Makefile.inc"
+
 PACKAGE=	tests
 
 WARNS?=		3
 
-_LIBARCHIVEDIR=	${SRCTOP}/contrib/libarchive
-
 ATF_TESTS_SH+=	functional_test
 
 TEST_METADATA.functional_test+=	timeout="600"
@@ -14,8 +14,8 @@ BINDIR=	${TESTSDIR}
 
 PROGS+=	libarchive_test
 
-CFLAGS+= -I${.CURDIR} -I${.CURDIR:H} -I${.OBJDIR}
-CFLAGS+= -I${_LIBARCHIVEDIR}/libarchive -I${_LIBARCHIVEDIR}/libarchive/test
+CFLAGS+= -I${.OBJDIR}
+CFLAGS+= -I${_LIBARCHIVEDIR}/libarchive/test
 CFLAGS+= -I${_LIBARCHIVEDIR}/test_utils
 CFLAGS+= -I${SRCTOP}/sys/contrib/zstd/lib
 
diff --git a/usr.bin/bsdcat/Makefile b/usr.bin/bsdcat/Makefile
index 0377a4c48f5f..ce10aefd4c58 100644
--- a/usr.bin/bsdcat/Makefile
+++ b/usr.bin/bsdcat/Makefile
@@ -1,12 +1,9 @@
 
 .include <src.opts.mk>
 
-_LIBARCHIVEDIR=	${SRCTOP}/contrib/libarchive
-_LIBARCHIVECONFDIR=	${SRCTOP}/lib/libarchive
+.include "${SRCTOP}/lib/libarchive/Makefile.inc"
 
 PROG=	bsdcat
-BSDCAT_VERSION_STRING!=	sed -n '/define.*ARCHIVE_VERSION_ONLY_STRING/{s,[^0-9.],,gp;q;}' \
-			${_LIBARCHIVEDIR}/libarchive/archive.h
 
 .PATH:	${_LIBARCHIVEDIR}/cat
 SRCS=	bsdcat.c cmdline.c
@@ -14,15 +11,13 @@ SRCS=	bsdcat.c cmdline.c
 .PATH:	${_LIBARCHIVEDIR}/libarchive_fe
 SRCS+=	lafe_err.c
 
-CFLAGS+= -DBSDCAT_VERSION_STRING=\"${BSDCAT_VERSION_STRING}\"
-CFLAGS+= -DPLATFORM_CONFIG_H=\"${_LIBARCHIVECONFDIR}/config_freebsd.h\"
-CFLAGS+= -I${_LIBARCHIVEDIR}/cat -I${_LIBARCHIVEDIR}/libarchive_fe
-
 LIBADD=	archive
 
-.if ${MK_ICONV} != "no"
-CFLAGS+=	-DHAVE_ICONV=1 -DHAVE_ICONV_H=1 -DICONV_CONST=const
-.endif
+CFLAGS+= -DBSDCAT_VERSION_STRING=\"${LIBARCHIVE_VERSION_ONLY_STRING}\"
+CFLAGS+= -I${_LIBARCHIVEDIR}/cat
+
+#SYMLINKS=bsdcat ${BINDIR}/cat
+#MLINKS= bsdcat.1 cat.1
 
 HAS_TESTS=
 SUBDIR.${MK_TESTS}+= tests
diff --git a/usr.bin/bsdcat/tests/Makefile b/usr.bin/bsdcat/tests/Makefile
index 02382137aa16..f75ebeac2aea 100644
--- a/usr.bin/bsdcat/tests/Makefile
+++ b/usr.bin/bsdcat/tests/Makefile
@@ -1,7 +1,8 @@
+.include <src.opts.mk>
 
-PACKAGE=	tests
+.include "${SRCTOP}/lib/libarchive/Makefile.inc"
 
-_LIBARCHIVEDIR=	${SRCTOP}/contrib/libarchive
+PACKAGE=	tests
 
 ATF_TESTS_SH+=	functional_test
 
@@ -9,13 +10,10 @@ BINDIR=		${TESTSDIR}
 
 PROGS+=		bsdcat_test
 
-CFLAGS+=	-DPLATFORM_CONFIG_H=\"${SRCTOP}/lib/libarchive/config_freebsd.h\"
-CFLAGS+=	-I${SRCTOP}/lib/libarchive -I${.OBJDIR}
-
 CFLAGS+=	-I${.OBJDIR}
-CFLAGS+=	-I${_LIBARCHIVEDIR}/cat -I${_LIBARCHIVEDIR}/cat/test
-CFLAGS+=	-I${_LIBARCHIVEDIR}/libarchive
-CFLAGS+=	-I${_LIBARCHIVEDIR}/libarchive_fe -I${_LIBARCHIVEDIR}/test_utils
+CFLAGS+=	-I${_LIBARCHIVEDIR}/cat
+CFLAGS+=	-I${_LIBARCHIVEDIR}/cat/test
+CFLAGS+=	-I${_LIBARCHIVEDIR}/test_utils
 
 CFLAGS.test_utils.c+=	-Wno-cast-align
 
diff --git a/usr.bin/cpio/Makefile b/usr.bin/cpio/Makefile
index a52a12ea361b..594bd86fdbd5 100644
--- a/usr.bin/cpio/Makefile
+++ b/usr.bin/cpio/Makefile
@@ -1,12 +1,9 @@
 
 .include <src.opts.mk>
 
-_LIBARCHIVEDIR=	${SRCTOP}/contrib/libarchive
-_LIBARCHIVECONFDIR=	${SRCTOP}/lib/libarchive
+.include "${SRCTOP}/lib/libarchive/Makefile.inc"
 
 PROG=	bsdcpio
-BSDCPIO_VERSION_STRING!=	sed -n '/define.*ARCHIVE_VERSION_ONLY_STRING/{s,[^0-9.],,gp;q;}' \
-			${_LIBARCHIVEDIR}/libarchive/archive.h
 
 .PATH:	${_LIBARCHIVEDIR}/cpio
 SRCS=	cpio.c cmdline.c
@@ -14,18 +11,13 @@ SRCS=	cpio.c cmdline.c
 .PATH:	${_LIBARCHIVEDIR}/libarchive_fe
 SRCS+=	lafe_err.c line_reader.c passphrase.c
 
-CFLAGS+= -DBSDCPIO_VERSION_STRING=\"${BSDCPIO_VERSION_STRING}\"
-CFLAGS+= -DPLATFORM_CONFIG_H=\"${_LIBARCHIVECONFDIR}/config_freebsd.h\"
-CFLAGS+= -I${_LIBARCHIVEDIR}/cpio -I${_LIBARCHIVEDIR}/libarchive_fe
-
 LIBADD=	archive
 
-.if ${MK_ICONV} != "no"
-CFLAGS+=	-DHAVE_ICONV=1 -DHAVE_ICONV_H=1 -DICONV_CONST=const
-.endif
+CFLAGS+=	-DBSDCPIO_VERSION_STRING=\"${LIBARCHIVE_VERSION_ONLY_STRING}\"
+CFLAGS+=	-I${_LIBARCHIVEDIR}/tar
 
-SYMLINKS=bsdcpio ${BINDIR}/cpio
-MLINKS= bsdcpio.1 cpio.1
+SYMLINKS=	bsdcpio ${BINDIR}/cpio
+MLINKS=	bsdcpio.1 cpio.1
 
 HAS_TESTS=
 SUBDIR.${MK_TESTS}+= tests
diff --git a/usr.bin/cpio/tests/Makefile b/usr.bin/cpio/tests/Makefile
index e06f7fc34de3..0db109c1e379 100644
--- a/usr.bin/cpio/tests/Makefile
+++ b/usr.bin/cpio/tests/Makefile
@@ -1,7 +1,8 @@
+.include <src.opts.mk>
 
-PACKAGE=	tests
+.include "${SRCTOP}/lib/libarchive/Makefile.inc"
 
-_LIBARCHIVEDIR=	${SRCTOP}/contrib/libarchive
+PACKAGE=	tests
 
 ATF_TESTS_SH+=	functional_test
 
@@ -9,13 +10,10 @@ BINDIR=		${TESTSDIR}
 
 PROGS+=		bsdcpio_test
 
-CFLAGS+=	-DPLATFORM_CONFIG_H=\"${SRCTOP}/lib/libarchive/config_freebsd.h\"
-CFLAGS+=	-I${SRCTOP}/lib/libarchive -I${.OBJDIR}
-
 CFLAGS+=	-I${.OBJDIR}
-CFLAGS+=	-I${_LIBARCHIVEDIR}/cpio -I${_LIBARCHIVEDIR}/cpio/test
-CFLAGS+=	-I${_LIBARCHIVEDIR}/libarchive
-CFLAGS+=	-I${_LIBARCHIVEDIR}/libarchive_fe -I${_LIBARCHIVEDIR}/test_utils
+CFLAGS+=	-I${_LIBARCHIVEDIR}/cpio
+CFLAGS+=	-I${_LIBARCHIVEDIR}/cpio/test
+CFLAGS+=	-I${_LIBARCHIVEDIR}/test_utils
 
 # Uncomment to link against dmalloc
 #LDADD+= -L/usr/local/lib -ldmalloc
diff --git a/usr.bin/tar/Makefile b/usr.bin/tar/Makefile
index 8b0d3e4a6cf0..0452e084bee2 100644
--- a/usr.bin/tar/Makefile
+++ b/usr.bin/tar/Makefile
@@ -1,11 +1,9 @@
 .include <src.opts.mk>
 
-_LIBARCHIVEDIR=	${SRCTOP}/contrib/libarchive
+.include "${SRCTOP}/lib/libarchive/Makefile.inc"
 
 PACKAGE=	runtime
 PROG=	bsdtar
-BSDTAR_VERSION_STRING!=	sed -n '/define.*ARCHIVE_VERSION_ONLY_STRING/{s,[^0-9.],,gp;q;}' \
-			${_LIBARCHIVEDIR}/libarchive/archive.h
 
 .PATH: ${_LIBARCHIVEDIR}/tar
 SRCS=	bsdtar.c	\
@@ -23,14 +21,9 @@ SRCS+=	lafe_err.c	\
 
 LIBADD=	archive
 
-.if ${MK_ICONV} != "no"
-CFLAGS+=	-DHAVE_ICONV=1 -DHAVE_ICONV_H=1 -DICONV_CONST=const
-.endif
+CFLAGS+=	-DBSDTAR_VERSION_STRING=\"${LIBARCHIVE_VERSION_ONLY_STRING}\"
+CFLAGS+=	-I${_LIBARCHIVEDIR}/tar
 
-CFLAGS+=	-DBSDTAR_VERSION_STRING=\"${BSDTAR_VERSION_STRING}\"
-CFLAGS+=	-DPLATFORM_CONFIG_H=\"${SRCTOP}/lib/libarchive/config_freebsd.h\"
-CFLAGS+=	-I${_LIBARCHIVEDIR}/tar -I${_LIBARCHIVEDIR}/libarchive
-CFLAGS+=	-I${_LIBARCHIVEDIR}/libarchive_fe
 SYMLINKS=	bsdtar ${BINDIR}/tar
 MLINKS=	bsdtar.1 tar.1
 
diff --git a/usr.bin/tar/tests/Makefile b/usr.bin/tar/tests/Makefile
index fe3dd3e8e6ed..45db3abf7bc2 100644
--- a/usr.bin/tar/tests/Makefile
+++ b/usr.bin/tar/tests/Makefile
@@ -1,18 +1,18 @@
+.include <src.opts.mk>
+
+.include "${SRCTOP}/lib/libarchive/Makefile.inc"
 
 PACKAGE=	tests
 
 WARNS?=		3
 
-_LIBARCHIVEDIR=	${SRCTOP}/contrib/libarchive
-
 ATF_TESTS_SH+=	functional_test
 
 BINDIR=		${TESTSDIR}
 
-CFLAGS+=	-DPLATFORM_CONFIG_H=\"${SRCTOP}/lib/libarchive/config_freebsd.h\"
-CFLAGS+=	-I${SRCTOP}/lib/libarchive -I${.OBJDIR}
-CFLAGS+=	-I${_LIBARCHIVEDIR}/libarchive
-CFLAGS+=	-I${_LIBARCHIVEDIR}/tar -I${_LIBARCHIVEDIR}/tar/test
+CFLAGS+=	-I${.OBJDIR}
+CFLAGS+=	-I${_LIBARCHIVEDIR}/tar
+CFLAGS+=	-I${_LIBARCHIVEDIR}/tar/test
 CFLAGS+=	-I${_LIBARCHIVEDIR}/test_utils
 
 CFLAGS.test_utils.c+=	-Wno-cast-align
diff --git a/usr.bin/unzip/Makefile b/usr.bin/unzip/Makefile
index e359ca162e73..bf00df8f1eee 100644
--- a/usr.bin/unzip/Makefile
+++ b/usr.bin/unzip/Makefile
@@ -1,26 +1,21 @@
 
 .include <src.opts.mk>
 
-_LIBARCHIVEDIR=	${SRCTOP}/contrib/libarchive
-_LIBARCHIVECONFDIR=	${SRCTOP}/lib/libarchive
+.include "${SRCTOP}/lib/libarchive/Makefile.inc"
 
 PROG=	bsdunzip
 
-BSDUNZIP_VERSION_STRING!= sed -n '/define.*ARCHIVE_VERSION_ONLY_STRING/{s,[^0-9.],,gp;q;}' \
-			${_LIBARCHIVEDIR}/libarchive/archive.h
-
 .PATH:	${_LIBARCHIVEDIR}/unzip
 SRCS=	bsdunzip.c
 
 .PATH:	${_LIBARCHIVEDIR}/libarchive_fe
 SRCS+=	cmdline.c lafe_err.c lafe_getline.c passphrase.c
 
-CFLAGS+= -DBSDUNZIP_VERSION_STRING=\"${BSDUNZIP_VERSION_STRING}\"
-CFLAGS+= -DPLATFORM_CONFIG_H=\"${_LIBARCHIVECONFDIR}/config_freebsd.h\"
-CFLAGS+= -I${_LIBARCHIVEDIR}/unzip -I${_LIBARCHIVEDIR}/libarchive_fe
-
 LIBADD=	archive
 
+CFLAGS+= -DBSDUNZIP_VERSION_STRING=\"${LIBARCHIVE_VERSION_ONLY_STRING}\"
+CFLAGS+= -I${_LIBARCHIVEDIR}/unzip
+
 SYMLINKS=bsdunzip ${BINDIR}/unzip
 MLINKS= bsdunzip.1 unzip.1
 
@@ -28,4 +23,3 @@ HAS_TESTS=
 SUBDIR.${MK_TESTS}+= tests
 
 .include <bsd.prog.mk>
-# DO NOT DELETE
diff --git a/usr.bin/unzip/tests/Makefile b/usr.bin/unzip/tests/Makefile
index fd5254a55912..0e55c49d07b5 100644
--- a/usr.bin/unzip/tests/Makefile
+++ b/usr.bin/unzip/tests/Makefile
@@ -1,3 +1,6 @@
+.include <src.opts.mk>
+
+.include "${SRCTOP}/lib/libarchive/Makefile.inc"
 
 PACKAGE=	tests
 
@@ -9,13 +12,10 @@ BINDIR=		${TESTSDIR}
 
 PROGS+=		bsdunzip_test
 
-CFLAGS+=	-DPLATFORM_CONFIG_H=\"${SRCTOP}/lib/libarchive/config_freebsd.h\"
-CFLAGS+=	-I${SRCTOP}/lib/libarchive -I${.OBJDIR}
-
 CFLAGS+=	-I${.OBJDIR}
-CFLAGS+=	-I${_LIBARCHIVEDIR}/unzip -I${_LIBARCHIVEDIR}/unzip/test
-CFLAGS+=	-I${_LIBARCHIVEDIR}/libarchive
-CFLAGS+=	-I${_LIBARCHIVEDIR}/libarchive_fe -I${_LIBARCHIVEDIR}/test_utils
+CFLAGS+=	-I${_LIBARCHIVEDIR}/unzip
+CFLAGS+=	-I${_LIBARCHIVEDIR}/unzip/test
+CFLAGS+=	-I${_LIBARCHIVEDIR}/test_utils
 
 # Uncomment to link against dmalloc
 #LDADD+= -L/usr/local/lib -ldmalloc