Synopsis - Cross-Reference

File: /src/Makefile.in
  1#
  2# Copyright (C) 2003 Stefan Seefeld
  3# All rights reserved.
  4# Licensed to the public under the terms of the GNU LGPL (>= 2),
  5# see the file COPYING for details.
  6#
  7
  8SHELL	:= /bin/sh
  9
 10srcdir	:= @srcdir@
 11builddir:= @builddir@
 12
 13PLATFORM:= @PLATFORM@
 14SYNOPSIS:= python synopsis.py
 15CXX	:= @CXX@
 16LDSHARED:= @LDSHARED@
 17LDSONAME:= @LDSONAME@
 18MAKEDEP	:= $(CXX) -M
 19AR	:= @AR@
 20RANLIB	:= @RANLIB@
 21LN_S	:= @LN_S@
 22CPPFLAGS:= @CPPFLAGS@ -D SYNOPSIS_SRC -I $(builddir) -I $(srcdir)
 23CXXFLAGS:= @CXXFLAGS@
 24LDFLAGS	:= @LDFLAGS@
 25LIBS	:= @LIBS@
 26LIBEXT  := @LIBEXT@
 27INSTALL := @INSTALL@
 28INSTALL_DATA := @INSTALL_DATA@
 29INSTALL_PROGRAM = @INSTALL_PROGRAM@
 30INSTALL_SCRIPT := @INSTALL_SCRIPT@
 31MAJOR	:= @MAJOR@
 32MINOR	:= @MINOR@
 33
 34prefix := @prefix@
 35exec_prefix := @exec_prefix@
 36datarootdir := @datarootdir@
 37datadir := @datadir@
 38includedir := @includedir@
 39libdir := @libdir@
 40sbindir := @sbindir@
 41bindir := @bindir@
 42
 43ifneq ($(findstring -fPIC, $(CXXFLAGS)),)
 44GC_CFLAGS := CFLAGS="@CFLAGS@ -fPIC"
 45endif
 46GC_LIB	:= @GC_LIB@
 47ifdef GC_LIB
 48CPPFLAGS+= -I $(srcdir)/Synopsis/gc/include
 49endif
 50
 51define make_dep
 52@echo generating dependencies for $(@D)/$(<F)
 53$(SHELL) -ec '$(MAKEDEP) $(CPPFLAGS) $< | sed "s,$(*F)\\.o[ :]*,$*\\.d $*\\.o : ,g" > $@'
 54endef
 55
 56define compile
 57@echo compiling $(@D)/$(@F)
 58$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
 59endef
 60
 61ifneq ($(findstring $(PLATFORM), nt cygwin),)
 62define link_dso
 63@echo linking $@
 64$(LDSHARED) $(LDFLAGS) -o $@ $^ $(LIBS)
 65endef
 66
 67define install_dso
 68@echo installing $@
 69$(INSTALL_PROGRAM) lib/libSynopsis$(LIBEXT) \
 70  $(DESTDIR)$(libdir)/libSynopsis$(LIBEXT)
 71endef
 72
 73else
 74
 75define link_dso
 76@echo linking $@
 77rm -f $@ $@.$(MAJOR) $@.$(MAJOR).$(MINOR)
 78$(LDSHARED) $(LDFLAGS) $(LDSONAME)$(@F).$(MAJOR).$(MINOR) \
 79  -o $@.$(MAJOR).$(MINOR) $^ $(LIBS)
 80(cd $(@D) && $(LN_S) $(@F).$(MAJOR).$(MINOR) $(@F).$(MAJOR))
 81(cd $(@D) && $(LN_S) $(@F).$(MAJOR) $(@F))
 82endef
 83
 84define install_dso
 85@echo installing libSynopsis$(LIBEXT)
 86rm -f $(DESTDIR)$(libdir)/libSynopsis$(LIBEXT) \
 87  $(DESTDIR)$(libdir)/libSynopsis$(LIBEXT).$(MAJOR) \
 88  $(DESTDIR)$(libdir)/libSynopsis$(LIBEXT).$(MAJOR).$(MINOR)
 89$(INSTALL_PROGRAM) lib/libSynopsis$(LIBEXT).$(MAJOR).$(MINOR) \
 90  $(DESTDIR)$(libdir)/libSynopsis$(LIBEXT).$(MAJOR).$(MINOR)
 91(cd $(DESTDIR)$(libdir) && $(LN_S) libSynopsis$(LIBEXT).$(MAJOR).$(MINOR) libSynopsis$(LIBEXT).$(MAJOR))
 92(cd $(DESTDIR)$(libdir) && $(LN_S) libSynopsis$(LIBEXT).$(MAJOR) libSynopsis$(LIBEXT))
 93endef
 94endif
 95
 96define link_app
 97@echo linking $@
 98$(CXX) -Llib $(LDFLAGS) -o $@ $< -lSynopsis $(LIBS)
 99endef
100
101SRC	:= Trace \
102           PTree/Node PTree/Encoding PTree/operations \
103           PTree/Atoms PTree/Lists PTree/generation \
104           PTree/Visitor PTree/Display PTree/Writer \
105           SymbolLookup/Symbol SymbolLookup/Scope SymbolLookup/Scopes \
106           SymbolLookup/Display SymbolLookup/Walker \
107           TypeAnalysis/Type TypeAnalysis/Kit \
108           TypeAnalysis/TypeEvaluator \
109           TypeAnalysis/ConstEvaluator \
110           TypeAnalysis/OverloadResolver \
111           Buffer Lexer SymbolFactory Parser
112
113SRC 	:= $(patsubst %, Synopsis/%.cc, $(SRC))
114
115SUP	:= $(patsubst %, Support/%.cc, Path ErrorHandler)
116
117HDR	:= $(patsubst $(srcdir)/%, %, $(wildcard $(srcdir)/Synopsis/*.hh))
118HDR	+= $(patsubst $(srcdir)/%, %, $(wildcard $(srcdir)/Synopsis/PTree/*.hh))
119HDR	+= $(patsubst $(srcdir)/%, %, $(wildcard $(srcdir)/Synopsis/SymbolLookup/*.hh))
120HDR	+= $(patsubst $(srcdir)/%, %, $(wildcard $(srcdir)/Synopsis/TypeAnalysis/*.hh))
121
122OBJ	:= $(patsubst %.cc, %.o, $(SRC))
123CC_SYN	:= $(patsubst %, %.sxr.syn, $(SRC))
124HDR_SYN	:= $(patsubst %, %.syn, $(HDR))
125HDR_SXR_SYN:= $(patsubst %, %.sxr.syn, $(HDR))
126DEP	:= $(patsubst %.cc, %.d, $(SRC) tools/display-ptree.cc tools/display-symbols.cc)
127
128LIBRARY	:= lib/libSynopsis$(LIBEXT)
129SUPPORT := lib/libSupport.a
130TOOLS	:= bin/display-ptree bin/display-symbols
131TARGETS	:= $(LIBRARY) $(SUPPORT) $(TOOLS)
132
133vpath %.cc $(srcdir)
134vpath %.c $(srcdir)
135vpath %.h $(srcdir)
136vpath %.hh $(srcdir) $(builddir)
137
138all: $(TARGETS)
139
140$(LIBRARY): $(OBJ) $(GC_LIB)
141	$(link_dso)
142
143$(SUPPORT): $(patsubst %.cc, %.o, $(SUP))
144	$(AR) cru $@ $^
145	$(RANLIB) $@
146
147$(TOOLS): bin/%: tools/%.o $(LIBRARY)
148	$(link_app)
149
150doc: cxx.syn cxx-sxr.syn
151
152cxx.syn: $(HDR_SYN)
153	@echo linking C++ headers together
154	$(SYNOPSIS) link --output=$@ $^
155
156cxx-sxr.syn: $(HDR_SXR_SYN) $(CC_SYN)
157	@echo linking all C++ files together
158	$(SYNOPSIS) link --output=$@ $^
159
160%.d: %.cc
161	$(make_dep)
162
163%.o: %.cc
164	$(compile)
165
166Makefile: $(srcdir)/Makefile.in
167	./config.status --file Makefile
168
169$(HDR_SYN): %.syn: %
170	@echo parsing $^
171	mkdir -p $(dir $@)
172	$(SYNOPSIS) cxx --output=$@ $?
173
174$(HDR_SXR_SYN): %.sxr.syn: %
175	@echo parsing $^
176	mkdir -p $(dir $@)
177	$(SYNOPSIS) cxx_sxr --output=$@ $?
178
179$(CC_SYN): %.cc.sxr.syn: %.cc
180	@echo parsing $^
181	mkdir -p $(dir $@)
182	$(SYNOPSIS) cxx_sxr --output=$@ $?
183
184# This calls make in the gc dir to create the gc.a file
185$(GC_LIB):
186	$(MAKE) -C Synopsis/gc $(GC_CFLAGS)
187
188install:
189	$(INSTALL) -d $(DESTDIR)$(libdir)
190	$(install_dso)
191	$(INSTALL) -d $(DESTDIR)$(includedir)/Synopsis
192	$(INSTALL) -d $(DESTDIR)$(includedir)/Synopsis/PTree
193	$(INSTALL) -d $(DESTDIR)$(includedir)/Synopsis/SymbolLookup
194	$(INSTALL) -d $(DESTDIR)$(includedir)/Synopsis/TypeAnalysis
195	for header in $(HDR); do \
196          $(INSTALL_DATA) $(srcdir)/$$header \
197            $(DESTDIR)$(includedir)/`dirname $$header`; \
198	done
199	$(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig
200	$(INSTALL_DATA) synopsis.pc \
201          $(DESTDIR)$(libdir)/pkgconfig/synopsis.pc
202
203clean:
204	rm -f Synopsis/*~ Synopsis/*.o Synopsis/*.d Synopsis/*.syn \
205        Synopsis/PTree/*.~ Synopsis/PTree/*.o Synopsis/PTree/*.d Synopsis/PTree/*.syn \
206        Synopsis/SymbolLookup/*.~ Synopsis/SymbolLookup/*.o Synopsis/SymbolLookup/*.d Synopsis/SymbolLookup/*.syn \
207        Synopsis/TypeAnalysis/*.~ Synopsis/TypeAnalysis/*.o Synopsis/TypeAnalysis/*.d Synopsis/TypeAnalysis/*.syn \
208        tools/*.~ tools/*.o tools/*.d \
209        *.dll *.so *core \
210	base_lib
211
212ifeq (,$(filter $(MAKECMDGOALS), depend clean distclean))
213-include $(DEP)
214endif