15f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#!/bin/bash
25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#
35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer# install.sh [--uninstall] sourcefile targetfile [install options]
45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#
50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner
60bc735ffcfb223c0186419547abaa5c84482663eChris Lattner
75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer# Check for uninstall option
85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerif test "x$1" == "x--uninstall" ; then
95f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer  UNINSTALL=true
105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer  SOURCE=$2
115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer  TARGET=$3
125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer  shift 3
135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerelse
145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer  UNINSTALL=false
15bdc601b196c48d4cd56a5ceb45d41ae4e87371abKen Dyck  SOURCE=$1
1649aa7ff1245abd03e6e998e01302df31e4c6f8f6Argyrios Kyrtzidis  TARGET=$2
17980e508ca70d6de75d2abfd96b4681fc98bb2698Steve Naroff  shift 2
18aaba5e346dffdbad5d1c42765a89e4a7afb0da67Douglas Gregorfi
19b17166c8077cd900cca83a895c43b30ea6660598Argyrios Kyrtzidis
20e91593ef084479340582b2ba177b44be50a717b7Daniel Dunbar# Check usage
21ea1471e0e967548c596a71469702f8846dbaf3c0John McCallif test -z "$SOURCE" || test -z "$TARGET" ; then
222cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor  echo Usage: install.sh [--uninstall] source target [install options] >&2
2319cc4abea06a9b49e0e16a50d335c064cd723572Anders Carlsson  exit 1
241b63e4f732dbc73d90abf886b4d21f8e3a165f6dChris Lattnerfi
25a9376d470ccb0eac74fe09a6b2a18a890f1d17c4Chris Lattner
265f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
27f5942a44880be26878592eb052b737579349411eBenjamin Kramer#
2885f9bceab1542aafff012d4d28e998f4ba16e362Anders Carlsson# do_install(SOURCE_FILE, TARGET_FILE)
296fe7c8aa8c7546743ecd0ac0138c2cf5d8155386Nate Begeman#
30f5942a44880be26878592eb052b737579349411eBenjamin Kramer
31071cc7deffad608165b1ddd5263e8bf181861520Charles Davisdo_install()
3229445a0542d128cd7ee587ee52229670b9b54a12Anders Carlsson{
335f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer  local SOURCE=$1
345f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer  local TARGET=$2
351827403a7138946305c0058f262e02b595cf882fDouglas Gregor  local PARAMS=$3
361827403a7138946305c0058f262e02b595cf882fDouglas Gregor
37225843186e3972ce798d3de00f86da9008b15a0eDouglas Gregor  install -p -D $PARAMS $SOURCE $TARGET
38225843186e3972ce798d3de00f86da9008b15a0eDouglas Gregor}
39a376d10acfacf19d6dfa41069f7929739a18dd7aDouglas Gregor
40a376d10acfacf19d6dfa41069f7929739a18dd7aDouglas Gregor
414923aa25eb39d64106a5817c02d560a3aecf8b2cDouglas Gregor#
424923aa25eb39d64106a5817c02d560a3aecf8b2cDouglas Gregor# do_uninstall(SOURCE_FILE, TARGET_FILE)
434923aa25eb39d64106a5817c02d560a3aecf8b2cDouglas Gregor#
445f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
455f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerdo_uninstall()
465f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer{
475f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer  local SOURCE=$1
483e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor  local TARGET=$2
493e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor
503e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor  # Does target exist?
513e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor  if test -r $TARGET ; then
523e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor    # Is target of the same version as this package?
533e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor    if diff $SOURCE $TARGET >/dev/null; then
543e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor      rm -f $TARGET
553e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor    else
563e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor      echo WARNING: Skipping uninstall for $TARGET - versions differ! >&2
573e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor    fi
583e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor  else
593e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor    echo WARNING: Skipping uninstall for $TARGET - not installed! >&2
603e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor  fi
613e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor}
623e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor
633e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor
643e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor# Call sub routine
653e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregorif $UNINSTALL ; then
663e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor  do_uninstall $SOURCE $TARGET
673e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregorelse
683e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor  do_install $SOURCE $TARGET "$*"
693e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregorfi
703e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor
713e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregorexit 0
723e1274f2b99cb99c03cc8e2c6517c37d330b597aDouglas Gregor