* src/*.c, src/pic16/{gen.c,glue.c,main.c}: applied Vangelis
[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 : force
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 : builddir recurse force
46
47 # create builddir
48 builddir : force
49         $(Q)[ -d "$(topsrcdir)/$(builddir)" ] || $(MKDIR) "$(topsrcdir)/$(builddir)";
50
51 # build sub-directories
52 recurse : force
53         $(Q)for DIR in $(SUBDIRS) . ; do \
54                 [ "$${DIR}" = "." ] || $(GREP) "^$${ARCH}$$" "$${DIR}.ignore" &> /dev/null || $(MAKE) -C "$${DIR}" builddir="$(builddir)/$${DIR}" $(MAKECMDGOALS) || exit 1; \
55         done
56
57 # target to force remaking of (seemingly) independent targets
58 force :