From 6f407d0c5d70c9c18344819d53dd7f65f4864ffa Mon Sep 17 00:00:00 2001 From: midipix Date: May 26 2021 21:28:39 +0000 Subject: build system: config_host(): improved logging, strict posix conformance. --- diff --git a/configure b/configure index b2632a9..6099868 100755 --- a/configure +++ b/configure @@ -848,15 +848,56 @@ config_cfghost() config_host() { + # init output_step_prolog ${mb_script} 'config_host' - # verify configuration for the host's (cross-)compiler - ${mb_make} -s host.tag \ - -f "$mb_makefile" \ - && output_step_epilog \ - && return 0 + mb_cfghost_cc="$ccenv_host_cc" + mb_cfghost_tmpname='ccenv/c3RyaWN0X21vZGUK.c' + + mb_cfghost_cflags=$(${mb_make} -n -f "$mb_makefile" \ + .cflags-host) + + mb_cfghost_cflags="${mb_cfghost_cflags#*: }" + + printf 'int main(void){return 0;}' \ + > "$mb_cfghost_tmpname" + + # log + printf '\n' >&3 + + printf '%s\n' \ + '#' \ + '# verify that that following combination of' \ + '# host compiler and host cflags is working.' \ + '#' \ + >&3 + + printf '\n%s' "$mb_cfghost_cc $ccenv_tmpname -o a.out" >&3 + + for mb_cfghost_cflag in $mb_cfghost_cflags; do + printf ' \\\n\t%s' "$mb_cfghost_cflag" >&3 + done + + printf '\n\n' >&3 + + # execute + if eval $mb_cfghost_cc "$ccenv_tmpname" -o a.out \ + $(printf '%s' "$mb_cfghost_cflags") \ + 2>&3; then + rm a.out + rm $mb_cfghost_tmpname + mb_cfghost_ret=0 + else + mb_cfghost_ret=1 + fi + + if [ $mb_cfghost_ret = 0 ]; then + output_step_epilog + return 0 + fi # should never happen + error_msg error_msg "configure was able to generate a Makefile for the selected host," error_msg "however the host-targeting compiler was found to be missing" error_msg "at least one of the required headers or features."