X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/projects.git/blobdiff_plain/5e8e2b2380cd6697b8634a765cdfd0b9e07c502c..821fa83fccab0589fb06f6c111768dfcb78bf4f7:/tools/make/mconfigure diff --git a/tools/make/mconfigure b/tools/make/mconfigure index b102ad7..0d053b1 100755 --- a/tools/make/mconfigure +++ b/tools/make/mconfigure @@ -3,10 +3,33 @@ set -e function echo_usage { echo "usage: mconfigure [options] " - echo " -c : copy configure/Makefile" - echo " -d : compile" - echo " -p : pack default: do all" - ./configure -I + echo " -o: old style build (not recommended" + ./configure -h +} + +function create_conf { + if [ -f "debian/$paket.cmake" ] + then + echo "compile_type=CMAKE" > debian/$paket.conf + elif [ -f "debian/$paket.build" ] + then + if [ -f "debian/$paket.cpp" ] + then + echo "compile_type=CPP" > debian/$paket.conf + else + echo "compile_type=ANY" > debian/$paket.conf + fi + else + echo "compile_type=NONE" > debian/$paket.conf + fi + + if [ -f "$paket.control" -a -f "$paket.cp" ] + then + echo "target_type=DEB" >> debian/$paket.conf + else + echo "target_type=FILE" >> debian/$paket.conf + fi + echo "$paket.conf created." } ############################################################################## @@ -20,19 +43,13 @@ then fi configure=0 -compile=0 -pack=0 -confirure_args="-b ../build" +configure_args="-i debian/tmp" while [ $OPTIND -le "$#" ] do - if getopts "cdp" opt + if getopts "o" opt then case $opt in - c) configure=1 - ;; - d) compile=1 - ;; - p) pack=1 + o) old_build=1 ;; \?) $confirure_args="$configure_ars -$OPTARG" if [ $OPTARG="a" -o $OPTARG="C" -o $OPTARG="i" -o $OPTARG="v" ] @@ -43,7 +60,7 @@ do ;; :) echo "Option -$OPTARG requires an argument." echo_usage - exit 1 + exit 3 ;; esac else @@ -55,67 +72,144 @@ done if [ -z "$paket" ] then echo_usage - exit 1 + exit 4 fi -if [ $configure -eq 1 ] +if [ ! -f debian/$paket.conf ] then - # installation of configure file - cp /usr/share/mbuild/configure . -else - if [ ! -e configure ] + # check if any files for $paket are present + if ! ls debian/$paket.* 2>/dev/null then - ln -s /usr/share/mbuild/configure . + echo "$paket is no build target in this repository." + exit 5 fi + + # build conf file + echo "$paket.conf missing. We create it ..." + create_conf fi -configure_args="$configure_args $paket" -if [ -x debian/$paket.preconfigure ] +if [ ! -e configure ] then - # if necessary $configure_args can be added to setenv.sh - debian/$paket.preconfigure + ln -s /usr/share/mbuild/configure . fi -#-> configure -# .build or .cmake -if [ -x debian/$paket.build -o -e debian/$paket.cmake ] +# clean build directory +if [ "$compile_type" != "NONE" ] then - echo "BUILD_DIR=../build" >> debian/setenv.sh - if [ -e ../build ] + if [ -e ~/build ] then - rm -rf ../build - mkdir ../build - fi - if grep -- "-prepare" debian/$paket.build >/dev/null - then - echo "prepare in .build no longer supported. Use .prebuild" - exit 2 + rm -rf ~/build + mkdir ~/build fi - # sync build dir - . debian/setenv.sh - debian/rules sync + configure_args="$configure_args -d ~/build" fi # perform configure -. debian/setenv.sh -./configure $configure_args +. debian/$paket.conf +if [ -n $old_build ] +then + rm debian/$paket.conf +fi -# if nothing is selected, select all -if [ $compile -eq 0 -a $pack -eq 0 ] +if [ "$compile_type" != "NONE" ] then - compile=1 - pack=1 + configure_args="$configure_args -b" + if [ -n "$compile_dir" ] + then + configure_args="$configure_args -d $compile_dir" + fi + if [ -z "$compile_type" ] + then + echo "compile_type required in $paket.conf" + exit 51 + fi + configure_args="$configure_args -c $compile_type" fi +if [ "$target_type" == "FILE" ] +then + # no version needed + configure_args="$configure_args -V" +fi +configure_args="$configure_args $paket" +echo "Executing ./configure $configure_args ..." +./configure $configure_args -if [ $compile -eq 1 ] +if [ "$compile_type" != "NONE" ] then - # build + if grep -- "-prepare" debian/$paket.build >/dev/null + then + echo "prepare in .build no longer supported. Use .prebuild" + exit 6 + fi + # sync build dir + . debian/setenv.sh + debian/rules sync make fi -if [ $pack -eq 1 ] +# pack prepare +if [ "$target_type" == "DEB" ] then - # build package - debian/rules pack + if [ ! -f debian/$paket.cp ] + then + echo "debian/$paket.cp missing for target type DEB" + exit 9 + fi + if [ ! -f debian/$paket.control ] + then + echo "debian/$paket.control missing for target type DEB" + exit 10 + fi + + echo "PACK=binary" >> debian/rules.pre + if grep "^Architecture: *all" debian/$paket.control >/dev/null + then + echo "arch = all" >> debian/rules.pre + echo 'BINARY_INDEP = copy ../$(paket)_$(version)-$(build)_all.deb' >> debian/rules.pre + else + echo 'arch = ${DEB_HOST_ARCH}' >> debian/rules.pre + echo "BINARY_ARCH = copy ../${paket}_$version-${build}_"'$(arch).deb' >> debian/rules.pre + fi + if ! [ -f debian/$paket.changelog ] + then + echo "changelog_source = debian/default.changelog" >> debian/rules.pre + if [ -f debian/default.changelog ] + then + rm debian/default.changelog + fi + fi +elif [ "$target_type" == "ZIP" ] +then + echo "PACK=zip" >> debian/rules.pre + if [ ! -f debian/$paket.cp ] + then + echo "debian/$paket.cp missing for target type ZIP" + exit 11 + fi +elif [ "$target_type" == "FILE" ] +then + echo "PACK=version" >> debian/rules.pre + if [ "$compile_type" != "ANY" ] + then + if [ -z "$compile_target" ] + then + echo "compile_target is needed for target_type FILE" + exit 12 + fi + echo "COMPILE_TARGET = $compile_target" >> debian/rules.pre + if [ -n "$target_name" ] + then + echo "TARGET = $target_name" >> debian/rules.pre + else + echo "TARGET = $paket" >> debian/rules.pre + fi + fi +else + echo "Unknown target type: $target_type" + exit 13 fi +# build package +debian/rules pack +