Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
cmake.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2#
3# \author mdejong
4#
5script=${0##*/}
6
7if [ -z $JPP_DIR ]; then
8 echo "Variable JPP_DIR undefined."
9 exit
10fi
11
12source $JPP_DIR/setenv.sh $JPP_DIR
13
14if do_usage $*; then
15 usage "$script"
16fi
17
18for DIR in $(find $JPP_DIR/{software,examples}/* -maxdepth 0 -type d); do
19
20 MAINS=($({grep -l "int *main" $DIR/*.cc} 2>/dev/null))
21
22 if [[ -f $DIR/CMakeLists.txt ]] && (( ${#MAINS} != 0 )); then
23
24 echo $DIR
25 pushd $DIR
26
27 a0=() # reset
28 b0=() # reset
29
30 a0+=($(awk '/^foreach\‍([a-zA-Z_ ]*$/,/\‍) *$/' CMakeLists.txt | sed 's/foreach(.*$//' | sed 's/)//'))
31 a0+=($(sed -n 's/^jpp_add_executable( *\‍([^$][^ ]*\‍).*/\1/p' CMakeLists.txt))
32 b0+=($(grep -l "int *main" *.cc | sed 's/.cc//'))
33
34 A1=(${(o)a0}) # sort
35 A2=(${(o)b0}) # sort
36
37 let "ERRORS = 0"
38
39 if (( ${#A1} != ${#A2} )); then
40 let "ERRORS += 1"
41 fi
42
43 for (( i = 1; $i <= ${#A1} && $i <= ${#A2}; i += 1 )); do
44 if [[ ${(P)A1[i]} != ${(P)A2[i]} ]]; then
45 let "ERRORS += 1"
46 fi
47 done
48
49 if (( $ERRORS != 0 )); then
50 echo "cmake: $A1[*]"
51 echo "main: $A2[*]"
52 fi
53
54 popd
55 fi
56done
57
58for DIR in $(find $JPP_DIR/software/* -maxdepth 0 -type d); do
59
60 INCLUDES=$({ls $DIR/*.hh} 2>/dev/null)
61
62 if [[ -f $DIR/CMakeLists.txt ]] && (( ${#INCLUDES} != 0 )); then
63
64 echo $DIR
65 pushd $DIR
66
67 a0=() # reset
68 b0=() # reset
69
70 a0+=($(awk '/^ *PUBLIC_HEADER/,/\‍)/' CMakeLists.txt | sed 's/PUBLIC_HEADER//' | sed 's/\‍(OUTPUT_NAME.*\|)\‍)//' | sed 's/.*\///'))
71 a0+=($(awk '/^ *ROOT_DICTIONARY/,/(PUBLIC_HEADER|\‍))/' CMakeLists.txt | sed 's/ROOT_DICTIONARY//' | sed 's/\‍(OUTPUT_NAME.*\|PUBLIC_HEADER.*\|)\‍)//' | sed 's/.*\///'))
72 b0+=($(ls *.hh))
73
74 A1=($(echo $a0[*] | tr ' ' '\n' | sort -u)) # sort & unique
75 A2=($(echo $b0[*] | tr ' ' '\n' | sort -u)) # sort & unique
76
77 let "ERRORS = 0"
78
79 if (( ${#A1} != ${#A2} )); then
80 let "ERRORS += 1"
81 fi
82
83 for (( i = 1; $i <= ${#A1} && $i <= ${#A2}; i += 1 )); do
84 if [[ ${(P)A1[i]} != ${(P)A2[i]} ]]; then
85 let "ERRORS += 1"
86 fi
87 done
88
89 if (( $ERRORS != 0 )); then
90 echo "cmake: $A1[*]"
91 echo "main: $A2[*]"
92 fi
93
94 popd
95 fi
96done