#!/bin/sh
# defaults
DEBUG=0
# parse options
while [ $# -gt 0 ]; do
case $1 in
--with-debug|--debug|-d)
DEBUG=1
;;
--help|-help|-h)
echo "usage: $0 [ options ]"
echo "available options:"
echo " --with-debug (or -d): enable debugging"
echo " --help (or -h): show this message"
exit 1
;;
*)
echo "Unknown option '$1', try -h for help"
exit 1
;;
esac
shift
done
# Some known configs:
#
# uname -s uname -r uname -m uname -p
# ======== =========== ======== ========
# SunOS 5.6 sun4u sparc
# Linux 2.2.17 i686 unknown
# FreeBSD 4.1-RELEASE i386 i386
UNAME_S=`uname -s`
UNAME_R=`uname -r`
UNAME_M=`uname -m`
UNAME_P=`uname -p`
ARCH=${UNAME_S}-${UNAME_R}-${UNAME_M}-${UNAME_P}
GCC=`which gcc`
case "$UNAME_S" in
Linux)
if [ "$DEBUG" -ne 0 ]; then
CCDBG="-g"
LDDBG="-g"
else
CCDBG="-DNDEBUG"
LDDBG=""
fi
CC=gcc
CFLAGS="$CCDBG -D_UNIX -D_LINUX -Wall -I/usr/local/include"
CXX=g++
CXXFLAGS=${CFLAGS}
AR=ar
ARFLAGS="-rc"
LD=gcc
LDFLAGS="$LDDBG -L/usr/local/lib"
SYSLIBS="-lpthread"
;;
FreeBSD)
case "$UNAME_R" in
2.*)
OSVER=20
;;
3.*)
OSVER=30
;;
4.*)
OSVER=40
;;
*)
# Assume 5.0 +
OSVER=50
;;
esac
if [ "$DEBUG" -ne 0 ]; then
CCDBG="-g"
LDDBG="-g"
else
CCDBG="-DNDEBUG"
LDDBG=""
fi
CC=gcc
CFLAGS="$CCDBG -D_UNIX -D_BSD=$OSVER -Wall -I/usr/local/include"
CXX=g++
CXXFLAGS=${CFLAGS}
AR=ar
ARFLAGS="-rc"
LD=gcc
LDFLAGS="$LDDBG -pthread -L/usr/local/lib"
SYSLIBS=""
;;
SunOS)
case "$UNAME_R" in
5.6)
OSVER=56
;;
5.7)
# not tested, check socklen_t and getsockopt(2)
OSVER=57
;;
5.8)
OSVER=58
;;
*)
OSVER=1
;;
esac
# Prefer gcc to the native cc here because I don't have a native
# compiler to test with
if [ -n "$GCC" ]; then
if [ "$DEBUG" -ne 0 ]; then
CCDBG="-g"
LDDBG="-g"
else
CCDBG="-DNDEBUG"
LDDBG=""
fi
CC=gcc
CFLAGS="$CCDBG -D_UNIX -D_SOLARIS=$OSVER -Wall -I/usr/local/include"
CXX=g++
CXXFLAGS=${CFLAGS}
LD=gcc
LDFLAGS="$LDDBG -L/usr/local/lib"
else
CC=cc
CFLAGS="-DNDEBUG -D_UNIX -D_SOLARIS=$OSVER -I/usr/local/include"
CXX=c++
CXXFLAGS=${CFLAGS}
LD=ld
LDFLAGS="-L/usr/local/lib"
fi
AR=ar
ARFLAGS="-rc"
SYSLIBS="-lnsl -lsocket"
;;
*)
CC=cc
CFLAGS="-DNDEBUG -D_UNIX -I/usr/local/include"
CXX=c++
CXXFLAGS=${CFLAGS}
AR=ar
ARFLAGS="-rc"
LD=ld
LDFLAGS="-L/usr/local/lib"
;;
esac
if [ ! -x "`which $CC`" ]; then
echo "Error: compiler '$CC' not found"
exit 1
fi
if [ "$CC" = "gcc" ]; then
# gcc 2.7.2.3 has problems with RTTI
# i haven't tested gcc 2.8 but assume it works
# gcc 2.95 and later is preferred
GCCVER=`gcc --version`
case "$GCCVER" in
2.7.*)
echo "gcc 2.7 detected."
echo "Upgrading to gcc 2.95 or later is HIGHLY recommended."
if [ "$UNAME_S" = "SunOS" ]; then
CFLAGS="-DSOLARIS_GCC_HACK $CFLAGS"
CXXFLAGS="-DSOLARIS_GCC_HACK $CFLAGS"
fi
CXXFLAGS="$CXXFLAGS -DNO_RTTI"
;;
2.8.*)
# adjust as necessary, these are guesses ;-)
echo "gcc 2.8 detected."
echo "Upgrading to gcc 2.95 or later is recommended."
if [ "$UNAME_S" = "SunOS" ]; then
CFLAGS="-DSOLARIS_GCC_HACK $CFLAGS"
CXXFLAGS="-DSOLARIS_GCC_HACK $CFLAGS"
fi
CXXFLAGS="$CXXFLAGS -frtti"
;;
2.9*)
# no problem (NB: haven't tested Redhat 7.0's compiler)
;;
3.*)
# assume it will work
;;
*)
echo "Warning: gcc version is unknown"
;;
esac
fi
for D in . libapp librtsp rtspproxy; do
cat $D/Makefile.in | sed "s%@CC@%${CC}%g
s%@CXX@%${CXX}%g
s%@AR@%${AR}%g
s%@LD@%${LD}%g
s%@CFLAGS@%${CFLAGS}%g
s%@CXXFLAGS@%${CXXFLAGS}%g
s%@ARFLAGS@%${ARFLAGS}%g
s%@LDFLAGS@%${LDFLAGS}%g
s%@SYSLIBS@%${SYSLIBS}%" > $D/Makefile || exit 1
done
echo "configuration successful"
syntax highlighted by Code2HTML, v. 0.9.1