diff --git a/Makefile.am b/Makefile.am index 3955445144d89f5d56eaed9c3e9c149dead5f27d..d8580b7b363dbdb125d8d6bdfcbfe9e12ca4e089 100644 --- a/Makefile.am +++ b/Makefile.am @@ -73,7 +73,7 @@ include disabled.mk # explicitly depend on the generators and .excluded and .shared metafiles # depend on the .dlopen file IFF it exists shim/lib%.so.c: generate-stublib.sh print-libstubs capsule-shim.h shim/lib%.so.c.* - $(GENSTUB)$(top_srcdir)/$< $$(basename $@ .c) $@.excluded $@.shared $@ + $(GENSTUB)$(top_srcdir)/$< $$(basename $@ .c) $@.excluded $@.shared $@ "$(lib$(*)_la_LDFLAGS)"; debug: @echo srcs : $(shim_srcs) diff --git a/generate-stublib.sh b/generate-stublib.sh index 5d542138cb07dc11cc7db0cab6cf0ece77944170..d0467fbe533ab3c405ab77436b7921c0cc5429e7 100755 --- a/generate-stublib.sh +++ b/generate-stublib.sh @@ -20,6 +20,18 @@ set -u set -e +major_version=0; + +parse_ldflags () +{ + while [ $# -ge 2 ] && [ "$1" != -version-number ]; do shift; done; + + if [ $# -ge 2 ] && [ "$1" = -version-number ] && [ -n "$2" ]; + then + major_version=${2%%:*}; + fi +} + declare -A NODE; top=$(dirname $0); top=${top:-.}; @@ -28,9 +40,16 @@ proxied_dso=$1; shift; proxy_excluded=$1; shift; proxy_extra=$1; shift; proxy_src=$1; shift; +ldflags=$1; shift; + +parse_ldflags $ldflags; + +proxied_dso=${proxied_dso%.so*}.so.${major_version}; + symbol_file=${proxy_src%.c}.symbols; map_file=${proxy_src%.c}.map; dlopen_file=${proxy_src}.dlopen; + echo -n > $symbol_file; echo -n > $map_file;