diff --git a/src/gen-lock-obj.sh b/src/gen-lock-obj.sh new file mode 100755 index 0000000..13858cf --- /dev/null +++ b/src/gen-lock-obj.sh @@ -0,0 +1,112 @@ +#! /bin/sh +# +# gen-lock-obj.sh - Build tool to construct the lock object. +# +# Copyright (C) 2020 g10 Code GmbH +# +# This file is part of libgpg-error. +# +# libgpg-error is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation; either version 2.1 of +# the License, or (at your option) any later version. +# +# libgpg-error 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, see . +# + +# +# Following variables should be defined to invoke this script +# +# CC +# OBJDUMP +# AWK +# ac_ext +# ac_object +# host +# LOCK_ABI_VERSION +# +# An example: +# +# LOCK_ABI_VERSION=1 host=x86_64-pc-linux-gnu host_alias=x86_64-linux-gnu \ +# CC=$host_alias-gcc OBJDUMP=$host_alias-objdump ac_ext=c ac_objext=o \ +# AWK=gawk ./gen-lock-obj.sh +# + +AWK_VERSION_OUTPUT=$($AWK 'BEGIN { print PROCINFO["version"] }') +if test -n "$AWK_VERSION_OUTPUT"; then + # It's GNU awk, which supports PROCINFO. + AWK_OPTION=--non-decimal-data +fi + +cat <<'EOF' >conftest.$ac_ext +#include +pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; +EOF + +if $CC -c conftest.$ac_ext; then : + ac_mtx_size=$($OBJDUMP -j .bss -t conftest.$ac_objext \ + | $AWK $AWK_OPTION ' +/mtx$/ { mtx_size = int("0x" $5) } +END { print mtx_size }') +else + echo "Can't determine mutex size" + exit 1 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +cat <