]> gitweb @ CieloNegro.org - autobuild.git/blob - src/main.bash
6c0b3c491e1087f2dd85983eb615eb1fb5e0ffa6
[autobuild.git] / src / main.bash
1 function runMake () {
2     run gmake -w -j $(detectNumCPUs) $@
3 }
4
5 function configure () {
6     if [[ ! -f configure.ac && ! -f configure.in ]]; then
7         echo "ERROR: Neither configure.ac nor configure.in exists in the current directory." >&2
8         return 1
9     fi
10
11     if [[ ! -f configure ]]; then
12         run autoreconf -v -i -f
13     fi
14
15     if [[ ! -f "_build/Makefile" ]]; then
16         run mkdir -p _build
17         run pushd _build
18         run ../configure "${configArgs[@]}"
19         run popd
20     fi
21 }
22
23 function build () {
24     configure
25     runMake -C "_build" $buildTarget
26 }
27
28 function doc () {
29     configure
30     runMake -C "_build/$docDirectory" $docTarget
31 }
32
33 function check () {
34     build
35     runMake -C "_build" check "$@"
36 }
37
38 function clean () {
39     run rm -rf "_build"
40 }
41
42 function dist () {
43     configure
44     runMake -C "_build" dist
45 }
46
47 function install () {
48     build
49     runMake -C "_build" install
50 }
51
52 function main () {
53     local cmd
54     case "$1" in
55         ""|"build") cmd=build  ;;
56         "doc"     ) cmd=doc    ;;
57         "check"   ) cmd=check  ;;
58         "clean"   ) cmd=clean  ;;
59         "dist"    ) cmd=dist   ;;
60         "install" ) cmd=install;;
61         *)
62             echo "Usage: $0 [build | doc | check | clean | dist | install]" >&2
63             exit 1
64     esac
65     if (( $# > 0 )); then
66         shift
67     fi
68     "$cmd" "$@"
69 }
70
71 main "$@"