Project

General

Profile

1 1947 aaronmk
#!/bin/bash
2
# Runs a make target on all inputs at once.
3
# Creates a job in the calling shell for each process.
4 1956 aaronmk
# Must be run from the root svn directory.
5 1947 aaronmk
6 1952 aaronmk
with_all_main ()
7
{
8
    local self="${BASH_SOURCE[0]}"
9
    local selfDir="$(dirname -- "$self")"
10
11
    # Was run without initial ".", or with insufficient parameters
12 1953 aaronmk
    if test "${BASH_LINENO[1]}" = 0 -o "$#" -lt 1; then
13 11374 aaronmk
        echo "Usage: [hidden_srcs=1] [inputs=(inputs/src/ ...)]; . $self \
14
make_target [vars...] (note initial \".\")"|fold -s >&2
15 1952 aaronmk
        return 2
16
    fi
17 11373 aaronmk
    if test ! "${inputs+isset}"; then inputs=(inputs/*/); fi
18 11374 aaronmk
    if test "$hidden_srcs"; then inputs=(inputs/.[^as.]*/ "${inputs[@]}"); fi
19 11373 aaronmk
        # not . .. .svn .archive
20 1952 aaronmk
21 6202 aaronmk
    for input in "${inputs[@]}"; do
22 8836 aaronmk
        eval "yes|make ${input}$* &"
23 1952 aaronmk
        disown -h "$(jobs|tail -1|"$selfDir/jobspecs")" # ignore SIGHUP
24
        sleep 2 # wait for initial output so that outputs don't become jumbled
25
    done
26
}
27
with_all_main "$@"