mizucp: implement scan thread
[mizunara.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 Options:
58   --toolkit=(gtk3|motif)
59
60 __EOF__
61 }
62
63 #
64 # parse arguments 
65 #
66 for ARG in $@
67 do
68     case "$ARG" in
69                 "--prefix="*)         PREFIX=${ARG#--prefix=} ;;
70                 "--exec-prefix="*)    EPREFIX=${ARG#--exec-prefix=} ;;
71                 "--bindir="*)         BINDIR=${ARG#----bindir=} ;;
72                 "--sbindir="*)        SBINDIR=${ARG#--sbindir=} ;;
73                 "--libdir="*)         LIBDIR=${ARG#--libdir=} ;;
74                 "--libexecdir="*)     LIBEXECDIR=${ARG#--libexecdir=} ;;
75                 "--datadir="*)        DATADIR=${ARG#--datadir=} ;;
76                 "--sysconfdir="*)     SYSCONFDIR=${ARG#--sysconfdir=} ;;
77                 "--sharedstatedir="*) SHAREDSTATEDIR=${ARG#--sharedstatedir=} ;;
78                 "--localstatedir="*)  LOCALSTATEDIR=${ARG#--localstatedir=} ;;
79                 "--includedir="*)     INCLUDEDIR=${ARG#--includedir=} ;;
80                 "--infodir="*)        INFODIR=${ARG#--infodir=} ;;
81                 "--mandir"*)          MANDIR=${ARG#--mandir} ;;
82                 "--help"*) printhelp; exit 1 ;;
83         "--toolkit="*) OPT_TOOLKIT=${ARG#--toolkit=} ;;
84                 "-"*) echo "unknown option: $ARG"; exit 1 ;;
85         esac
86 done
87
88 # set dir variables
89 if [ -z "$BINDIR" ]; then
90         BINDIR=$EPREFIX/bin
91 fi
92 if [ -z "$SBINDIR" ]; then
93         SBINDIR=$EPREFIX/sbin
94 fi
95 if [ -z "$LIBDIR" ]; then
96         LIBDIR=$EPREFIX/lib
97 fi
98 if [ -z "$LIBEXEC" ]; then
99         LIBEXECDIR=$EPREFIX/libexec
100 fi
101 if [ -z "$DATADIR" ]; then
102         DATADIR=$PREFIX/share
103 fi
104 if [ -z "$SYSCONFDIR" ]; then
105         SYSCONFDIR=$PREFIX/etc
106 fi
107 if [ -z "$SHAREDSTATEDIR" ]; then
108         SHAREDSTATEDIR=$PREFIX/com
109 fi
110 if [ -z "$LOCALSTATEDIR" ]; then
111         LOCALSTATEDIR=$PREFIX/var
112 fi
113 if [ -z "$INCLUDEDIR" ]; then
114         INCLUDEDIR=$PREFIX/include
115 fi
116 if [ -z "$INFODIR" ]; then
117         INFODIR=$PREFIX/info
118 fi
119 if [ -z "$MANDIR" ]; then
120         MANDIR=$PREFIX/man
121 fi
122
123 which pkg-config > /dev/null
124 if [ $? -eq 0 ]; then
125     PKG_CONFIG=pkg-config
126 else
127     PKG_CONFIG=false
128 fi
129
130 # Simple uname based platform detection
131 # $PLATFORM is used for platform dependent dependency selection
132 printf "detect platform... "
133 if [ $OS = SunOS ]; then
134     PLATFORM="solaris sunos unix svr4"
135 fi
136 if [ $OS = Linux ]; then
137     PLATFORM="linux unix"
138 fi
139 if [ $OS = FreeBSD ]; then
140     PLATFORM="freebsd bsd unix"
141 fi
142 if [ $OS = Darwin ]; then
143     PLATFORM="macos osx bsd unix"
144 fi
145 echo $OS | grep "MINGW" > /dev/null
146 if [ $? -eq 0 ]; then
147     PLATFORM="windows mingw"
148 fi
149
150 if [ -z "$PLATFORM" ]; then
151     PLATFORM="unix"
152 fi
153
154 for p in $PLATFORM
155 do
156         PLATFORM_NAME=$p
157         break
158 done
159 echo $PLATFORM_NAME
160
161 isplatform()
162 {
163     for p in $PLATFORM
164     do
165         if [ $p = $1 ]; then
166             return 0
167         fi
168     done
169     return 1
170 }
171 isnotplatform()
172 {
173     for p in $PLATFORM
174     do
175         if [ $p = $1 ]; then
176             return 1
177         fi
178     done
179     return 0
180 }
181
182 # generate config.mk and config.h
183 cat > $TEMP_DIR/config.mk << __EOF__
184 #
185 # config.mk generated by configure
186 #
187
188 # general vars
189
190 PREFIX=$PREFIX
191 EPREFIX=$EPREFIX
192
193 BINDIR=$BINDIR
194 SBINDIR=$SBINDIR
195 LIBDIR=$LIBDIR
196 LIBEXECDIR=$LIBEXECDIR
197 DATADIR=$DATADIR
198 SYSCONFDIR=$SYSCONFDIR
199 SHAREDSTATEDIR=$SHAREDSTATEDIR
200 LOCALSTATEDIR=$LOCALSTATEDIR
201 INCLUDEDIR=$INCLUDEDIR
202 INFODIR=$INFODIR
203 MANDIR=$MANDIR
204
205 __EOF__
206
207 echo > $TEMP_DIR/make.mk
208
209 ENV_CFLAGS=$CFLAGS
210 ENV_LDFLAGS=$LDFLAGS
211 ENV_CXXFLAGS=$CXXFLAGS
212
213 # Toolchain detection
214 # this will insert make vars to config.mk
215 . make/toolchain.sh
216
217 # add user specified flags to config.mk
218 echo >> $TEMP_DIR/config.mk
219 if [ ! -z "${ENV_CFLAGS}" ]; then
220     echo "CFLAGS += $ENV_CFLAGS" >> $TEMP_DIR/config.mk
221 fi
222 if [ ! -z "${ENV_CXXFLAGS}" ]; then
223     echo "CXXFLAGS += $ENV_CXXFLAGS" >> $TEMP_DIR/config.mk
224 fi
225 if [ ! -z "${ENV_LDFLAGS}" ]; then
226     echo "LDFLAGS += $ENV_LDFLAGS" >> $TEMP_DIR/config.mk
227 fi
228
229 #
230 # DEPENDENCIES
231 #
232
233 dependency_curl()
234 {
235     printf "checking for curl... "
236     # dependency curl platform="windows"
237     while true
238     do
239         if isnotplatform "windows"; then
240             break
241         fi
242         CFLAGS="$CFLAGS -I/mingw/include"    
243         LDFLAGS="$LDFLAGS -lcurl"    
244                 echo yes
245         return 0
246     done
247         
248     # dependency curl platform="macos"
249     while true
250     do
251         if isnotplatform "macos"; then
252             break
253         fi
254         curl-config --cflags > /dev/null
255         if [ $? -eq 0 ]; then
256             CFLAGS="$CFLAGS `curl-config --cflags`"
257         else
258             break
259         fi
260         curl-config --ldflags > /dev/null
261         if [ $? -eq 0 ]; then
262             LDFLAGS="$LDFLAGS `curl-config --ldflags`"
263         else
264             break
265         fi
266                 echo yes
267         return 0
268     done
269         
270     # dependency curl 
271     while true
272     do
273         if [ -z "$PKG_CONFIG" ]; then
274                 break
275         fi
276                 $PKG_CONFIG libcurl
277         if [ $? -ne 0 ] ; then
278             break
279         fi
280         CFLAGS="$CFLAGS `$PKG_CONFIG --cflags libcurl`"
281         LDFLAGS="$LDFLAGS `$PKG_CONFIG --libs libcurl`"
282                 echo yes
283         return 0
284     done
285         
286     # dependency curl 
287     while true
288     do
289         curl-config --cflags > /dev/null
290         if [ $? -eq 0 ]; then
291             CFLAGS="$CFLAGS `curl-config --cflags`"
292         else
293             break
294         fi
295         curl-config --ldflags > /dev/null
296         if [ $? -eq 0 ]; then
297             LDFLAGS="$LDFLAGS `curl-config --ldflags`"
298         else
299             break
300         fi
301         which curl-config > /dev/null
302         if [ $? -ne 0 ]; then
303                 break
304         fi
305                 echo yes
306         return 0
307     done
308         
309         echo no
310         return 1
311 }
312 dependency_gtk3()
313 {
314     printf "checking for gtk3... "
315     # dependency gtk3 
316     while true
317     do
318         if [ -z "$PKG_CONFIG" ]; then
319                 break
320         fi
321                 $PKG_CONFIG gtk+-3.0
322         if [ $? -ne 0 ] ; then
323             break
324         fi
325         CFLAGS="$CFLAGS `$PKG_CONFIG --cflags gtk+-3.0`"
326         LDFLAGS="$LDFLAGS `$PKG_CONFIG --libs gtk+-3.0`"
327         CFLAGS="$CFLAGS -DUI_GTK3"    
328         LDFLAGS="$LDFLAGS -lpthread"    
329                 echo yes
330         return 0
331     done
332         
333         echo no
334         return 1
335 }
336 dependency_openssl()
337 {
338     printf "checking for openssl... "
339     # dependency openssl platform="windows"
340     while true
341     do
342         if isnotplatform "windows"; then
343             break
344         fi
345         LDFLAGS="$LDFLAGS -lssl -lcrypto"    
346                 echo yes
347         return 0
348     done
349         
350     # dependency openssl platform="macos"
351     while true
352     do
353         if isnotplatform "macos"; then
354             break
355         fi
356         LDFLAGS="$LDFLAGS -framework CoreFoundation"    
357                 echo yes
358         return 0
359     done
360         
361     # dependency openssl platform="bsd"
362     while true
363     do
364         if isnotplatform "bsd"; then
365             break
366         fi
367                 if isplatform "macos"; then
368             break
369         fi
370         LDFLAGS="$LDFLAGS -lssl -lcrypto"    
371                 echo yes
372         return 0
373     done
374         
375     # dependency openssl 
376     while true
377     do
378         if [ -z "$PKG_CONFIG" ]; then
379                 break
380         fi
381                 $PKG_CONFIG openssl
382         if [ $? -ne 0 ] ; then
383             break
384         fi
385         CFLAGS="$CFLAGS `$PKG_CONFIG --cflags openssl`"
386         LDFLAGS="$LDFLAGS `$PKG_CONFIG --libs openssl`"
387                 echo yes
388         return 0
389     done
390         
391         echo no
392         return 1
393 }
394 dependency_motif()
395 {
396     printf "checking for motif... "
397     # dependency motif 
398     while true
399     do
400         CFLAGS="$CFLAGS -DUI_MOTIF"    
401         LDFLAGS="$LDFLAGS -lXm -lXt -lX11 -lpthread"    
402                 echo yes
403         return 0
404     done
405         
406         echo no
407         return 1
408 }
409 dependency_libxml2()
410 {
411     printf "checking for libxml2... "
412     # dependency libxml2 platform="windows"
413     while true
414     do
415         if isnotplatform "windows"; then
416             break
417         fi
418         xml2-config --cflags > /dev/null
419         if [ $? -eq 0 ]; then
420             CFLAGS="$CFLAGS `xml2-config --cflags`"
421         else
422             break
423         fi
424         xml2-config --libs > /dev/null
425         if [ $? -eq 0 ]; then
426             LDFLAGS="$LDFLAGS `xml2-config --libs`"
427         else
428             break
429         fi
430                 echo yes
431         return 0
432     done
433         
434     # dependency libxml2 platform="macos"
435     while true
436     do
437         if isnotplatform "macos"; then
438             break
439         fi
440         xml2-config --cflags > /dev/null
441         if [ $? -eq 0 ]; then
442             CFLAGS="$CFLAGS `xml2-config --cflags`"
443         else
444             break
445         fi
446         xml2-config --libs > /dev/null
447         if [ $? -eq 0 ]; then
448             LDFLAGS="$LDFLAGS `xml2-config --libs`"
449         else
450             break
451         fi
452                 echo yes
453         return 0
454     done
455         
456     # dependency libxml2 
457     while true
458     do
459         if [ -z "$PKG_CONFIG" ]; then
460                 break
461         fi
462                 $PKG_CONFIG libxml-2.0
463         if [ $? -ne 0 ] ; then
464             break
465         fi
466         CFLAGS="$CFLAGS `$PKG_CONFIG --cflags libxml-2.0`"
467         LDFLAGS="$LDFLAGS `$PKG_CONFIG --libs libxml-2.0`"
468                 echo yes
469         return 0
470     done
471         
472     # dependency libxml2 
473     while true
474     do
475         xml2-config --cflags > /dev/null
476         if [ $? -eq 0 ]; then
477             CFLAGS="$CFLAGS `xml2-config --cflags`"
478         else
479             break
480         fi
481         xml2-config --libs > /dev/null
482         if [ $? -eq 0 ]; then
483             LDFLAGS="$LDFLAGS `xml2-config --libs`"
484         else
485             break
486         fi
487                 echo yes
488         return 0
489     done
490         
491         echo no
492         return 1
493 }
494
495 DEPENDENCIES_FAILED=
496 ERROR=0
497 # general dependencies
498 CFLAGS=
499 LDFLAGS=
500 while true
501 do
502     if isnotplatform "unix"; then
503         break
504     fi
505     if isplatform "macos"; then
506         break
507     fi
508     while true
509     do
510         
511                 cat >> $TEMP_DIR/make.mk << __EOF__
512 OBJ_EXT = o
513 LIB_EXT = a
514 PACKAGE_SCRIPT = package_unix.sh
515
516 __EOF__
517         
518         break
519     done
520     
521     break
522 done
523 while true
524 do
525     while true
526     do
527         
528         LDFLAGS="$LDFLAGS -lpthread"    
529         
530         break
531     done
532     
533     break
534 done
535 while true
536 do
537     if isnotplatform "bsd"; then
538         break
539     fi
540     if isplatform "macos"; then
541         break
542     fi
543     while true
544     do
545         
546         CFLAGS="$CFLAGS -I/usr/local/include"    
547         LDFLAGS="$LDFLAGS -L/usr/local/lib"    
548         
549         break
550     done
551     
552     break
553 done
554
555 # add general dependency flags to config.mk
556 echo >> $TEMP_DIR/config.mk
557 if [ ! -z "${CFLAGS}" ]; then
558     echo "CFLAGS += $CFLAGS" >> $TEMP_DIR/config.mk
559 fi
560 if [ ! -z "${CXXFLAGS}" ]; then
561     echo "CXXFLAGS += $CXXFLAGS" >> $TEMP_DIR/config.mk
562 fi
563 if [ ! -z "${LDFLAGS}" ]; then
564     echo "LDFLAGS += $LDFLAGS" >> $TEMP_DIR/config.mk
565 fi
566
567 #
568 # OPTION VALUES
569 #
570 checkopt_toolkit_gtk3()
571 {
572         VERR=0
573         dependency_gtk3
574         if [ $? -ne 0 ]; then
575                 VERR=1
576         fi
577         if [ $VERR -ne 0 ]; then
578                 return 1
579         fi
580         cat >> $TEMP_DIR/make.mk << __EOF__
581 TOOLKIT = gtk
582 GTKOBJ = draw_cairo.o
583
584 __EOF__
585         return 0
586 }
587 checkopt_toolkit_motif()
588 {
589         VERR=0
590         dependency_motif
591         if [ $? -ne 0 ]; then
592                 VERR=1
593         fi
594         if [ $VERR -ne 0 ]; then
595                 return 1
596         fi
597         cat >> $TEMP_DIR/make.mk << __EOF__
598 TOOLKIT = motif
599
600 __EOF__
601         return 0
602 }
603
604 #
605 # TARGETS
606 #
607 CFLAGS=
608 CXXFLAGS=
609 LDFLAGS=
610
611 # Target: tk
612 CFLAGS=
613 LDFLAGS=
614 CXXFLAGS=
615
616
617 # Features
618
619 # Option: --toolkit
620 if [ -z $OPT_TOOLKIT ]; then
621         SAVED_ERROR=$ERROR
622         SAVED_DEPENDENCIES_FAILED=$DEPENDENCIES_FAILED
623         ERROR=0
624         while true
625         do
626                 checkopt_toolkit_motif
627                 if [ $? -eq 0 ]; then
628                         echo "  toolkit: motif" >> $TEMP_DIR/options
629                         ERROR=0
630                         break
631                 fi
632                 checkopt_toolkit_gtk3
633                 if [ $? -eq 0 ]; then
634                         echo "  toolkit: gtk3" >> $TEMP_DIR/options
635                         ERROR=0
636                         break
637                 fi
638                 break
639         done
640         if [ $ERROR -ne 0 ]; then
641                 SAVED_ERROR=1
642         fi
643         ERROR=$SAVED_ERROR
644         DEPENDENCIES_FAILED=$SAVED_DEPENDENCIES_FAILED=
645 else
646         if false; then
647                 false
648         elif [ $OPT_TOOLKIT = "gtk3" ]; then
649                 echo "  toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options
650                 checkopt_toolkit_gtk3
651                 if [ $? -ne 0 ]; then
652                         ERROR=1
653                 fi
654         elif [ $OPT_TOOLKIT = "motif" ]; then
655                 echo "  toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options
656                 checkopt_toolkit_motif
657                 if [ $? -ne 0 ]; then
658                         ERROR=1
659                 fi
660         fi
661 fi
662
663 echo >> $TEMP_DIR/config.mk
664 if [ ! -z "${CFLAGS}" ]; then
665     echo "TK_CFLAGS  += $CFLAGS" >> $TEMP_DIR/config.mk
666 fi
667 if [ ! -z "${CXXFLAGS}" ]; then
668     echo "TK_CXXFLAGS += $CXXFLAGS" >> $TEMP_DIR/config.mk
669 fi
670 if [ ! -z "${LDFLAGS}" ]; then
671     echo "TK_LDFLAGS += $LDFLAGS" >> $TEMP_DIR/config.mk
672 fi
673
674 # Target: dav
675 CFLAGS=
676 LDFLAGS=
677 CXXFLAGS=
678
679 dependency_curl
680 if [ $? -ne 0 ]; then
681         DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED curl "
682         ERROR=1
683 fi
684 dependency_libxml2
685 if [ $? -ne 0 ]; then
686         DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED libxml2 "
687         ERROR=1
688 fi
689 dependency_openssl
690 if [ $? -ne 0 ]; then
691         DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED openssl "
692         ERROR=1
693 fi
694
695 # Features
696
697
698 echo >> $TEMP_DIR/config.mk
699 if [ ! -z "${CFLAGS}" ]; then
700     echo "DAV_CFLAGS  += $CFLAGS" >> $TEMP_DIR/config.mk
701 fi
702 if [ ! -z "${CXXFLAGS}" ]; then
703     echo "DAV_CXXFLAGS += $CXXFLAGS" >> $TEMP_DIR/config.mk
704 fi
705 if [ ! -z "${LDFLAGS}" ]; then
706     echo "DAV_LDFLAGS += $LDFLAGS" >> $TEMP_DIR/config.mk
707 fi
708
709 if [ $ERROR -ne 0 ]; then
710         echo
711         echo "Error: Unresolved dependencies"
712         echo $DEPENDENCIES_FAILED
713         rm -Rf $TEMP_DIR
714         exit 1
715 fi
716
717 echo "configure finished"
718 echo
719 echo "Build Config:"
720 echo "  PREFIX:    $PREFIX"
721 echo "  TOOLCHAIN: $TOOLCHAIN_NAME"
722 echo "Options:"
723 cat $TEMP_DIR/options
724 echo
725 cat $TEMP_DIR/config.mk $TEMP_DIR/make.mk > config.mk
726 rm -Rf $TEMP_DIR
727
728