track file dependency using -MMD if available

While here, move the SRCS variable to the configure and add the
-includes in Makefile.local; it de-clutters the Makefile a bit.
This commit is contained in:
Omar Polo 2022-01-03 18:05:54 +00:00
parent 613c827165
commit 7c956fefc2
2 changed files with 42 additions and 9 deletions

View File

@ -14,15 +14,11 @@ include Makefile.local
y.tab.c: parse.y
${YACC} -b y parse.y
SRCS = gmid.c iri.c utf8.c ex.c server.c sandbox.c mime.c puny.c \
utils.c log.c dirs.c fcgi.c proxy.c
OBJS = ${SRCS:.c=.o} y.tab.o ${COMPAT}
gmid: ${GMID_OBJS}
${CC} ${GMID_OBJS} -o $@ ${LDFLAGS}
gmid: ${OBJS}
${CC} ${OBJS} -o gmid ${LDFLAGS}
gg: gg.o iri.o utf8.o ${COMPAT}
${CC} gg.o iri.o utf8.o ${COMPAT} -o $@ ${LDFLAGS}
gg: ${GG_OBJS}
${CC} ${GG_OBJS} -o $@ ${LDFLAGS}
static: ${OBJS}
${CC} ${OBJS} -o gmid ${LDFLAGS} ${STATIC}

39
configure vendored
View File

@ -220,6 +220,12 @@ else
echo 1>&3
fi
if runtest noop MMD -MMD; then
CFLAGS="${CFLAGS} -MMD"
echo "adding -MMD to CFLAGS" 1>&2
echo "adding -MMD to CFLAGS" 1>&3
fi
# --------
# tests for config.h
@ -407,6 +413,25 @@ echo "file config.h: written" 1>&3
# --------
# tests for Makefile.local
GMID_SRCS="dirs.c ex.c fcgi.c gmid.c iri.c log.c mime.c proxy.c puny.c"
GMID_SRCS="${GMID_SRCS} sandbox.c server.c utf8.c utils.c y.tab.c"
GMID_OBJS=
for src in ${GMID_SRCS}; do
GMID_OBJS="${GMID_OBJS} ${src%.c}.o"
done
GMID_OBJS="${GMID_OBJS} ${COMPAT}"
GG_SRCS="gg.c iri.c utf8.c"
GG_OBJS=
for src in ${GG_SRCS}; do
GG_OBJS="${GG_OBJS} ${src%.c}.o"
done
GG_OBJS="${GG_OBJS} ${COMPAT}"
ALL_SRCS="${GMID_SRCS} gg.c"
exec > Makefile.local
[ -z "${BINDIR}" ] && BINDIR="${PREFIX}/bin"
@ -433,6 +458,9 @@ INSTALL_LIB = ${INSTALL_LIB}
INSTALL_MAN = ${INSTALL_MAN}
INSTALL_DATA = ${INSTALL_DATA}
GMID_OBJS = ${GMID_OBJS}
GG_OBJS = ${GG_OBJS}
VERSION = ${VERSION}
__HEREDOC__
@ -441,7 +469,16 @@ printf "COMPAT ="
for comp in ${COMPAT}; do
printf " %s/%s" "$PWD" "$comp"
done
printf "\n"
printf "\n\n"
# Include dependency info
for src in ${ALL_SRCS}; do
printf "-include ${src%.c}.d\n"
done
for comp in ${COMPAT}; do
printf "-include ${comp%.o}.d\n"
done
echo "file Makefile.local: written" 1>&2
echo "file Makefile.local: written" 1>&3