* .version: changed version to 2.5.4
[fw/sdcc] / device / lib / pic / Makefile.rules
1 ###########################################################
2 ### Makefile.rules for the SDCC/PIC14 Library
3 ###
4 ### Copyright (C) 2005 by Raphael Neider <rneider@web.de>
5 ###
6 ### The library is currently maintained by
7 ###     Raphael Neider <rneider@web.de>
8 ###
9 ### This file may be distributed under the terms of the the
10 ### GNU General Public License (GPL). See GPL for details.
11 ###
12 ### $Id$
13 ###
14
15 # update dependencies
16 $(topsrcdir)/$(builddir)/%.d : %.c
17         @echo "[  CPP  ] ==> $(patsubst $(topsrcdir)/%,%,$@)";
18         $(Q)$(CPP) $(CPPFLAGS) -o "$@" "$<";
19
20 # assemble
21 $(topsrcdir)/$(builddir)/%.o : %.S
22         @echo "[  AS   ] ==> $(patsubst $(topsrcdir)/%,%,$@)";
23         $(Q)$(CPP) $(CPPFLAGS) -P -o "$*.Spp" "$<";
24         $(Q)$(AS) $(ASFLAGS) -o "$@" -c "$*.Spp";
25         $(Q)$(RM) "$*.Spp";
26
27 # compile
28 $(topsrcdir)/$(builddir)/%.o : %.c
29         @echo "[  CC   ] ==> $(patsubst $(topsrcdir)/%,%,$@)";
30         $(Q)$(CC) $(CFLAGS) -o "$@" -c "$<";
31
32 # create library
33 ifneq (,$(strip $(LIB_O)))
34 %.lib : $(LIB_O)
35         @echo "[  LIB  ] $(patsubst $(topsrcdir)/%,%,$@) <== $(patsubst $(topsrcdir)/$(builddir)/%,%,$^)";
36         $(Q)$(RM) "$@"; $(LIB) $(LIBFLAGS) "$@" $^;
37 else
38 %.lib : recurse
39         @echo "[  LIB  ] $(patsubst $(topsrcdir)/%,%,$@) <== **/*.o";
40         $(Q)$(RM) "$@"; LIB_O=`find "$(topsrcdir)/$(builddir)" -name "*.o"`; [ "x$${LIB_O}" = "x" ] || $(LIB) $(LIBFLAGS) "$@" $${LIB_O};
41 endif
42
43 .PHONY : recurse force
44
45 # build sub-directories
46 ifneq (,$(strip $(SUBDIRS)))
47 recurse : force
48         $(Q)+for DIR in $(SUBDIRS) ; do \
49                 $(GREP) "^$${ARCH}$$" "$${DIR}.ignore" &> /dev/null || ( \
50                         [ -d "$(topsrcdir)/$(builddir)/$${DIR}" ] || $(MKDIR) "$(topsrcdir)/$(builddir)/$${DIR}"; \
51                         $(MAKE) -C "$${DIR}" builddir="$(builddir)/$${DIR}" $(MAKECMDGOALS); \
52                 ) || exit 1; \
53         done
54 else
55 recurse :
56         @# nothing to do
57 endif
58
59 # target to force remaking of (seemingly) independent targets
60 force :