diff options
Diffstat (limited to 'other/analysis/gen-file.sh')
-rw-r--r-- | other/analysis/gen-file.sh | 35 |
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 | ||
23 | putmain() { | 23 | putmain() { |
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 | ||
32 | callmain() { | 32 | callmain() { |
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" | |||
53 | FIND_QUERY="$FIND_QUERY -and -not -name dht_test.c" | 53 | FIND_QUERY="$FIND_QUERY -and -not -name dht_test.c" |
54 | FIND_QUERY="$FIND_QUERY -and -not -name version_test.c" | 54 | FIND_QUERY="$FIND_QUERY -and -not -name version_test.c" |
55 | 55 | ||
56 | for 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' |
59 | done) | sort -u >> amalgamation.cc | ||
60 | |||
61 | echo 'namespace {' >> amalgamation.cc | ||
62 | for i in $(eval "$FIND_QUERY"); do | ||
63 | if ! grep -q '^int main(' "$i"; then | ||
64 | put "$i" | ||
59 | fi | 65 | fi |
60 | done | 66 | done |
61 | 67 | ||
62 | for i in $(eval $FIND_QUERY); do | 68 | for 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 |
66 | done | 72 | done |
67 | 73 | ||
68 | echo "static void call(int m(), int argc, char **argv) { m(); }" >> amalgamation.cc | 74 | echo "static void call(int m(), int argc, char **argv) { m(); }" >> amalgamation.cc |
69 | echo "static void call(int m(int, char **), int argc, char **argv) { m(argc, argv); }" >> amalgamation.cc | 75 | echo "static void call(int m(int, char **), int argc, char **argv) { m(argc, argv); }" >> amalgamation.cc |
76 | echo '} // namespace' >> amalgamation.cc | ||
70 | 77 | ||
71 | echo "int main(int argc, char **argv) {" >> amalgamation.cc | 78 | echo "int main(int argc, char **argv) {" >> amalgamation.cc |
72 | for i in $(eval $FIND_QUERY); do | 79 | for 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 |
76 | done | 83 | done |
77 | echo " return 0;" >> amalgamation.cc | 84 | echo " return 0;" >> amalgamation.cc |