1 # common make include for libraries
3 reverse
= $(if
$(wordlist
2,2,$(1)),$(call reverse
,$(wordlist
2,$(words $(1)),$(1))) $(firstword $(1)),$(1))
5 LIB_OUT
:= ..
/$(PJDIR
)/$(ARDIR
)/$(LIBNAME
)
6 OBJ_OUT
:= ..
/$(PJDIR
)/$(OBJDIR
)/$(LIBNAME
:.a
=)
8 CFLAGS
:= $(patsubst -I
%,-I..
/$(PJDIR
)/%,$(CFLAGS
))
9 ASFLAGS
:= $(patsubst -I
%,-I..
/$(PJDIR
)/%,$(ASFLAGS
))
11 SRCS_CC
:= $(filter-out %template.c
,$(SRCS_C
))
12 SRCS_CC
:= $(filter-out $(LIB_EXCL
),$(SRCS_CC
))
14 OBJSC
:= $(patsubst %.c
,%.o
,$(SRCS_CC
))
15 OBJSC
:= $(patsubst %,$(OBJ_OUT
)/%,$(OBJSC
))
17 OBJSS
:= $(patsubst %.s
,%.o
,$(SRCS_S
))
18 OBJSS
:= $(patsubst %,$(OBJ_OUT
)/%,$(OBJSS
))
20 DEP
:= ..
/$(PJDIR
)/$(ARDIR
)/$(LIBNAME
:.a
=.d
)
21 DEP1
:= ..
/$(PJDIR
)/$(ARDIR
)/$(LIBNAME
:.a
=.d.d
)
22 #DEP2 := ../$(PJDIR)/$(ARDIR)/$(LIBNAME:.a=.d.d.d)
23 SRCS
= $(SRCS_C
) $(SRCS_S
)
24 #OBJS = $(call reverse, $(sort $(OBJSC) $(OBJSS)))
25 #OBJS = $(sort $(OBJSC) $(OBJSS))
26 OBJS
= $(OBJSC
) $(OBJSS
)
46 @
$(AR
) $(ARFLAGS
) $@
$^
49 | sed
-e
's/.*://' -e
's/\\$$//' \
50 | fmt
-1 |
sort | uniq \
51 | sed
-e
's,^ \([^.]\), '..
/$(PJDIR
)/$(LIBDIR
)/'\1,' \
52 | sed
-n
's,'..
/$(PJDIR
)/',,p' \
53 | sed
-e
's/$$/ \\/' -e
'$$ s/\\$$//' -e
'1 i '$(ARDIR
)/$(LIBNAME
)': \\' \
58 @
-rm -f
$(OBJS
) $(OBJS
:.o
=.d
) $(LIB_OUT
) $(DEP
) $(DEP1
) $(DEP2
)
63 # $(CCDEP) $(CFLAGS) -MM $^ | sed -e 's@.*.o:@Src/&@' > $(DEP)
65 #$(DEP): $(LIB_SRCS_C)
66 # $(CCDEP) $(CFLAGS) -MM $^ > $(DEP)
70 # @$(foreach SRC,$(SRCS_S),echo dep $(SRC); $(CCDEP) $(CFLAGS) -MM -MT $(OBJ_OUT)/$(SRC:.s=.o) $(SRC) >> $(DEP) || { rm $(DEP); exit 1; };)
71 # @$(foreach SRC,$(SRCS_C),echo dep $(SRC); $(CCDEP) $(CFLAGS) -MM -MT $(OBJ_OUT)/$(SRC:.c=.o) $(SRC) >> $(DEP) || { rm $(DEP); exit 1; };)
74 $(OBJSC
): $(OBJ_OUT
)/%.o
: %.c
76 # @echo cc \[$(PJNAME): $(LIBNAME)\] $<
78 @echo
cc \
[$(PJNAME
)\
] $<
83 @
$(CC
) $(CFLAGS
) -MMD
-c
-o
$@
$<
86 $(OBJSS
): $(OBJ_OUT
)/%.o
: %.s
89 @
$(AS
) $(ASFLAGS
) -MMD
-c
-o
$@
$<
91 -include $(OBJS
:.o
=.d
)