add single instance mode
[uwplayer.git] / configure
1 #!/bin/sh
2
3
4 PREFIX=/usr
5 EPREFIX=$PREFIX
6
7 BINDIR=
8 SBINDIR=
9 LIBDIR=
10 LIBEXECDIR=
11 DATADIR=
12 SYSCONFDIR=
13 SHAREDSTATEDIR=
14 LOCALSTATEDIR=
15 INCLUDEDIR=
16 INFODIR=
17 MANDIR=
18
19 OS=`uname -s`
20 OS_VERSION=`uname -r`
21
22 TEMP_DIR=".tmp-`uname -n`"
23 mkdir -p $TEMP_DIR
24 if [ $? -ne 0 ]; then
25         echo "Cannot create tmp dir"
26         echo "Abort"
27 fi
28 touch $TEMP_DIR/options
29 touch $TEMP_DIR/features
30
31 # features
32
33 # help text
34 printhelp()
35 {
36         echo "Usage: $0 [OPTIONS]..."
37         cat << __EOF__
38 Installation directories:
39   --prefix=PREFIX         path prefix for architecture-independent files
40                           [/usr]
41   --exec-prefix=EPREFIX   path prefix for architecture-dependent files
42                           [PREFIX]
43
44   --bindir=DIR            user executables [EPREFIX/bin]
45   --sbindir=DIR           system admin executables [EPREFIX/sbin]
46   --libexecdir=DIR        program executables [EPREFIX/libexec]
47   --sysconfdir=DIR        system configuration files [PREFIX/etc]
48   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
49   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
50   --libdir=DIR            object code libraries [EPREFIX/lib]
51   --includedir=DIR        C header files [PREFIX/include]
52   --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
53   --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
54   --infodir=DIR           info documentation [DATAROOTDIR/info]
55   --mandir=DIR            man documentation [DATAROOTDIR/man]
56
57 __EOF__
58 }
59
60 #
61 # parse arguments 
62 #
63 for ARG in $@
64 do
65     case "$ARG" in
66                 "--prefix="*)         PREFIX=${ARG#--prefix=} ;;
67                 "--exec-prefix="*)    EPREFIX=${ARG#--exec-prefix=} ;;
68                 "--bindir="*)         BINDIR=${ARG#----bindir=} ;;
69                 "--sbindir="*)        SBINDIR=${ARG#--sbindir=} ;;
70                 "--libdir="*)         LIBDIR=${ARG#--libdir=} ;;
71                 "--libexecdir="*)     LIBEXECDIR=${ARG#--libexecdir=} ;;
72                 "--datadir="*)        DATADIR=${ARG#--datadir=} ;;
73                 "--sysconfdir="*)     SYSCONFDIR=${ARG#--sysconfdir=} ;;
74                 "--sharedstatedir="*) SHAREDSTATEDIR=${ARG#--sharedstatedir=} ;;
75                 "--localstatedir="*)  LOCALSTATEDIR=${ARG#--localstatedir=} ;;
76                 "--includedir="*)     INCLUDEDIR=${ARG#--includedir=} ;;
77                 "--infodir="*)        INFODIR=${ARG#--infodir=} ;;
78                 "--mandir"*)          MANDIR=${ARG#--mandir} ;;
79                 "--help"*) printhelp; exit 1 ;;
80                 "-"*) echo "unknown option: $ARG"; exit 1 ;;
81         esac
82 done
83
84 # set dir variables
85 if [ -z "$BINDIR" ]; then
86         BINDIR=$EPREFIX/bin
87 fi
88 if [ -z "$SBINDIR" ]; then
89         SBINDIR=$EPREFIX/sbin
90 fi
91 if [ -z "$LIBDIR" ]; then
92         LIBDIR=$EPREFIX/lib
93 fi
94 if [ -z "$LIBEXEC" ]; then
95         LIBEXECDIR=$EPREFIX/libexec
96 fi
97 if [ -z "$DATADIR" ]; then
98         DATADIR=$PREFIX/share
99 fi
100 if [ -z "$SYSCONFDIR" ]; then
101         SYSCONFDIR=$PREFIX/etc
102 fi
103 if [ -z "$SHAREDSTATEDIR" ]; then
104         SHAREDSTATEDIR=$PREFIX/com
105 fi
106 if [ -z "$LOCALSTATEDIR" ]; then
107         LOCALSTATEDIR=$PREFIX/var
108 fi
109 if [ -z "$INCLUDEDIR" ]; then
110         INCLUDEDIR=$PREFIX/include
111 fi
112 if [ -z "$INFODIR" ]; then
113         INFODIR=$PREFIX/info
114 fi
115 if [ -z "$MANDIR" ]; then
116         MANDIR=$PREFIX/man
117 fi
118
119 which pkg-config > /dev/null
120 if [ $? -eq 0 ]; then
121     PKG_CONFIG=pkg-config
122 else
123     PKG_CONFIG=false
124 fi
125
126 # Simple uname based platform detection
127 # $PLATFORM is used for platform dependent dependency selection
128 printf "detect platform... "
129 if [ $OS = SunOS ]; then
130     PLATFORM="solaris sunos unix svr4"
131 fi
132 if [ $OS = Linux ]; then
133     PLATFORM="linux unix"
134 fi
135 if [ $OS = FreeBSD ]; then
136     PLATFORM="freebsd bsd unix"
137 fi
138 if [ $OS = Darwin ]; then
139     PLATFORM="macos osx bsd unix"
140 fi
141 echo $OS | grep "MINGW" > /dev/null
142 if [ $? -eq 0 ]; then
143     PLATFORM="windows mingw"
144 fi
145
146 if [ -z "$PLATFORM" ]; then
147     PLATFORM="unix"
148 fi
149
150 for p in $PLATFORM
151 do
152         PLATFORM_NAME=$p
153         break
154 done
155 echo $PLATFORM_NAME
156
157 isplatform()
158 {
159     for p in $PLATFORM
160     do
161         if [ $p = $1 ]; then
162             return 0
163         fi
164     done
165     return 1
166 }
167 isnotplatform()
168 {
169     for p in $PLATFORM
170     do
171         if [ $p = $1 ]; then
172             return 1
173         fi
174     done
175     return 0
176 }
177
178 # generate config.mk and config.h
179 cat > $TEMP_DIR/config.mk << __EOF__
180 #
181 # config.mk generated by configure
182 #
183
184 # general vars
185
186 PREFIX=$PREFIX
187 EPREFIX=$EPREFIX
188
189 BINDIR=$BINDIR
190 SBINDIR=$SBINDIR
191 LIBDIR=$LIBDIR
192 LIBEXECDIR=$LIBEXECDIR
193 DATADIR=$DATADIR
194 SYSCONFDIR=$SYSCONFDIR
195 SHAREDSTATEDIR=$SHAREDSTATEDIR
196 LOCALSTATEDIR=$LOCALSTATEDIR
197 INCLUDEDIR=$INCLUDEDIR
198 INFODIR=$INFODIR
199 MANDIR=$MANDIR
200
201 __EOF__
202
203 echo > $TEMP_DIR/make.mk
204
205 ENV_CFLAGS=$CFLAGS
206 ENV_LDFLAGS=$LDFLAGS
207 ENV_CXXFLAGS=$CXXFLAGS
208
209 # Toolchain detection
210 # this will insert make vars to config.mk
211 . make/toolchain.sh
212
213 # add user specified flags to config.mk
214 echo >> $TEMP_DIR/config.mk
215 if [ ! -z "${ENV_CFLAGS}" ]; then
216     echo "CFLAGS += $ENV_CFLAGS" >> $TEMP_DIR/config.mk
217 fi
218 if [ ! -z "${ENV_CXXFLAGS}" ]; then
219     echo "CXXFLAGS += $ENV_CXXFLAGS" >> $TEMP_DIR/config.mk
220 fi
221 if [ ! -z "${ENV_LDFLAGS}" ]; then
222     echo "LDFLAGS += $ENV_LDFLAGS" >> $TEMP_DIR/config.mk
223 fi
224
225 #
226 # DEPENDENCIES
227 #
228
229 dependency_xft()
230 {
231     printf "checking for xft... "
232     # dependency xft 
233     while true
234     do
235         if [ -z "$PKG_CONFIG" ]; then
236                 break
237         fi
238                 $PKG_CONFIG xft
239         if [ $? -ne 0 ] ; then
240             break
241         fi
242         CFLAGS="$CFLAGS `$PKG_CONFIG --cflags xft`"
243         LDFLAGS="$LDFLAGS `$PKG_CONFIG --libs xft`"
244                 $PKG_CONFIG fontconfig
245         if [ $? -ne 0 ] ; then
246             break
247         fi
248         CFLAGS="$CFLAGS `$PKG_CONFIG --cflags fontconfig`"
249         LDFLAGS="$LDFLAGS `$PKG_CONFIG --libs fontconfig`"
250                 echo yes
251         return 0
252     done
253         
254         echo no
255         return 1
256 }
257 dependency_motif()
258 {
259     printf "checking for motif... "
260     # dependency motif 
261     while true
262     do
263         CFLAGS="$CFLAGS -DUI_MOTIF"    
264         LDFLAGS="$LDFLAGS -lXm -lXt -lX11"    
265                 echo yes
266         return 0
267     done
268         
269         echo no
270         return 1
271 }
272
273 DEPENDENCIES_FAILED=
274 ERROR=0
275 # general dependencies
276 CFLAGS=
277 LDFLAGS=
278 while true
279 do
280     if isnotplatform "unix"; then
281         break
282     fi
283     while true
284     do
285         
286                 cat >> $TEMP_DIR/make.mk << __EOF__
287 OBJ_EXT = o
288 LIB_EXT = a
289 PACKAGE_SCRIPT = package_unix.sh
290
291 __EOF__
292         
293         break
294     done
295     
296     break
297 done
298 while true
299 do
300     while true
301     do
302         
303         LDFLAGS="$LDFLAGS -lpthread"    
304         
305         break
306     done
307     
308     break
309 done
310 while true
311 do
312     if isnotplatform "bsd"; then
313         break
314     fi
315     while true
316     do
317         
318         CFLAGS="$CFLAGS -I/usr/local/include"    
319         LDFLAGS="$LDFLAGS -L/usr/local/lib"    
320         
321         break
322     done
323     
324     break
325 done
326
327 # add general dependency flags to config.mk
328 echo >> $TEMP_DIR/config.mk
329 if [ ! -z "${CFLAGS}" ]; then
330     echo "CFLAGS += $CFLAGS" >> $TEMP_DIR/config.mk
331 fi
332 if [ ! -z "${CXXFLAGS}" ]; then
333     echo "CXXFLAGS += $CXXFLAGS" >> $TEMP_DIR/config.mk
334 fi
335 if [ ! -z "${LDFLAGS}" ]; then
336     echo "LDFLAGS += $LDFLAGS" >> $TEMP_DIR/config.mk
337 fi
338
339 #
340 # OPTION VALUES
341 #
342
343 #
344 # TARGETS
345 #
346 CFLAGS=
347 CXXFLAGS=
348 LDFLAGS=
349
350 # Target: app
351 CFLAGS=
352 LDFLAGS=
353 CXXFLAGS=
354
355 dependency_motif
356 if [ $? -ne 0 ]; then
357         DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED motif "
358         ERROR=1
359 fi
360 dependency_xft
361 if [ $? -ne 0 ]; then
362         DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED xft "
363         ERROR=1
364 fi
365
366 # Features
367
368
369 echo >> $TEMP_DIR/config.mk
370 if [ ! -z "${CFLAGS}" ]; then
371     echo "APP_CFLAGS  += $CFLAGS" >> $TEMP_DIR/config.mk
372 fi
373 if [ ! -z "${CXXFLAGS}" ]; then
374     echo "APP_CXXFLAGS += $CXXFLAGS" >> $TEMP_DIR/config.mk
375 fi
376 if [ ! -z "${LDFLAGS}" ]; then
377     echo "APP_LDFLAGS += $LDFLAGS" >> $TEMP_DIR/config.mk
378 fi
379
380 if [ $ERROR -ne 0 ]; then
381         echo
382         echo "Error: Unresolved dependencies"
383         echo $DEPENDENCIES_FAILED
384         rm -Rf $TEMP_DIR
385         exit 1
386 fi
387
388 echo "configure finished"
389 echo
390 echo "Build Config:"
391 echo "  PREFIX:    $PREFIX"
392 echo "  TOOLCHAIN: $TOOLCHAIN_NAME"
393 echo
394 cat $TEMP_DIR/config.mk $TEMP_DIR/make.mk > config.mk
395 rm -Rf $TEMP_DIR
396
397