aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Noll <nbnoll@eml.cc>2021-04-22 09:48:30 -0700
committerNicholas Noll <nbnoll@eml.cc>2021-04-22 09:48:30 -0700
commit4bee1c911c0a710da47b62a31e84535d2e0b7c76 (patch)
tree05e86e31bfa55eebeb8b698e5e56590c66ab34ac
parent1f312a24606b09cf1a41aa79946b1963a242f648 (diff)
chore(organize): restructured build to allow for parallel projects to sys functionality
-rw-r--r--Makefile17
-rwxr-xr-xbin/tmux-send4
-rwxr-xr-xbin/updatedirs25
-rw-r--r--rules.mk12
-rw-r--r--share/paths.mk19
-rw-r--r--sys/cmd/dwm/rules.mk2
-rw-r--r--sys/cmd/filter/rules.mk2
-rw-r--r--sys/cmd/menu/rules.mk5
-rw-r--r--sys/cmd/term/rules.mk3
-rw-r--r--sys/cmd/walk/rules.mk2
-rw-r--r--sys/libmath/rules.mk4
-rw-r--r--sys/libn/rules.mk2
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) := \