configure

changeset 197
9cbd4f09a22f
parent 193
d1420f5c5704
child 204
86c09da7a6ae
equal deleted inserted replaced
196:168a38ae1b2d 197:9cbd4f09a22f
97 97
98 Build Types: 98 Build Types:
99 --debug add extra compile flags for debug builds 99 --debug add extra compile flags for debug builds
100 --release add extra compile flags for release builds 100 --release add extra compile flags for release builds
101 101
102 Options:
103 --curses=(ncursesw|cursesw|ncurses|curses)
104 The curses implementation to use.
105
102 Optional Features: 106 Optional Features:
103 --enable-asan address sanitizer 107 --enable-asan address sanitizer
104 --enable-strict-errors treat compiler warnings as errors 108 --enable-strict-errors treat compiler warnings as errors
105 109
106 __EOF__ 110 __EOF__
173 do 177 do
174 case "$ARG" in 178 case "$ARG" in
175 "--help"*) printhelp ;; 179 "--help"*) printhelp ;;
176 "--debug") BUILD_TYPE="debug" ;; 180 "--debug") BUILD_TYPE="debug" ;;
177 "--release") BUILD_TYPE="release" ;; 181 "--release") BUILD_TYPE="release" ;;
182 "--curses="*) OPT_CURSES=${ARG#--curses=} ;;
183 "--curses") echo "option '$ARG' needs a value:"; echo " $ARG=(ncursesw|cursesw|ncurses|curses)"; abort_configure ;;
178 "--enable-asan") FEATURE_ASAN=on ;; 184 "--enable-asan") FEATURE_ASAN=on ;;
179 "--disable-asan") unset FEATURE_ASAN ;; 185 "--disable-asan") unset FEATURE_ASAN ;;
180 "--enable-strict-errors") FEATURE_STRICT_ERRORS=on ;; 186 "--enable-strict-errors") FEATURE_STRICT_ERRORS=on ;;
181 "--disable-strict-errors") unset FEATURE_STRICT_ERRORS ;; 187 "--disable-strict-errors") unset FEATURE_STRICT_ERRORS ;;
182 "-"*) echo "unknown option: $ARG"; abort_configure ;; 188 "-"*) echo "unknown option: $ARG"; abort_configure ;;
337 343
338 print_check_msg "$dep_checked_asan" "no\n" 344 print_check_msg "$dep_checked_asan" "no\n"
339 dep_checked_asan=1 345 dep_checked_asan=1
340 return 0 346 return 0
341 } 347 }
342 dependency_error_ncurses() 348 dependency_error_ncursesw()
343 { 349 {
344 print_check_msg "$dep_checked_ncurses" "checking for ncurses... " 350 print_check_msg "$dep_checked_ncursesw" "checking for ncursesw... "
345 # dependency ncurses 351 # dependency ncursesw
346 while true 352 while true
347 do 353 do
348 if [ -z "$PKG_CONFIG" ]; then 354 if [ -z "$PKG_CONFIG" ]; then
349 break 355 break
350 fi 356 fi
352 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags ncursesw`" 358 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags ncursesw`"
353 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs ncursesw`" 359 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs ncursesw`"
354 else 360 else
355 break 361 break
356 fi 362 fi
363 print_check_msg "$dep_checked_ncursesw" "yes\n"
364 dep_checked_ncursesw=1
365 return 1
366 done
367
368 # dependency ncursesw
369 while true
370 do
371 if ./make/chklib.sh ncursesw > /dev/null 2>&1 ; then
372 :
373 else
374 break
375 fi
376 if ./make/chklib.sh tinfo > /dev/null 2>&1 ; then
377 :
378 else
379 break
380 fi
381 TEMP_LDFLAGS="$TEMP_LDFLAGS -lncursesw -ltinfo"
382 print_check_msg "$dep_checked_ncursesw" "yes\n"
383 dep_checked_ncursesw=1
384 return 1
385 done
386
387 # dependency ncursesw
388 while true
389 do
390 if ./make/chklib.sh ncursesw > /dev/null 2>&1 ; then
391 :
392 else
393 break
394 fi
395 TEMP_LDFLAGS="$TEMP_LDFLAGS -lncursesw"
396 print_check_msg "$dep_checked_ncursesw" "yes\n"
397 dep_checked_ncursesw=1
398 return 1
399 done
400
401 print_check_msg "$dep_checked_ncursesw" "no\n"
402 dep_checked_ncursesw=1
403 return 0
404 }
405 dependency_error_curses()
406 {
407 print_check_msg "$dep_checked_curses" "checking for curses... "
408 # dependency curses
409 while true
410 do
411 if [ -z "$PKG_CONFIG" ]; then
412 break
413 fi
414 if test_pkg_config "curses" "" "" "" ; then
415 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags curses`"
416 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs curses`"
417 else
418 break
419 fi
420 print_check_msg "$dep_checked_curses" "yes\n"
421 dep_checked_curses=1
422 return 1
423 done
424
425 # dependency curses
426 while true
427 do
428 if ./make/chklib.sh curses > /dev/null 2>&1 ; then
429 :
430 else
431 break
432 fi
433 TEMP_LDFLAGS="$TEMP_LDFLAGS -lcurses"
434 print_check_msg "$dep_checked_curses" "yes\n"
435 dep_checked_curses=1
436 return 1
437 done
438
439 print_check_msg "$dep_checked_curses" "no\n"
440 dep_checked_curses=1
441 return 0
442 }
443 dependency_error_cursesw()
444 {
445 print_check_msg "$dep_checked_cursesw" "checking for cursesw... "
446 # dependency cursesw
447 while true
448 do
449 if [ -z "$PKG_CONFIG" ]; then
450 break
451 fi
452 if test_pkg_config "cursesw" "" "" "" ; then
453 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags cursesw`"
454 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs cursesw`"
455 else
456 break
457 fi
458 print_check_msg "$dep_checked_cursesw" "yes\n"
459 dep_checked_cursesw=1
460 return 1
461 done
462
463 # dependency cursesw
464 while true
465 do
466 if ./make/chklib.sh cursesw > /dev/null 2>&1 ; then
467 :
468 else
469 break
470 fi
471 TEMP_LDFLAGS="$TEMP_LDFLAGS -lcursesw"
472 print_check_msg "$dep_checked_cursesw" "yes\n"
473 dep_checked_cursesw=1
474 return 1
475 done
476
477 print_check_msg "$dep_checked_cursesw" "no\n"
478 dep_checked_cursesw=1
479 return 0
480 }
481 dependency_error_ncurses()
482 {
483 print_check_msg "$dep_checked_ncurses" "checking for ncurses... "
484 # dependency ncurses
485 while true
486 do
487 if [ -z "$PKG_CONFIG" ]; then
488 break
489 fi
490 if test_pkg_config "ncurses" "" "" "" ; then
491 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags ncurses`"
492 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs ncurses`"
493 else
494 break
495 fi
496 print_check_msg "$dep_checked_ncurses" "yes\n"
497 dep_checked_ncurses=1
498 return 1
499 done
500
501 # dependency ncurses
502 while true
503 do
504 if ./make/chklib.sh ncurses > /dev/null 2>&1 ; then
505 :
506 else
507 break
508 fi
509 if ./make/chklib.sh tinfo > /dev/null 2>&1 ; then
510 :
511 else
512 break
513 fi
514 TEMP_LDFLAGS="$TEMP_LDFLAGS -lncurses -ltinfo"
515 print_check_msg "$dep_checked_ncurses" "yes\n"
516 dep_checked_ncurses=1
517 return 1
518 done
519
520 # dependency ncurses
521 while true
522 do
523 if ./make/chklib.sh ncurses > /dev/null 2>&1 ; then
524 :
525 else
526 break
527 fi
528 TEMP_LDFLAGS="$TEMP_LDFLAGS -lncurses"
357 print_check_msg "$dep_checked_ncurses" "yes\n" 529 print_check_msg "$dep_checked_ncurses" "yes\n"
358 dep_checked_ncurses=1 530 dep_checked_ncurses=1
359 return 1 531 return 1
360 done 532 done
361 533
410 fi 582 fi
411 583
412 # 584 #
413 # OPTION VALUES 585 # OPTION VALUES
414 # 586 #
587 checkopt_curses_ncursesw()
588 {
589 VERR=0
590 if dependency_error_ncursesw ; then
591 VERR=1
592 fi
593 if [ $VERR -ne 0 ]; then
594 return 1
595 fi
596 return 0
597 }
598 checkopt_curses_cursesw()
599 {
600 VERR=0
601 if dependency_error_cursesw ; then
602 VERR=1
603 fi
604 if [ $VERR -ne 0 ]; then
605 return 1
606 fi
607 return 0
608 }
609 checkopt_curses_ncurses()
610 {
611 VERR=0
612 if dependency_error_ncurses ; then
613 VERR=1
614 fi
615 if [ $VERR -ne 0 ]; then
616 return 1
617 fi
618 TEMP_CFLAGS="$TEMP_CFLAGS -DDISABLE_UNICODE"
619 TEMP_CXXFLAGS="$TEMP_CXXFLAGS -DDISABLE_UNICODE"
620 return 0
621 }
622 checkopt_curses_curses()
623 {
624 VERR=0
625 if dependency_error_curses ; then
626 VERR=1
627 fi
628 if [ $VERR -ne 0 ]; then
629 return 1
630 fi
631 TEMP_CFLAGS="$TEMP_CFLAGS -DDISABLE_UNICODE"
632 TEMP_CXXFLAGS="$TEMP_CXXFLAGS -DDISABLE_UNICODE"
633 return 0
634 }
415 635
416 # 636 #
417 # TARGETS 637 # TARGETS
418 # 638 #
419 639
422 echo "# flags for unnamed target" >> "$TEMP_DIR/flags.mk" 642 echo "# flags for unnamed target" >> "$TEMP_DIR/flags.mk"
423 TEMP_CFLAGS= 643 TEMP_CFLAGS=
424 TEMP_CXXFLAGS= 644 TEMP_CXXFLAGS=
425 TEMP_LDFLAGS= 645 TEMP_LDFLAGS=
426 646
427 if dependency_error_ncurses; then
428 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ncurses "
429 ERROR=1
430 fi
431 647
432 # Features 648 # Features
433 if [ -n "$FEATURE_ASAN" ]; then 649 if [ -n "$FEATURE_ASAN" ]; then
434 # check dependency 650 # check dependency
435 if dependency_error_asan ; then 651 if dependency_error_asan ; then
462 __EOF__ 678 __EOF__
463 else 679 else
464 : 680 :
465 fi 681 fi
466 682
683 # Option: --curses
684 if [ -z "$OPT_CURSES" ]; then
685 echo "auto-detecting option 'curses'"
686 SAVED_ERROR="$ERROR"
687 SAVED_DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED"
688 ERROR=1
689 while true
690 do
691 if checkopt_curses_ncursesw ; then
692 echo " curses: ncursesw" >> "$TEMP_DIR/options"
693 ERROR=0
694 break
695 fi
696 if checkopt_curses_cursesw ; then
697 echo " curses: cursesw" >> "$TEMP_DIR/options"
698 ERROR=0
699 break
700 fi
701 if checkopt_curses_ncurses ; then
702 echo " curses: ncurses" >> "$TEMP_DIR/options"
703 ERROR=0
704 break
705 fi
706 if checkopt_curses_curses ; then
707 echo " curses: curses" >> "$TEMP_DIR/options"
708 ERROR=0
709 break
710 fi
711 break
712 done
713 if [ $ERROR -ne 0 ]; then
714 SAVED_ERROR=1
715 SAVED_DEPENDENCIES_FAILED="option 'curses' $SAVED_DEPENDENCIES_FAILED"
716 fi
717 ERROR="$SAVED_ERROR"
718 DEPENDENCIES_FAILED="$SAVED_DEPENDENCIES_FAILED"
719 else
720 echo "checking option curses = $OPT_CURSES"
721 if false; then
722 false
723 elif [ "$OPT_CURSES" = "ncursesw" ]; then
724 echo " curses: $OPT_CURSES" >> $TEMP_DIR/options
725 if checkopt_curses_ncursesw ; then
726 :
727 else
728 ERROR=1
729 DEPENDENCIES_FAILED="option 'curses' $DEPENDENCIES_FAILED"
730 fi
731 elif [ "$OPT_CURSES" = "cursesw" ]; then
732 echo " curses: $OPT_CURSES" >> $TEMP_DIR/options
733 if checkopt_curses_cursesw ; then
734 :
735 else
736 ERROR=1
737 DEPENDENCIES_FAILED="option 'curses' $DEPENDENCIES_FAILED"
738 fi
739 elif [ "$OPT_CURSES" = "ncurses" ]; then
740 echo " curses: $OPT_CURSES" >> $TEMP_DIR/options
741 if checkopt_curses_ncurses ; then
742 :
743 else
744 ERROR=1
745 DEPENDENCIES_FAILED="option 'curses' $DEPENDENCIES_FAILED"
746 fi
747 elif [ "$OPT_CURSES" = "curses" ]; then
748 echo " curses: $OPT_CURSES" >> $TEMP_DIR/options
749 if checkopt_curses_curses ; then
750 :
751 else
752 ERROR=1
753 DEPENDENCIES_FAILED="option 'curses' $DEPENDENCIES_FAILED"
754 fi
755 else
756 echo
757 echo "Invalid option value - usage:"
758 echo " --curses=(ncursesw|cursesw|ncurses|curses)"
759 abort_configure
760 fi
761 fi
467 762
468 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 763 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
469 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 764 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
470 fi 765 fi
471 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 766 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then
502 fi 797 fi
503 if [ $has_overridable_config_vars__ -eq 1 ]; then 798 if [ $has_overridable_config_vars__ -eq 1 ]; then
504 echo 799 echo
505 echo "Config:" 800 echo "Config:"
506 fi 801 fi
802 echo
803 echo "Options:"
804 cat "$TEMP_DIR/options"
507 echo 805 echo
508 echo "Features:" 806 echo "Features:"
509 printf ' %-16s' 'asan:' 807 printf ' %-16s' 'asan:'
510 if [ -n "$FEATURE_ASAN" ]; then 808 if [ -n "$FEATURE_ASAN" ]; then
511 echo 'on' 809 echo 'on'

mercurial