* new run of code generation by EA
[profile/ivi/audiomanager.git] / cmaker.sh
1  #!/bin/sh -e
2  #
3  #  Copyright (C) 2011, BMW AG 
4  # 
5  # AudioManagerDeamon
6  #
7  # @file cmaker.sh
8  #
9  # @date: 20.05.2011
10  # @author: Christian Müller (christian.ei.mueller@bmw.de)
11  #
12  # Shell script to envoke the out of source build of the Audiomanager and create documentation
13  # after invoking this script, first all Plugins will be compiled and the resulting .a files
14  # are found in ./build/plugins. 
15  # All binaries are found in ./bin
16  # Finally source documentation can be found in ./doc
17  # to do a clean build, just remove the ./build folder or just a subfolder in this build folder.
18
19
20 BUILD_DIRECTORY="build"
21 PLUGINS_DIRECTORY="plugins"
22 DOC_DIRECTORY="doc"
23 BIN_DIRECTORY="bin"
24 TEST_DIRECTORY="test"
25 ACTION=$1
26 ABS=`exec pwd`
27 APPLICATION_LIST=$(find . -maxdepth 1 -type d \( -name "[A-Z]*" -a  -not \( -name "Plugin*" \) \) )
28 PLUGIN_LIST=$(find . -maxdepth 1 -type d \( -name "[A-Z]*" -a  -name "Plugin*" \) )
29 # checks for Build directory and creates it if neccessary
30 make_build ()
31 {
32         BIN=$ABS"/"$BIN_DIRECTORY
33         if [ ! -d "${BIN}" ]; 
34         then
35                 echo "create Bin Dir: $BIN_DIRECTORY"
36                 mkdir $BIN_DIRECTORY
37                 cd $BIN_DIRECTORY
38                 cp ../AudioManGUI/Bild1.png .
39                 cd ..
40         fi
41
42         TEST=$ABS"/"$TEST_DIRECTORY
43         if [ ! -d "${TEST}" ]; 
44         then
45                 echo "create Bin Dir: $TEST_DIRECTORY"
46                 mkdir $TEST_DIRECTORY
47                 cd $TEST_DIRECTORY
48                 cd ..
49         fi
50
51         ABSOLUTE=$ABS"/"$BUILD_DIRECTORY
52         if [ ! -d "${ABSOLUTE}" ]; 
53         then
54                 echo "create Build Dir: $BUILD_DIRECTORY"
55                 mkdir $BUILD_DIRECTORY
56         fi
57         cd "${ABSOLUTE}"
58         if [ ! -d "${PLUGINS_DIRECTORY}" ]; 
59         then
60                 echo "create Build Dir: $PLUGINS_DIRECTORY"
61                 mkdir $PLUGINS_DIRECTORY
62         fi
63 }
64 # does cmake for list in $1
65 do_cmake_plugin ()
66 {
67         for PL in $PLUGIN_LIST
68         do
69                 echo $PL
70         done
71         
72         for PL in $PLUGIN_LIST
73         do              
74                 if [ ! -d "$PL" ]; then
75                         mkdir $PL
76                 fi
77         
78                 cd $PL
79                 p=$ABS"/"${PL#"./"}
80                 cmake $p 
81                 cd ..           
82         done
83 }
84 do_cmake_app ()
85 {
86         for PL in $APPLICATION_LIST
87         do
88                 echo $PL
89         done
90         
91         for PL in $APPLICATION_LIST
92         do              
93                 if [ ! -d "$PL" ]; then
94                         mkdir $PL
95                 fi
96         
97                 cd $PL
98                 p=$ABS"/"${PL#"./"}
99                 cmake $p 
100                 cd ..           
101         done
102 }
103 # does make for list in $1
104 do_make_plugin ()
105 {
106         for PL in $PLUGIN_LIST
107         do
108                 echo $PL
109         done
110         
111         for PL in $PLUGIN_LIST
112         do              
113                 if [ ! -d "$PL" ]; then
114                         mkdir $PL
115                 fi
116         
117                 cd $PL
118                 make -j4  
119                 cd ..           
120         done
121 }
122 do_make_app ()
123 {
124         for PL in $APPLICATION_LIST
125         do
126                 echo $PL
127         done
128         
129         for PL in $APPLICATION_LIST
130         do              
131                 if [ ! -d "$PL" ]; then
132                         mkdir $PL
133                 fi
134         
135                 cd $PL
136                 make -j4  
137                 cd ..           
138         done
139 }
140 all ()
141 {
142         case "$1" in
143         cmake)
144                 do_cmake_plugin
145                 do_cmake_app
146                 ;;
147         make)
148                 do_make_plugin
149                 do_make_app
150                 ;;
151         all)
152                 do_cmake_plugin
153                 do_make_plugin
154                 do_cmake_app
155                 do_make_app
156                 ;;      
157         esac
158 }
159 main ()
160 {
161         case "$1" in
162         cmake)
163                 do_cmake_app
164                 ;;
165         make)
166                 do_make_app
167                 ;;
168         all)
169                 do_cmake_app
170                 do_make_app
171                 ;;      
172         esac
173 }
174 plugins ()
175 {
176         case "$1" in
177         cmake)
178                 do_cmake_plugin
179                 ;;
180         make)
181                 do_make_plugin
182                 ;;
183         all)
184                 do_cmake_plugin
185                 do_make_plugin
186                 ;;      
187         esac
188 }
189 target ()
190 {
191         b=$2
192         if [ ! -d "$2" ]; then
193                 mkdir $2
194         fi
195         case "$1" in
196         cmake)
197                 cd $b
198                 p=$ABS"/"${b#"./"}
199                 cmake $p 
200                 ;;
201         make)
202                 cd $b
203                 make -j4
204                 ;;
205         all)
206                 cd $b
207                 p=$ABS"/"${b#"./"}
208                 cmake $p;
209                 make -j4
210                 ;;      
211         esac
212 }
213 case "$ACTION" in
214 cmake)
215         echo "...executing cmake for"
216         ;;
217 make)
218         echo "...executiong make for"
219         ;;
220 all)
221         echo "...executing cmake & make for"
222         ;;
223 *)
224         echo ""
225         echo "          Usage: ./cmaker.sh {cmake|make|all} {all|main|plugins|target xxx} [document]"
226         echo "          xxx stands for the directory of the target to be build"
227         echo "          Output binaries are below \bin, builds are done in \build\xxx"
228         echo "          Script does only use Subdirectories beginning with upper Cases !"
229         echo "          document if this flag is present, the documentation will be created"
230         echo "" 
231         exit 1
232         ;;
233 esac
234 echo "$3"
235 doc="document"
236 if [ "$3" = "$doc" ]
237 then
238         export gendoc="ON"
239 else 
240         export gendoc="OFF"
241 fi 
242 make_build
243 case "$2" in
244 all)
245         all $ACTION
246         ;;
247 applications)
248         main $ACTION
249         ;;
250 plugins)
251         plugins $ACTION 
252         ;;
253 target)
254         target $ACTION $3
255         ;;
256 *)
257         echo ""
258         echo "          Usage: ./cmaker.sh {cmake|make|all} {all|applications|plugins|target xxx} [-document]"
259         echo "          xxx stands for the directory of the target to be build"
260         echo "          Output binaries are below \bin, builds are done in \build\xxx"
261         echo "          Script does only use Subdirectories beginning with upper Cases !"
262         echo "          document if this flag is present, the documentation will be created"
263         echo ""
264         exit 1
265         ;;
266 esac
267 exit 0