configure

changeset 615
1ffc6fce045d
parent 515
2c3fe06a9210
child 616
7a0a364a1d67
equal deleted inserted replaced
614:eb1c4d464ecd 615:1ffc6fce045d
1 #!/bin/sh 1 #!/bin/sh
2
3
4 # some utility functions
5 isplatform()
6 {
7 for p in $PLATFORM
8 do
9 if [ "$p" = "$1" ]; then
10 return 0
11 fi
12 done
13 return 1
14 }
15 notisplatform()
16 {
17 for p in $PLATFORM
18 do
19 if [ "$p" = "$1" ]; then
20 return 1
21 fi
22 done
23 return 0
24 }
25 istoolchain()
26 {
27 for t in $TOOLCHAIN
28 do
29 if [ "$t" = "$1" ]; then
30 return 0
31 fi
32 done
33 return 1
34 }
35 notistoolchain()
36 {
37 for t in $TOOLCHAIN
38 do
39 if [ "$t" = "$1" ]; then
40 return 1
41 fi
42 done
43 return 0
44 }
45
46 # clean abort
47 abort_configure()
48 {
49 rm -Rf "$TEMP_DIR"
50 exit 1
51 }
52
53 # Test for availability of pkg-config
54 PKG_CONFIG=`command -v pkg-config`
55 : ${PKG_CONFIG:="false"}
56
57 # Simple uname based platform detection
58 # $PLATFORM is used for platform dependent dependency selection
59 OS=`uname -s`
60 OS_VERSION=`uname -r`
61 printf "detect platform... "
62 if [ "$OS" = "SunOS" ]; then
63 PLATFORM="solaris sunos unix svr4"
64 elif [ "$OS" = "Linux" ]; then
65 PLATFORM="linux unix"
66 elif [ "$OS" = "FreeBSD" ]; then
67 PLATFORM="freebsd bsd unix"
68 elif [ "$OS" = "OpenBSD" ]; then
69 PLATFORM="openbsd bsd unix"
70 elif [ "$OS" = "NetBSD" ]; then
71 PLATFORM="netbsd bsd unix"
72 elif [ "$OS" = "Darwin" ]; then
73 PLATFORM="macos osx bsd unix"
74 elif echo "$OS" | grep -i "MINGW" > /dev/null; then
75 PLATFORM="windows mingw"
76 fi
77 : ${PLATFORM:="unix"}
78
79 PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -`
80 echo "$PLATFORM_NAME"
81
82
83 # help text
84 printhelp()
85 {
86 echo "Usage: $0 [OPTIONS]..."
87 cat << __EOF__
88 Installation directories:
89 --prefix=PREFIX path prefix for architecture-independent files
90 [$prefix]
91 --exec-prefix=EPREFIX path prefix for architecture-dependent files
92 [PREFIX]
93
94 --bindir=DIR user executables [EPREFIX/bin]
95 --sbindir=DIR system admin executables [EPREFIX/sbin]
96 --libexecdir=DIR program executables [EPREFIX/libexec]
97 --sysconfdir=DIR system configuration files [PREFIX/etc]
98 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
99 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
100 --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run]
101 --libdir=DIR object code libraries [EPREFIX/lib]
102 --includedir=DIR C header files [PREFIX/include]
103 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
104 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
105 --infodir=DIR info documentation [DATAROOTDIR/info]
106 --mandir=DIR man documentation [DATAROOTDIR/man]
107 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
108
109 Build Types:
110 --debug add extra compile flags for debug builds
111 --release add extra compile flags for release builds
112
113 Optional Features:
114 --enable-postgresql
115
116 __EOF__
117 }
2 118
3 # create temporary directory 119 # create temporary directory
4 TEMP_DIR=".tmp-`uname -n`" 120 TEMP_DIR=".tmp-`uname -n`"
5 rm -Rf "$TEMP_DIR" 121 rm -Rf "$TEMP_DIR"
6 if mkdir -p "$TEMP_DIR"; then 122 if mkdir -p "$TEMP_DIR"; then
31 infodir= 147 infodir=
32 localedir= 148 localedir=
33 mandir= 149 mandir=
34 150
35 # custom variables 151 # custom variables
36 HOST=`uname -n` 152 if true \
37 PREFIX="`pwd`/work" 153 ; then
38 INSTALL_DIR="$PREFIX" 154 HOST=`uname -n`
155 PREFIX="`pwd`/work"
156 INSTALL_DIR="$PREFIX"
157 fi
39 158
40 # features 159 # features
41
42 # clean abort
43 abort_configure()
44 {
45 rm -Rf "$TEMP_DIR"
46 exit 1
47 }
48
49 # help text
50 printhelp()
51 {
52 echo "Usage: $0 [OPTIONS]..."
53 cat << __EOF__
54 Installation directories:
55 --prefix=PREFIX path prefix for architecture-independent files
56 [/usr]
57 --exec-prefix=EPREFIX path prefix for architecture-dependent files
58 [PREFIX]
59
60 --bindir=DIR user executables [EPREFIX/bin]
61 --sbindir=DIR system admin executables [EPREFIX/sbin]
62 --libexecdir=DIR program executables [EPREFIX/libexec]
63 --sysconfdir=DIR system configuration files [PREFIX/etc]
64 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
65 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
66 --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run]
67 --libdir=DIR object code libraries [EPREFIX/lib]
68 --includedir=DIR C header files [PREFIX/include]
69 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
70 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
71 --infodir=DIR info documentation [DATAROOTDIR/info]
72 --mandir=DIR man documentation [DATAROOTDIR/man]
73 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
74
75 Optional Features:
76 --enable-postgresql
77
78 __EOF__
79 }
80 160
81 # 161 #
82 # parse arguments 162 # parse arguments
83 # 163 #
84 BUILD_TYPE="default" 164 BUILD_TYPE="default"
98 "--localstatedir="*) localstatedir=${ARG#--localstatedir=} ;; 178 "--localstatedir="*) localstatedir=${ARG#--localstatedir=} ;;
99 "--includedir="*) includedir=${ARG#--includedir=} ;; 179 "--includedir="*) includedir=${ARG#--includedir=} ;;
100 "--infodir="*) infodir=${ARG#--infodir=} ;; 180 "--infodir="*) infodir=${ARG#--infodir=} ;;
101 "--mandir"*) mandir=${ARG#--mandir} ;; 181 "--mandir"*) mandir=${ARG#--mandir} ;;
102 "--localedir"*) localedir=${ARG#--localedir} ;; 182 "--localedir"*) localedir=${ARG#--localedir} ;;
103 "--help"*) printhelp; abort_configure ;; 183 "--help"*) printhelp; abort_configure ;;
104 "--debug") BUILD_TYPE="debug" ;; 184 "--debug") BUILD_TYPE="debug" ;;
105 "--release") BUILD_TYPE="release" ;; 185 "--release") BUILD_TYPE="release" ;;
106 "--enable-postgresql") FEATURE_POSTGRESQL=on ;; 186 "--enable-postgresql") FEATURE_POSTGRESQL=on ;;
107 "--disable-postgresql") unset FEATURE_POSTGRESQL ;; 187 "--disable-postgresql") unset FEATURE_POSTGRESQL ;;
108 "-"*) echo "unknown option: $ARG"; abort_configure ;; 188 "-"*) echo "unknown option: $ARG"; abort_configure ;;
109 esac 189 esac
110 done 190 done
126 : ${includedir:='${prefix}/include'} 206 : ${includedir:='${prefix}/include'}
127 : ${infodir:='${datarootdir}/info'} 207 : ${infodir:='${datarootdir}/info'}
128 : ${mandir:='${datarootdir}/man'} 208 : ${mandir:='${datarootdir}/man'}
129 : ${localedir:='${datarootdir}/locale'} 209 : ${localedir:='${datarootdir}/locale'}
130 210
211 # remember the above values and compare them later
212 orig_bindir="$bindir"
213 orig_sbindir="$sbindir"
214 orig_libdir="$libdir"
215 orig_libexecdir="$libexecdir"
216 orig_datarootdir="$datarootdir"
217 orig_datadir="$datadir"
218 orig_sysconfdir="$sysconfdir"
219 orig_sharedstatedir="$sharedstatedir"
220 orig_localstatedir="$localstatedir"
221 orig_runstatedir="$runstatedir"
222 orig_includedir="$includedir"
223 orig_infodir="$infodir"
224 orig_mandir="$mandir"
225 orig_localedir="$localedir"
226
131 # check if a config.site exists and load it 227 # check if a config.site exists and load it
132 if [ -n "$CONFIG_SITE" ]; then 228 if [ -n "$CONFIG_SITE" ]; then
133 # CONFIG_SITE may contain space separated file names 229 # CONFIG_SITE may contain space separated file names
134 for cs in $CONFIG_SITE; do 230 for cs in $CONFIG_SITE; do
135 printf "loading defaults from $cs... " 231 printf "loading defaults from $cs... "
143 elif [ -f "$prefix/etc/config.site" ]; then 239 elif [ -f "$prefix/etc/config.site" ]; then
144 printf "loading site defaults... " 240 printf "loading site defaults... "
145 . "$prefix/etc/config.site" 241 . "$prefix/etc/config.site"
146 echo ok 242 echo ok
147 fi 243 fi
148
149 # Test for availability of pkg-config
150 PKG_CONFIG=`command -v pkg-config`
151 : ${PKG_CONFIG:="false"}
152
153 # Simple uname based platform detection
154 # $PLATFORM is used for platform dependent dependency selection
155 OS=`uname -s`
156 OS_VERSION=`uname -r`
157 printf "detect platform... "
158 if [ "$OS" = "SunOS" ]; then
159 PLATFORM="solaris sunos unix svr4"
160 elif [ "$OS" = "Linux" ]; then
161 PLATFORM="linux unix"
162 elif [ "$OS" = "FreeBSD" ]; then
163 PLATFORM="freebsd bsd unix"
164 elif [ "$OS" = "OpenBSD" ]; then
165 PLATFORM="openbsd bsd unix"
166 elif [ "$OS" = "NetBSD" ]; then
167 PLATFORM="netbsd bsd unix"
168 elif [ "$OS" = "Darwin" ]; then
169 PLATFORM="macos osx bsd unix"
170 elif echo "$OS" | grep -i "MINGW" > /dev/null; then
171 PLATFORM="windows mingw"
172 fi
173 : ${PLATFORM:="unix"}
174
175 PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -`
176 echo "$PLATFORM_NAME"
177
178 isplatform()
179 {
180 for p in $PLATFORM
181 do
182 if [ "$p" = "$1" ]; then
183 return 0
184 fi
185 done
186 return 1
187 }
188 notisplatform()
189 {
190 for p in $PLATFORM
191 do
192 if [ "$p" = "$1" ]; then
193 return 1
194 fi
195 done
196 return 0
197 }
198 istoolchain()
199 {
200 for t in $TOOLCHAIN
201 do
202 if [ "$t" = "$1" ]; then
203 return 0
204 fi
205 done
206 return 1
207 }
208 notistoolchain()
209 {
210 for t in $TOOLCHAIN
211 do
212 if [ "$t" = "$1" ]; then
213 return 1
214 fi
215 done
216 return 0
217 }
218 244
219 245
220 # generate vars.mk 246 # generate vars.mk
221 cat > "$TEMP_DIR/vars.mk" << __EOF__ 247 cat > "$TEMP_DIR/vars.mk" << __EOF__
222 prefix=$prefix 248 prefix=$prefix
233 runstatedir=$runstatedir 259 runstatedir=$runstatedir
234 includedir=$includedir 260 includedir=$includedir
235 infodir=$infodir 261 infodir=$infodir
236 mandir=$mandir 262 mandir=$mandir
237 localedir=$localedir 263 localedir=$localedir
238 HOST=$HOST
239 PREFIX=$PREFIX
240 INSTALL_DIR=$INSTALL_DIR
241 __EOF__ 264 __EOF__
242 265
243 # toolchain detection utilities 266 # toolchain detection utilities
244 . make/toolchain.sh 267 . make/toolchain.sh
245 268
388 echo > "$TEMP_DIR/flags.mk" 411 echo > "$TEMP_DIR/flags.mk"
389 412
390 DEPENDENCIES_FAILED= 413 DEPENDENCIES_FAILED=
391 ERROR=0 414 ERROR=0
392 # unnamed dependencies 415 # unnamed dependencies
393 TEMP_CFLAGS= 416 TEMP_CFLAGS="$CFLAGS"
394 TEMP_CXXFLAGS= 417 TEMP_CXXFLAGS="$CXXFLAGS"
395 TEMP_LDFLAGS= 418 TEMP_LDFLAGS="$LDFLAGS"
396 while true 419 while true
397 do 420 do
398 while true 421 while true
399 do 422 do
400 if [ -z "$lang_c" ] ; then 423 if [ -z "$lang_c" ] ; then
511 __EOF__ 534 __EOF__
512 break 535 break
513 done 536 done
514 break 537 break
515 done 538 done
539
540 # build type
541 if [ "$BUILD_TYPE" = "debug" ]; then
542 TEMP_CFLAGS="\${DEBUG_CFLAGS} $TEMP_CFLAGS"
543 TEMP_CXXFLAGS="\${DEBUG_CXXFLAGS} $TEMP_CXXFLAGS"
544 fi
545 if [ "$BUILD_TYPE" = "release" ]; then
546 TEMP_CFLAGS="\${RELEASE_CFLAGS} $TEMP_CFLAGS"
547 TEMP_CXXFLAGS="\${RELEASE_CXXFLAGS} $TEMP_CXXFLAGS"
548 fi
516 549
517 # add general dependency flags to flags.mk 550 # add general dependency flags to flags.mk
518 echo "# general flags" >> "$TEMP_DIR/flags.mk" 551 echo "# general flags" >> "$TEMP_DIR/flags.mk"
519 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 552 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
520 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 553 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
556 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 589 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
557 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 590 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
558 fi 591 fi
559 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 592 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then
560 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 593 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk"
561 fi
562 if [ "$BUILD_TYPE" = "debug" ]; then
563 if [ -n "$lang_c" ]; then
564 echo 'CFLAGS += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
565 fi
566 if [ -n "$lang_cpp" ]; then
567 echo 'CXXFLAGS += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
568 fi
569 fi
570 if [ "$BUILD_TYPE" = "release" ]; then
571 if [ -n "$lang_c" ]; then
572 echo 'CFLAGS += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
573 fi
574 if [ -n "$lang_cpp" ]; then
575 echo 'CXXFLAGS += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
576 fi
577 fi 594 fi
578 if [ -n "${TEMP_LDFLAGS}" ]; then 595 if [ -n "${TEMP_LDFLAGS}" ]; then
579 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 596 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk"
580 fi 597 fi
581 598
601 fi 618 fi
602 if [ -n "$DISABLE_FEATURE_POSTGRESQL" ]; then 619 if [ -n "$DISABLE_FEATURE_POSTGRESQL" ]; then
603 unset FEATURE_POSTGRESQL 620 unset FEATURE_POSTGRESQL
604 fi 621 fi
605 fi 622 fi
623 if [ -n "$FEATURE_POSTGRESQL" ]; then
624 :
625 else
626 :
627 fi
606 628
607 629
608 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 630 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
609 echo "POSTGRESQL_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 631 echo "POSTGRESQL_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
610 fi 632 fi
611 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 633 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then
612 echo "POSTGRESQL_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 634 echo "POSTGRESQL_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk"
613 fi
614 if [ "$BUILD_TYPE" = "debug" ]; then
615 if [ -n "$lang_c" ]; then
616 echo 'POSTGRESQL_CFLAGS += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
617 fi
618 if [ -n "$lang_cpp" ]; then
619 echo 'POSTGRESQL_CXXFLAGS += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
620 fi
621 fi
622 if [ "$BUILD_TYPE" = "release" ]; then
623 if [ -n "$lang_c" ]; then
624 echo 'POSTGRESQL_CFLAGS += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
625 fi
626 if [ -n "$lang_cpp" ]; then
627 echo 'POSTGRESQL_CXXFLAGS += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
628 fi
629 fi 635 fi
630 if [ -n "${TEMP_LDFLAGS}" ]; then 636 if [ -n "${TEMP_LDFLAGS}" ]; then
631 echo "POSTGRESQL_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 637 echo "POSTGRESQL_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk"
632 fi 638 fi
633 639
640 abort_configure 646 abort_configure
641 fi 647 fi
642 648
643 echo "configure finished" 649 echo "configure finished"
644 echo 650 echo
651 echo "Toolchain"
652 echo " name: $TOOLCHAIN_NAME"
653 if [ -n "$TOOLCHAIN_CC" ]; then
654 echo " cc: $TOOLCHAIN_CC"
655 fi
656 if [ -n "$TOOLCHAIN_CXX" ]; then
657 echo " cxx: $TOOLCHAIN_CXX"
658 fi
659 if [ -n "$TOOLCHAIN_WSIZE" ]; then
660 echo " word size: $TOOLCHAIN_WSIZE bit"
661 fi
662 if [ -n "$TOOLCHAIN_CSTD" ]; then
663 echo " default C std: $TOOLCHAIN_CSTD"
664 fi
665 echo
645 echo "Build Config:" 666 echo "Build Config:"
646 echo " PREFIX: $prefix" 667 echo " prefix: $prefix"
647 echo " TOOLCHAIN: $TOOLCHAIN_NAME" 668 echo " exec_prefix: $exec_prefix"
669 if [ "$orig_bindir" != "$bindir" ]; then
670 echo " bindir: $bindir"
671 fi
672 if [ "$orig_sbindir" != "$sbindir" ]; then
673 echo " sbindir: $sbindir"
674 fi
675 if [ "$orig_libdir" != "$libdir" ]; then
676 echo " libdir: $libdir"
677 fi
678 if [ "$orig_libexecdir" != "$libexecdir" ]; then
679 echo " libexecdir: $libexecdir"
680 fi
681 if [ "$orig_datarootdir" != "$datarootdir" ]; then
682 echo " datarootdir: $datarootdir"
683 fi
684 if [ "$orig_datadir" != "$datadir" ]; then
685 echo " datadir: $datadir"
686 fi
687 if [ "$orig_sysconfdir" != "$sysconfdir" ]; then
688 echo " sysconfdir: $sysconfdir"
689 fi
690 if [ "$orig_sharedstatedir" != "$sharedstatedir" ]; then
691 echo " sharedstatedir: $sharedstatedir"
692 fi
693 if [ "$orig_localstatedir" != "$localstatedir" ]; then
694 echo " localstatedir: $localstatedir"
695 fi
696 if [ "$orig_runstatedir" != "$runstatedir" ]; then
697 echo " runstatedir: $runstatedir"
698 fi
699 if [ "$orig_includedir" != "$includedir" ]; then
700 echo " includedir: $includedir"
701 fi
702 if [ "$orig_infodir" != "$infodir" ]; then
703 echo " infodir: $infodir"
704 fi
705 if [ "$orig_mandir" != "$mandir" ]; then
706 echo " mandir: $mandir"
707 fi
708 if [ "$orig_localedir" != "$localedir" ]; then
709 echo " localedir: $localedir"
710 fi
711 echo
648 echo "Features:" 712 echo "Features:"
649 if [ -n "$FEATURE_POSTGRESQL" ]; then 713 if [ -n "$FEATURE_POSTGRESQL" ]; then
650 echo " postgresql: on" 714 echo " postgresql: on"
651 else 715 else
652 echo " postgresql: off" 716 echo " postgresql: off"
653 fi 717 fi
654 echo 718 echo
655 719
656 # generate the config.mk file 720 # generate the config.mk file
721 pwd=`pwd`
657 cat > "$TEMP_DIR/config.mk" << __EOF__ 722 cat > "$TEMP_DIR/config.mk" << __EOF__
658 # 723 #
659 # config.mk generated by configure 724 # config.mk generated by:
725 # pwd: $pwd
726 # $0 $@
660 # 727 #
661 728
662 __EOF__ 729 __EOF__
663 write_toolchain_defaults "$TEMP_DIR/toolchain.mk" 730 write_toolchain_defaults "$TEMP_DIR/toolchain.mk"
664 cat "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk 731 cat "$TEMP_DIR/config.mk" "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk
665 rm -Rf "$TEMP_DIR" 732 rm -Rf "$TEMP_DIR"

mercurial