source: to-imperative/trunk/rules.mk @ 1445

Last change on this file since 1445 was 1429, checked in by orlov, 16 years ago
  • Improved makefiles.
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.0 KB
Line 
1TOPDIR ?= .
2CURRENTDIR ?= .
3DISTLIST ?= dist.list
4CONFIG = $(TOPDIR)/config.mk
5
6-include $(CONFIG)
7
8ifndef NODEPS
9
10%.dep: %.c
11        @echo Generating dependencies for $<
12        @$(CC) $(CPPFLAGS) -M $< | \
13          sed 's/\($*\)\.o[ :]*/\1.o \1.dbg.o $@ : /g' > $@;
14
15%.dep: %.cc
16        @echo Generating dependencies for $<
17        @echo ifndef NODEPS > $@
18        @$(CXX) $(CPPFLAGS) -M $< | \
19          sed 's?$(notdir $*)\.o[ :]*?$*.o $*.dbg.o $@ : ?g' >> $@;
20        @echo endif >> $@
21
22endif
23
24%.hh: %.rfi Makefile $(CONFIG)
25        $(RFPC) $(RFLAGS) -hh $<
26
27%.cc: %.rf Makefile $(CONFIG)
28        $(RFPC) $(RFLAGS) -cc $<
29
30%.o: %.c Makefile $(CONFIG)
31        $(CC) $(CPPFLAGS) $(WFLAGS) $(OFLAGS) $(CFLAGS) -c -o $@ $<
32
33%.o: %.cc Makefile $(CONFIG)
34        $(CXX) $(CPPFLAGS) $(WFLAGS) $(OFLAGS) $(CFLAGS) $(CXXFLAGS) -c -o $@ $<
35
36%.dbg.o: %.c Makefile $(CONFIG)
37        $(CC) $(CPPFLAGS) $(WFLAGS) $(DFLAGS) $(CFLAGS) -c -o $@ $<
38
39%.dbg.o: %.cc Makefile $(CONFIG)
40        $(CXX) $(CPPFLAGS) $(WFLAGS) $(DFLAGS) $(CFLAGS) $(CXXFLAGS) -c -o $@ $<
41
42DO_SUBDIRS=$(foreach dir,$(SUBDIRS),$(MAKE) -C $(dir) \
43  TOPDIR=$(TOPDIR)/.. INSTALL_DIR=$(INSTALL_DIR) $@ \
44  CURRENTDIR=$(CURRENTDIR)/$(dir) DISTNAME="$(DISTNAME)" \
45  || exit 1; )
46
47DO_SUBDIRS_NODEPS=$(foreach dir,$(SUBDIRS),$(MAKE) -C $(dir) NODEPS=yes \
48  TOPDIR=$(TOPDIR)/.. INSTALL_DIR=$(INSTALL_DIR) $@ \
49  CURRENTDIR=$(CURRENTDIR)/$(dir) DISTNAME="$(DISTNAME)" \
50  || exit 1; )
51
52all::
53        $(DO_SUBDIRS)
54
55clean::
56        $(DO_SUBDIRS_NODEPS)
57        rm -f core
58
59distclean:: clean
60        $(DO_SUBDIRS_NODEPS)
61
62dist::
63        if [ -f "$(DISTLIST)" ]; then rm $(DISTLIST); fi
64        $(DO_SUBDIRS_NODEPS)
65        echo $(foreach file, $(DISTFILES), $(CURRENTDIR)/$(file)) \
66          >>$(TOPDIR)/$(DISTLIST)
67
68snapshot::
69        if [ -f "$(DISTLIST)" ]; then rm $(DISTLIST); fi
70        $(DO_SUBDIRS_NODPES)
71        echo $(foreach file, $(DISTFILES), $(CURRENTDIR)/$(file)) \
72          >>$(TOPDIR)/$(DISTLIST)
73
74docs:: all
75        $(DO_SUBDIRS)
76
77samples:: all
78        $(DO_SUBDIRS)
79
80tests:: all
81        $(DO_SUBDIRS)
82
83check:: tests
84        $(DO_SUBDIRS)
85
86publish:: all
87        $(DO_SUBDIRS)
88
89install:: all
90        $(DO_SUBDIRS)
91
92uninstall::
93        $(DO_SUBDIRS)
94
95.PHONY: all install uninstall clean dist snapshot distclean
96.PHONY: samples tests check
Note: See TracBrowser for help on using the repository browser.