configure

changeset 86
f187e97f845e
parent 85
b1577ea008e5
equal deleted inserted replaced
85:b1577ea008e5 86:f187e97f845e
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()
311 shift 308 shift
312 printf "$@" 309 printf "$@"
313 fi 310 fi
314 } 311 }
315 312
316 dependency_error_archiver()
317 {
318 print_check_msg "$dep_checked_archiver" "checking for archiver... "
319 # dependency archiver
320 while true
321 do
322 if command -v ar > /dev/null 2>&1 ; then
323 :
324 else
325 break
326 fi
327 cat >> $TEMP_DIR/make.mk << __EOF__
328 # Dependency: archiver
329 AR = ar
330 ARFLAGS = -r
331 __EOF__
332 print_check_msg "$dep_checked_archiver" "yes\n"
333 dep_checked_archiver=1
334 return 1
335 done
336
337 print_check_msg "$dep_checked_archiver" "no\n"
338 dep_checked_archiver=1
339 return 0
340 }
341 dependency_error_rmdir()
342 {
343 print_check_msg "$dep_checked_rmdir" "checking for rmdir... "
344 # dependency rmdir
345 while true
346 do
347 if command -v rm > /dev/null 2>&1 ; then
348 :
349 else
350 break
351 fi
352 cat >> $TEMP_DIR/make.mk << __EOF__
353 # Dependency: rmdir
354 RM = rm
355 RMFLAGS = -f -R
356 __EOF__
357 print_check_msg "$dep_checked_rmdir" "yes\n"
358 dep_checked_rmdir=1
359 return 1
360 done
361
362 print_check_msg "$dep_checked_rmdir" "no\n"
363 dep_checked_rmdir=1
364 return 0
365 }
366 dependency_error_ncurses() 313 dependency_error_ncurses()
367 { 314 {
368 print_check_msg "$dep_checked_ncurses" "checking for ncurses... " 315 print_check_msg "$dep_checked_ncurses" "checking for ncurses... "
369 # dependency ncurses 316 # dependency ncurses
370 while true 317 while true
383 return 1 330 return 1
384 done 331 done
385 332
386 print_check_msg "$dep_checked_ncurses" "no\n" 333 print_check_msg "$dep_checked_ncurses" "no\n"
387 dep_checked_ncurses=1 334 dep_checked_ncurses=1
388 return 0
389 }
390 dependency_error_mkdir()
391 {
392 print_check_msg "$dep_checked_mkdir" "checking for mkdir... "
393 # dependency mkdir
394 while true
395 do
396 if command -v mkdir > /dev/null 2>&1 ; then
397 :
398 else
399 break
400 fi
401 cat >> $TEMP_DIR/make.mk << __EOF__
402 # Dependency: mkdir
403 MKDIR = mkdir
404 MKDIRFLAGS = -p
405 __EOF__
406 print_check_msg "$dep_checked_mkdir" "yes\n"
407 dep_checked_mkdir=1
408 return 1
409 done
410
411 print_check_msg "$dep_checked_mkdir" "no\n"
412 dep_checked_mkdir=1
413 return 0 335 return 0
414 } 336 }
415 337
416 # start collecting dependency information 338 # start collecting dependency information
417 echo > "$TEMP_DIR/flags.mk" 339 echo > "$TEMP_DIR/flags.mk"
429 if [ -z "$lang_c" ] ; then 351 if [ -z "$lang_c" ] ; then
430 ERROR=1 352 ERROR=1
431 break 353 break
432 fi 354 fi
433 355
434 cat >> "$TEMP_DIR/make.mk" << __EOF__
435 LIB_EXT = .a
436 BUILDDIR = `pwd`/build
437 __EOF__
438 break 356 break
439 done 357 done
440 break 358 break
441 done 359 done
442 360
475 echo "# flags for target default" >> "$TEMP_DIR/flags.mk" 393 echo "# flags for target default" >> "$TEMP_DIR/flags.mk"
476 TEMP_CFLAGS= 394 TEMP_CFLAGS=
477 TEMP_CXXFLAGS= 395 TEMP_CXXFLAGS=
478 TEMP_LDFLAGS= 396 TEMP_LDFLAGS=
479 397
480 if dependency_error_archiver; then
481 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED archiver "
482 ERROR=1
483 fi
484 if dependency_error_rmdir; then
485 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED rmdir "
486 ERROR=1
487 fi
488 if dependency_error_ncurses; then 398 if dependency_error_ncurses; then
489 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ncurses " 399 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ncurses "
490 ERROR=1
491 fi
492 if dependency_error_mkdir; then
493 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED mkdir "
494 ERROR=1 400 ERROR=1
495 fi 401 fi
496 402
497 # Features 403 # Features
498 404
516 abort_configure 422 abort_configure
517 fi 423 fi
518 424
519 echo "configure finished" 425 echo "configure finished"
520 echo 426 echo
521 echo "Toolchain" 427 echo "Toolchain:"
522 echo " name: $TOOLCHAIN_NAME" 428 echo " name: $TOOLCHAIN_NAME"
523 if [ -n "$TOOLCHAIN_CC" ]; then 429 if [ -n "$TOOLCHAIN_CC" ]; then
524 echo " cc: $TOOLCHAIN_CC" 430 echo " cc: $TOOLCHAIN_CC"
525 fi 431 fi
526 if [ -n "$TOOLCHAIN_CXX" ]; then 432 if [ -n "$TOOLCHAIN_CXX" ]; then
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__

mercurial