Re: [dev] Build system: redo

From: Greg Reagle <list_AT_speedpost.net>
Date: Sun, 03 Jan 2021 13:07:12 -0500

Thank you very much Sergey Matveev. I have studied your proposed redo files for st and learned a lot. Here are my new and improved (you had a bug in default.o.do in that you forgot to depend on $src) redo files for st. Please take a look and tell me what you think.

Note that there are neither 'options' nor 'all' targets for simplicity--I don't that they are very useful. The redo command has the -x and -v options if you want more details. Also, I de-automated your automatic generation of the source (.c) and object (.o) files because it didn't work properly as you discussed in your message. If it's going to be automatic, I want it to work automatically.

---- config.rc ----

CC=${CC:-cc}
VERSION=0.8.4
PREFIX=/usr/local
MANPREFIX=${PREFIX}/share/man
X11INC=/usr/X11R6/include
X11LIB=/usr/X11R6/lib
PKG_CONFIG=pkg-config

INCS="-I${X11INC}"
INCS="$INCS `${PKG_CONFIG} --cflags fontconfig`"
INCS="$INCS `${PKG_CONFIG} --cflags freetype2`"

LIBS="-L${X11LIB} -lm -lrt -lX11 -lutil -lXft"
LIBS="$LIBS `${PKG_CONFIG} --libs fontconfig`"
LIBS="$LIBS `${PKG_CONFIG} --libs freetype2`"

STCPPFLAGS="-DVERSION=\"${VERSION}\" -D_XOPEN_SOURCE=600"
STCFLAGS="${INCS} ${STCPPFLAGS} ${CPPFLAGS} ${CFLAGS}"
STLDFLAGS="${LIBS} ${LDFLAGS}"

OBJ="st.o x.o"

---- clean.do ----

redo-ifchange config.rc
. ./config.rc
rm -f st $OBJ st-${VERSION}.tar.gz

---- default.o.do ----

src=$2.c
redo-ifchange $src config.rc `sed -n 's/#include "\(.*\)"$/\1/p' $src`
. ./config.rc
printf 'recompiling %s\n' $2.c >&2
$CC $STCFLAGS -o $3 -c $2.c

---- st.do ----

redo-ifchange config.rc
. ./config.rc
redo-ifchange $OBJ
printf 'relinking\n' >&2
$CC -o $3 $OBJ $STLDFLAGS
Received on Sun Jan 03 2021 - 19:07:12 CET

This archive was generated by hypermail 2.3.0 : Sun Jan 03 2021 - 19:48:07 CET