From 4bee1c911c0a710da47b62a31e84535d2e0b7c76 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Thu, 22 Apr 2021 09:48:30 -0700 Subject: chore(organize): restructured build to allow for parallel projects to sys functionality --- Makefile | 17 +++++++++-------- bin/tmux-send | 4 ++++ bin/updatedirs | 25 ++++++++++++++++--------- rules.mk | 12 ++++++------ share/paths.mk | 19 +++++++++++-------- sys/cmd/dwm/rules.mk | 2 +- sys/cmd/filter/rules.mk | 2 +- sys/cmd/menu/rules.mk | 5 ++--- sys/cmd/term/rules.mk | 3 +-- sys/cmd/walk/rules.mk | 2 +- sys/libmath/rules.mk | 4 ++-- sys/libn/rules.mk | 2 -- 12 files changed, 54 insertions(+), 43 deletions(-) diff --git a/Makefile b/Makefile index c518063..13473fa 100644 --- a/Makefile +++ b/Makefile @@ -6,11 +6,12 @@ PKG := pkg-config # All needed build directories INC_DIR := include -SRC_DIR := sys BIN_DIR := bin +SYS_DIR := sys LIB_DIR := lib -OBJ_DIR := build -TST_DIR := test +SRC_DIR := src +OBJ_DIR := .build +TST_DIR := .test # C runtime library CINIT := $(LIB_DIR)/crt/crt1.o $(LIB_DIR)/crt/x86_64/crti.o `gcc --print-file-name=crtbeginS.o` @@ -24,15 +25,15 @@ INCS := -I $(INC_DIR) -isystem $(INC_DIR)/vendor/libc ELIBS := -L$(LIB_DIR) -lc # Named generic rules (must be evaluated lazily) -COMPILE = @echo "CC "$@;\ +COMPILE = @echo "CC "$(@:$(OBJ_DIR)/%=%);\ $(CC) -MD $(CFLAGS) $(TCFLAGS) $(INCS) $(TCINCS) -o $@ -c $< -LINK = @echo "LD "$@;\ +LINK = @echo "LD "$(@:$(OBJ_DIR)/%=%);\ $(CC) -MD $(CFLAGS) $(STATIC) $(TCFLAGS) -o $@ $(CINIT) $< $(CFINI) $(TCLIBS) $(ELIBS) -COMPLINK = @echo "CC "$@;\ +COMPLINK = @echo "CC "$(@:$(OBJ_DIR)/%=%);\ $(CC) -MD $(CFLAGS) $(STATIC) $(TCFLAGS) $(INCS) $(TCINCS) -o $@ $(CINIT) $^ $(CFINI) $(TCLIBS) $(ELIBS) -ASSEMBLE = @echo "AS "$@;\ +ASSEMBLE = @echo "AS "$(@:$(OBJ_DIR)/%=%);\ $(AS) $(AFLAGS) $(TCFLAGS) -o $@ $< -ARCHIVE = @echo "AR "$@;\ +ARCHIVE = @echo "AR "$(@:$(OBJ_DIR)/%=%);\ $(AR) crs $@ $^ include rules.mk diff --git a/bin/tmux-send b/bin/tmux-send index 47a6de8..b2e7fd4 100755 --- a/bin/tmux-send +++ b/bin/tmux-send @@ -4,6 +4,10 @@ dir=$1 tty=$(tmux list-panes -F "#{pane_active}#{pane_tty}" | grep '^1' | cut -c2-) vim=$(ps -o stat=,command= -t $tty | awk 'BEGIN{flag=0} {if($1 ~ /S*+/ && $2 ~ /nvim/){flag +=1}}; END {print flag}') +echo $dir +echo $tty +echo $vim + if [ $vim -gt 0 ]; then case $dir in up) diff --git a/bin/updatedirs b/bin/updatedirs index bb646e0..1ec2e25 100755 --- a/bin/updatedirs +++ b/bin/updatedirs @@ -3,15 +3,22 @@ import os ROOT = "/home/nolln/root" -SRC = "sys" -BUILD = "build" -TEST = "test" +SRCS = ["src", "sys"] +BUILD = ".build" +TEST = ".test" IGNORED = ["build", "include", "lib", "bin", ".git", "vendor", "obj", "dep", ".generated"] if __name__ == "__main__": - for root, dirs, _ in os.walk(f"{ROOT}/{SRC}"): - dirs[:] = [d for d in dirs if d not in IGNORED] - for newroot in [BUILD, TEST]: - blddir = f"{ROOT}/{newroot}/{root[len(ROOT)+len(SRC)+2:]}" - if not os.path.exists(blddir): - os.mkdir(blddir) + if not os.path.exists(BUILD): + os.mkdir(BUILD) + + if not os.path.exists(TEST): + os.mkdir(TEST) + + for SRC in SRCS: + for root, dirs, _ in os.walk(f"{ROOT}/{SRC}"): + dirs[:] = [d for d in dirs if d not in IGNORED] + for newroot in [BUILD, TEST]: + blddir = f"{ROOT}/{newroot}/{SRC}/{root[len(ROOT)+len(SRC)+2:]}" + if not os.path.exists(blddir): + os.mkdir(blddir) diff --git a/rules.mk b/rules.mk index 1a7b87a..71444f5 100644 --- a/rules.mk +++ b/rules.mk @@ -30,16 +30,16 @@ include $(DIR)/rules.mk %.a: %.o $(ARCHIVE) -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c +%: %.o + $(LINK) + +$(OBJ_DIR)/%.o: %.c $(COMPILE) -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.s +$(OBJ_DIR)/%.o: %.s $(ASSEMBLE) -%: %.o - $(LINK) - -$(OBJ_DIR)/%: $(SRC_DIR)/%.c +$(OBJ_DIR)/%: %.c $(COMPLNK) targets: $(LIBS) $(BINS) $(UNTS) diff --git a/share/paths.mk b/share/paths.mk index 12c8c3d..91a101f 100644 --- a/share/paths.mk +++ b/share/paths.mk @@ -1,19 +1,22 @@ OBJS_$(d) := $(filter %.o, $(SRCS_$(d):.c=.o)) OBJS_$(d) += $(filter %.o, $(SRCS_$(d):.s=.o)) -OBJS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(OBJS_$(d))) -DEPS_$(d) := $(OBJS_$(d):.o=.d) +OBJS_$(d) := $(addprefix $(OBJ_DIR)/, $(OBJS_$(d))) -TOBJS_$(d) := $(TSTS_$(d):.c=.o) -TOBJS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(TOBJS_$(d))) +DEPS_$(d) := $(OBJS_$(d):.o=.d) OBJS := $(OBJS) $(OBJS_$(d)) $(TOBJS_$(d)) DEPS += $(DEPS_$(d)) -LIBS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(LIBS_$(d))) +LIBS_$(d) := $(addprefix $(OBJ_DIR)/, $(LIBS_$(d))) LIBS += $(LIBS_$(d)) -BINS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(BINS_$(d))) +BINS_$(d) := $(addprefix $(OBJ_DIR)/, $(BINS_$(d))) BINS += $(BINS_$(d)) -UNTS_$(d) := $(patsubst $(SRC_DIR)/%, $(TST_DIR)/%, $(TSTS_$(d):.c=)) -UNTS += $(UNTS_$(d)) +# Testing infrastructure + +TOBJS_$(d) := $(TSTS_$(d):.c=.o) +TOBJS_$(d) := $(addprefix $(OBJ_DIR)/, $(TOBJS_$(d))) + +UNTS_$(d) := $(addprefix $(TST_DIR)/, $(TSTS_$(d):.c=)) +UNTS += $(UNTS_$(d)) diff --git a/sys/cmd/dwm/rules.mk b/sys/cmd/dwm/rules.mk index a8ce4f5..617657e 100644 --- a/sys/cmd/dwm/rules.mk +++ b/sys/cmd/dwm/rules.mk @@ -21,7 +21,7 @@ $(BINS_$(d)): TCLIBS = \ `$(PKG) --libs fontconfig` \ `$(PKG) --libs freetype2` \ -lX11 -lXinerama -lXft -lX11-xcb -lxcb -lxcb-res -$(BINS_$(d)): $(OBJS_$(d)) $(OBJ_DIR)/libn/libn.a +$(BINS_$(d)): $(OBJS_$(d)) $(OBJ_DIR)/sys/libn/libn.a $(COMPLINK) include share/pop.mk diff --git a/sys/cmd/filter/rules.mk b/sys/cmd/filter/rules.mk index 4973772..21f6d31 100644 --- a/sys/cmd/filter/rules.mk +++ b/sys/cmd/filter/rules.mk @@ -7,7 +7,7 @@ BINS_$(d) := $(d)/filter include share/paths.mk # Local rules -$(BINS_$(d)): $(OBJS_$(d)) $(OBJ_DIR)/libn/libn.a +$(BINS_$(d)): $(OBJS_$(d)) $(OBJ_DIR)/sys/libn/libn.a $(COMPLINK) include share/pop.mk diff --git a/sys/cmd/menu/rules.mk b/sys/cmd/menu/rules.mk index 8682b77..d040f5e 100644 --- a/sys/cmd/menu/rules.mk +++ b/sys/cmd/menu/rules.mk @@ -14,13 +14,12 @@ include share/paths.mk # Local rules include share/dynamic.mk $(BINS_$(d)): TCLIBS = \ - -lfontconfig -lXft -lXinerama -lX11 \ - $(OBJ_DIR)/libn/libn.a + -lfontconfig -lXft -lXinerama -lX11 $(BINS_$(d)): TCINCS = \ `$(PKG) --cflags fontconfig` \ `$(PKG) --cflags freetype2` -$(BINS_$(d)): $(OBJS_$(d)) +$(BINS_$(d)): $(OBJS_$(d)) $(OBJ_DIR)/sys/libn/libn.a $(COMPLINK) include share/pop.mk diff --git a/sys/cmd/term/rules.mk b/sys/cmd/term/rules.mk index 55e85c3..38acbf7 100644 --- a/sys/cmd/term/rules.mk +++ b/sys/cmd/term/rules.mk @@ -16,9 +16,8 @@ $(BINS_$(d)): TCLIBS = \ `$(PKG) --libs fontconfig` \ `$(PKG) --libs freetype2` \ -lm -lrt -lX11 -lutil -lXft -lXrender \ - $(OBJ_DIR)/libn/libn.a -$(BINS_$(d)): $(OBJS_$(d)) +$(BINS_$(d)): $(OBJS_$(d)) $(OBJ_DIR)/sys/libn/libn.a $(COMPLINK) include share/pop.mk diff --git a/sys/cmd/walk/rules.mk b/sys/cmd/walk/rules.mk index ee2321a..f863d87 100644 --- a/sys/cmd/walk/rules.mk +++ b/sys/cmd/walk/rules.mk @@ -7,7 +7,7 @@ BINS_$(d) := $(d)/walk include share/paths.mk # Local rules -$(BINS_$(d)): $(OBJS_$(d)) $(OBJ_DIR)/libn/libn.a +$(BINS_$(d)): $(OBJS_$(d)) $(OBJ_DIR)/sys/libn/libn.a $(COMPLINK) include share/pop.mk diff --git a/sys/libmath/rules.mk b/sys/libmath/rules.mk index d3ff490..42af0da 100644 --- a/sys/libmath/rules.mk +++ b/sys/libmath/rules.mk @@ -19,8 +19,8 @@ $(LIBS_$(d)): $(OBJS_$(d)) $(ARCHIVE) $(UNTS_$(d)): TCFLAGS := -D_GNU_SOURCE -$(UNTS_$(d)): TCLIBS := -lpthread -lm $(LIB_DIR)/libblas.a $(OBJ_DIR)/libn/libn.a $(LIBS_$(d)) -$(UNTS_$(d)): $(TOBJS_$(d)) $(LIBS_$(d)) $(OBJ_DIR)/libn/libn.a +$(UNTS_$(d)): TCLIBS := -lpthread -lm $(LIB_DIR)/libblas.a $(OBJ_DIR)/sys/libn/libn.a $(LIBS_$(d)) +$(UNTS_$(d)): $(TOBJS_$(d)) $(LIBS_$(d)) $(OBJ_DIR)/sys/libn/libn.a $(LINK) include share/pop.mk diff --git a/sys/libn/rules.mk b/sys/libn/rules.mk index abcd60d..d519b67 100644 --- a/sys/libn/rules.mk +++ b/sys/libn/rules.mk @@ -1,8 +1,6 @@ include share/push.mk # Iterate through subdirectory tree -# DIR := $(d)/bufio -# include $(DIR)/rules.mk # Local sources SRCS_$(d) := \ -- cgit v1.2.1