Makefile.libbcc
3.01 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# Makefile for building BCC library
#include $(TOP)/Makefile.tools
# library specific compilation flags
CFLAGS=-O2 -ffunction-sections -fdata-sections $(LIBFLAGS)
# ------------------------------------------------------------------------------
# libbcc: from bsp
BCC_SRCPATH:=$(abspath ./bsp)
BSP_SRCPATH:=$(BCC_SRCPATH)/bsp/2020q4
# libc include
LIBC_SRCPATH:=$(abspath ./newlib/newlib/libc)
# read common list of source files
-include $(BCC_SRCPATH)/common.mk
EXTRA_S_SRCS:=shared/crt0.S shared/first.S
BCC_SOURCES:=$(BCC_COMMON_SOURCES) $(BCC_INT_IRQMP_SOURCES) $(BCC_APBUART_SOURCES) $(BCC_GPTIMER_SOURCES)
BCC_OBJS:=$(subst /,~,$(BCC_SOURCES:%=%.o))
BCC_C_SOURCES = $(filter %.c,$(BCC_SOURCES))
BCC_S_SOURCES = $(filter %.S,$(BCC_SOURCES))
BCC_C_OBJS=$(BCC_C_SOURCES:.c=.o)
BCC_S_OBJS=$(BCC_S_SOURCES:.S=.o)
BCC_C_OBJS_SUB=$(subst /,~,$(BCC_C_OBJS))
BCC_S_OBJS_SUB=$(subst /,~,$(BCC_S_OBJS))
BCC_EXTRA_OBJS=$(notdir $(EXTRA_S_SRCS:.S=.o))
BCC_C_OBJS_FULLPATH=$(BCC_C_OBJS_SUB:%=$(DSTDIR)/%)
BCC_S_OBJS_FULLPATH=$(BCC_S_OBJS_SUB:%=$(DSTDIR)/%)
BCC_EXTRA_OBJS_FULLPATH=$(addprefix $(DSTDIR)/,$(BCC_EXTRA_OBJS))
#$(info "TEST")
#$(info $(EXTRA_S_SRCS))
#$(info $(BCC_EXTRA_OBJS))
#$(info $(BCC_S_OBJS_FULLPATH))
#$(info $(BCC_EXTRA_OBJS_FULLPATH))
#$(info "END-TEST")
all: $(DSTDIR)/../include $(BCC_EXTRA_OBJS_FULLPATH) $(DSTDIR)/libbcc.a
@echo "BCC library is prepared"
# run building
$(DSTDIR)/libbcc.a: $(DSTDIR) $(BCC_SRCPATH)/common.mk $(BCC_C_OBJS_FULLPATH) $(BCC_S_OBJS_FULLPATH)
@$(AR) r $@ $(BCC_C_OBJS_FULLPATH) $(BCC_S_OBJS_FULLPATH)
# run copying include
$(DSTDIR)/../include:
@echo "Copy include"
@cp -r $(BCC_SRCPATH)/shared/include $@
@cp -r $(BSP_SRCPATH)/include/* $@
define GEN_C2O_RULE
$(DSTDIR)/$(ofile): $(DSTDIR)/$(ofile:%.o=%.c_S)
@echo "Assemble $$@ from $$<"
@$(AS) $(ASARCH) -gdwarf-5 -o $$@ $$<
$(DSTDIR)/$(ofile:%.o=%.c_S) : $(BCC_SRCPATH)/$(subst ~,/,$(notdir $(ofile:.o=.c))) $(DSTDIR)/../include $(LIBC_SRCPATH)/include
@echo "Compile '$$<' to '$$@'"
@$(CC) $(CCARCH) $(CFLAGS) -fno-addrsig -Wall -Wextra -pedantic -fno-builtin -I$(DSTDIR)/../include -I$(LIBC_SRCPATH)/include -S -o $$@ $$<
endef
$(foreach ofile, $(BCC_C_OBJS_SUB), \
$(eval $(GEN_C2O_RULE)) \
)
define GEN_S2O_RULE
$(DSTDIR)/$(ofile) : $(BCC_SRCPATH)/$(subst ~,/,$(notdir $(ofile:.o=.S))) $(DSTDIR)/../include
@$(CC) $(CCARCH) $(CFLAGS) -fno-addrsig -I$(DSTDIR)/../include -I$(BCC_SRCPATH)/shared/inc -S -o $$@_as $$<
@$(AS) $(ASARCH) -gdwarf-5 -I$(BCC_SRCPATH)/shared/inc -o $$@ $$@_as
endef
$(foreach ofile, $(BCC_S_OBJS_SUB), \
$(eval $(GEN_S2O_RULE)) \
)
define GEN_EXT_RULE
$(DSTDIR)/$(notdir $(oext:.S=.o)) : $(BCC_SRCPATH)/$(oext)
@$(CC) $(CCARCH) $(CFLAGS) -fno-addrsig -I$(DSTDIR)/../include -I$(BCC_SRCPATH)/shared/inc -S -o $$@_as $$<
@$(AS) $(ASARCH) -gdwarf-5 -I$(BCC_SRCPATH)/shared/inc -o $$@ $$@_as
endef
$(foreach oext, $(EXTRA_S_SRCS), \
$(eval $(GEN_EXT_RULE)) \
)
# ------------------------------------------------------------------------------
clean:
rm `find $(DSTDIR) -name "*.o"`
rm `find $(DSTDIR) -name "*.a"`