aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Noll <nbnoll@eml.cc>2020-05-15 12:11:57 -0700
committerNicholas Noll <nbnoll@eml.cc>2020-05-15 12:11:57 -0700
commite881e80d6b793c2d29e472ae4b65bdf8e4363b87 (patch)
treeca81576f4da93de1a6571da9fc0aa2d08a3ac497
parent66eb918a13b6607cc7bb615350a0e26f3670cd54 (diff)
feat: testing directory to allow for easier tests of code
-rw-r--r--Makefile16
-rwxr-xr-xbin/initmk28
-rwxr-xr-xbin/updateblddir15
-rw-r--r--rules.mk24
-rw-r--r--share/paths.mk5
-rw-r--r--sys/libbio/rules.mk8
-rw-r--r--sys/libmath/rules.mk16
-rw-r--r--sys/libn/rules.mk18
-rw-r--r--sys/rules.mk9
9 files changed, 51 insertions, 88 deletions
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