| 83 |
83 |
| 84 # help text |
84 # help text |
| 85 printhelp() |
85 printhelp() |
| 86 { |
86 { |
| 87 echo "Usage: $0 [OPTIONS]..." |
87 echo "Usage: $0 [OPTIONS]..." |
| 88 cat << __EOF__ |
88 echo 'Configuration:' |
| 89 Installation directories: |
89 if true \ |
| 90 --prefix=PREFIX path prefix for architecture-independent files |
90 ; then |
| 91 [$prefix] |
91 : |
| 92 --exec-prefix=EPREFIX path prefix for architecture-dependent files |
92 fi |
| 93 [PREFIX] |
93 cat << '__EOF__' |
| 94 |
|
| 95 --bindir=DIR user executables [EPREFIX/bin] |
|
| 96 --sbindir=DIR system admin executables [EPREFIX/sbin] |
|
| 97 --libexecdir=DIR program executables [EPREFIX/libexec] |
|
| 98 --sysconfdir=DIR system configuration files [PREFIX/etc] |
|
| 99 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] |
|
| 100 --localstatedir=DIR modifiable single-machine data [PREFIX/var] |
|
| 101 --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run] |
|
| 102 --libdir=DIR object code libraries [EPREFIX/lib] |
|
| 103 --includedir=DIR C header files [PREFIX/include] |
|
| 104 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] |
|
| 105 --datadir=DIR read-only architecture-independent data [DATAROOTDIR] |
|
| 106 --infodir=DIR info documentation [DATAROOTDIR/info] |
|
| 107 --mandir=DIR man documentation [DATAROOTDIR/man] |
|
| 108 --localedir=DIR locale-dependent data [DATAROOTDIR/locale] |
|
| 109 |
94 |
| 110 Build Types: |
95 Build Types: |
| 111 --debug add extra compile flags for debug builds |
96 --debug add extra compile flags for debug builds |
| 112 --release add extra compile flags for release builds |
97 --release add extra compile flags for release builds |
| 113 |
98 |
| 114 __EOF__ |
99 __EOF__ |
| |
100 abort_configure |
| 115 } |
101 } |
| 116 |
102 |
| 117 # create temporary directory |
103 # create temporary directory |
| 118 TEMP_DIR=".tmp-`uname -n`" |
104 TEMP_DIR=".tmp-`uname -n`" |
| 119 rm -Rf "$TEMP_DIR" |
105 rm -Rf "$TEMP_DIR" |
| 125 exit 1 |
111 exit 1 |
| 126 fi |
112 fi |
| 127 touch "$TEMP_DIR/options" |
113 touch "$TEMP_DIR/options" |
| 128 touch "$TEMP_DIR/features" |
114 touch "$TEMP_DIR/features" |
| 129 |
115 |
| 130 # define standard variables |
116 # config variables |
| 131 # also define standard prefix (this is where we will search for config.site) |
117 if true \ |
| 132 prefix=/usr |
118 ; then |
| 133 exec_prefix= |
119 : |
| 134 bindir= |
120 if test -z "$SRCDIR__initialized__"; then |
| 135 sbindir= |
121 SRCDIR__initialized__=1 |
| 136 libdir= |
122 SRCDIR=`pwd` |
| 137 libexecdir= |
123 fi |
| 138 datarootdir= |
124 if test -z "$BUILDDIR__initialized__"; then |
| 139 datadir= |
125 BUILDDIR__initialized__=1 |
| 140 sysconfdir= |
126 BUILDDIR='${SRCDIR}/build' |
| 141 sharedstatedir= |
127 fi |
| 142 localstatedir= |
128 if test -z "$LIB_EXT__initialized__"; then |
| 143 runstatedir= |
129 LIB_EXT__initialized__=1 |
| 144 includedir= |
130 LIB_EXT='.a' |
| 145 infodir= |
131 fi |
| 146 localedir= |
132 if test -z "$MKDIR__initialized__"; then |
| 147 mandir= |
133 MKDIR__initialized__=1 |
| 148 |
134 MKDIR='mkdir' |
| 149 # custom variables |
135 fi |
| |
136 if test -z "$MKDIRFLAGS__initialized__"; then |
| |
137 MKDIRFLAGS__initialized__=1 |
| |
138 MKDIRFLAGS='-p' |
| |
139 fi |
| |
140 if test -z "$RM__initialized__"; then |
| |
141 RM__initialized__=1 |
| |
142 RM='rm' |
| |
143 fi |
| |
144 if test -z "$RMFLAGS__initialized__"; then |
| |
145 RMFLAGS__initialized__=1 |
| |
146 RMFLAGS='-f -R' |
| |
147 fi |
| |
148 if test -z "$AR__initialized__"; then |
| |
149 AR__initialized__=1 |
| |
150 AR='ar' |
| |
151 fi |
| |
152 if test -z "$ARFLAGS__initialized__"; then |
| |
153 ARFLAGS__initialized__=1 |
| |
154 ARFLAGS='-r' |
| |
155 fi |
| |
156 fi |
| 150 |
157 |
| 151 # features |
158 # features |
| 152 |
159 |
| 153 # |
160 # |
| 154 # parse arguments |
161 # parse arguments |
| 155 # |
162 # |
| 156 BUILD_TYPE="default" |
163 BUILD_TYPE="default" |
| 157 for ARG in "$@" |
164 for ARG in "$@" |
| 158 do |
165 do |
| 159 case "$ARG" in |
166 case "$ARG" in |
| 160 "--prefix="*) prefix=${ARG#--prefix=} ;; |
167 "--help"*) printhelp ;; |
| 161 "--exec-prefix="*) exec_prefix=${ARG#--exec-prefix=} ;; |
168 "--debug") BUILD_TYPE="debug" ;; |
| 162 "--bindir="*) bindir=${ARG#----bindir=} ;; |
169 "--release") BUILD_TYPE="release" ;; |
| 163 "--sbindir="*) sbindir=${ARG#--sbindir=} ;; |
|
| 164 "--libdir="*) libdir=${ARG#--libdir=} ;; |
|
| 165 "--libexecdir="*) libexecdir=${ARG#--libexecdir=} ;; |
|
| 166 "--datarootdir="*) datarootdir=${ARG#--datarootdir=} ;; |
|
| 167 "--datadir="*) datadir=${ARG#--datadir=} ;; |
|
| 168 "--sysconfdir="*) sysconfdir=${ARG#--sysconfdir=} ;; |
|
| 169 "--sharedstatedir="*) sharedstatedir=${ARG#--sharedstatedir=} ;; |
|
| 170 "--localstatedir="*) localstatedir=${ARG#--localstatedir=} ;; |
|
| 171 "--includedir="*) includedir=${ARG#--includedir=} ;; |
|
| 172 "--infodir="*) infodir=${ARG#--infodir=} ;; |
|
| 173 "--mandir"*) mandir=${ARG#--mandir} ;; |
|
| 174 "--localedir"*) localedir=${ARG#--localedir} ;; |
|
| 175 "--help"*) printhelp; abort_configure ;; |
|
| 176 "--debug") BUILD_TYPE="debug" ;; |
|
| 177 "--release") BUILD_TYPE="release" ;; |
|
| 178 "-"*) echo "unknown option: $ARG"; abort_configure ;; |
170 "-"*) echo "unknown option: $ARG"; abort_configure ;; |
| 179 esac |
171 esac |
| 180 done |
172 done |
| |
173 |
| |
174 # toolchain detection utilities |
| |
175 . make/toolchain.sh |
| |
176 |
| |
177 # check languages |
| |
178 lang_c= |
| |
179 lang_cpp= |
| |
180 if detect_c_compiler ; then |
| |
181 lang_c=1 |
| |
182 fi |
| 181 |
183 |
| 182 |
184 |
| 183 |
185 |
| 184 # set defaults for dir variables |
186 # set defaults for dir variables |
| 185 : ${exec_prefix:="$prefix"} |
187 : ${exec_prefix:="$prefix"} |
| 187 : ${sbindir:='${exec_prefix}/sbin'} |
189 : ${sbindir:='${exec_prefix}/sbin'} |
| 188 : ${libdir:='${exec_prefix}/lib'} |
190 : ${libdir:='${exec_prefix}/lib'} |
| 189 : ${libexecdir:='${exec_prefix}/libexec'} |
191 : ${libexecdir:='${exec_prefix}/libexec'} |
| 190 : ${datarootdir:='${prefix}/share'} |
192 : ${datarootdir:='${prefix}/share'} |
| 191 : ${datadir:='${datarootdir}'} |
193 : ${datadir:='${datarootdir}'} |
| 192 : ${sysconfdir:='${prefix}/etc'} |
|
| 193 : ${sharedstatedir:='${prefix}/com'} |
194 : ${sharedstatedir:='${prefix}/com'} |
| 194 : ${localstatedir:='${prefix}/var'} |
195 if [ -z "$sysconfdir" ]; then |
| 195 : ${runstatedir:='${localstatedir}/run'} |
196 if [ "$prefix" = '/usr' ]; then |
| |
197 sysconfdir='/etc' |
| |
198 else |
| |
199 sysconfdir='${prefix}/etc' |
| |
200 fi |
| |
201 fi |
| |
202 if [ -z "$localstatedir" ]; then |
| |
203 if [ "$prefix" = '/usr' ]; then |
| |
204 localstatedir='/var' |
| |
205 else |
| |
206 localstatedir='${prefix}/var' |
| |
207 fi |
| |
208 fi |
| |
209 if [ -z "$runstatedir" ]; then |
| |
210 if [ "$prefix" = '/usr' ]; then |
| |
211 runstatedir='/var/run' |
| |
212 else |
| |
213 runstatedir='${prefix}/var' |
| |
214 fi |
| |
215 fi |
| 196 : ${includedir:='${prefix}/include'} |
216 : ${includedir:='${prefix}/include'} |
| 197 : ${infodir:='${datarootdir}/info'} |
217 : ${infodir:='${datarootdir}/info'} |
| 198 : ${mandir:='${datarootdir}/man'} |
218 : ${mandir:='${datarootdir}/man'} |
| 199 : ${localedir:='${datarootdir}/locale'} |
219 : ${localedir:='${datarootdir}/locale'} |
| 200 |
220 |
| 201 # remember the above values and compare them later |
|
| 202 orig_bindir="$bindir" |
|
| 203 orig_sbindir="$sbindir" |
|
| 204 orig_libdir="$libdir" |
|
| 205 orig_libexecdir="$libexecdir" |
|
| 206 orig_datarootdir="$datarootdir" |
|
| 207 orig_datadir="$datadir" |
|
| 208 orig_sysconfdir="$sysconfdir" |
|
| 209 orig_sharedstatedir="$sharedstatedir" |
|
| 210 orig_localstatedir="$localstatedir" |
|
| 211 orig_runstatedir="$runstatedir" |
|
| 212 orig_includedir="$includedir" |
|
| 213 orig_infodir="$infodir" |
|
| 214 orig_mandir="$mandir" |
|
| 215 orig_localedir="$localedir" |
|
| 216 |
221 |
| 217 # check if a config.site exists and load it |
222 # check if a config.site exists and load it |
| |
223 CONFIG_SITE_OK=0 |
| 218 if [ -n "$CONFIG_SITE" ]; then |
224 if [ -n "$CONFIG_SITE" ]; then |
| 219 # CONFIG_SITE may contain space separated file names |
225 # CONFIG_SITE may contain space separated file names |
| 220 for cs in $CONFIG_SITE; do |
226 for cs in $CONFIG_SITE; do |
| 221 printf "loading defaults from $cs... " |
227 printf "loading defaults from $cs... " |
| 222 . "$cs" |
228 if [ -f "$cs" ]; then |
| 223 echo ok |
229 . "$cs" |
| |
230 echo ok |
| |
231 CONFIG_SITE_OK=1 |
| |
232 break |
| |
233 else |
| |
234 echo "not found" |
| |
235 fi |
| 224 done |
236 done |
| 225 elif [ -f "$prefix/share/config.site" ]; then |
237 elif [ -f "$prefix/share/config.site" ]; then |
| 226 printf "loading site defaults... " |
238 printf "loading site defaults... " |
| 227 . "$prefix/share/config.site" |
239 . "$prefix/share/config.site" |
| 228 echo ok |
240 echo ok |
| |
241 CONFIG_SITE_OK=1 |
| 229 elif [ -f "$prefix/etc/config.site" ]; then |
242 elif [ -f "$prefix/etc/config.site" ]; then |
| 230 printf "loading site defaults... " |
243 printf "loading site defaults... " |
| 231 . "$prefix/etc/config.site" |
244 . "$prefix/etc/config.site" |
| 232 echo ok |
245 echo ok |
| 233 else |
246 CONFIG_SITE_OK=1 |
| |
247 fi |
| |
248 |
| |
249 if [ $CONFIG_SITE_OK -eq 0 ]; then |
| 234 # try to detect the correct libdir on our own, except it was changed by the user |
250 # try to detect the correct libdir on our own, except it was changed by the user |
| 235 if test "$libdir" = '${exec_prefix}/lib'; then |
251 if [ "$libdir" = '${exec_prefix}/lib' ] ; then |
| 236 if [ "$OS" = "SunOS" ]; then |
252 if [ "$TOOLCHAIN_WSIZE" = "64" ] ; then |
| 237 test -d "${exec_prefix}/lib/amd64" && libdir='${exec_prefix}/lib/amd64' |
253 if [ "$OS" = "SunOS" ]; then |
| 238 else |
254 [ -d "${exec_prefix}/lib/64" ] && libdir='${exec_prefix}/lib/64' |
| 239 # check if the standard libdir even exists |
|
| 240 if test -d "${exec_prefix}/lib" ; then |
|
| 241 : |
|
| 242 else |
255 else |
| 243 # if it does not, maybe a lib32 exists |
256 [ -d "${exec_prefix}/lib64" ] && libdir='${exec_prefix}/lib64' |
| 244 test -d "${exec_prefix}/lib32" && libdir='${exec_prefix}/lib32' |
|
| 245 fi |
257 fi |
| 246 # now check if there is a special 64bit libdir that we should use |
258 elif [ "$TOOLCHAIN_WSIZE" = "32" ] ; then |
| 247 for i in x86_64 ppc64 s390x aarch64 aarch64_be arm64 ; do |
259 if [ "$OS" = "SunOS" ]; then |
| 248 if [ $ARCH = $i ]; then |
260 [ -d "${exec_prefix}/lib/32" ] && libdir='${exec_prefix}/lib/32' |
| 249 test -d "${exec_prefix}/lib64" && libdir='${exec_prefix}/lib64' |
261 else |
| 250 break |
262 [ -d "${exec_prefix}/lib32" ] && libdir='${exec_prefix}/lib32' |
| 251 fi |
263 fi |
| 252 done |
|
| 253 fi |
264 fi |
| 254 fi |
265 fi |
| 255 fi |
266 fi |
| 256 |
267 |
| 257 |
268 |
| 258 # generate vars.mk |
269 # generate vars.mk |
| 259 cat > "$TEMP_DIR/vars.mk" << __EOF__ |
270 cat > "$TEMP_DIR/vars.mk" << __EOF__ |
| 260 prefix=$prefix |
271 SRCDIR=$SRCDIR |
| 261 exec_prefix=$exec_prefix |
272 BUILDDIR=$BUILDDIR |
| 262 bindir=$bindir |
273 LIB_EXT=$LIB_EXT |
| 263 sbindir=$sbindir |
274 MKDIR=$MKDIR |
| 264 libdir=$libdir |
275 MKDIRFLAGS=$MKDIRFLAGS |
| 265 libexecdir=$libexecdir |
276 RM=$RM |
| 266 datarootdir=$datarootdir |
277 RMFLAGS=$RMFLAGS |
| 267 datadir=$datadir |
278 AR=$AR |
| 268 sysconfdir=$sysconfdir |
279 ARFLAGS=$ARFLAGS |
| 269 sharedstatedir=$sharedstatedir |
|
| 270 localstatedir=$localstatedir |
|
| 271 runstatedir=$runstatedir |
|
| 272 includedir=$includedir |
|
| 273 infodir=$infodir |
|
| 274 mandir=$mandir |
|
| 275 localedir=$localedir |
|
| 276 __EOF__ |
280 __EOF__ |
| 277 |
281 |
| 278 # toolchain detection utilities |
|
| 279 . make/toolchain.sh |
|
| 280 |
282 |
| 281 # |
283 # |
| 282 # DEPENDENCIES |
284 # DEPENDENCIES |
| 283 # |
285 # |
| 284 |
286 |
| 285 # check languages |
287 |
| 286 lang_c= |
|
| 287 lang_cpp= |
|
| 288 if detect_c_compiler ; then |
|
| 289 lang_c=1 |
|
| 290 fi |
|
| 291 |
288 |
| 292 # create buffer for make variables required by dependencies |
289 # create buffer for make variables required by dependencies |
| 293 echo > "$TEMP_DIR/make.mk" |
290 echo > "$TEMP_DIR/make.mk" |
| 294 |
291 |
| 295 test_pkg_config() |
292 test_pkg_config() |
| 531 fi |
437 fi |
| 532 if [ -n "$TOOLCHAIN_CSTD" ]; then |
438 if [ -n "$TOOLCHAIN_CSTD" ]; then |
| 533 echo " default C std: $TOOLCHAIN_CSTD" |
439 echo " default C std: $TOOLCHAIN_CSTD" |
| 534 fi |
440 fi |
| 535 echo |
441 echo |
| 536 echo "Build Config:" |
442 echo "Config:" |
| 537 echo " prefix: $prefix" |
|
| 538 echo " exec_prefix: $exec_prefix" |
|
| 539 if [ "$orig_bindir" != "$bindir" ]; then |
|
| 540 echo " bindir: $bindir" |
|
| 541 fi |
|
| 542 if [ "$orig_sbindir" != "$sbindir" ]; then |
|
| 543 echo " sbindir: $sbindir" |
|
| 544 fi |
|
| 545 if [ "$orig_libdir" != "$libdir" ]; then |
|
| 546 echo " libdir: $libdir" |
|
| 547 fi |
|
| 548 if [ "$orig_libexecdir" != "$libexecdir" ]; then |
|
| 549 echo " libexecdir: $libexecdir" |
|
| 550 fi |
|
| 551 if [ "$orig_datarootdir" != "$datarootdir" ]; then |
|
| 552 echo " datarootdir: $datarootdir" |
|
| 553 fi |
|
| 554 if [ "$orig_datadir" != "$datadir" ]; then |
|
| 555 echo " datadir: $datadir" |
|
| 556 fi |
|
| 557 if [ "$orig_sysconfdir" != "$sysconfdir" ]; then |
|
| 558 echo " sysconfdir: $sysconfdir" |
|
| 559 fi |
|
| 560 if [ "$orig_sharedstatedir" != "$sharedstatedir" ]; then |
|
| 561 echo " sharedstatedir: $sharedstatedir" |
|
| 562 fi |
|
| 563 if [ "$orig_localstatedir" != "$localstatedir" ]; then |
|
| 564 echo " localstatedir: $localstatedir" |
|
| 565 fi |
|
| 566 if [ "$orig_runstatedir" != "$runstatedir" ]; then |
|
| 567 echo " runstatedir: $runstatedir" |
|
| 568 fi |
|
| 569 if [ "$orig_includedir" != "$includedir" ]; then |
|
| 570 echo " includedir: $includedir" |
|
| 571 fi |
|
| 572 if [ "$orig_infodir" != "$infodir" ]; then |
|
| 573 echo " infodir: $infodir" |
|
| 574 fi |
|
| 575 if [ "$orig_mandir" != "$mandir" ]; then |
|
| 576 echo " mandir: $mandir" |
|
| 577 fi |
|
| 578 if [ "$orig_localedir" != "$localedir" ]; then |
|
| 579 echo " localedir: $localedir" |
|
| 580 fi |
|
| 581 echo |
443 echo |
| 582 |
444 |
| 583 # generate the config.mk file |
445 # generate the config.mk file |
| 584 pwd=`pwd` |
446 pwd=`pwd` |
| 585 cat > "$TEMP_DIR/config.mk" << __EOF__ |
447 cat > "$TEMP_DIR/config.mk" << __EOF__ |