From ba137dd89827c4aaf5b7097c3794025cc0d3c1be Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 13 May 2020 11:52:59 +0100 Subject: [PATCH] make.sh: Add command to find dependencies Signed-off-by: Michael Tremer Signed-off-by: Arne Fitzenreiter --- make.sh | 6 +++++- tools/find-dependencies | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100755 tools/find-dependencies diff --git a/make.sh b/make.sh index 78c4edc909..4acce807fe 100755 --- a/make.sh +++ b/make.sh @@ -1993,8 +1993,12 @@ lang) update-contributors) update_contributors ;; +find-dependencies) + shift + exec "${BASEDIR}/tools/find-dependencies" "${BASEDIR}/build" "$@" + ;; *) - echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain|update-contributors}" + echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain|update-contributors|find-dependencies}" cat doc/make.sh-usage ;; esac diff --git a/tools/find-dependencies b/tools/find-dependencies new file mode 100755 index 0000000000..25e6cddead --- /dev/null +++ b/tools/find-dependencies @@ -0,0 +1,32 @@ +#!/bin/bash + +main() { + if [ $# -lt 2 ]; then + echo "${0}: Usage: PATH LIBRARY ..." + return 2 + fi + + local root="${1}" + shift + + if [ ! -d "${root}" ]; then + echo "${0}: ${root}: No such file or directory" + return 1 + fi + + local libraries="$@" + + # Build the regex filter + local filter="(${libraries[*]// /|})" + + local file + for file in $(find "${root}" -xdev -type f -executable); do + if readelf -d "${file}" 2>/dev/null | grep -qE "NEEDED.*\[${filter}\]$"; then + echo "${file}" + fi + done + + return 0 +} + +main "$@" || exit $? -- 2.39.2