diff options
Diffstat (limited to 'cmaker.sh')
-rwxr-xr-x | cmaker.sh | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/cmaker.sh b/cmaker.sh new file mode 100755 index 0000000..ca53478 --- /dev/null +++ b/cmaker.sh @@ -0,0 +1,248 @@ + #!/bin/sh -e + # + # Copyright (C) 2011, BMW AG + # + # AudioManagerDeamon + # + # @file cmaker.sh + # + # @date: 20.05.2011 + # @author: Christian Müller (christian.ei.mueller@bmw.de) + # + # Shell script to envoke the out of source build of the Audiomanager and create documentation + # after invoking this script, first all Plugins will be compiled and the resulting .a files + # are found in ./build/plugins. + # All binaries are found in ./bin + # Finally source documentation can be found in ./doc + # to do a clean build, just remove the ./build folder or just a subfolder in this build folder. + + +BUILD_DIRECTORY="build" +PLUGINS_DIRECTORY="plugins" +DOC_DIRECTORY="doc" +BIN_DIRECTORY="bin" +ACTION=$1 +ABS=`exec pwd` +APPLICATION_LIST=$(find . -maxdepth 1 -type d \( -name "[A-Z]*" -a -not \( -name "Plugin*" \) \) ) +PLUGIN_LIST=$(find . -maxdepth 1 -type d \( -name "[A-Z]*" -a -name "Plugin*" \) ) +# checks for Build directory and creates it if neccessary +make_build () +{ + BIN=$ABS"/"$BIN_DIRECTORY + if [ ! -d "${BIN}" ]; + then + echo "create Bin Dir: $BIN_DIRECTORY" + mkdir $BIN_DIRECTORY + cd $BIN_DIRECTORY + cp ../AudioManGUI/Bild1.png . + cd .. + fi + + ABSOLUTE=$ABS"/"$BUILD_DIRECTORY + if [ ! -d "${ABSOLUTE}" ]; + then + echo "create Build Dir: $BUILD_DIRECTORY" + mkdir $BUILD_DIRECTORY + fi + cd "${ABSOLUTE}" + if [ ! -d "${PLUGINS_DIRECTORY}" ]; + then + echo "create Build Dir: $PLUGINS_DIRECTORY" + mkdir $PLUGINS_DIRECTORY + fi + +} +# does cmake for list in $1 +do_cmake_plugin () +{ + for PL in $PLUGIN_LIST + do + echo $PL + done + + for PL in $PLUGIN_LIST + do + if [ ! -d "$PL" ]; then + mkdir $PL + fi + + cd $PL + p=$ABS"/"${PL#"./"} + cmake $p + cd .. + done +} +do_cmake_app () +{ + for PL in $APPLICATION_LIST + do + echo $PL + done + + for PL in $APPLICATION_LIST + do + if [ ! -d "$PL" ]; then + mkdir $PL + fi + + cd $PL + p=$ABS"/"${PL#"./"} + cmake $p + cd .. + done +} +# does make for list in $1 +do_make_plugin () +{ + for PL in $PLUGIN_LIST + do + echo $PL + done + + for PL in $PLUGIN_LIST + do + if [ ! -d "$PL" ]; then + mkdir $PL + fi + + cd $PL + make -j4 + cd .. + done +} +do_make_app () +{ + for PL in $APPLICATION_LIST + do + echo $PL + done + + for PL in $APPLICATION_LIST + do + if [ ! -d "$PL" ]; then + mkdir $PL + fi + + cd $PL + make -j4 + cd .. + done +} +all () +{ + case "$1" in + cmake) + do_cmake_plugin + do_cmake_app + ;; + make) + do_make_plugin + do_make_app + ;; + all) + do_cmake_plugin + do_make_plugin + do_cmake_app + do_make_app + ;; + esac +} +main () +{ + case "$1" in + cmake) + do_cmake_app + ;; + make) + do_make_app + ;; + all) + do_cmake_app + do_make_app + ;; + esac +} +plugins () +{ + case "$1" in + cmake) + do_cmake_plugin + ;; + make) + do_make_plugin + ;; + all) + do_cmake_plugin + do_make_plugin + ;; + esac +} +target () +{ + b=$2 + if [ ! -d "$2" ]; then + mkdir $2 + fi + case "$1" in + cmake) + cd $b + p=$ABS"/"${b#"./"} + cmake $p + ;; + make) + cd $b + make -j4 + ;; + all) + cd $b + p=$ABS"/"${b#"./"} + cmake $p; + make -j4 + ;; + esac +} +case "$ACTION" in +cmake) + echo "...executing cmake for" + ;; +make) + echo "...executiong make for" + ;; +all) + echo "...executing cmake & make for" + ;; +*) + echo "" + echo " Usage: ./cmaker.sh {cmake|make|all} {all|main|plugins|target xxx}" + echo " xxx stands for the directory of the target to be build" + echo " Output binaries are below \bin, builds are done in \build\xxx" + echo " Script does only use Subdirectories beginning with upper Cases !" + echo "" + exit 1 + ;; +esac +make_build +case "$2" in +all) + all $ACTION + ;; +applications) + main $ACTION + ;; +plugins) + plugins $ACTION + ;; +target) + target $ACTION $3 + ;; +*) + echo "" + echo " Usage: ./cmaker.sh {cmake|make|all} {all|applications|plugins|target xxx}" + echo " xxx stands for the directory of the target to be build" + echo " Output binaries are below \bin, builds are done in \build\xxx" + echo " Script does only use Subdirectories beginning with upper Cases !" + echo "" + exit 1 + ;; +esac +exit 0 |