summaryrefslogtreecommitdiff
path: root/other/analysis/gen-file.sh
diff options
context:
space:
mode:
Diffstat (limited to 'other/analysis/gen-file.sh')
-rw-r--r--other/analysis/gen-file.sh35
1 files changed, 21 insertions, 14 deletions
diff --git a/other/analysis/gen-file.sh b/other/analysis/gen-file.sh
index 019bd8f9..ad8df3b8 100644
--- a/other/analysis/gen-file.sh
+++ b/other/analysis/gen-file.sh
@@ -17,20 +17,20 @@ put() {
17 if [ "$SKIP_LINES" = "" ]; then 17 if [ "$SKIP_LINES" = "" ]; then
18 echo "#line 1 \"$1\"" >> amalgamation.cc 18 echo "#line 1 \"$1\"" >> amalgamation.cc
19 fi 19 fi
20 cat $1 >> amalgamation.cc 20 cat "$1" >> amalgamation.cc
21} 21}
22 22
23putmain() { 23putmain() {
24 echo "namespace $(echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g') {" >> amalgamation.cc 24 echo "namespace $(echo "$1" | sed -e 's/[^a-zA-Z0-9_]/_/g') {" >> amalgamation.cc
25 if [ "$SKIP_LINES" = "" ]; then 25 if [ "$SKIP_LINES" = "" ]; then
26 echo "#line 1 \"$1\"" >> amalgamation.cc 26 echo "#line 1 \"$1\"" >> amalgamation.cc
27 fi 27 fi
28 sed -e 's/^int main(/static &/' $1 >> amalgamation.cc 28 sed -e 's/^int main(/static &/' "$1" >> amalgamation.cc
29 echo "} // namespace $(echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g')" >> amalgamation.cc 29 echo "} // namespace $(echo "$1" | sed -e 's/[^a-zA-Z0-9_]/_/g')" >> amalgamation.cc
30} 30}
31 31
32callmain() { 32callmain() {
33 echo " call($(echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g')::main, argc, argv);" >> amalgamation.cc 33 echo " call($(echo "$1" | sed -e 's/[^a-zA-Z0-9_]/_/g')::main, argc, argv);" >> amalgamation.cc
34} 34}
35 35
36:> amalgamation.cc 36:> amalgamation.cc
@@ -53,25 +53,32 @@ FIND_QUERY="$FIND_QUERY -and -not -name av_test.c"
53FIND_QUERY="$FIND_QUERY -and -not -name dht_test.c" 53FIND_QUERY="$FIND_QUERY -and -not -name dht_test.c"
54FIND_QUERY="$FIND_QUERY -and -not -name version_test.c" 54FIND_QUERY="$FIND_QUERY -and -not -name version_test.c"
55 55
56for i in $(eval $FIND_QUERY); do 56(for i in $(eval "$FIND_QUERY"); do
57 if ! grep -q '^int main(' $i; then 57 grep -o '#include <[^>]*>' "$i" \
58 put $i 58 | grep -E -v '<win|<ws|<iphlp|<libc|<mach/|<crypto_|<randombytes|<u.h>|<sys/filio|<linux'
59done) | sort -u >> amalgamation.cc
60
61echo 'namespace {' >> amalgamation.cc
62for i in $(eval "$FIND_QUERY"); do
63 if ! grep -q '^int main(' "$i"; then
64 put "$i"
59 fi 65 fi
60done 66done
61 67
62for i in $(eval $FIND_QUERY); do 68for i in $(eval "$FIND_QUERY"); do
63 if grep -q '^int main(' $i; then 69 if grep -q '^int main(' "$i"; then
64 putmain $i 70 putmain "$i"
65 fi 71 fi
66done 72done
67 73
68echo "static void call(int m(), int argc, char **argv) { m(); }" >> amalgamation.cc 74echo "static void call(int m(), int argc, char **argv) { m(); }" >> amalgamation.cc
69echo "static void call(int m(int, char **), int argc, char **argv) { m(argc, argv); }" >> amalgamation.cc 75echo "static void call(int m(int, char **), int argc, char **argv) { m(argc, argv); }" >> amalgamation.cc
76echo '} // namespace' >> amalgamation.cc
70 77
71echo "int main(int argc, char **argv) {" >> amalgamation.cc 78echo "int main(int argc, char **argv) {" >> amalgamation.cc
72for i in $(eval $FIND_QUERY); do 79for i in $(eval "$FIND_QUERY"); do
73 if grep -q '^int main(' $i; then 80 if grep -q '^int main(' "$i"; then
74 callmain $i 81 callmain "$i"
75 fi 82 fi
76done 83done
77echo " return 0;" >> amalgamation.cc 84echo " return 0;" >> amalgamation.cc