Admin/polyml/build
changeset 38468 01d70ada9284
child 38472 3c5716b2e7b6
equal deleted inserted replaced
38467:1b77e225fffc 38468:01d70ada9284
       
     1 #!/usr/bin/env bash
       
     2 #
       
     3 # Multi-platform build script for Poly/ML
       
     4 
       
     5 THIS="$(cd "$(dirname "$0")"; pwd)"
       
     6 PRG="$(basename "$0")"
       
     7 
       
     8 
       
     9 # diagnostics
       
    10 
       
    11 function usage()
       
    12 {
       
    13   echo
       
    14   echo "Usage: $PRG SOURCE TARGET [OPTIONS]"
       
    15   echo
       
    16   echo "  Build Poly/ML in SOURCE directory for given platform in TARGET"
       
    17   echo "  which is identified as follows:"
       
    18   echo
       
    19   echo "    x86-linux    x86_64-linux"
       
    20   echo "    x86-darwin   x86_64-darwin"
       
    21   echo "    x86-cygwin"
       
    22   echo
       
    23   echo "  Additional options for ./configure may be given, e.g. --with-gmp"
       
    24   echo
       
    25   exit 1
       
    26 }
       
    27 
       
    28 function fail()
       
    29 {
       
    30   echo "$1" >&2
       
    31   exit 2
       
    32 }
       
    33 
       
    34 
       
    35 # command line args
       
    36 
       
    37 [ "$#" -eq 0 ] && usage
       
    38 SOURCE="$1"; shift
       
    39 
       
    40 [ "$#" -eq 0 ] && usage
       
    41 TARGET="$1"; shift
       
    42 
       
    43 USER_OPTIONS=("$@")
       
    44 
       
    45 
       
    46 # main
       
    47 
       
    48 [ -d "$SOURCE" ] || fail "Bad source directory: \"$SOURCE\""
       
    49 
       
    50 case "$TARGET" in
       
    51   x86-linux)
       
    52     OPTIONS=()
       
    53     ;;
       
    54   x86_64-linux)
       
    55     OPTIONS=()
       
    56     ;;
       
    57   x86-darwin)
       
    58     OPTIONS=(--build=i686-darwin CFLAGS='-arch i686 -O3'
       
    59       CXXFLAGS='-arch i686 -O3' CCASFLAGS='-arch i686 -O3')
       
    60     ;;
       
    61   x86_64-darwin)
       
    62     OPTIONS=(--build=x86_64-darwin CFLAGS='-arch x86_64 -O3'
       
    63       CXXFLAGS='-arch x86_64 -O3' CCASFLAGS='-arch x86_64')
       
    64     ;;
       
    65   x86-cygwin)
       
    66     OPTIONS=()
       
    67     ;;
       
    68   *)
       
    69     fail "Bad platform identifier: \"$TARGET\""
       
    70     ;;
       
    71 esac
       
    72 
       
    73 (
       
    74   cd "$SOURCE"
       
    75   make distclean
       
    76 
       
    77   { ./configure --prefix="$PWD/$TARGET" "${OPTIONS[@]}" "${USER_OPTIONS[@]}" && \
       
    78     make compiler && \
       
    79     make install; } || fail "Build failed"
       
    80 )
       
    81 
       
    82 mkdir -p "$TARGET"
       
    83 mv "$SOURCE/$TARGET/bin/"* "$TARGET/"
       
    84 mv "$SOURCE/$TARGET/lib/"* "$TARGET/"
       
    85 rmdir "$SOURCE/$TARGET/bin" "$SOURCE/$TARGET/lib"
       
    86 rm -rf "$SOURCE/$TARGET/share"