|
2 | 2 |
|
3 | 3 | set -o nounset |
4 | 4 |
|
| 5 | +PROJECT=procfetch |
5 | 6 | VERSION="$(cat VERSION)" |
6 | | -CONFIG_BREW=OFF |
| 7 | +CXX=g++ |
| 8 | +unset PREFIX |
7 | 9 | BIN_DIR=/bin |
8 | 10 | LIB_DIR=/share/procfetch |
9 | 11 |
|
| 12 | +if [[ -d "/usr/local/opt/gnu-getopt/bin" ]]; then |
| 13 | + PATH="/usr/local/opt/gnu-getopt/bin:$PATH" |
| 14 | +fi |
| 15 | + |
10 | 16 | function show_usage { |
11 | | - echo "Usage: $0 [--prefix=<prefix>]" |
12 | | - echo " $0 --help" |
| 17 | + cat <<-EOF |
| 18 | + \`$0' configures $PROJECT $VERSION to adapt to many kinds of systems. |
| 19 | +
|
| 20 | + Usage: $0 [OPTION]... |
| 21 | +
|
| 22 | + Options: |
| 23 | + -h, --help display this help and exit. |
| 24 | + -v, --versoin display version information and exit. |
| 25 | + --prefix=PREFIX install files in PREFIX. |
| 26 | + --with-cxx=CXX use CXX to compile (default=gcc). |
| 27 | +
|
| 28 | + Some influential environment variables: |
| 29 | + CXX C++ compiler command |
| 30 | +EOF |
| 31 | + exit $1 |
13 | 32 | } |
14 | 33 |
|
15 | 34 | # |
16 | 35 | # parse options |
17 | 36 | # |
18 | 37 |
|
19 | | -if [[ $# -ge 1 ]]; then |
20 | | - if [[ ${1%%=*} == --prefix ]]; then |
21 | | - PREFIX="${1##*=}" |
22 | | - shift |
23 | | - elif [[ $1 == --help || $1 = -h ]]; then |
24 | | - show_usage |
25 | | - exit 0 |
26 | | - fi |
| 38 | +help_option=0 |
| 39 | +version_option=0 |
| 40 | + |
| 41 | +parsed_arguments=$(getopt -n $0 -o hv --long help,version,prefix:,with-cxx: -- "$@") |
| 42 | +if [[ $? != 0 ]]; then |
| 43 | + show_usage 1 |
27 | 44 | fi |
28 | 45 |
|
| 46 | +eval set -- "$parsed_arguments" |
| 47 | +while true; do |
| 48 | + case "$1" in |
| 49 | + -h | --help ) help_option=1 ; shift ;; |
| 50 | + -v | --version ) version_option=1 ; shift ;; |
| 51 | + --prefix ) PREFIX="$2" ; shift 2 ;; |
| 52 | + --with-cxx ) CXX="$2" ; shift 2 ;; |
| 53 | + --) shift; break;; |
| 54 | + *) echo "Error: Unknown option: $1" |
| 55 | + show_usage 1;; |
| 56 | + esac |
| 57 | +done |
| 58 | + |
29 | 59 | if [[ $# -ne 0 ]]; then |
30 | | - echo "Error: Invalid options or arguments" |
31 | | - show_usage |
32 | | - exit 1 |
| 60 | + echo "Error: Invalid argument: $@" |
| 61 | + show_usage 1 |
33 | 62 | fi |
34 | 63 |
|
35 | 64 | # |
36 | 65 | # main process |
37 | 66 | # |
38 | 67 |
|
| 68 | +if [[ $help_option == 1 ]]; then |
| 69 | + show_usage 0 |
| 70 | +fi |
| 71 | + |
| 72 | +if [[ $version_option == 1 ]]; then |
| 73 | + echo "$PROJECT configure $VERSION" |
| 74 | + exit 0 |
| 75 | +fi |
| 76 | + |
39 | 77 | BIN_DIR="${PREFIX:-}${BIN_DIR}" |
40 | 78 | LIB_DIR="${PREFIX:-/usr}${LIB_DIR}" |
41 | 79 |
|
42 | 80 | for f in Makefile ascii/Makefile src/Makefile src/config.h Doxyfile |
43 | 81 | do |
44 | 82 | echo "creating $f" |
45 | 83 | sed -e "s/@VERSION@/${VERSION}/g" \ |
| 84 | + -e "s/@CXX@/${CXX}/g" \ |
46 | 85 | -e "s:@BIN_DIR@:${BIN_DIR}:g" \ |
47 | 86 | -e "s:@LIB_DIR@:${LIB_DIR}:g" "$f.in" > "$f" |
48 | 87 | done |
0 commit comments