Skip to content

Commit b55dd84

Browse files
committed
Add a script to ease finding symbols for static linking
Only for MSYS2 and MINGW
1 parent 700a12c commit b55dd84

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

build-scripts/.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
sym-db
2+
sym-locatedb

build-scripts/sym

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Find a symbol in all MSYS2 system object libraries
2+
# Print files for find_package() or pkg_check_modules()
3+
4+
[[ ! -f sym-locatedb ]] && {
5+
echo "Creating filesystem database ..."
6+
updatedb --localpaths='/usr/lib /mingw64/lib' \
7+
--output=sym-locatedb
8+
}
9+
[[ ! -f sym-db ]] && {
10+
echo "Creating symbols database ..."
11+
locate --database=sym-locatedb \*.a | \
12+
parallel -j 8 nm --print-file-name --defined-only >>sym-db
13+
}
14+
echo "Searching symbol ..."
15+
definitions=$(grep $1$ sym-db)
16+
found=$(cut --delimiter=\ --fields=3 <<<"$definitions" | sort --unique)
17+
echo "Found symbols:"
18+
echo "$found"
19+
files=$(cygpath --unix -f - <<<"$definitions")
20+
files=$(cut --delimiter=: --fields=1 <<<"$files" |sort --unique)
21+
echo "Files containing symbols:"
22+
echo "$files"
23+
packages=$(pacman --query --owns --quiet $files |sort --unique)
24+
echo "Packages containing files:"
25+
echo "$packages"
26+
pfiles=$(pacman --query --list --quiet $packages)
27+
echo "Useful files in packages:"
28+
echo "$pfiles" |egrep 'pkgconfig|\.cmake'

0 commit comments

Comments
 (0)