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