redoconf: better handling of required vs optional detectors.
CC.rc was the only "mandatory" detection, which was weird and inconsistent. Instead, make it optional like the others, and have it set a HAVE_CC variable appropriately (and have CXX.rc work the same way). Then, add a default.required.rc.od that checks the HAVE_* for any variable and aborts if it is not available. This allows us to fix confusing behaviour in allconfig.do, which would try every compiler on the system, but redo would print a (non-fatal) error message (and prevent redo-stamp optimization) when CC.rc failed for any non-working compilers. Now CC.rc just politely reports that it didn't find a compiler. Then we change all.rc.od to make CC.rc mandatory. Reported-by: Nathaniel Filardo <nwfilardo@gmail.com>
This commit is contained in:
parent
337e026ce3
commit
bdb8d8a27d
10 changed files with 56 additions and 24 deletions
|
|
@ -13,10 +13,10 @@ redo-ifchange "$REDOCONF/rc.sh" "$REDOCONF/utils.sh"
|
|||
_rc_exit_check() {
|
||||
if [ -z "$RC_INCLUDE_RAN" ]; then
|
||||
echo "Fatal: used redoconf/rc.sh but didn't call rc_include." >&2
|
||||
exit 99
|
||||
exit 91
|
||||
elif [ -n "$RC_QUEUE" ]; then
|
||||
echo "Fatal: must call rc_save or rc_undo before ending." >&2
|
||||
exit 99
|
||||
exit 92
|
||||
fi
|
||||
}
|
||||
trap _rc_exit_check EXIT
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ for d in "$@"; do
|
|||
x="${x#-}"
|
||||
[ -n "$x" ] && x="$x-"
|
||||
rc_replaceln ARCH "$x"
|
||||
|
||||
rc_replaceln HAVE_CC 1
|
||||
rc_save
|
||||
exit 0
|
||||
fi
|
||||
|
|
@ -65,4 +65,5 @@ done
|
|||
|
||||
echo "Can't find a working C compiler." >&2
|
||||
rc_undo
|
||||
exit 1
|
||||
rc_replaceln CC ""
|
||||
rc_save
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ for d in "$@"; do
|
|||
# it to include -lstdc++, etc.
|
||||
# A future .rc could override this again.
|
||||
rc_replaceln LINK "$d"
|
||||
rc_replaceln HAVE_CXX 1
|
||||
rc_save
|
||||
exit 0
|
||||
fi
|
||||
|
|
@ -32,4 +33,3 @@ echo "Warning: Can't find a working C++ compiler." >&2
|
|||
rc_undo
|
||||
rc_replaceln CXX ""
|
||||
rc_save
|
||||
exit 0
|
||||
|
|
|
|||
13
redoconf/rc/default.required.rc.od
Normal file
13
redoconf/rc/default.required.rc.od
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
. ./redoconf.rc
|
||||
|
||||
base=${1%.required.rc}
|
||||
name=${base#*/}
|
||||
NAME=$(echo "$name" | tr 'a-z.' 'A-Z_')
|
||||
|
||||
rc_include "$base.rc"
|
||||
|
||||
eval v="\$$NAME"
|
||||
if [ -z "$v" ]; then
|
||||
echo "$NAME is required in order to build." >&2
|
||||
exit 1
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue