3 # Namespace munging inspired by an equivalent hack in NetBSD's tree: add
4 # the "Fssh_" prefix to every symbol in libssh which doesn't already have
5 # it. This prevents collisions between symbols in libssh and symbols in
6 # other libraries or applications which link with libssh, either directly
7 # or indirectly (e.g. through PAM loading pam_ssh).
14 eval "unset $(env | sed -nE 's/^(LC_[A-Z]+)=.*$/\1/p')"
22 # Locate the source directories
25 header=${srcdir}/ssh_namespace.h
26 top_srcdir=${srcdir%/crypto/openssh}
27 libssh_srcdir=${top_srcdir}/secure/lib/libssh
29 if [ ! -d ${srcdir} -o \
31 ! -d ${libssh_srcdir} -o \
32 ! -f ${libssh_srcdir}/Makefile ] ; then
33 error "Where is the libssh Makefile?"
36 ncpu=$(sysctl -n hw.ncpu)
38 make -C${libssh_srcdir} -j$((ncpu + 1)) "$@"
41 # Clear out, recreate and locate the libssh build directory
45 libssh_builddir=$(realpath $(ssh_make -V.OBJDIR))
46 libssh=libprivatessh.a
48 # Clear the existing header
51 * This file was machine-generated. Do not edit manually.
52 * Run crypto/openssh/freebsd-namespace.sh to regenerate.
59 if [ ! -f ${libssh_builddir}/${libssh} ] ; then
60 error "Where is ${libssh}?"
64 nm ${libssh_builddir}/${libssh} | awk '
65 /^[0-9a-z]+ [Tt] [A-Za-z_][0-9A-Za-z_]*$/ && $3 !~ /^Fssh_/ {
66 printf("#define %-39s Fssh_%s\n", $3, $3)
68 ' | unexpand -a | sort -u >>${header}
70 # Clean and rebuild the library
75 nm ${libssh_builddir}/${libssh} | awk '
76 /^[0-9a-z]+ [Tt] [A-Za-z_][0-9A-Za-z_]*$/ && $3 !~ /^Fssh_/ {
77 printf("ERROR: %s was not renamed!\n", $3);