Admin/bash_process/build
author wenzelm
Fri, 09 Sep 2022 21:15:11 +0200
changeset 76101 e59d7d6fe1bd
parent 73705 ac07f6be27ea
child 79749 a861b0df74b4
permissions -rwxr-xr-x
clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47799
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
     1
#!/usr/bin/env bash
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
     2
#
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
     3
# Multi-platform build script
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
     4
73705
ac07f6be27ea avoid unexpected output+behaviour when CDPATH is set
kleing
parents: 73599
diff changeset
     5
unset CDPATH
47799
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
     6
THIS="$(cd "$(dirname "$0")"; pwd)"
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
     7
PRG="$(basename "$0")"
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
     8
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
     9
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    10
# diagnostics
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    11
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    12
function usage()
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    13
{
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    14
  echo
76101
e59d7d6fe1bd clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
wenzelm
parents: 73705
diff changeset
    15
  echo "Usage: $PRG PLATFORM"
47799
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    16
  echo
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    17
  exit 1
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    18
}
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    19
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    20
function fail()
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    21
{
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    22
  echo "$1" >&2
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    23
  exit 2
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    24
}
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    25
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    26
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    27
# command line args
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    28
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    29
[ "$#" -eq 0 ] && usage
76101
e59d7d6fe1bd clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
wenzelm
parents: 73705
diff changeset
    30
PLATFORM="$1"; shift
47799
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    31
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    32
[ "$#" -eq 0 ] || usage
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    33
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    34
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    35
# main
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    36
76101
e59d7d6fe1bd clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
wenzelm
parents: 73705
diff changeset
    37
PLATFORM_DIR="platform_${PLATFORM}"
47799
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    38
76101
e59d7d6fe1bd clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
wenzelm
parents: 73705
diff changeset
    39
case "$PLATFORM" in
73599
981df2e1f646 clarified command-line;
wenzelm
parents: 66691
diff changeset
    40
  arm64-linux)
76101
e59d7d6fe1bd clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
wenzelm
parents: 73705
diff changeset
    41
    mkdir -p "$PLATFORM_DIR"
e59d7d6fe1bd clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
wenzelm
parents: 73705
diff changeset
    42
    cc -Wall bash_process.c -o "$PLATFORM_DIR/bash_process"
73599
981df2e1f646 clarified command-line;
wenzelm
parents: 66691
diff changeset
    43
    ;;
47801
a832454c4003 added darwin targets;
wenzelm
parents: 47799
diff changeset
    44
  x86_64-linux | x86_64-darwin)
76101
e59d7d6fe1bd clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
wenzelm
parents: 73705
diff changeset
    45
    mkdir -p "$PLATFORM_DIR"
e59d7d6fe1bd clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
wenzelm
parents: 73705
diff changeset
    46
    cc -Wall -m64 bash_process.c -o "$PLATFORM_DIR/bash_process"
47799
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    47
    ;;
73599
981df2e1f646 clarified command-line;
wenzelm
parents: 66691
diff changeset
    48
  x86_64-cygwin)
76101
e59d7d6fe1bd clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
wenzelm
parents: 73705
diff changeset
    49
    mkdir -p "$PLATFORM_DIR"
e59d7d6fe1bd clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
wenzelm
parents: 73705
diff changeset
    50
    cc -Wall bash_process.c -o "$PLATFORM_DIR/bash_process.exe"
47799
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    51
    ;;
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    52
  *)
76101
e59d7d6fe1bd clarified directory names (e.g. for multi-platform remote execution): avoid being deleted via isabelle.Components.purge;
wenzelm
parents: 73705
diff changeset
    53
    fail "Bad target platform: \"$PLATFORM\""
47799
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    54
    ;;
0d5773841bc4 multi-platform build script and component settings;
wenzelm
parents:
diff changeset
    55
esac