configure

changeset 119
333a16b76adf
parent 109
6b07e7ed8f46
equal deleted inserted replaced
118:0f2ffbc408ce 119:333a16b76adf
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 Optional Features:
103 --enable-asan address sanitizer
104
102 __EOF__ 105 __EOF__
103 abort_configure 106 abort_configure
104 } 107 }
105 108
106 # create temporary directory 109 # create temporary directory
169 do 172 do
170 case "$ARG" in 173 case "$ARG" in
171 "--help"*) printhelp ;; 174 "--help"*) printhelp ;;
172 "--debug") BUILD_TYPE="debug" ;; 175 "--debug") BUILD_TYPE="debug" ;;
173 "--release") BUILD_TYPE="release" ;; 176 "--release") BUILD_TYPE="release" ;;
177 "--enable-asan") FEATURE_ASAN=on ;;
178 "--disable-asan") unset FEATURE_ASAN ;;
174 "-"*) echo "unknown option: $ARG"; abort_configure ;; 179 "-"*) echo "unknown option: $ARG"; abort_configure ;;
175 esac 180 esac
176 done 181 done
177 182
178 # toolchain detection utilities 183 # toolchain detection utilities
309 shift 314 shift
310 printf "$@" 315 printf "$@"
311 fi 316 fi
312 } 317 }
313 318
319 dependency_error_asan()
320 {
321 print_check_msg "$dep_checked_asan" "checking for asan... "
322 # dependency asan toolchain="gnuc"
323 while true
324 do
325 if notistoolchain "gnuc"; then
326 break
327 fi
328 TEMP_CFLAGS="$TEMP_CFLAGS -fsanitize=address"
329 TEMP_LDFLAGS="$TEMP_LDFLAGS -fsanitize=address"
330 print_check_msg "$dep_checked_asan" "yes\n"
331 dep_checked_asan=1
332 return 1
333 done
334
335 print_check_msg "$dep_checked_asan" "no\n"
336 dep_checked_asan=1
337 return 0
338 }
314 dependency_error_ncurses() 339 dependency_error_ncurses()
315 { 340 {
316 print_check_msg "$dep_checked_ncurses" "checking for ncurses... " 341 print_check_msg "$dep_checked_ncurses" "checking for ncurses... "
317 # dependency ncurses 342 # dependency ncurses
318 while true 343 while true
388 # 413 #
389 # TARGETS 414 # TARGETS
390 # 415 #
391 416
392 echo >> "$TEMP_DIR/flags.mk" 417 echo >> "$TEMP_DIR/flags.mk"
393 echo "configuring target: default" 418 echo "configuring global target"
394 echo "# flags for target default" >> "$TEMP_DIR/flags.mk" 419 echo "# flags for unnamed target" >> "$TEMP_DIR/flags.mk"
395 TEMP_CFLAGS= 420 TEMP_CFLAGS=
396 TEMP_CXXFLAGS= 421 TEMP_CXXFLAGS=
397 TEMP_LDFLAGS= 422 TEMP_LDFLAGS=
398 423
399 if dependency_error_ncurses; then 424 if dependency_error_ncurses; then
400 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ncurses " 425 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ncurses "
401 ERROR=1 426 ERROR=1
402 fi 427 fi
403 428
404 # Features 429 # Features
430 if [ -n "$FEATURE_ASAN" ]; then
431 # check dependency
432 if dependency_error_asan ; then
433 # "auto" features can fail and are just disabled in this case
434 if [ "$FEATURE_ASAN" = "auto" ]; then
435 DISABLE_FEATURE_ASAN=1
436 else
437 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED asan "
438 ERROR=1
439 fi
440 fi
441 if [ -n "$DISABLE_FEATURE_ASAN" ]; then
442 unset FEATURE_ASAN
443 fi
444 fi
445 if [ -n "$FEATURE_ASAN" ]; then
446 :
447 else
448 :
449 fi
405 450
406 451
407 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 452 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
408 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 453 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
409 fi 454 fi
442 if [ $has_overridable_config_vars__ -eq 1 ]; then 487 if [ $has_overridable_config_vars__ -eq 1 ]; then
443 echo 488 echo
444 echo "Config:" 489 echo "Config:"
445 fi 490 fi
446 echo 491 echo
492 echo "Features:"
493 printf ' %-16s' 'asan:'
494 if [ -n "$FEATURE_ASAN" ]; then
495 echo 'on'
496 else
497 echo 'off'
498 fi
499 echo
447 500
448 # generate the config.mk file 501 # generate the config.mk file
449 pwd=`pwd` 502 pwd=`pwd`
450 cat > "$TEMP_DIR/config.mk" << __EOF__ 503 cat > "$TEMP_DIR/config.mk" << __EOF__
451 # 504 #

mercurial