lib/libbsd/ndmake.sh
$ cat ndmake.sh
#!/bin/sh -ue
NAME=libbsd
VERSION=0.12.2
RELEASE=1
SOURCE="https://gitlab.freedesktop.org/libbsd/libbsd/-/archive/${VERSION}/libbsd-${VERSION}.tar.gz"
BUILD_OPT="
-DCOND_ABI_ARC4RANDOM=1
-DCOND_ABI_BSD_GETOPT=1
-DCOND_ABI_FREEZERO=1
-DCOND_ABI_PROGNAME=1
-DCOND_ABI_READPASSPHRASE=1
-DDEF_LIBBSD_ABI_ARC4RANDOM=1
-DDEF_LIBBSD_ABI_BSD_GETOPT=1
-DDEF_LIBBSD_ABI_FREEZERO=1
-DDEF_LIBBSD_ABI_PROGNAME=1
-DDEF_LIBBSD_ABI_READPASSPHRASE=1
-DUNDEF_HAVE___REGISTER_ATFORK=1
-DEXTRA_LDLIBS=-pthread
"
build() {
demiurge . || die "demiurge failed"
msg "fixing demiurge AS_TR_CPP output..."
: > .demiurge.tmp || die "failed to create .demiurge.tmp"
while IFS= read -r line; do
case "$line" in
COND_AS_TR_CPP*)
key=$(printf '%s\n' "$line" | sed -n 's/^COND_AS_TR_CPP(\[\([A-Za-z0-9_][A-Za-z0-9_]*\)\])=.*/\1/p') || die "failed to parse condition key"
[ -n "$key" ] || { printf '%s\n' "$line" >> .demiurge.tmp || die "failed to write .demiurge.tmp"; continue; }
val=${line#*=}
key_upper=$(printf '%s' "$key" | tr '[:lower:]' '[:upper:]') || die "failed to uppercase key"
printf 'COND_%s=%s\n' "$key_upper" "$val" >> .demiurge.tmp || die "failed to write .demiurge.tmp"
;;
DEF_AS_TR_CPP*)
key=$(printf '%s\n' "$line" | sed -n 's/^DEF_AS_TR_CPP(\[\([A-Za-z0-9_][A-Za-z0-9_]*\)\])=.*/\1/p') || die "failed to parse define key"
[ -n "$key" ] || { printf '%s\n' "$line" >> .demiurge.tmp || die "failed to write .demiurge.tmp"; continue; }
val=${line#*=}
key_upper=$(printf '%s' "$key" | tr '[:lower:]' '[:upper:]') || die "failed to uppercase key"
printf 'DEF_%s=%s\n' "$key_upper" "$val" >> .demiurge.tmp || die "failed to write .demiurge.tmp"
;;
*)
printf '%s\n' "$line" >> .demiurge.tmp || die "failed to write .demiurge.tmp"
;;
esac
done < .demiurge || die "failed to read .demiurge"
mv .demiurge.tmp .demiurge || die "failed to replace .demiurge"
[ ! -f .satan ] && echo "LDFLAGS=${LDFLAGS}" > .satan
satan gen ${BUILD_OPT} PREFIX="$PREFIX" DESTDIR="$PKG" . || die "satan gen failed"
has_cmd samu || die "samu not found"
samu || die "samu build failed"
DESTDIR="$PKG" samu install || die "samu install failed"
}
postbuild() {
msg "installing libbsd pkg-config file..."
install -d "$PKG/$PREFIX/lib/pkgconfig" "$PKG/$PREFIX/include/bsd" || die "failed to create install dirs"
install -m 644 include/bsd/readpassphrase.h "$PKG/$PREFIX/include/bsd/readpassphrase.h" || die "failed to install readpassphrase.h"
cat > "$PKG/$PREFIX/lib/pkgconfig/libbsd.pc" <<-EOF
prefix=$PREFIX
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include
Name: libbsd
Description: Utility functions from BSD systems
Version: $VERSION
URL: https://libbsd.freedesktop.org/
Libs: -L\${libdir} -lbsd
Libs.private: -pthread -lmd
Cflags: -I\${includedir}
EOF
[ -f "$PKG/$PREFIX/lib/pkgconfig/libbsd.pc" ] || die "failed to write libbsd.pc"
cat > "$PKG/$PREFIX/lib/pkgconfig/libbsd-overlay.pc" <<-EOF
prefix=$PREFIX
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include
Name: libbsd
Description: Utility functions from BSD systems (overlay)
Version: $VERSION
URL: https://libbsd.freedesktop.org/
Libs: -L\${libdir} -lbsd
Libs.private: -pthread -lmd
# We use -isystem instead of -I due the overlay via #include_next usage.
Cflags: -isystem \${includedir}/bsd -DLIBBSD_OVERLAY
EOF
[ -f "$PKG/$PREFIX/lib/pkgconfig/libbsd-overlay.pc" ] || die "failed to write libbsd-overlay.pc"
}
. ${0%/*}/../../libsh/libdmake.sh
