summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2024-09-14 12:43:57 -0400
committerTavian Barnes <tavianator@tavianator.com>2024-09-14 12:49:03 -0400
commit170aa3df69a64544ef5fcc24ac22de1aa7303562 (patch)
treec2363bb7e3b7d1db9d7c480a8d7c6d133a6e643d
parent19ed06ea234c50b8e4160dcb3b6cd8fa9cc159df (diff)
downloadbfs-170aa3df69a64544ef5fcc24ac22de1aa7303562.tar.xz
build: Remove gen/deps.mk
Since commit 3552b79 ("build/flags: Infrastructure to detect compiler flag support"), this file only listed a bunch of lines like -include obj/src/alloc.d -include obj/src/bar.d ... We can do that just as well from the main Makefile, and in one line too: -include ${OBJS:.o=.d} This lets us pull the list of all objects out of build/prelude.mk and put it closer to where those objects are actually used.
-rw-r--r--Makefile86
-rw-r--r--build/config.mk6
-rw-r--r--build/deps.mk15
-rw-r--r--build/header.mk1
-rw-r--r--build/prelude.mk44
5 files changed, 68 insertions, 84 deletions
diff --git a/Makefile b/Makefile
index 870e0cb..85029d9 100644
--- a/Makefile
+++ b/Makefile
@@ -50,8 +50,43 @@ BINS := \
all: ${BINS}
.PHONY: all
+# All object files except the entry point
+LIBBFS := \
+ obj/src/alloc.o \
+ obj/src/bar.o \
+ obj/src/bfstd.o \
+ obj/src/bftw.o \
+ obj/src/color.o \
+ obj/src/ctx.o \
+ obj/src/diag.o \
+ obj/src/dir.o \
+ obj/src/dstring.o \
+ obj/src/eval.o \
+ obj/src/exec.o \
+ obj/src/expr.o \
+ obj/src/fsade.o \
+ obj/src/ioq.o \
+ obj/src/mtab.o \
+ obj/src/opt.o \
+ obj/src/parse.o \
+ obj/src/printf.o \
+ obj/src/pwcache.o \
+ obj/src/sighook.o \
+ obj/src/stat.o \
+ obj/src/thread.o \
+ obj/src/trie.o \
+ obj/src/typo.o \
+ obj/src/version.o \
+ obj/src/xregex.o \
+ obj/src/xspawn.o \
+ obj/src/xtime.o
+
+# All object files
+OBJS := ${LIBBFS}
+
# The main binary
-bin/bfs: ${LIBBFS} obj/src/main.o
+bin/bfs: obj/src/main.o ${LIBBFS}
+OBJS += obj/src/main.o
${BINS}:
@${MKDIR} ${@D}
@@ -61,11 +96,6 @@ ${BINS}:
# Get the .c file for a .o file
CSRC = ${@:obj/%.o=%.c}
-# Rebuild when the configuration changes
-${OBJS}: gen/config.mk
- @${MKDIR} ${@D}
- ${MSG} "[ CC ] ${CSRC}" ${CC} ${_CPPFLAGS} ${_CFLAGS} -c ${CSRC} -o $@
-
# Save the version number to this file, but only update version.c if it changes
gen/version.i.new::
${MKDIR} ${@D}
@@ -103,12 +133,24 @@ unit-tests: ${UTEST_BINS}
${MSG} "[TEST] tests/units" bin/tests/units
.PHONY: unit-tests
-bin/tests/units: \
- ${UNIT_OBJS} \
- ${LIBBFS}
-
-bin/tests/xspawnee: \
- obj/tests/xspawnee.o
+# Unit test objects
+UNIT_OBJS := \
+ obj/tests/alloc.o \
+ obj/tests/bfstd.o \
+ obj/tests/bit.o \
+ obj/tests/ioq.o \
+ obj/tests/list.o \
+ obj/tests/main.o \
+ obj/tests/sighook.o \
+ obj/tests/trie.o \
+ obj/tests/xspawn.o \
+ obj/tests/xtime.o
+
+bin/tests/units: ${UNIT_OBJS} ${LIBBFS}
+OBJS += ${UNIT_OBJS}
+
+bin/tests/xspawnee: obj/tests/xspawnee.o
+OBJS += obj/tests/xspawnee.o
# The different flag combinations we check
INTEGRATIONS := default dfs ids eds j1 j2 j3 s
@@ -133,13 +175,11 @@ check-j1 check-j2 check-j3 check-s: bin/bfs ${ITEST_BINS}
integration-tests: ${INTEGRATION_TESTS}
.PHONY: integration-tests
-bin/tests/mksock: \
- obj/tests/mksock.o \
- ${LIBBFS}
+bin/tests/mksock: obj/tests/mksock.o ${LIBBFS}
+OBJS += obj/tests/mksock.o
-bin/tests/xtouch: \
- obj/tests/xtouch.o \
- ${LIBBFS}
+bin/tests/xtouch: obj/tests/xtouch.o ${LIBBFS}
+OBJS += obj/tests/xtouch.o
# `make distcheck` configurations
DISTCHECKS := \
@@ -173,6 +213,16 @@ ${DISTCHECKS}::
&& ../configure MAKE="${MAKE}" ${DISTCHECK_CONFIG_${@:distcheck-%=%}} \
&& ${MAKE} check TEST_FLAGS="--sudo --verbose=skipped"
+## Automatic dependency tracking
+
+# Rebuild when the configuration changes
+${OBJS}: gen/config.mk
+ @${MKDIR} ${@D}
+ ${MSG} "[ CC ] ${CSRC}" ${CC} ${_CPPFLAGS} ${_CFLAGS} -c ${CSRC} -o $@
+
+# Include any generated dependency files
+-include ${OBJS:.o=.d}
+
## Packaging (`make install`)
DEST_PREFIX := ${DESTDIR}${PREFIX}
diff --git a/build/config.mk b/build/config.mk
index 86a4861..6296168 100644
--- a/build/config.mk
+++ b/build/config.mk
@@ -14,7 +14,6 @@ config: gen/config.mk
MKS := \
gen/vars.mk \
gen/flags.mk \
- gen/deps.mk \
gen/pkgs.mk
# The main configuration file, which includes the others
@@ -47,11 +46,6 @@ gen/flags.mk: gen/vars.mk
@+XMAKEFLAGS="$$MAKEFLAGS" ${MAKE} -sf build/flags.mk $@
.PHONY: gen/flags.mk
-# Check for dependency generation support
-gen/deps.mk: gen/flags.mk
- @+XMAKEFLAGS="$$MAKEFLAGS" ${MAKE} -sf build/deps.mk $@
-.PHONY: gen/deps.mk
-
# Auto-detect dependencies and their build flags
gen/pkgs.mk: gen/flags.mk
@+XMAKEFLAGS="$$MAKEFLAGS" ${MAKE} -sf build/pkgs.mk $@
diff --git a/build/deps.mk b/build/deps.mk
deleted file mode 100644
index b49e592..0000000
--- a/build/deps.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright © Tavian Barnes <tavianator@tavianator.com>
-# SPDX-License-Identifier: 0BSD
-
-# Makefile that generates gen/deps.mk
-
-include build/prelude.mk
-include gen/vars.mk
-include gen/flags.mk
-include build/exports.mk
-
-gen/deps.mk::
- ${MSG} "[ GEN] $@"
- @printf '# %s\n' "$@" >$@
- @printf -- '-include %s\n' ${OBJS:.o=.d} >>$@
- ${VCAT} $@
diff --git a/build/header.mk b/build/header.mk
index 0bc4a3e..abec00f 100644
--- a/build/header.mk
+++ b/build/header.mk
@@ -6,7 +6,6 @@
include build/prelude.mk
include gen/vars.mk
include gen/flags.mk
-include gen/deps.mk
include gen/pkgs.mk
include build/exports.mk
diff --git a/build/prelude.mk b/build/prelude.mk
index 76fbce8..b8726d7 100644
--- a/build/prelude.mk
+++ b/build/prelude.mk
@@ -71,50 +71,6 @@ ALL_PKGS := \
# List all object files here, as they're needed by both `./configure` and `make`
-# All object files except the entry point
-LIBBFS := \
- obj/src/alloc.o \
- obj/src/bar.o \
- obj/src/bfstd.o \
- obj/src/bftw.o \
- obj/src/color.o \
- obj/src/ctx.o \
- obj/src/diag.o \
- obj/src/dir.o \
- obj/src/dstring.o \
- obj/src/eval.o \
- obj/src/exec.o \
- obj/src/expr.o \
- obj/src/fsade.o \
- obj/src/ioq.o \
- obj/src/mtab.o \
- obj/src/opt.o \
- obj/src/parse.o \
- obj/src/printf.o \
- obj/src/pwcache.o \
- obj/src/sighook.o \
- obj/src/stat.o \
- obj/src/thread.o \
- obj/src/trie.o \
- obj/src/typo.o \
- obj/src/version.o \
- obj/src/xregex.o \
- obj/src/xspawn.o \
- obj/src/xtime.o \
-
-# Unit test objects
-UNIT_OBJS := \
- obj/tests/alloc.o \
- obj/tests/bfstd.o \
- obj/tests/bit.o \
- obj/tests/ioq.o \
- obj/tests/list.o \
- obj/tests/main.o \
- obj/tests/sighook.o \
- obj/tests/trie.o \
- obj/tests/xspawn.o \
- obj/tests/xtime.o
-
# All object files
OBJS := \
obj/src/main.o \