1#!/bin/sh 2 3# defaults 4DEBUG=0 5 6# parse options 7while [ $# -gt 0 ]; do 8 case $1 in 9 --with-debug|--debug|-d) 10 DEBUG=1 11 ;; 12 --help|-help|-h) 13 echo "usage: $0 [ options ]" 14 echo "available options:" 15 echo " --with-debug (or -d): enable debugging" 16 echo " --help (or -h): show this message" 17 exit 1 18 ;; 19 *) 20 echo "Unknown option '$1', try -h for help" 21 exit 1 22 ;; 23 esac 24 shift 25done 26 27# Some known configs: 28# 29# uname -s uname -r uname -m uname -p 30# ======== =========== ======== ======== 31# SunOS 5.6 sun4u sparc 32# Linux 2.2.17 i686 unknown 33# FreeBSD 4.1-RELEASE i386 i386 34 35UNAME_S=`uname -s` 36UNAME_R=`uname -r` 37UNAME_M=`uname -m` 38UNAME_P=`uname -p` 39ARCH=${UNAME_S}-${UNAME_R}-${UNAME_M}-${UNAME_P} 40GCC=`which gcc` 41 42case "$UNAME_S" in 43 Linux) 44 if [ "$DEBUG" -ne 0 ]; then 45 CCDBG="-g" 46 LDDBG="-g" 47 else 48 CCDBG="-DNDEBUG" 49 LDDBG="" 50 fi 51 CC=gcc 52 CFLAGS="$CCDBG -D_UNIX -D_LINUX -Wall -I/usr/local/include" 53 CXX=g++ 54 CXXFLAGS=${CFLAGS} 55 AR=ar 56 ARFLAGS="-rc" 57 LD=gcc 58 LDFLAGS="$LDDBG -L/usr/local/lib" 59 SYSLIBS="-lpthread" 60 ;; 61 FreeBSD|DragonFly) 62 OSVER=50 63 if [ "$DEBUG" -ne 0 ]; then 64 CCDBG="-g" 65 LDDBG="-g" 66 else 67 CCDBG="-DNDEBUG" 68 LDDBG="" 69 fi 70 CFLAGS="$CCDBG -D_UNIX -D_BSD=$OSVER -Wall" 71 CXXFLAGS=${CFLAGS} 72 AR=ar 73 ARFLAGS="-rc" 74 LDFLAGS="$LDDBG" 75 SYSLIBS="-lpthread" 76 ;; 77 SunOS) 78 case "$UNAME_R" in 79 5.6) 80 OSVER=56 81 ;; 82 5.7) 83 # not tested, check socklen_t and getsockopt(2) 84 OSVER=57 85 ;; 86 5.8) 87 OSVER=58 88 ;; 89 *) 90 OSVER=1 91 ;; 92 esac 93 # Prefer gcc to the native cc here because I don't have a native 94 # compiler to test with 95 if [ -n "$GCC" ]; then 96 if [ "$DEBUG" -ne 0 ]; then 97 CCDBG="-g" 98 LDDBG="-g" 99 else 100 CCDBG="-DNDEBUG" 101 LDDBG="" 102 fi 103 CC=gcc 104 CFLAGS="$CCDBG -D_UNIX -D_SOLARIS=$OSVER -Wall -I/usr/local/include" 105 CXX=g++ 106 CXXFLAGS=${CFLAGS} 107 LD=gcc 108 LDFLAGS="$LDDBG -L/usr/local/lib" 109 else 110 CC=cc 111 CFLAGS="-DNDEBUG -D_UNIX -D_SOLARIS=$OSVER -I/usr/local/include" 112 CXX=c++ 113 CXXFLAGS=${CFLAGS} 114 LD=ld 115 LDFLAGS="-L/usr/local/lib" 116 fi 117 AR=ar 118 ARFLAGS="-rc" 119 SYSLIBS="-lnsl -lsocket" 120 ;; 121 *) 122 CC=cc 123 CFLAGS="-DNDEBUG -D_UNIX -I/usr/local/include" 124 CXX=c++ 125 CXXFLAGS=${CFLAGS} 126 AR=ar 127 ARFLAGS="-rc" 128 LD=ld 129 LDFLAGS="-L/usr/local/lib" 130 ;; 131esac 132 133if [ ! -x "`which $CC`" ]; then 134 echo "Error: compiler '$CC' not found" 135 exit 1 136fi 137 138if [ "$CC" = "gcc" ]; then 139 # gcc 2.7.2.3 has problems with RTTI 140 # i haven't tested gcc 2.8 but assume it works 141 # gcc 2.95 and later is preferred 142 GCCVER=`gcc --version` 143 case "$GCCVER" in 144 2.7.*) 145 echo "gcc 2.7 detected." 146 echo "Upgrading to gcc 2.95 or later is HIGHLY recommended." 147 if [ "$UNAME_S" = "SunOS" ]; then 148 CFLAGS="-DSOLARIS_GCC_HACK $CFLAGS" 149 CXXFLAGS="-DSOLARIS_GCC_HACK $CFLAGS" 150 fi 151 CXXFLAGS="$CXXFLAGS -DNO_RTTI" 152 ;; 153 2.8.*) 154 # adjust as necessary, these are guesses ;-) 155 echo "gcc 2.8 detected." 156 echo "Upgrading to gcc 2.95 or later is recommended." 157 if [ "$UNAME_S" = "SunOS" ]; then 158 CFLAGS="-DSOLARIS_GCC_HACK $CFLAGS" 159 CXXFLAGS="-DSOLARIS_GCC_HACK $CFLAGS" 160 fi 161 CXXFLAGS="$CXXFLAGS -frtti" 162 ;; 163 2.9*) 164 # no problem (NB: haven't tested Redhat 7.0's compiler) 165 ;; 166 3.*) 167 # assume it will work 168 ;; 169 *) 170 echo "Warning: gcc version is unknown" 171 ;; 172 esac 173fi 174 175for D in . libapp librtsp rtspproxy; do 176 cat $D/Makefile.in | sed "s%@CC@%${CC}%g 177 s%@CXX@%${CXX}%g 178 s%@AR@%${AR}%g 179 s%@LD@%${LD}%g 180 s%@CFLAGS@%${CFLAGS}%g 181 s%@CXXFLAGS@%${CXXFLAGS}%g 182 s%@ARFLAGS@%${ARFLAGS}%g 183 s%@LDFLAGS@%${LDFLAGS}%g 184 s%@SYSLIBS@%${SYSLIBS}%" > $D/Makefile || exit 1 185done 186 187echo "configuration successful" 188