From 42555bafc1fee1b5f9222a7d4d81d51ebd714b80 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Thu, 16 Dec 2021 20:45:46 -0500 Subject: [PATCH] fixed up the build and got anvil building with new setup --- bin/rules.mk | 1 + bin/winmgr/main.c | 20 ----------------- config.mk | 5 ++--- mkrules | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 23 deletions(-) delete mode 100644 bin/winmgr/main.c create mode 100755 mkrules diff --git a/bin/rules.mk b/bin/rules.mk index a4af44e..99f7407 100644 --- a/bin/rules.mk +++ b/bin/rules.mk @@ -1,3 +1,4 @@ $(BINDIR)/dial: LIBS += -lnet $(BINDIR)/listen: LIBS += -lnet $(BINDIR)/screenlock: LIBS += -lnet -lui -lX11 -lXft -lfontconfig +$(BINDIR)/winmgr: LIBS += -lX11 -lXft -lfontconfig -lXinerama diff --git a/bin/winmgr/main.c b/bin/winmgr/main.c deleted file mode 100644 index c1c7cea..0000000 --- a/bin/winmgr/main.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "revised.h" - -XConf X; -Monitor Monitors[MAX_MONITORS] = {0}; -Client Clients[MAX_CLIENTS]; -size_t FreeClients[MAX_CLIENTS / (sizeof(size_t) * 8u)] = 0; - -int main(int argc, char** argv) -{ - printf("%d\n", MAX_CLIENTS); - printf("%f mb\n", (float)sizeof(Clients) / 1024.0 / 1024.0); - printf("%f mb\n", (float)sizeof(FreeClients) / 1024.0 / 1024.0); - printf("%lu + %lu = %lu (%f mb)\n", - sizeof(X), - sizeof(Monitors), - sizeof(X) + sizeof(Monitors), - ((float)sizeof(X) + (float)sizeof(Monitors)) / 1024.0 / 1024.0 - ); - return 0; -} diff --git a/config.mk b/config.mk index fa55ed3..b5ffc66 100644 --- a/config.mk +++ b/config.mk @@ -3,7 +3,7 @@ OUTDIR = build BINDIR = $(OUTDIR)/bin CC = cc -CFLAGS = -O2 -g -Wall -Wextra -Werror +CFLAGS = -O2 -g --std=c99 -pedantic -Wall -Wextra -Werror CPPFLAGS = -Iinc/ -I/usr/include/freetype2 AR = ar @@ -11,8 +11,7 @@ ARFLAGS = rs LDFLAGS = -Lbuild/lib/ $(LIBS) LIBS = -la -#LIBS = -la -lnet -lui -lX11 -lXft -lfontconfig ARCHIVE = $(AR) $(ARFLAGS) $@ $^ -BINARY = $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $< $(LDFLAGS) +BINARY = $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) OBJECT = $(CC) $(CFLAGS) $(CPPFLAGS) -MMD -c -o $@ $< diff --git a/mkrules b/mkrules new file mode 100755 index 0000000..7deccff --- /dev/null +++ b/mkrules @@ -0,0 +1,57 @@ +#!/bin/sh + +OUTDIR="$1" + +puts(){ + printf "%s\n" "$@" +} + +ObjectRules(){ + target="$1" + while read -r source; + do + mkdir -p "$(dirname "$OUTDIR/obj/$source")" + puts "\$(OUTDIR)/obj/${source%.c}.o: $source config.mk" + printf "\t\$(OBJECT)\n" + puts "$target: \$(OUTDIR)/obj/${source%.c}.o" + printf "%sinclude %s\n" '-' "\$(OUTDIR)/obj/${source%.c}.d" + done +} + +printf "" > rules.mk +libs="" +{ + mkdir -p "$OUTDIR/bin/" + mkdir -p "$OUTDIR/lib/" + + # Generate rules for all libraries + for lib in lib/*; do + libdir="$(dirname "$lib")" + libname="$(basename "$lib")" + libs="$libs \$(OUTDIR)/$libdir/lib$libname.a" + + find "$lib" -name '*.c' | ObjectRules "\$(OUTDIR)/$libdir/lib$libname.a" + puts "\$(OUTDIR)/$libdir/lib$libname.a:" + printf "\t\$(ARCHIVE)\n" + puts "libs: \$(OUTDIR)/$libdir/lib$libname.a" + done + puts "libs = $libs" + + # Generate rules for simple binaries + for bin in bin/*.c; do + puts "\$(OUTDIR)/${bin%.c}.o: $bin" + printf "\t\$(OBJECT)\n" + puts "\$(OUTDIR)/${bin%.c}: | \$(libs)" + puts "\$(OUTDIR)/${bin%.c}: \$(OUTDIR)/${bin%.c}.o" + printf "\t\$(BINARY)\n" + puts "bins: \$(OUTDIR)/${bin%.c}" + done + + # Generate rules for complex binaries + for bin in bin/*/ ; do + find "${bin%/}" -name '*.c' | ObjectRules "\$(OUTDIR)/${bin%/}" + puts "\$(OUTDIR)/${bin%/}: | \$(libs)" + printf "\t\$(BINARY)\n" + puts "bins: \$(OUTDIR)/${bin%/}" + done +} >> rules.mk -- 2.52.0