Experimental new redoconf C/C++ build/autoconfiguration system.

To test it out, try this:
	./do -j10 build
	cd docs/cookbook/c
	redo -j10 test

It should detect all the compilers on your system and make three
separate builds for each one: normal, debug, and optimized.  Then it
tries to run a test program under each one.

If there are windows cross compilers and you also have 'wine'
installed, it'll try running the test program under wine as well.

redoconf currently has no documentation other than the example program.
We'll fix that later.
This commit is contained in:
Avery Pennarun 2019-02-03 01:14:51 -05:00
commit 6dae51f4d2
67 changed files with 1777 additions and 1 deletions

35
redoconf/rc/CXX.rc.od Normal file
View file

@ -0,0 +1,35 @@
. ./redoconf.rc
rc_include rc/CC.rc
rc_helpmsg CXX "C++ compiler name (c++)"
rc_helpmsg CXXFLAGS "Extra C++ compiler flags (eg. -O2 -g)"
if [ -n "$CXX" ]; then
set -- "$CXX"
else
# Note: $ARCH has already been set correctly by CC.rc
set -- \
"${ARCH}c++" "${ARCH}g++" \
"${ARCH}clang++" "/usr/bin/${ARCH}clang++"-[0-9]*
fi
for d in "$@"; do
[ -n "$d" ] || continue
echo "Trying C++ compiler: '$d'" >&2
if CC="" CXX="$d" LINK="$d" rc_compile cxx link 'class A {};'; then
rc_replaceln CXX "$d"
# If the project activates CXX.rc, then we
# replace the C linker with C++. This causes
# it to include -lstdc++, etc.
# A future .rc could override this again.
rc_replaceln LINK "$d"
rc_save
exit 0
fi
done
echo "Warning: Can't find a working C++ compiler." >&2
rc_undo
rc_replaceln CXX ""
rc_save
exit 0