aboutsummaryrefslogtreecommitdiff
path: root/sys/libn/rules.mk
blob: ffb41e40aef9bb9f5457ecfcff5927d88089bd2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# ---- Push on stack ----
SP 			   := $(SP).x
DIRSTACK_$(SP) := $(d)
d 			   := $(DIR)

# Iterate through subdirectory tree
# DIR := $(d)/bufio
# include $(DIR)/rules.mk
# ...

# Local sources 
SRCS_$(d) := $(wildcard $(d)/*.c)
ASMS_$(d) := $(wildcard $(d)/*.s)
OBJS_$(d) := $(SRCS_$(d):.c=.o)
OBJS_$(d) += $(ASMS_$(d):.s=.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) := $(d)/libn.a
LIBS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(LIBS_$(d)))
LIBS 	  := $(LIBS) $(LIBS_$(d))

BINS_$(d) := $(d)/test $(d)/scratch
BINS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(BINS_$(d)))
BINS 	  := $(BINS) $(BINS_$(d))

# Local rules
# $(LIBS_$(d)) := TCFLAGS := 
# $(LIBS_$(d)) := TCINCS  := 
# $(LIBS_$(d)) := TCLIBS  := 

$(LIBS_$(d)): $(OBJS_$(d))
	$(ARCHIVE)

$(BINS_$(d)): TCLIBS := $(LIBS_$(d)) $(LIB_DIR)/vendor/libz.a
$(BINS_$(d)): $(OBJ_DIR)/libn/scratch.o
	$(LINK)

# ---- Pop off stack ----
-include $(DEPS_$(d))

d  := $(DIRSTACK_$(SP))
SP := $(basename $(SP))