]> git.mdlowis.com Git - proto/aos.git/commitdiff
added rule generation script
authormike lowis <mike@mdlowis.com>
Mon, 5 Apr 2021 02:08:21 +0000 (22:08 -0400)
committermike lowis <mike@mdlowis.com>
Mon, 5 Apr 2021 02:08:21 +0000 (22:08 -0400)
Makefile
config.mk [new file with mode: 0644]
genrules.sh [new file with mode: 0755]
rules.mk [new file with mode: 0644]

index b7a9765976b608ef5978b372bda912156847ce6c..96e64a21b27368c75c47725b8d8b9115febb2e53 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,13 @@
-.PHONY: all clean
+.PHONY: all libs bins clean rules
 
-all:
-       ./tools/build.sh
+all: libs bins
 
 clean:
-       rm -rf build/
\ No newline at end of file
+       find build/ -type f -delete
+       
+rules:
+       ./genrules.sh
+
+include config.mk
+include rules.mk
+
diff --git a/config.mk b/config.mk
new file mode 100644 (file)
index 0000000..cb39484
--- /dev/null
+++ b/config.mk
@@ -0,0 +1,12 @@
+CC = cc
+CFLAGS = -g -Wall -Wextra -Werror
+CPPFLAGS = -Iinc/ -I/usr/include/freetype2
+
+AR = ar
+ARFLAGS = rs
+
+LDFLAGS = -Lbuild/lib/ -la -lnet -lui -lX11 -lXft -lfontconfig
+
+ARCHIVE = $(AR) $(ARFLAGS) $@ $^
+BINARY  = $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $< $(LDFLAGS)
+OBJECT  = $(CC) $(CFLAGS) $(CPPFLAGS) -MMD -c -o $@ $< 
diff --git a/genrules.sh b/genrules.sh
new file mode 100755 (executable)
index 0000000..3c4b56c
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+rm -rf build/
+printf "" > rules.mk
+
+# Generate rules for all libraries
+for lib in lib/*; do
+    libdir="$(dirname "$lib")"
+    libname="$(basename "$lib")"
+    for f in "$lib"/*; do
+        mkdir -p "build/$(dirname "$f")"
+        printf "%s\n" "build/${f%.c}.o: $f config.mk" >> rules.mk
+        printf "\t\$(OBJECT)\n" >> rules.mk
+        printf "%s\n" "build/$libdir/lib$libname.a: build/${f%.c}.o" >> rules.mk
+        printf "%sinclude %s\n" '-' "build/${f%.c}.d" >> rules.mk
+    done
+    printf "%s\n"   "build/$libdir/lib$libname.a:" >> rules.mk
+    printf "\t\$(ARCHIVE)\n" >> rules.mk
+    printf "%s\n"   "libs: build/$libdir/lib$libname.a" >> rules.mk
+    mkdir -p "build/$libdir/"
+done
+
+# Generate rules for simple binaries
+for bin in bin/*.c; do
+    mkdir -p "build/bin/"
+    printf "%s\n" "build/${bin%.c}.o: $bin" >> rules.mk
+    printf "\t\$(OBJECT)\n" >> rules.mk
+    printf "%s\n" "build/${bin%.c}: build/${bin%.c}.o" >> rules.mk
+    printf "\t\$(BINARY)\n" >> rules.mk
+    printf "%s\n" "bins: build/${bin%.c}" >> rules.mk
+done
diff --git a/rules.mk b/rules.mk
new file mode 100644 (file)
index 0000000..92e6b1b
--- /dev/null
+++ b/rules.mk
@@ -0,0 +1,189 @@
+build/lib/a/argv0.o: lib/a/argv0.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/argv0.o
+-include build/lib/a/argv0.d
+build/lib/a/ecalloc.o: lib/a/ecalloc.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/ecalloc.o
+-include build/lib/a/ecalloc.d
+build/lib/a/efopen.o: lib/a/efopen.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/efopen.o
+-include build/lib/a/efopen.d
+build/lib/a/efreadline.o: lib/a/efreadline.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/efreadline.o
+-include build/lib/a/efreadline.d
+build/lib/a/emalloc.o: lib/a/emalloc.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/emalloc.o
+-include build/lib/a/emalloc.d
+build/lib/a/eraise.o: lib/a/eraise.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/eraise.o
+-include build/lib/a/eraise.d
+build/lib/a/erealloc.o: lib/a/erealloc.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/erealloc.o
+-include build/lib/a/erealloc.d
+build/lib/a/esignal.o: lib/a/esignal.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/esignal.o
+-include build/lib/a/esignal.d
+build/lib/a/estrdup.o: lib/a/estrdup.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/estrdup.o
+-include build/lib/a/estrdup.d
+build/lib/a/fatal.o: lib/a/fatal.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/fatal.o
+-include build/lib/a/fatal.d
+build/lib/a/forkexec.o: lib/a/forkexec.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/forkexec.o
+-include build/lib/a/forkexec.d
+build/lib/a/gc.o: lib/a/gc.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/gc.o
+-include build/lib/a/gc.d
+build/lib/a/options.o: lib/a/options.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/options.o
+-include build/lib/a/options.d
+build/lib/a/opts_parse.o: lib/a/opts_parse.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/opts_parse.o
+-include build/lib/a/opts_parse.d
+build/lib/a/opts_parsespec.o: lib/a/opts_parsespec.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/opts_parsespec.o
+-include build/lib/a/opts_parsespec.d
+build/lib/a/opts_printhelp.o: lib/a/opts_printhelp.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/opts_printhelp.o
+-include build/lib/a/opts_printhelp.d
+build/lib/a/set_option.o: lib/a/set_option.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/set_option.o
+-include build/lib/a/set_option.d
+build/lib/a/smprintf.o: lib/a/smprintf.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/smprintf.o
+-include build/lib/a/smprintf.d
+build/lib/a/strmcat.o: lib/a/strmcat.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/strmcat.o
+-include build/lib/a/strmcat.d
+build/lib/a/usage.o: lib/a/usage.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/usage.o
+-include build/lib/a/usage.d
+build/lib/a/warn.o: lib/a/warn.c config.mk
+       $(OBJECT)
+build/lib/liba.a: build/lib/a/warn.o
+-include build/lib/a/warn.d
+build/lib/liba.a:
+       $(ARCHIVE)
+libs: build/lib/liba.a
+build/lib/net/netaccept.o: lib/net/netaccept.c config.mk
+       $(OBJECT)
+build/lib/libnet.a: build/lib/net/netaccept.o
+-include build/lib/net/netaccept.d
+build/lib/net/netannounce.o: lib/net/netannounce.c config.mk
+       $(OBJECT)
+build/lib/libnet.a: build/lib/net/netannounce.o
+-include build/lib/net/netannounce.d
+build/lib/net/netdial.o: lib/net/netdial.c config.mk
+       $(OBJECT)
+build/lib/libnet.a: build/lib/net/netdial.o
+-include build/lib/net/netdial.d
+build/lib/net/netlisten.o: lib/net/netlisten.c config.mk
+       $(OBJECT)
+build/lib/libnet.a: build/lib/net/netlisten.o
+-include build/lib/net/netlisten.d
+build/lib/net/netresolve.o: lib/net/netresolve.c config.mk
+       $(OBJECT)
+build/lib/libnet.a: build/lib/net/netresolve.o
+-include build/lib/net/netresolve.d
+build/lib/net/netsocket.o: lib/net/netsocket.c config.mk
+       $(OBJECT)
+build/lib/libnet.a: build/lib/net/netsocket.o
+-include build/lib/net/netsocket.d
+build/lib/libnet.a:
+       $(ARCHIVE)
+libs: build/lib/libnet.a
+build/lib/ui/font_close.o: lib/ui/font_close.c config.mk
+       $(OBJECT)
+build/lib/libui.a: build/lib/ui/font_close.o
+-include build/lib/ui/font_close.d
+build/lib/ui/font_load.o: lib/ui/font_load.c config.mk
+       $(OBJECT)
+build/lib/libui.a: build/lib/ui/font_load.o
+-include build/lib/ui/font_load.d
+build/lib/ui/ui_begin.o: lib/ui/ui_begin.c config.mk
+       $(OBJECT)
+build/lib/libui.a: build/lib/ui/ui_begin.o
+-include build/lib/ui/ui_begin.d
+build/lib/ui/ui_end.o: lib/ui/ui_end.c config.mk
+       $(OBJECT)
+build/lib/libui.a: build/lib/ui/ui_end.o
+-include build/lib/ui/ui_end.d
+build/lib/ui/window_create.o: lib/ui/window_create.c config.mk
+       $(OBJECT)
+build/lib/libui.a: build/lib/ui/window_create.o
+-include build/lib/ui/window_create.d
+build/lib/ui/window_delete.o: lib/ui/window_delete.c config.mk
+       $(OBJECT)
+build/lib/libui.a: build/lib/ui/window_delete.o
+-include build/lib/ui/window_delete.d
+build/lib/ui/window_hide.o: lib/ui/window_hide.c config.mk
+       $(OBJECT)
+build/lib/libui.a: build/lib/ui/window_hide.o
+-include build/lib/ui/window_hide.d
+build/lib/ui/window_show.o: lib/ui/window_show.c config.mk
+       $(OBJECT)
+build/lib/libui.a: build/lib/ui/window_show.o
+-include build/lib/ui/window_show.d
+build/lib/libui.a:
+       $(ARCHIVE)
+libs: build/lib/libui.a
+build/bin/dial.o: bin/dial.c
+       $(OBJECT)
+build/bin/dial: build/bin/dial.o
+       $(BINARY)
+bins: build/bin/dial
+build/bin/edit.o: bin/edit.c
+       $(OBJECT)
+build/bin/edit: build/bin/edit.o
+       $(BINARY)
+bins: build/bin/edit
+build/bin/init.o: bin/init.c
+       $(OBJECT)
+build/bin/init: build/bin/init.o
+       $(BINARY)
+bins: build/bin/init
+build/bin/listen.o: bin/listen.c
+       $(OBJECT)
+build/bin/listen: build/bin/listen.o
+       $(BINARY)
+bins: build/bin/listen
+build/bin/pick.o: bin/pick.c
+       $(OBJECT)
+build/bin/pick: build/bin/pick.o
+       $(BINARY)
+bins: build/bin/pick
+build/bin/screenlock.o: bin/screenlock.c
+       $(OBJECT)
+build/bin/screenlock: build/bin/screenlock.o
+       $(BINARY)
+bins: build/bin/screenlock
+build/bin/shell.o: bin/shell.c
+       $(OBJECT)
+build/bin/shell: build/bin/shell.o
+       $(BINARY)
+bins: build/bin/shell
+build/bin/winmgr.o: bin/winmgr.c
+       $(OBJECT)
+build/bin/winmgr: build/bin/winmgr.o
+       $(BINARY)
+bins: build/bin/winmgr