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