From e881e80d6b793c2d29e472ae4b65bdf8e4363b87 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Fri, 15 May 2020 12:11:57 -0700 Subject: feat: testing directory to allow for easier tests of code --- Makefile | 16 +++++++++++----- bin/initmk | 28 +++++----------------------- bin/updateblddir | 15 --------------- rules.mk | 24 +++++++++++++----------- share/paths.mk | 5 +++-- sys/libbio/rules.mk | 8 +++----- sys/libmath/rules.mk | 16 +++++----------- sys/libn/rules.mk | 18 +++++++++--------- sys/rules.mk | 9 ++------- 9 files changed, 51 insertions(+), 88 deletions(-) delete mode 100755 bin/updateblddir diff --git a/Makefile b/Makefile index 0861986..ecd8408 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,7 @@ SRC_DIR := sys BIN_DIR := bin LIB_DIR := lib 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,10 +25,15 @@ INCS := -isystem $(INC_DIR)/vendor/libc -I $(INC_DIR) ELIBS := -L$(LIB_DIR) -lc # Named generic rules (must be evaluated lazily) -COMPILE = $(CC) -MMD $(CFLAGS) $(TCFLAGS) $(INCS) $(TCINCS) -o $@ -c $< -LINK = $(CC) -MMD $(CFLAGS) $(STATIC) $(TCFLAGS) -o $@ $(CINIT) $^ $(CFINI) $(TCLIBS) $(ELIBS) -COMPLINK = $(CC) -MMD $(CFLAGS) $(STATIC) $(TCFLAGS) $u$(INCS) $(TCINCS) -o $@ $(CINIT) $^ $(CFINI) $(TCLIBS) $(ELIBS) -ASSEMBLE = $(AS) $(AFLAGS) $(TCFLAGS) -o $@ $< -ARCHIVE = $(AR) crs $@ $^ +COMPILE = @echo "CC "$^;\ + $(CC) -MMD $(CFLAGS) $(TCFLAGS) $(INCS) $(TCINCS) -o $@ -c $< +LINK = @echo "LD "$@;\ + $(CC) -MMD $(CFLAGS) $(STATIC) $(TCFLAGS) -o $@ $(CINIT) $^ $(CFINI) $(TCLIBS) $(ELIBS) +COMPLINK = @echo "LD "$@;\ + $(CC) -MMD $(CFLAGS) $(STATIC) $(TCFLAGS) $u$(INCS) $(TCINCS) -o $@ $(CINIT) $^ $(CFINI) $(TCLIBS) $(ELIBS) +ASSEMBLE = @echo "AS "$^;\ + $(AS) $(AFLAGS) $(TCFLAGS) -o $@ $< +ARCHIVE = @echo "AR "$@;\ + $(AR) crs $@ $^ include rules.mk diff --git a/bin/initmk b/bin/initmk index 1f01443..77fcfd7 100755 --- a/bin/initmk +++ b/bin/initmk @@ -3,30 +3,16 @@ import sys NAME = "rules.mk" -TEMPLATE = """# ---- Push on stack ---- -SP := $(SP).x -DIRSTACK_$(SP) := $(d) -d := $(DIR) - +TEMPLATE = """include share/push.mk # Iterate through subdirectory tree # Local sources SRCS_$(d) := $(wildcard $(d)/*.c) -OBJS_$(d) := $(SRCS_$(d):.c=.o) -OBJS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(OBJS_$(d))) -DEPS_$(d) := $(OBJS_$(d):.o=.d) - -OBJS := $(OBJS) $(OBJS_$(d)) -DEPS := $(DEPS) $(DEPS_$(d)) - -# Local targets LIBS_$(d) := -LIBS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(LIBS_$(d))) -LIBS := $(LIBS) $(LIBS_$(d)) - BINS_$(d) := -BINS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(BINS_$(d))) -BINS := $(BINS) $(BINS_$(d)) +TSTS_$(d) := + +include share/pop.mk # Local rules # $(LIBS_$(d)) = TCFLAGS := @@ -39,11 +25,7 @@ $(LIBS_$(d)): $(OBJS_$(d)) $(BINS_$(d)): $(OBJS_$(d)) $(LINK) -# ---- Pop off stack ---- --include $(DEPS_$(d)) - -d := $(DIRSTACK_$(SP)) -SP := $(basename $(SP))""" +include share/pop.mk""" if __name__ == "__main__": try: diff --git a/bin/updateblddir b/bin/updateblddir deleted file mode 100755 index 34f148d..0000000 --- a/bin/updateblddir +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/python - -import os - -ROOT = "/home/nolln/root" -SRC = "sys" -BUILD = "build" -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] - blddir = f"{ROOT}/{BUILD}/{root[len(ROOT)+len(SRC)+2:]}" - if not os.path.exists(blddir): - os.mkdir(blddir) diff --git a/rules.mk b/rules.mk index ff12fdb..5d19d61 100644 --- a/rules.mk +++ b/rules.mk @@ -25,24 +25,19 @@ include $(DIR)/rules.mk # Generic rules %.a: %.o - @echo AR $^ - @$(ARCHIVE) + $(ARCHIVE) $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c - @echo CC $^ - @$(COMPILE) + $(COMPILE) $(OBJ_DIR)/%.o: $(SRC_DIR)/%.s - @echo AS $^ - @$(ASSEMBLE) + $(ASSEMBLE) %: %.o - @echo CC $^ - @$(LINK) + $(LINK) $(OBJ_DIR)/%: $(SRC_DIR)/%.c - @echo CC $^ - @$(COMPLNK) + $(COMPLNK) targets: $(LIBS) $(BINS) $(TSTS) @@ -54,4 +49,11 @@ clean: rm -f $(TSTS) install: targets - echo "TODO" + @echo installing executables + @if [ -n "$$BINS" ]; then\ + mv $(BINS) $(BIN_DIR); \ + fi + @echo installing libraries + @if [ -n "$$LIBS" ]; then\ + cp $(LIBS) $(LIB_DIR); \ + fi diff --git a/share/paths.mk b/share/paths.mk index e2cee4f..e4fabcc 100644 --- a/share/paths.mk +++ b/share/paths.mk @@ -1,4 +1,5 @@ -OBJS_$(d) := $(SRCS_$(d):.c=.o) +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) @@ -11,5 +12,5 @@ LIBS := $(LIBS) $(LIBS_$(d)) BINS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(BINS_$(d))) BINS := $(BINS) $(BINS_$(d)) -TSTS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(TSTS_$(d))) +TSTS_$(d) := $(patsubst $(SRC_DIR)/%, $(TST_DIR)/%, $(TSTS_$(d))) TSTS := $(TSTS) $(TSTS_$(d)) diff --git a/sys/libbio/rules.mk b/sys/libbio/rules.mk index fbba7df..cabc1b3 100644 --- a/sys/libbio/rules.mk +++ b/sys/libbio/rules.mk @@ -18,11 +18,9 @@ include share/paths.mk # $(LIBS_$(d)) = TCLIBS := $(LIBS_$(d)): $(OBJS_$(d)) $(OBJS_$(d)/io) - @echo LIB $@ - @$(ARCHIVE) + $(ARCHIVE) -$(BINS_$(d)): $(LIBS_$(d)) $(OBJ_DIR)/libn/libn.a - @echo BIN $@ - @$(LINK) +$(TSTS_$(d)): $(LIBS_$(d)) $(OBJ_DIR)/libn/libn.a + $(LINK) include share/pop.mk diff --git a/sys/libmath/rules.mk b/sys/libmath/rules.mk index c82361d..f948686 100644 --- a/sys/libmath/rules.mk +++ b/sys/libmath/rules.mk @@ -10,18 +10,12 @@ TSTS_$(d) := $(d)/blas include share/paths.mk -GENERATE = python $^ > $@ -$(d)/blas1.c: $(d)/gen1.py - @$(GENERATE) - $(LIBS_$(d)): $(OBJS_$(d)) - @echo AR $^ - @$(ARCHIVE) + $(ARCHIVE) -$(BINS_$(d)): TCFLAGS := -D_GNU_SOURCE -$(BINS_$(d)): TCLIBS := -lpthread -lm -$(BINS_$(d)): $(OBJS_$(d)) $(OBJ_DIR)/libn/libn.a $(LIB_DIR)/vendor/libblas.a - @echo BIN $@ - @$(LINK) +$(TSTS_$(d)): TCFLAGS := -D_GNU_SOURCE +$(TSTS_$(d)): TCLIBS := -lpthread -lm +$(TSTS_$(d)): $(OBJS_$(d)) $(OBJ_DIR)/libn/libn.a $(LIB_DIR)/vendor/libblas.a + $(LINK) include share/pop.mk diff --git a/sys/libn/rules.mk b/sys/libn/rules.mk index bd3308a..85f3df7 100644 --- a/sys/libn/rules.mk +++ b/sys/libn/rules.mk @@ -1,21 +1,21 @@ include share/push.mk +# Iterate through subdirectory tree +# DIR := $(d)/bufio +# include $(DIR)/rules.mk + # Local sources -SRCS_$(d) := $(wildcard $(d)/*.c) -ASMS_$(d) := $(wildcard $(d)/*.s) -LIBS_$(d) := $(d)/libn.a +SRCS_$(d) := $(wildcard $(d)/*.c) $(wildcard $(d)/*.s) +LIBS_$(d) := $(d)/libnbn.a BINS_$(d) := TSTS_$(d) := $(d)/test include share/paths.mk $(LIBS_$(d)): $(OBJS_$(d)) - @echo LIB $@ - @$(ARCHIVE) + $(ARCHIVE) -$(BINS_$(d)): TCLIBS := $(LIBS_$(d)) $(LIB_DIR)/vendor/libz.a -$(BINS_$(d)): $(OBJ_DIR)/libn/test.o $(LIBS_$(d)) - @echo BIN $@ - @$(LINK) +$(TSTS_$(d)): $(LIBS_$(d)) + $(LINK) include share/pop.mk diff --git a/sys/rules.mk b/sys/rules.mk index d7535a7..cfff9b7 100644 --- a/sys/rules.mk +++ b/sys/rules.mk @@ -1,7 +1,4 @@ -# ---- Push on stack ---- -SP := $(SP).x -DIRSTACK_$(SP) := $(d) -d := $(DIR) +include share/push.mk # Iterate through subdirectory tree @@ -20,6 +17,4 @@ include $(DIR)/rules.mk DIR := $(d)/cmd include $(DIR)/rules.mk -# ---- Pop off stack ---- -d := $(DIRSTACK_$(SP)) -SP := $(basename $(SP)) +include share/pop.mk -- cgit v1.2.1