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