mirror of
https://github.com/nasa/trick.git
synced 2024-12-18 20:57:55 +00:00
959 lines
25 KiB
Plaintext
959 lines
25 KiB
Plaintext
|
#!/bin/bash
|
|||
|
|
|||
|
# configure script for Trick
|
|||
|
# type configure --help for usage
|
|||
|
|
|||
|
# $Id: configure 3785 2015-01-26 14:12:13Z alin $
|
|||
|
|
|||
|
ver_out=""
|
|||
|
ver_min=""
|
|||
|
ver_url=""
|
|||
|
prefix=/usr/local
|
|||
|
cc=/usr/bin/cc
|
|||
|
cxx=/usr/bin/c++
|
|||
|
ld=/usr/bin/c++
|
|||
|
llvm=""
|
|||
|
llvm_min_ver=3.1
|
|||
|
llvm_config="llvm-config"
|
|||
|
python=/usr/bin/python
|
|||
|
javac=javac
|
|||
|
perl=/usr/bin/perl
|
|||
|
flex=/usr/bin/flex
|
|||
|
flex_min_ver=2.5.33
|
|||
|
bison=/usr/bin/bison
|
|||
|
bfd=""
|
|||
|
bfd_min_ver=2.20
|
|||
|
libxml=""
|
|||
|
swig=""
|
|||
|
swig_min_ver=1.3.29
|
|||
|
gtest=""
|
|||
|
motif=""
|
|||
|
hdf5=""
|
|||
|
dmtcp=""
|
|||
|
er7_utils=""
|
|||
|
fermi_ware=""
|
|||
|
dmtcp_min_ver=1.2.4
|
|||
|
tprocte=""
|
|||
|
bc635=""
|
|||
|
java_min_ver=1.6.0
|
|||
|
no_create=0
|
|||
|
dev=0
|
|||
|
help=0
|
|||
|
lsb_release=/usr/bin/lsb_release
|
|||
|
|
|||
|
# Get the path this script is running
|
|||
|
abspath=$(cd ${0%/*} 2>&1 /dev/null && echo $PWD/${0##*/})
|
|||
|
TRICK_HOME=`dirname "$abspath"`
|
|||
|
|
|||
|
TRICK_HOST_TYPE=`uname -s`
|
|||
|
|
|||
|
###################### Beginning of Internal Functions #########################
|
|||
|
function check_cc_version() {
|
|||
|
ver=`$cc -dumpversion 2>&1 /dev/null`
|
|||
|
maj_ver=`echo "$ver"| perl -ne 'if (/(\d+)\.(\d+)/) {print $1;} ;'`
|
|||
|
min_ver=`echo "$ver"| perl -ne 'if (/(\d+)\.(\d+)/) {print $2;} ;'`
|
|||
|
if [ $maj_ver == 4 -a $min_ver == 1 ] ; then
|
|||
|
echo "Warning: Trick will work with GCC 4.1.x but will display errors during compiliation."
|
|||
|
echo " Consider updating GCC"
|
|||
|
return 0
|
|||
|
else
|
|||
|
return 0
|
|||
|
fi
|
|||
|
return 0
|
|||
|
}
|
|||
|
################################################################################
|
|||
|
function check_flex_version() {
|
|||
|
ver=`$flex --version 2>&1 /dev/null`
|
|||
|
ver=`echo "$ver"|sed -n '/[0-9]\.[0-9]*$/p'`
|
|||
|
ver_out=`echo "$ver"|sed 's/[_a-zA-Z\/ ]//g'`
|
|||
|
ver_min=$flex_min_ver
|
|||
|
if echo $ver_out $ver_min | sed 's/[.a-z]/ /g' | awk -F " " \
|
|||
|
'{ if (($1 < $4) || \
|
|||
|
($1 == $4 && $2 < $5) || \
|
|||
|
($1 == $4 && $2 == $5 && $3 < $6)) \
|
|||
|
exit 0; else exit 1;}'
|
|||
|
then
|
|||
|
ver_url="(http://flex.sourceforge.net)"
|
|||
|
return 1
|
|||
|
fi
|
|||
|
return 0
|
|||
|
}
|
|||
|
################################################################################
|
|||
|
function check_swig_version() {
|
|||
|
ver=`$test_ver_prog -version 2>&1 /dev/null`
|
|||
|
ver=`echo "$ver"|sed -n '/[0-9]\.[0-9]*$/p'`
|
|||
|
ver_out=`echo "$ver"|sed 's/SWIG Version //g'`
|
|||
|
ver_min=$swig_min_ver
|
|||
|
if echo $ver_out $ver_min | sed 's/[.a-z]/ /g' | awk -F " " \
|
|||
|
'{ if (($1 < $4) || \
|
|||
|
($1 == $4 && $2 < $5) || \
|
|||
|
($1 == $4 && $2 == $5 && $3 < $6)) \
|
|||
|
exit 0; else exit 1;}'
|
|||
|
then
|
|||
|
ver_url="(http://swig.sourceforge.net)"
|
|||
|
return 1
|
|||
|
fi
|
|||
|
return 0
|
|||
|
}
|
|||
|
################################################################################
|
|||
|
function check_java_version() {
|
|||
|
ver=`java -version 2>&1 /dev/null`
|
|||
|
ver=`echo "$ver"|sed -n '/[0-9]\.[0-9_"]*$/p'`
|
|||
|
ver=`echo "$ver"|sed 's/java version \"//g'`
|
|||
|
ver_out=`echo "$ver"|sed 's/[_a-zA-Z].*//g'`
|
|||
|
ver_min=$java_min_ver
|
|||
|
if echo $ver_out $ver_min | sed 's/[.a-z]/ /g' | awk -F " " \
|
|||
|
'{ if (($1 < $4) || \
|
|||
|
($1 == $4 && $2 < $5) || \
|
|||
|
($1 == $4 && $2 == $5 && $3 < $6)) \
|
|||
|
exit 0; else exit 1;}'
|
|||
|
then
|
|||
|
ver_url="(http://www.java.com/en)"
|
|||
|
return 1
|
|||
|
fi
|
|||
|
return 0
|
|||
|
}
|
|||
|
################################################################################
|
|||
|
function check_dmtcp_version() {
|
|||
|
ver=`${dmtcp}/bin/dmtcp_checkpoint --version 2>&1`
|
|||
|
ver=`echo "$ver"|sed -n '/[0-9]\.[0-9_"]*$/p'`
|
|||
|
ver_out=`echo "$ver"|sed 's/[_a-zA-Z\()+/ ]//g'`
|
|||
|
ver_min=$dmtcp_min_ver
|
|||
|
if echo $ver_out $ver_min | sed 's/[.a-z]/ /g' | awk -F " " \
|
|||
|
'{ if (($1 < $4) || \
|
|||
|
($1 == $4 && $2 < $5) || \
|
|||
|
($1 == $4 && $2 == $5 && $3 < $6)) \
|
|||
|
exit 0; else exit 1;}'
|
|||
|
then
|
|||
|
ver_url="(http://dmtcp.sourceforge.net)"
|
|||
|
return 1
|
|||
|
fi
|
|||
|
return 0
|
|||
|
}
|
|||
|
################################################################################
|
|||
|
function check_bfd_version() {
|
|||
|
ver=`${bfd}/bin/objdump --version | perl -n -e 'if (/(\d+\.\d+)/) { print $1; }'`
|
|||
|
ver_min=$bfd_min_ver
|
|||
|
if echo $ver $ver_min | sed 's/[.a-z]/ /g' | awk -F " " \
|
|||
|
'{ if (($1 < $3) || \
|
|||
|
($1 == $3 && $2 < $4)) \
|
|||
|
exit 0; else exit 1;}'
|
|||
|
then
|
|||
|
ver_url="(http://www.gun.org/software/binutils)"
|
|||
|
return 1
|
|||
|
fi
|
|||
|
return 0
|
|||
|
}
|
|||
|
################################################################################
|
|||
|
function check_llvm_version() {
|
|||
|
ver=`$test_ver_prog --version 2>&1 /dev/null`
|
|||
|
ver=`echo "$ver"|sed -n '/[0-9]\.[0-9]*$/p'`
|
|||
|
ver_out=`echo "$ver"|sed 's/[_a-zA-Z].*//g'`
|
|||
|
ver_min=$llvm_min_ver
|
|||
|
if echo $ver_out $ver_min | sed 's/[.a-z]/ /g' | awk -F " " \
|
|||
|
'{ if (($1 < $3) || \
|
|||
|
($1 == $3 && $2 < $4)) \
|
|||
|
exit 0; else exit 1;}'
|
|||
|
then
|
|||
|
ver_url="(http://www.llvm.org)"
|
|||
|
return 1
|
|||
|
fi
|
|||
|
return 0
|
|||
|
}
|
|||
|
################################################################################
|
|||
|
function check_avail() {
|
|||
|
for d in ${dir[*]}
|
|||
|
do
|
|||
|
if test -e "$d/$prog"
|
|||
|
then
|
|||
|
if test -n "$ver_check"
|
|||
|
then
|
|||
|
test_ver_prog="$d/$prog"
|
|||
|
$ver_check
|
|||
|
if test $? -eq 0
|
|||
|
then
|
|||
|
return_dir=$d
|
|||
|
return 0
|
|||
|
fi
|
|||
|
else
|
|||
|
return 0
|
|||
|
fi
|
|||
|
fi
|
|||
|
done
|
|||
|
return 1
|
|||
|
}
|
|||
|
################################################################################
|
|||
|
function check_exists() {
|
|||
|
echo -n "checking for $1 $2... "
|
|||
|
if [ -e "$2" ] ; then
|
|||
|
echo "yes"
|
|||
|
return 0
|
|||
|
fi
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
}
|
|||
|
################################################################################
|
|||
|
function search_exists() {
|
|||
|
for d in ${dir[*]}
|
|||
|
do
|
|||
|
if [ -e "$d/$1" ] ; then
|
|||
|
return_dir=$d
|
|||
|
return 0
|
|||
|
fi
|
|||
|
done
|
|||
|
return 1
|
|||
|
}
|
|||
|
################################################################################
|
|||
|
function error_exit() {
|
|||
|
|
|||
|
# STDERR warning
|
|||
|
echo "[33m" >&2
|
|||
|
if [ "$ver_url" != "" ] ; then
|
|||
|
echo "version $ver_min or later is required." >&2
|
|||
|
echo "info @ $ver_url" >&2
|
|||
|
fi
|
|||
|
#echo "Enter \"$0 --help\" for more options." >&2
|
|||
|
#echo "[00m" >&2
|
|||
|
|
|||
|
echo "[31mConfigure failed[0m"
|
|||
|
exit 1
|
|||
|
}
|
|||
|
|
|||
|
###################### End of Internal Functions ###############################
|
|||
|
|
|||
|
# Loop through all args. Copied from autoconfig scripts
|
|||
|
for arg
|
|||
|
do
|
|||
|
# If the previous option needs an argument, assign it.
|
|||
|
if test -n "$prev"; then
|
|||
|
eval "$prev=\$arg"
|
|||
|
prev=
|
|||
|
continue
|
|||
|
fi
|
|||
|
|
|||
|
optarg=`expr "x$arg" : 'x[^=]*=\(.*\)'`
|
|||
|
|
|||
|
case $arg in
|
|||
|
--bc635)
|
|||
|
prev=bc635 ;;
|
|||
|
--bc635=*)
|
|||
|
bc635=$optarg ;;
|
|||
|
--bfd)
|
|||
|
prev=bfd ;;
|
|||
|
--bfd=*)
|
|||
|
bfd=$optarg ;;
|
|||
|
--bison | --yacc)
|
|||
|
prev=bison ;;
|
|||
|
--bison=* | --yacc=*)
|
|||
|
bison=$optarg ;;
|
|||
|
--cc)
|
|||
|
prev=cc ;;
|
|||
|
--cc=*)
|
|||
|
cc=$optarg ;;
|
|||
|
--cxx)
|
|||
|
prev=cxx ;;
|
|||
|
--cxx=*)
|
|||
|
cxx=$optarg ;;
|
|||
|
--dmtcp)
|
|||
|
prev=dmtcp ;;
|
|||
|
--dmtcp=*)
|
|||
|
dmtcp=$optarg ;;
|
|||
|
--er7-utils)
|
|||
|
prev=er7_utils ;;
|
|||
|
--er7-utils=*)
|
|||
|
er7_utils=$optarg ;;
|
|||
|
--fermi-ware)
|
|||
|
prev=fermi_ware ;;
|
|||
|
--fermi-ware=*)
|
|||
|
fermi_ware=$optarg ;;
|
|||
|
--flex | --lex)
|
|||
|
prev=flex ;;
|
|||
|
--flex=* | --lex=*)
|
|||
|
flex=$optarg ;;
|
|||
|
--gsl)
|
|||
|
prev=gsl ;;
|
|||
|
--gsl=*)
|
|||
|
gsl=$optarg ;;
|
|||
|
--gtest)
|
|||
|
prev=gtest ;;
|
|||
|
--gtest=*)
|
|||
|
gtest=$optarg ;;
|
|||
|
--hdf5)
|
|||
|
prev=hdf5 ;;
|
|||
|
--hdf5=*)
|
|||
|
hdf5=$optarg ;;
|
|||
|
--javac)
|
|||
|
prev=javac ;;
|
|||
|
--javac=*)
|
|||
|
javac=$optarg ;;
|
|||
|
--ld)
|
|||
|
prev=ld ;;
|
|||
|
--ld=*)
|
|||
|
ld=$optarg ;;
|
|||
|
--llvm)
|
|||
|
prev=llvm ;;
|
|||
|
--llvm=*)
|
|||
|
llvm=$optarg ;;
|
|||
|
--llvm-config)
|
|||
|
prev=llvm_config ;;
|
|||
|
--llvm-config=*)
|
|||
|
llvm_config=$optarg ;;
|
|||
|
--motif)
|
|||
|
prev=motif ;;
|
|||
|
--motif=*)
|
|||
|
motif=$optarg ;;
|
|||
|
--perl)
|
|||
|
prev=perl ;;
|
|||
|
--perl=*)
|
|||
|
perl=$optarg ;;
|
|||
|
--prefix)
|
|||
|
prev=prefix ;;
|
|||
|
--prefix=*)
|
|||
|
prefix=$optarg ;;
|
|||
|
--python)
|
|||
|
prev=python ;;
|
|||
|
--python=*)
|
|||
|
python=$optarg ;;
|
|||
|
--no_create)
|
|||
|
no_create=1 ;;
|
|||
|
--swig)
|
|||
|
prev=swig ;;
|
|||
|
--swig=*)
|
|||
|
swig=$optarg ;;
|
|||
|
--std=*)
|
|||
|
std=$optarg ;;
|
|||
|
--tprocte)
|
|||
|
prev=tprocte ;;
|
|||
|
--tprocte=*)
|
|||
|
tprocte=$optarg ;;
|
|||
|
--dev)
|
|||
|
dev=1 ;;
|
|||
|
--help | -help | -h)
|
|||
|
help=1 ;;
|
|||
|
*)
|
|||
|
echo $1: unknown argument
|
|||
|
help=1 ;;
|
|||
|
esac
|
|||
|
done
|
|||
|
|
|||
|
# If help requested, print it, otherwise write out config to config.mk
|
|||
|
if [ $help -eq 1 ] ; then
|
|||
|
cat <<EOF
|
|||
|
'`basename $0`' configures Trick and verifies prerequisites are installed.
|
|||
|
|
|||
|
Usage: $0 [OPTION]...
|
|||
|
|
|||
|
Defaults for each option are specified in brackets. If a default path fails,
|
|||
|
try setting the option equal to "" and `basename $0` will attempt to find a path,
|
|||
|
or provide desired path.
|
|||
|
|
|||
|
Configuration:
|
|||
|
[1m--bfd[0m=/path/to/bfd.h Specify the Binary File Descriptor's header
|
|||
|
file directory. The BFD library is part of the
|
|||
|
binutils-dev package installation.
|
|||
|
This is a Linux only flag.
|
|||
|
[$bfd]
|
|||
|
|
|||
|
[1m--cc[0m=/path/to/cc Specify an alternative C compiler
|
|||
|
[$cc]
|
|||
|
|
|||
|
[1m--cxx[0m=/path/to/c++ Specify an alternative C++ compiler
|
|||
|
[$cxx]
|
|||
|
|
|||
|
[1m--dmtcp[0m=/root/of/dmtcp Specify a root location for Distributed Multi-
|
|||
|
Threaded CheckPointing include files and libs
|
|||
|
[$dmtcp]
|
|||
|
|
|||
|
[1m--fermi-ware[0m=/path/to/fermi-ware Specify the fermi-ware directory
|
|||
|
[$gsl]
|
|||
|
|
|||
|
[1m--gsl[0m=/path/to/gsl_home Specify the GNU Scientific Library home
|
|||
|
directory
|
|||
|
[$gsl]
|
|||
|
|
|||
|
[1m--hdf5[0m=/root/of/hdf5 Specify a root location for Hierarchical Data
|
|||
|
Format include files and libs
|
|||
|
[$hdf5]
|
|||
|
|
|||
|
[1m--javac[0m=/path/to/javac Specify an alternative javac compiler to use
|
|||
|
[$javac]
|
|||
|
|
|||
|
[1m--ld[0m=/path/to/ld Specify an alternative linker.
|
|||
|
[$ld]
|
|||
|
|
|||
|
[1m--libxml[0m=/path/to/libxml Specify the library directory that contains
|
|||
|
libxml2.a
|
|||
|
[$libxml]
|
|||
|
|
|||
|
[1m--llvm[0m=/path/to/llvm_root Specify the LLVM root directory
|
|||
|
[$llvm]
|
|||
|
|
|||
|
[1m--llvm-config[0m=exe_name Specify the llvm-config executable name
|
|||
|
[$llvm_config]
|
|||
|
|
|||
|
[1m--motif[0m=/path/to/motif_home Specify the Motif home directory.
|
|||
|
[$motif]
|
|||
|
|
|||
|
[1m--perl[0m=/path/to/perl Specify an alternative Perl program to use
|
|||
|
[$perl]
|
|||
|
|
|||
|
[1m--python[0m=/path/to/python Specify an alternative Python interpreter to use
|
|||
|
[$python]
|
|||
|
|
|||
|
[1m--swig[0m=/path/to/swig Specify an alternative SWIG program to use
|
|||
|
[$swig]
|
|||
|
|
|||
|
[1m--std[0m=compilerFlag Specify which version of -std=c++0x or -std=c++11 compile flag
|
|||
|
[$std]
|
|||
|
|
|||
|
[1m--help, -h[0m Display this help and exit
|
|||
|
|
|||
|
Optional External Clock directories:
|
|||
|
|
|||
|
[1m--bc635[0m=/root/of/bc635 Specify a root location for BC635 driver
|
|||
|
directory
|
|||
|
[$bc635]
|
|||
|
|
|||
|
[1m--tprocte[0m=/root/of/tprocte Specify a root location for TPRO CTE headers
|
|||
|
[$tprocte]
|
|||
|
|
|||
|
Trick Developer options:
|
|||
|
|
|||
|
[1m--dev[0m Check for developer prerequisites. Defaults on
|
|||
|
if svn repository detected.
|
|||
|
|
|||
|
[1m--bison[0m=/path/to/bison Specify an alternative GNU Bison program to use
|
|||
|
[$bison]
|
|||
|
|
|||
|
[1m--flex[0m=/path/to/flex Specify an alternative Flex program to use
|
|||
|
[$flex]
|
|||
|
|
|||
|
[1m--gtest[0m=/root/of/gtest Specify a root location for Google Test
|
|||
|
include files and libs (internal Trick use)
|
|||
|
[$gtest]
|
|||
|
|
|||
|
Report bugs to <alexander.s.lin@nasa.gov>.
|
|||
|
EOF
|
|||
|
exit
|
|||
|
fi
|
|||
|
|
|||
|
hostname=`hostname -s`
|
|||
|
if [ $no_create == 0 ] ; then
|
|||
|
cat > ${TRICK_HOME}/config.status.${hostname} << EOF
|
|||
|
#!/bin/bash
|
|||
|
# Generated by configure.
|
|||
|
# Run this script to call configure with same arguments as the previous run
|
|||
|
# The "--no_create" argument tells the configure script not to overwrite this file.
|
|||
|
|
|||
|
echo "./configure $*"
|
|||
|
./configure $* --no_create
|
|||
|
EOF
|
|||
|
chmod +x config.status.${hostname}
|
|||
|
fi
|
|||
|
|
|||
|
if [ $TRICK_HOST_TYPE = "Darwin" ] ; then
|
|||
|
echo -n "checking for Xcode... "
|
|||
|
if [ -e "/usr/bin/xcode-select" ] ; then
|
|||
|
xcode_dir=`/usr/bin/xcode-select -print-path`
|
|||
|
if [ -e "$xcode_dir" ] ; then
|
|||
|
echo "yes"
|
|||
|
else
|
|||
|
echo "[33mA problem was detected in the Xcode installation.[00m"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
else
|
|||
|
echo "[33mPlease install Xcode. Xcode is a free download in the Apple App store.[00m"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
# These list of directories include the default locations for fink (/sw) and Macports (/opt/local).
|
|||
|
std_dir=("/usr" "/usr/local" "/sw" "/opt/local")
|
|||
|
std_lib_dir=("/usr/lib" "/usr/lib64" "/usr/lib/i386-linux-gnu" "/usr/lib/x86_64-linux-gnu" "/usr/local/lib" "/sw/lib" "/opt/local/lib" "/usr/lib/arm-linux-gnueabihf")
|
|||
|
|
|||
|
if [ "$cc" != "" ] ; then
|
|||
|
check_exists "C compiler" $cc
|
|||
|
else
|
|||
|
dir=${std_dir[*]}
|
|||
|
echo -n "checking for C compiler... "
|
|||
|
prog="bin/cc"
|
|||
|
search_exists $prog ${dir[*]}
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
cc=$return_dir/$prog
|
|||
|
echo "$cc"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
check_cc_version
|
|||
|
|
|||
|
if [ "$cxx" != "" ] ; then
|
|||
|
check_exists "C++ compiler" $cxx
|
|||
|
else
|
|||
|
dir=${std_dir[*]}
|
|||
|
echo -n "checking for C++ compiler... "
|
|||
|
prog="bin/c++"
|
|||
|
search_exists $prog ${dir[*]}
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
cxx=$return_dir/$prog
|
|||
|
echo "$cxx"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
if [ "$ld" != "" ] ; then
|
|||
|
check_exists "Linker" $ld
|
|||
|
else
|
|||
|
dir=${std_dir[*]}
|
|||
|
echo -n "checking for Linker... "
|
|||
|
prog="bin/c++"
|
|||
|
search_exists $prog ${dir[*]}
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
ld=$return_dir/$prog
|
|||
|
echo "$ld"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
if [ "$perl" != "" ] ; then
|
|||
|
check_exists "Perl program" $perl
|
|||
|
else
|
|||
|
dir=${std_dir[*]}
|
|||
|
echo -n "checking for Perl program... "
|
|||
|
prog="bin/perl"
|
|||
|
search_exists $prog ${dir[*]}
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
perl=$return_dir/$prog
|
|||
|
echo "$perl"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
if [ "$python" != "" ] ; then
|
|||
|
check_exists "Python interpreter" $python
|
|||
|
else
|
|||
|
dir=${std_dir[*]}
|
|||
|
echo -n "checking for Python interpreter... "
|
|||
|
prog="bin/python"
|
|||
|
search_exists $prog ${dir[*]}
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
python=$return_dir/$prog
|
|||
|
echo "$python"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
if [ "$swig" != "" ] ; then
|
|||
|
check_exists "SWIG program" $swig
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
echo -n "checking for SWIG version >= $swig_min_ver... "
|
|||
|
check_swig_version
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
echo "yes"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
else
|
|||
|
echo -n "checking for SWIG version >= $swig_min_ver... "
|
|||
|
dir=${std_dir[*]}
|
|||
|
prog="bin/swig"
|
|||
|
ver_check="check_swig_version"
|
|||
|
check_avail $prog ${dir[*]}
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
swig=$return_dir/$prog
|
|||
|
echo "yes"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
if [ "$libxml" != "" ] ; then
|
|||
|
check_exists "Libxml directory" "$libxml/libxml2.a"
|
|||
|
else
|
|||
|
dir=${std_lib_dir[*]}
|
|||
|
echo -n "checking for XML library home... "
|
|||
|
search_exists "libxml2.a"
|
|||
|
if [ $? -eq 1 ] ; then
|
|||
|
search_exists "libxml2.so"
|
|||
|
if [ $? -eq 1 ] ; then
|
|||
|
search_exists "libxml2.dylib"
|
|||
|
fi
|
|||
|
fi
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
libxml=$return_dir
|
|||
|
echo "$libxml"
|
|||
|
if [ $libxml == "/usr/lib" -o "$libxml" == "/usr/lib64" ] ; then
|
|||
|
libxml="-lxml2"
|
|||
|
else
|
|||
|
libxml="-L$return_dir -lxml2"
|
|||
|
fi
|
|||
|
else
|
|||
|
echo " [33mPlease install XML library using your OS distribution package manager.[00m"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
if [ "$motif" != "" ] ; then
|
|||
|
dir=$motif
|
|||
|
echo -n "checking for Openmotif devel home $motif/include/Xm... "
|
|||
|
search_exists "include/Xm"
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
echo "yes"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
else
|
|||
|
dir=${std_dir[*]}
|
|||
|
echo -n "checking for Openmotif devel home... "
|
|||
|
search_exists "include/Xm"
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
motif=$return_dir
|
|||
|
echo "$motif/include/Xm"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
echo -n "checking for Java version >= $java_min_ver... "
|
|||
|
check_java_version
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
echo "yes"
|
|||
|
else
|
|||
|
echo " [33mPlease install JRE using your OS distribution package manager.[00m"
|
|||
|
fi
|
|||
|
|
|||
|
if [ "$bfd" != "" ] ; then
|
|||
|
dir=$bfd
|
|||
|
echo -n "checking for binutils-devel $bfd/include/bfd.h... "
|
|||
|
search_exists "include/bfd.h"
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
check_bfd_version
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
echo "yes"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
else
|
|||
|
#don't exit if missing
|
|||
|
echo "not available"
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
# OPTIONAL PACKAGES.
|
|||
|
if [ "$dmtcp" != "" ] ; then
|
|||
|
check_exists "DMTCP dmtcpaware dir" "$dmtcp/dmtcpaware"
|
|||
|
echo -n "checking for DMTCP version >= $dmtcp_min_ver... "
|
|||
|
check_dmtcp_version
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
echo "yes"
|
|||
|
else
|
|||
|
echo " [33mPlease update DMTCP package.[00m"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
if [ "$gsl" != "" ] ; then
|
|||
|
check_exists "GNU Scientific Library include directory" "$gsl/include/gsl"
|
|||
|
fi
|
|||
|
if [ "$hdf5" != "" ] ; then
|
|||
|
check_exists "HDF5 include files" "$hdf5/include/hdf5.h"
|
|||
|
fi
|
|||
|
if [ "$tprocte" != "" ] ; then
|
|||
|
check_exists "TPRO-CTE include files" "$tprocte/h/tpro.h"
|
|||
|
fi
|
|||
|
if [ "$bc635" != "" ] ; then
|
|||
|
check_exists "BC635 include files" "$bc635/sample/bcuser.h"
|
|||
|
fi
|
|||
|
|
|||
|
# If this TRICK_HOME is from our repository.
|
|||
|
if [ -e "$TRICK_HOME/.git" -o $dev == 1 ] ; then
|
|||
|
|
|||
|
echo "Trick subversion repository detected. Additional developer configuration continuing"
|
|||
|
|
|||
|
# go ahead and set dev to 1.
|
|||
|
dev=1
|
|||
|
|
|||
|
if [ "$llvm" != "" ] ; then
|
|||
|
check_exists "$llvm_config" "$llvm/bin/$llvm_config"
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
echo -n "checking for $llvm_config version >= $llvm_min_ver... "
|
|||
|
check_llvm_version
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
echo "yes"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
else
|
|||
|
echo -n "checking for $llvm_config version >= $llvm_min_ver... "
|
|||
|
dir=${std_dir[*]}
|
|||
|
prog="bin/$llvm_config"
|
|||
|
ver_check="check_llvm_version"
|
|||
|
check_avail $prog ${dir[*]}
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
llvm=$return_dir
|
|||
|
echo "$llvm/bin/$llvm_config"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
check_exists "clang compiler" `$llvm/bin/$llvm_config --bindir`/clang
|
|||
|
check_exists "clang header files" `$llvm/bin/$llvm_config --includedir`/clang
|
|||
|
check_exists "clang library" `$llvm/bin/$llvm_config --libdir`/libclang.a
|
|||
|
|
|||
|
if [ "$gtest" != "" ] ; then
|
|||
|
check_exists "Google Test" "$gtest/include/gtest"
|
|||
|
else
|
|||
|
dir=${std_dir[*]}
|
|||
|
echo -n "checking for Google Test... "
|
|||
|
search_exists "include/gtest"
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
gtest=$return_dir
|
|||
|
echo "$gtest/include/gtest"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
echo "[33mWarning: Please install the Google Test package[00m"
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
if [ "$flex" != "" ] ; then
|
|||
|
check_exists "Flex program" $flex
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
echo -n "checking for Flex version >= $flex_min_ver... "
|
|||
|
check_flex_version
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
echo "yes"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
else
|
|||
|
echo -n "checking for Flex version >= $flex_min_ver... "
|
|||
|
dir=${std_dir[*]}
|
|||
|
prog="bin/flex"
|
|||
|
ver_check="check_flex_version"
|
|||
|
check_avail $prog ${dir[*]}
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
flex=$return_dir/$prog
|
|||
|
echo "yes"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
if [ "$bison" != "" ] ; then
|
|||
|
check_exists "GNU Bison program" $bison
|
|||
|
else
|
|||
|
dir=${std_dir[*]}
|
|||
|
echo -n "checking for GNU Bison program... "
|
|||
|
prog="bin/bison"
|
|||
|
search_exists $prog ${dir[*]}
|
|||
|
if [ $? -eq 0 ] ; then
|
|||
|
bison=$return_dir/$prog
|
|||
|
echo "$bison"
|
|||
|
else
|
|||
|
echo "no"
|
|||
|
error_exit
|
|||
|
fi
|
|||
|
fi
|
|||
|
|
|||
|
fi
|
|||
|
|
|||
|
echo "# This file was autogenerated on" `date +"%B %d, %G."` > ${TRICK_HOME}/config_${TRICK_HOST_TYPE}.mk #Overwrite file
|
|||
|
|
|||
|
# sed/awk in a different location in Linux and MacOSX.
|
|||
|
if test $TRICK_HOST_TYPE = "Linux"
|
|||
|
then
|
|||
|
sed="/bin/sed"
|
|||
|
awk="/bin/awk"
|
|||
|
elif test $TRICK_HOST_TYPE = "Darwin"
|
|||
|
then
|
|||
|
sed="/usr/bin/sed"
|
|||
|
awk="/usr/bin/awk"
|
|||
|
else
|
|||
|
sed="/bin/sed"
|
|||
|
awk="/bin/awk"
|
|||
|
fi
|
|||
|
|
|||
|
cat >> ${TRICK_HOME}/config_${TRICK_HOST_TYPE}.mk << EOF
|
|||
|
|
|||
|
SHELL := /bin/sh
|
|||
|
AWK := $awk
|
|||
|
SED := $sed
|
|||
|
CD := cd
|
|||
|
MV := /bin/mv
|
|||
|
RM := /bin/rm
|
|||
|
CP := /bin/cp
|
|||
|
PWD = \$(shell /bin/pwd)
|
|||
|
|
|||
|
CC = $cc
|
|||
|
CXX = $cxx
|
|||
|
LD = $ld
|
|||
|
PERL = $perl
|
|||
|
LEX = $flex
|
|||
|
YACC = $bison
|
|||
|
SWIG = $swig
|
|||
|
PYTHON = $python
|
|||
|
JAVAC = $javac
|
|||
|
LLVM_HOME = $llvm
|
|||
|
LLVM_CONFIG = $llvm_config
|
|||
|
|
|||
|
DEVELOPER = $dev
|
|||
|
HDF5 = $hdf5
|
|||
|
DMTCP = $dmtcp
|
|||
|
TPROCTE = $tprocte
|
|||
|
BC635 = $bc635
|
|||
|
GSL_HOME = $gsl
|
|||
|
GTEST_HOME = $gtest
|
|||
|
|
|||
|
LIBXML = $libxml
|
|||
|
MOTIF_HOME = $motif
|
|||
|
FERMI_WARE_HOME = $fermi_ware
|
|||
|
ER7_UTILS_HOME = $er7_utils
|
|||
|
|
|||
|
# experimental, default to 0
|
|||
|
HAVE_ZEROCONF = 0
|
|||
|
|
|||
|
PREFIX = $prefix
|
|||
|
CONFIG_MK = 1
|
|||
|
|
|||
|
TRICK_RANLIB =
|
|||
|
|
|||
|
PYTHON_VERSION := \$(shell \$(PYTHON) -V 2>&1 | \$(SED) -e 's/Python //' -e 's/\([0-9]\.[0-9]*\).*/\1/')
|
|||
|
HAVE_PYTHON_CONFIG := \$(shell test -e \${PYTHON}-config && echo "1")
|
|||
|
|
|||
|
ifeq (\$(HAVE_PYTHON_CONFIG),1)
|
|||
|
|
|||
|
# Get python-config ver
|
|||
|
FIRSTLINE := \$(shell head -n 1 \${PYTHON}-config | \$(SED) -e 's/\#\\!//')
|
|||
|
|
|||
|
# In python 2.7+ python-config changed to a shell script
|
|||
|
ifneq (\$(FIRSTLINE),/bin/sh)
|
|||
|
PYCONFIG_VER := \$(shell \$(FIRSTLINE) -V 2>&1 | \$(SED) -e 's/Python //' -e 's/\([0-9]\.[0-9]*\).*/\1/')
|
|||
|
# if there is a python/python-config version mismatch, don't use the config
|
|||
|
ifneq (\$(PYTHON_VERSION),\$(PYCONFIG_VER))
|
|||
|
HAVE_PYTHON_CONFIG = 0
|
|||
|
endif
|
|||
|
endif
|
|||
|
|
|||
|
# if running python-config produces a Traceback error, don't use the config
|
|||
|
PYCONFIG_ERR := \$(shell test -n "\`\${PYTHON}-config --include 2>&1 /dev/null | grep Traceback\`" && echo "1")
|
|||
|
ifeq (\$(PYCONFIG_ERR),1)
|
|||
|
HAVE_PYTHON_CONFIG = 0
|
|||
|
endif
|
|||
|
|
|||
|
endif
|
|||
|
|
|||
|
ifeq (\$(HAVE_PYTHON_CONFIG),1)
|
|||
|
PYTHON_INCLUDES := \$(shell \${PYTHON}-config --includes)
|
|||
|
PYTHON_LIB := \$(shell \${PYTHON}-config --libs)
|
|||
|
else
|
|||
|
PYTHON_INCLUDES := -I/usr/include/python\${PYTHON_VERSION}
|
|||
|
PYTHON_LIB := -lpython\${PYTHON_VERSION}
|
|||
|
endif
|
|||
|
|
|||
|
EOF
|
|||
|
|
|||
|
if test $TRICK_HOST_TYPE = "Linux"
|
|||
|
then
|
|||
|
|
|||
|
cat >> ${TRICK_HOME}/config_${TRICK_HOST_TYPE}.mk << EOF
|
|||
|
BFD_HOME := $bfd
|
|||
|
|
|||
|
SHARED_LIB_OPT := -shared
|
|||
|
|
|||
|
ifeq (\$(MAKELEVEL),0)
|
|||
|
export TRICK_LDFLAGS += -Wl,--export-dynamic
|
|||
|
export TRICK_EXEC_LINK_LIBS += -lm -lrt -lpthread -ldl -lz \$(PYTHON_LIB)
|
|||
|
endif
|
|||
|
|
|||
|
LD_WHOLE_ARCHIVE := -Wl,-whole-archive
|
|||
|
LD_NO_WHOLE_ARCHIVE := -Wl,-no-whole-archive
|
|||
|
|
|||
|
ifneq (\$(DMTCP),)
|
|||
|
TRICK_EXEC_LINK_LIBS += -L\$(DMTCP)/dmtcpaware -ldmtcpaware
|
|||
|
endif
|
|||
|
|
|||
|
ifneq (\$(TPROCTE),)
|
|||
|
TRICK_ADDITIONAL_CXXFLAGS += -D_TPRO_CTE -I\$(TPROCTE)/h
|
|||
|
TRICK_EXEC_LINK_LIBS += \$(TPROCTE)/lib/libtpro.a
|
|||
|
endif
|
|||
|
|
|||
|
ifneq (\$(BC635),)
|
|||
|
# BC635 driver ver 118 and earlier do not have proper include and lib dirs.
|
|||
|
TRICK_ADDITIONAL_CXXFLAGS += -D_BC635 -DLINUX -I\$(BC635)/sample
|
|||
|
TRICK_EXEC_LINK_LIBS += \$(BC635)/sample/bcsdklib.a
|
|||
|
endif
|
|||
|
|
|||
|
ifeq (\$(HAVE_ZEROCONF),1)
|
|||
|
TRICK_EXEC_LINK_LIBS += -lavahi-client
|
|||
|
endif
|
|||
|
|
|||
|
# Check BFD library version
|
|||
|
ifneq (\$(BFD_HOME),)
|
|||
|
HAVE_BFD := 1
|
|||
|
TRICK_EXEC_LINK_LIBS += -lbfd
|
|||
|
endif
|
|||
|
|
|||
|
# determine if -std=c++0x or -std=c++11 compile flags are desired
|
|||
|
ifeq "$std" "c++0x"
|
|||
|
TRICK_ADDITIONAL_CXXFLAGS += -std=c++0x -D_HAVE_TR1_RANDOM
|
|||
|
endif
|
|||
|
|
|||
|
ifeq "$std" "c++11"
|
|||
|
TRICK_ADDITIONAL_CXXFLAGS += -std=c++11 -D_HAVE_STL_RANDOM
|
|||
|
endif
|
|||
|
|
|||
|
EOF
|
|||
|
|
|||
|
elif test $TRICK_HOST_TYPE = "Darwin"
|
|||
|
then
|
|||
|
|
|||
|
cat >> ${TRICK_HOME}/config_${TRICK_HOST_TYPE}.mk << EOF
|
|||
|
|
|||
|
HAVE_BFD := 0
|
|||
|
|
|||
|
SHARED_LIB_OPT := -dynamiclib -Wl,-undefined,dynamic_lookup
|
|||
|
|
|||
|
TRICK_LDFLAGS +=
|
|||
|
LD_WHOLE_ARCHIVE := -Wl,-all_load
|
|||
|
LD_NO_WHOLE_ARCHIVE :=
|
|||
|
TRICK_EXEC_LINK_LIBS += -lm -lpthread -ldl -lz \$(PYTHON_LIB)
|
|||
|
|
|||
|
EOF
|
|||
|
|
|||
|
fi
|
|||
|
|
|||
|
echo ""
|
|||
|
echo "[32mTrick is ready to compile.[0m"
|
|||
|
echo "Ready to run \"make\"."
|
|||
|
|