#!/bin/sh
#
# This file is part of the Yices SMT Solver.
# Copyright (C) 2017 SRI International.
#
# Yices is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Yices is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Yices. If not, see .
#
#
# Script to install Yices on Freed BSD
#
# Usage
# -----
# ./install-yices [OPTIONS]
#
# This script must be called from the toplevel Yices directory.
#
# It will install Yices as follows:
# binaries in /bin
# libraries in /lib
# include files in /include
#
# If no is given, Yices will be installed in /usr/local.
#
# If is the string here or if it's equal to the current
# directory, then no files are copied but symbolic links are created
# in ./lib
#
# OPTIONS:
# -h: print a short help message
#
usage="Usage: $0 [OPTIONS]
or $0 [OPTIONS] here
The first form installs Yices in the specified by as follows:
binaries in /bin
libraries in /lib
include files in /include
The second form installs Yices locally. No files are copied, but
symbolic links are created in ./lib.
OPTIONS:
-h --help: print this message
"
failure="
Installation failed
"
#
# Tools we need: change this if they are not found
#
install="/usr/bin/install"
link="/bin/ln"
ldconfig="/sbin/ldconfig"
#
# Process the command line
#
location_given=no
location=
while test -n "$1"; do
case $1 in
-h | --help)
echo "$usage"
exit 0;;
-*) echo "Unknown option $1. Try $0 -h for help"
exit 1;;
*) if test "$location_given" = "yes" ; then
echo "Please specify a single location. Try $0 -h for help"
exit 1
fi
location_given="yes"
location=$1
shift
continue;;
esac
done
#
# Check that the current directory contains bin lib include
# subdirectory and get the dynamic libraries name.
#
local_dir=`pwd`
if test -d "$local_dir/bin" -a -d "$local_dir/lib" -a "$local_dir/include" ; then
sofile=`ls lib/*.so.2.* | sed -e 's+lib/++' 2>/dev/null`
case "$sofile" in
libyices.so.2.*)
break;;
*) echo "$failure"
echo "Can't find the Yices library libyices.so.2.x.y in ./lib"
echo "Make sure $0 is run from the toplevel Yices directory"
echo ""
exit 1;;
esac
else
echo "$failure"
echo "Can't find the ./bin ./lib or ./include directory"
echo "Make sure $0 is run from the toplevel Yices directory"
echo ""
exit 1
fi
#
# Set install dir and local_install flag
#
local_install="no"
install_dir="/usr/local"
if test -n "$location" ; then
case $location in
here) local_install="yes"
install_dir="$local_dir"
break;;
*) install_dir="$location"
if test "$location" -ef "$local_dir" ; then
local_install="yes"
fi
break;;
esac
fi
#
# Check that the tools exist and are executable
#
if test "$local_install" = "no" ; then
{ test -f "$install" -a -x "$install" ; } ||
{ echo "$failure" ; echo "Can't find $install" ; echo "" ; exit 1 ; }
fi
{ test -f "$link" -a -x "$link" ; } ||
{ echo "$failure" ; echo "Can't find $link" ; echo "" ; exit 1 ; }
{ test -f "$ldconfig" -a -x "$ldconfig" ; } ||
{ echo "$failure" ; echo "Can't find $ldconfig" ; echo "" ; exit 1 ; }
#
# Install directories
#
bindir="$install_dir/bin"
libdir="$install_dir/lib"
includedir="$install_dir/include"
#
# Create the directories then copy the files
#
if test "$local_install" = "no" ; then
echo "Installing Yices in $install_dir"
{ $install -d "$install_dir" "$bindir" "$libdir" "$includedir" \
&& $install -m 0644 ./include/*.h "$includedir" \
&& $install ./bin/* "$bindir" \
&& $install ./lib/*.so.2.* "$libdir" ; } 2> /dev/null ||
{ echo "$failure"
echo "Could not create the directories or copy files."
echo "Check that you have the right permissions (try sudo)."
echo ""
exit 1 ; }
fi
#
# Run ldconfig if the install directory is /usr/lib or /usr/local/lib
#
case "$libdir" in
"/usr/lib" | "/usr/local/lib" )
"$ldconfig" -m "$libdir" ||
{ echo "$failure"; echo "Could not run ldconfig" ; echo "" ; exit 1 ; }
;;
esac
#
# Add symbolic link
# The umask affects the permissions on symbolic links.
# So we force it to 22 here to avoid problems
#
umask 22
$link -sf "$sofile" "$libdir/libyices.so" ||
{ echo "$failure"
echo "Could not create symbolic link libyices.so"
echo ""
exit 1 ; }
echo "Done"