rm -rf build/
printf "" > rules.mk
-
+libs=""
{
# Generate rules for all libraries
for lib in lib/*; do
libdir="$(dirname "$lib")"
libname="$(basename "$lib")"
+ libs="$libs build/$libdir/lib$libname.a"
for f in "$lib"/*; do
mkdir -p "build/$(dirname "$f")"
printf "%s\n" "build/${f%.c}.o: $f config.mk"
printf "%s\n" "build/$libdir/lib$libname.a: build/${f%.c}.o"
printf "%sinclude %s\n" '-' "build/${f%.c}.d"
done
- printf "%s\n" "build/$libdir/lib$libname.a:"
- printf "\t\$(ARCHIVE)\n"
- printf "%s\n" "libs: build/$libdir/lib$libname.a"
+ printf "%s\n" "build/$libdir/lib$libname.a:"
+ printf "\t\$(ARCHIVE)\n"
+ printf "%s\n" "libs: build/$libdir/lib$libname.a"
mkdir -p "build/$libdir/"
done
-
+ printf "libs = %s\n" "$libs"
+
# Generate rules for simple binaries
for bin in bin/*.c; do
mkdir -p "build/bin/"
printf "%s\n" "build/${bin%.c}.o: $bin"
printf "\t\$(OBJECT)\n"
- printf "%s\n" "build/${bin%.c}: build/${bin%.c}.o"
+ printf "%s\n" "build/${bin%.c}: build/${bin%.c}.o \$(libs)"
printf "\t\$(BINARY)\n"
printf "%s\n" "bins: build/${bin%.c}"
done
build/lib/libui.a:
$(ARCHIVE)
libs: build/lib/libui.a
+libs = build/lib/liba.a build/lib/libnet.a build/lib/libui.a
build/bin/dial.o: bin/dial.c
$(OBJECT)
-build/bin/dial: build/bin/dial.o
+build/bin/dial: build/bin/dial.o $(libs)
$(BINARY)
bins: build/bin/dial
build/bin/edit.o: bin/edit.c
$(OBJECT)
-build/bin/edit: build/bin/edit.o
+build/bin/edit: build/bin/edit.o $(libs)
$(BINARY)
bins: build/bin/edit
build/bin/init.o: bin/init.c
$(OBJECT)
-build/bin/init: build/bin/init.o
+build/bin/init: build/bin/init.o $(libs)
$(BINARY)
bins: build/bin/init
build/bin/listen.o: bin/listen.c
$(OBJECT)
-build/bin/listen: build/bin/listen.o
+build/bin/listen: build/bin/listen.o $(libs)
$(BINARY)
bins: build/bin/listen
build/bin/pick.o: bin/pick.c
$(OBJECT)
-build/bin/pick: build/bin/pick.o
+build/bin/pick: build/bin/pick.o $(libs)
$(BINARY)
bins: build/bin/pick
build/bin/screenlock.o: bin/screenlock.c
$(OBJECT)
-build/bin/screenlock: build/bin/screenlock.o
+build/bin/screenlock: build/bin/screenlock.o $(libs)
$(BINARY)
bins: build/bin/screenlock
build/bin/shell.o: bin/shell.c
$(OBJECT)
-build/bin/shell: build/bin/shell.o
+build/bin/shell: build/bin/shell.o $(libs)
$(BINARY)
bins: build/bin/shell
build/bin/winmgr.o: bin/winmgr.c
$(OBJECT)
-build/bin/winmgr: build/bin/winmgr.o
+build/bin/winmgr: build/bin/winmgr.o $(libs)
$(BINARY)
bins: build/bin/winmgr