Update make dependency for elf/module/nxflat/posix_spawn/sotest/thttpd examples which make use of mksymtab.sh. This could avoid them built twice in 'make depend' and 'make all' which would result in file truncated build break. Now only build once by 'make all'. Change-Id: I5d8f1ebbf73e3b12d7d2118f1f51b4233d0ed007 Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
47 lines
980 B
Bash
Executable File
47 lines
980 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
usage="Usage: $0 <test-dir-path>"
|
|
|
|
dir=$1
|
|
if [ -z "$dir" ]; then
|
|
echo "ERROR: Missing <test-dir-path>"
|
|
echo ""
|
|
echo $usage
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "$dir" ]; then
|
|
echo "ERROR: Directory $dir does not exist"
|
|
echo ""
|
|
echo $usage
|
|
exit 1
|
|
fi
|
|
|
|
varlist=`find $dir -name "*-thunk.S"| xargs grep -h asciz | cut -f3 | sort | uniq`
|
|
|
|
# Now output the symbol table as a structure in a C source file. All
|
|
# undefined symbols are declared as void* types. If the toolchain does
|
|
# any kind of checking for function vs. data objects, then this could
|
|
# failed
|
|
|
|
echo "#include <nuttx/compiler.h>"
|
|
echo "#include <nuttx/symtab.h>"
|
|
echo ""
|
|
|
|
for var in $varlist; do
|
|
echo "extern void *${var};"
|
|
done
|
|
|
|
echo ""
|
|
echo "const struct symtab_s g_nxflat_exports[] = "
|
|
echo "{"
|
|
|
|
for string in $varlist; do
|
|
var=`echo $string | sed -e "s/\"//g"`
|
|
echo " {$string, $var},"
|
|
done
|
|
|
|
echo "};"
|
|
echo ""
|
|
echo "const int g_nxflat_nexports = sizeof(g_nxflat_exports) / sizeof(struct symtab_s);"
|