#!/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"