9772e55df6c3378860cca32c2578fdd417c8ec95
[libfirm] / MakeRules.in
1 # Hey Emacs, this is a -*- makefile -*-
2 #
3 # libFIRM Project
4 #
5 # $Id$
6 #
7
8 VPATH = $(srcdir)
9
10 CC = @CC@
11 CFLAGS := @CFLAGS@
12 CPPFLAGS := -I. -I$(topdir) -I$(srcdir) -I$(top_srcdir) @CPPFLAGS@
13
14 INSTALL = @INSTALL@
15 INCLUDEDIR = @includedir@
16 LIBDIR = @libdir@
17
18 DEFS = @DEFS@
19
20 LD := @LD@
21 LDFLAGS := @LDFLAGS@
22 LD_R := @libfirm_cv_prog_ld_r@
23
24 # profiling enabled?
25 ifeq (@enable_profile_libfirm@,yes)
26 LDFLAGS += -g -pg
27 endif
28
29 AR := @AR@
30 ARFLAGS := rc
31
32 TAR := @TAR@
33 TARFLAGS = -C $(top_srcdir) -uf $(topdir)/libfirm.tar
34
35 RANLIB := @RANLIB@
36
37 AUTODOC := @ROBODOC@
38 AUTODOCDIR := $(topdir)/auto_doc
39 INDEXFILE := $(AUTODOCDIR)/index.html
40 GLOBALXREFFILE := $(AUTODOCDIR)/libfirm.html.xrefs
41 LOCALXREFSFILE := .xrefs
42
43 DISTFILES += $(addprefix $(srcdir)/, $(SOURCES))
44 ARCHIVEDISTFILES += $(addprefix $(subdir)/, $(SOURCES))
45 CFILES = $(filter %.c,$(SOURCES) $(GENFILES))
46 HFILES = $(filter %.h,$(SOURCES) $(GENFILES))
47 OFILES = $(CFILES:.c=.o)
48 XREFFILES = $(addsuffix .xref, $(filter %.c, $(SOURCES)) $(filter %.h, $(SOURCES)))
49 HTMLFILES = $(addprefix $(AUTODOCDIR)/, $(XREFFILES:.xref=.html))
50
51 GENFILES += $(LOCALXREFSFILE) $(XREFFILES)
52
53 TAGFILES = $(CFILES) $(HFILES)
54
55 LDLIBS=$(LIBS) -lm -lc
56
57 COMPILE.c = $(CC) -c $(DEFS) $(CPPFLAGS) $(CDEBUG) $(CFLAGS) $(XCFLAGS)
58 COMPILE.s = $(CC) -S $(DEFS) $(CPPFLAGS) $(CDEBUG) $(CFLAGS) $(XCFLAGS)
59
60 %.o: %.c
61         $(COMPILE.c) -o $@ $<
62
63 %.s: %.c
64         $(COMPILE.s) -o $@ $<
65
66 %.i: %.c
67         $(CPP) $(DEFS) $(CPPFLAGS) -o $@ $<
68
69 %.c: %.dot
70         $(DT) $(DTFLAGS) <$^ >$@ || $(fail)
71
72 %.xref: %
73         $(AUTODOC) $< $(@:.xref=.html) INTERNAL HTML GENXREF $@
74
75 $(AUTODOCDIR)/%.html: % $(GLOBALXREFFILE)
76         $(AUTODOC) $< $@ HTML INTERNAL XREF $(GLOBALXREFFILE)
77
78 $(LOCALXREFSFILE): $(XREFFILES)
79 ifeq ($(strip $(XREFSFILE)),)
80         $(RM) $@
81         touch $@
82 else
83         ls *.xref > $@
84 endif
85
86
87 define fail
88 { $(RM) $@; false; }
89 endef
90
91 # make target given by $@ recursively in $^ ...
92 ifeq (,$(findstring k,$(MAKEFLAGS)))
93 # ... and immediately stop on errors
94 define recurse
95 +@for i in $^ ""; do if test $$i; then $(MAKE) -C $$i $(subst subdir_,,$@) || exit $$?; fi; done
96 endef
97 else
98 # ... and keep going after errors
99 define recurse
100 +@fail=; \
101 for i in $^ ""; do if test $$i; then $(MAKE) -C $$i $(subst subdir_,,$@) || fail=y; fi; done; \
102 test -z "$$fail"
103 endef
104 endif
105
106 targets = all clean depend realclean tags install autodoc autodoc_xref autodoc_html dist