commit c478cb456d822ba3957eef09d5fe26af9c1a24b7
parent 2d17ed2923abaa7cbfd924ef9101821cdf8e7d2a
Author: Juan F. Meleiro <juan@juanmeleiro.mat.br>
Date: Thu, 9 May 2024 10:53:54 +0200
Improve build system by reducing redundant rebuilds
Diffstat:
6 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/coding/.gitignore b/coding/.gitignore
@@ -1 +1,2 @@
-*.test
-\ No newline at end of file
+*.test
+*.o
diff --git a/coding/clean.do b/coding/clean.do
@@ -1 +1 @@
-rm -f *.test
-\ No newline at end of file
+rm -f *.test *.o
+\ No newline at end of file
diff --git a/coding/default.o.do b/coding/default.o.do
@@ -0,0 +1 @@
+cc -c $(basename "$1" .o).c -o "$3"
+\ No newline at end of file
diff --git a/coding/default.test.do b/coding/default.test.do
@@ -1,6 +1,5 @@
-#!/bin/sh
-
-headers=*.h
-src=$(ls *.c | grep -v .test.c)
-redo-ifchange $src $headers
-cc -g -Wall -Wextra -fmax-errors=1 $src $1.c -o $3 >&2
+deps=$(grep '^#include ".*"$' $1.c | sed 's/#include "\(.*\)\.h"/\1.o/')
+redo-ifchange "$1.o"
+redo-ifchange $deps
+src=$(ls *.o | grep -v .test.o)
+cc -o "$3" $src "$1.o"
diff --git a/coding/default.test.o.do b/coding/default.test.o.do
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+headers=*.h
+src=$(basename $1 .o).c
+deps=$(grep '^#include ".*"$' $src | sed 's/#include "\(.*\)\.h"/\1.c/')
+redo-ifchange $deps
+redo-ifchange $src
+cc -c -g -Wall -Wextra -fmax-errors=1 $src -o $3 >&2
diff --git a/coding/test.do b/coding/test.do
@@ -1,8 +1,8 @@
#!/bin/sh
-for t in symbol assoc stack tree schema gardener model
+for t in symbol assoc stack tree schema gardener zen model
do
- redo $t.test || exit 1
+ redo-ifchange $t.test || exit 1
./$t.test >&2 || exit 1
done