* device/lib/Makefile.in (port-specific-objects-pic16):
[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         @echo "[  CPP  ] ==> $(patsubst $(topsrcdir)/%,%,$@)";
22         $(Q)$(CPP) $CPPFLAGS) -o "$@" "$<";
23
24 # assemble
25 $(topsrcdir)/$(builddir)/%.o : %.S
26         @echo "[  AS   ] ==> $(patsubst $(topsrcdir)/%,%,$@)";
27         $(Q)$(AS) $(ASFLAGS) -o "$@" -c "$<";
28
29 # compile
30 $(topsrcdir)/$(builddir)/%.o : %.c
31         @echo "[  CC   ] ==> $(patsubst $(topsrcdir)/%,%,$@)";
32         $(Q)$(CC) $(CFLAGS) -o "$@" -c "$<";
33
34 # create library
35 ifneq (,$(strip $(LIB_O)))
36 %.lib : $(LIB_O)
37         @echo "[  LIB  ] $(patsubst $(topsrcdir)/%,%,$@) <== $(patsubst $(topsrcdir)/$(builddir)/%,%,$^)";
38         $(Q)$(RM) "$@"; $(LIB) $(LIBFLAGS) "$@" $^;
39 else
40 %.lib : recurse
41         @echo "[  LIB  ] $(patsubst $(topsrcdir)/%,%,$@) <== **/*.o";
42         $(Q)$(RM) "$@"; LIB_O=`find "$(topsrcdir)/$(builddir)" -name "*.o"`; [ "x$${LIB_O}" = "x" ] || $(LIB) $(LIBFLAGS) "$@" $${LIB_O};
43 endif
44
45 .PHONY : recurse force
46
47 # build sub-directories
48 ifneq (,$(strip $(SUBDIRS)))
49 recurse : force
50         $(Q)+for DIR in $(SUBDIRS) ; do \
51                 $(GREP) "^$${ARCH}$$" "$${DIR}.ignore" &> /dev/null || ( \
52                         [ -d "$(topsrcdir)/$(builddir)/$${DIR}" ] || $(MKDIR) "$(topsrcdir)/$(builddir)/$${DIR}"; \
53                         $(MAKE) -C "$${DIR}" builddir="$(builddir)/$${DIR}" $(MAKECMDGOALS); \
54                 ) || exit 1; \
55         done
56 else
57 recurse :
58         @# nothing to do
59 endif
60
61 # target to force remaking of (seemingly) independent targets
62 force :