compile_et: reduce the dependency chain for bootstrap tools.
Some checks are pending
Cross-build Kernel / ${{ matrix.target_arch }} ${{ matrix.os }} (${{ matrix.compiler }}) (clang-14, /usr/lib/llvm-14/bin, ubuntu-22.04, bmake libarchive-dev clang-14 lld-14, amd64, amd64) (push) Waiting to run
Cross-build Kernel / ${{ matrix.target_arch }} ${{ matrix.os }} (${{ matrix.compiler }}) (clang-14, /usr/lib/llvm-14/bin, ubuntu-22.04, bmake libarchive-dev clang-14 lld-14, arm64, aarch64) (push) Waiting to run
Cross-build Kernel / ${{ matrix.target_arch }} ${{ matrix.os }} (${{ matrix.compiler }}) (clang-18, /opt/homebrew/opt/llvm@18/bin, macos-latest, bmake libarchive llvm@18, amd64, amd64) (push) Waiting to run
Cross-build Kernel / ${{ matrix.target_arch }} ${{ matrix.os }} (${{ matrix.compiler }}) (clang-18, /opt/homebrew/opt/llvm@18/bin, macos-latest, bmake libarchive llvm@18, arm64, aarch64) (push) Waiting to run
Cross-build Kernel / ${{ matrix.target_arch }} ${{ matrix.os }} (${{ matrix.compiler }}) (clang-18, /usr/lib/llvm-18/bin, ubuntu-24.04, bmake libarchive-dev clang-18 lld-18, amd64, amd64) (push) Waiting to run
Cross-build Kernel / ${{ matrix.target_arch }} ${{ matrix.os }} (${{ matrix.compiler }}) (clang-18, /usr/lib/llvm-18/bin, ubuntu-24.04, bmake libarchive-dev clang-18 lld-18, arm64, aarch64) (push) Waiting to run

Fix the build on macOS

The bootstrap tools are statically linked, so our build system
will provide the full dependency chain which pulls in libcrypt.

since recently libcrypt.a is a linker script not supported by macOS
ar(1), given that compile_et does not use at all the function from
libroken which brings the dependency on libcrypt, bypass LIBADD
dependency chain by using the old LDADD/DPADD mechanism, like it is
done for other kerberos related bootstrap tools.
This commit is contained in:
Baptiste Daroussin 2024-11-06 12:16:09 +01:00
parent 3f6a34cafe
commit 4d692868a6

View File

@ -4,7 +4,18 @@ PACKAGE= kerberos
PROG= compile_et
SRCS= compile_et.c parse.y lex.l
LIBADD= roken vers
.if defined(BOOTSTRAPPING)
# compiler_et does not need the full libroken but just a bunch of the file
# in there, the buildsystem we have will trigger the full dependency chain
# when linking statically including libcrypt, which is a ldscript, not
# supported by macOS ar(1).
LIBROKEN_A= ${.OBJDIR:H:H}/kerberos5/lib/libroken/libroken.a
LDADD= ${LIBROKEN_A}
DPADD= ${LIBROKEN_A}
.else
LIBADD= roken
.endif
LIBADD+= vers
CFLAGS+=-I. -I${SRCTOP}/contrib/com_err
WARNS?= 0