blob: 1f0144394cfe9ea41835f8d710624c83df510b40 (
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
48
49
50
51
52
53
54
|
#!/bin/python
import sys
NAME = "rules.mk"
TEMPLATE = """# ---- Push on stack ----
SP := $(SP).x
DIRSTACK_$(SP) := $(d)
d := $(DIR)
# 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))
# Local rules
# $(LIBS_$(d)) = TCFLAGS :=
# $(LIBS_$(d)) = TCINCS :=
# $(LIBS_$(d)) = TCLIBS :=
$(LIBS_$(d)): $(OBJS_$(d))
$(ARCHIVE)
$(BINS_$(d)): $(OBJS_$(d))
$(LINK)
# ---- Pop off stack ----
-include $(DEPS_$(d))
d := $(DIRSTACK_$(SP))
SP := $(basename $(SP))"""
if __name__ == "__main__":
try:
with open(NAME, 'x') as makefile:
makefile.write(f"{TEMPLATE}\n")
except:
print("rules.mk already present", file=sys.stderr)
exit(1)
|