1# @configure_input@
2# Makefile for libcpp.  Run 'configure' to generate Makefile from Makefile.in
3
4# Copyright (C) 2004 Free Software Foundation, Inc.
5
6#This file is part of libcpp.
7
8#libcpp is free software; you can redistribute it and/or modify
9#it under the terms of the GNU General Public License as published by
10#the Free Software Foundation; either version 2, or (at your option)
11#any later version.
12
13#libcpp is distributed in the hope that it will be useful,
14#but WITHOUT ANY WARRANTY; without even the implied warranty of
15#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16#GNU General Public License for more details.
17
18#You should have received a copy of the GNU General Public License
19#along with libcpp; see the file COPYING.  If not, write to
20#the Free Software Foundation, 51 Franklin Street, Fifth Floor,
21#Boston MA 02110-1301, USA.
22
23@SET_MAKE@
24
25srcdir = @srcdir@
26top_builddir = .
27VPATH = @srcdir@
28INSTALL = @INSTALL@
29AR = @AR@
30ARFLAGS = @ARFLAGS@
31ACLOCAL = @ACLOCAL@
32AUTOCONF = @AUTOCONF@
33AUTOHEADER = @AUTOHEADER@
34CATALOGS = $(patsubst %,po/%,@CATALOGS@)
35CC = @CC@
36CFLAGS = @CFLAGS@
37WARN_CFLAGS = @WARN_CFLAGS@ @WARN_PEDANTIC@ @WERROR@
38CPP = @CPP@
39CPPFLAGS = @CPPFLAGS@
40EXEEXT = @EXEEXT@
41GMSGFMT = @GMSGFMT@
42INCINTL = @INCINTL@
43INSTALL_DATA = @INSTALL_DATA@
44INSTALL_PROGRAM = @INSTALL_PROGRAM@
45INSTALL_SCRIPT = @INSTALL_SCRIPT@
46LDFLAGS = @LDFLAGS@
47LIBICONV = @LIBICONV@
48LIBINTL = @LIBINTL@
49PACKAGE = @PACKAGE@
50RANLIB = @RANLIB@
51SHELL = @SHELL@
52USED_CATALOGS = @USED_CATALOGS@
53XGETTEXT = @XGETTEXT@
54DEPMODE = @CCDEPMODE@
55DEPDIR = @DEPDIR@
56
57datadir = @datadir@
58exec_prefix = @prefix@
59libdir = @libdir@
60localedir = $(datadir)/locale
61prefix = @prefix@
62
63MSGMERGE = msgmerge
64mkinstalldirs = $(SHELL) $(srcdir)/../mkinstalldirs
65depcomp = $(SHELL) $(srcdir)/../depcomp
66
67INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \
68	-I$(srcdir)/include
69
70ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS)
71
72libcpp_a_OBJS = charset.o directives.o directives-only.o errors.o \
73	expr.o files.o identifiers.o init.o lex.o line-map.o macro.o \
74	mkdeps.o pch.o symtab.o traditional.o
75makedepend_OBJS = makedepend.o
76
77libcpp_a_SOURCES = charset.c directives.c directives-only.c errors.c \
78	expr.c files.c identifiers.c init.c lex.c line-map.c macro.c \
79	mkdeps.c pch.c symtab.c traditional.c
80
81all: libcpp.a makedepend$(EXEEXT) $(USED_CATALOGS)
82
83.SUFFIXES:
84.SUFFIXES: .c .gmo .o .obj .po .pox
85
86libcpp.a: $(libcpp_a_OBJS)
87	-rm -f libcpp.a
88	$(AR) $(ARFLAGS) libcpp.a $(libcpp_a_OBJS)
89	$(RANLIB) libcpp.a
90
91makedepend$(EXEEXT): $(makedepend_OBJS) libcpp.a ../libiberty/libiberty.a
92	@rm -f makedepend$(EXEEXT)
93	$(CC) $(CFLAGS) $(LDFLAGS) -o makedepend$(EXEEXT) \
94	  $(makedepend_OBJS) libcpp.a ../libiberty/libiberty.a \
95	  $(LIBINTL) $(LIBICONV)
96
97# Rules to rebuild the configuration
98
99Makefile: $(srcdir)/Makefile.in config.status
100	$(SHELL) ./config.status Makefile
101
102config.status: $(srcdir)/configure
103	$(SHELL) ./config.status --recheck
104
105$(srcdir)/configure: @MAINT@ $(srcdir)/aclocal.m4
106	cd $(srcdir) && $(AUTOCONF)
107
108$(srcdir)/aclocal.m4: @MAINT@ $(srcdir)/../config/acx.m4 \
109	$(srcdir)/../config/gettext-sister.m4 $(srcdir)/../config/iconv.m4 \
110	$(srcdir)/../config/codeset.m4 $(srcdir)/../config/lib-ld.m4 \
111	$(srcdir)/../config/lib-link.m4 $(srcdir)/../config/lib-prefix.m4 \
112	$(srcdir)/configure.ac
113	cd $(srcdir) && $(ACLOCAL) -I ../config
114
115config.h: stamp-h1
116	test -f config.h || (rm -f stamp-h1 && $(MAKE) stamp-h1)
117
118stamp-h1: $(srcdir)/config.in config.status
119	-rm -f stamp-h1
120	$(SHELL) ./config.status config.h
121
122$(srcdir)/config.in: @MAINT@ $(srcdir)/configure
123	cd $(srcdir) && $(AUTOHEADER)
124	-rm -f stamp-h1
125
126# It is not possible to get LOCALEDIR defined in config.h because
127# the value it needs to be defined to is only determined in the
128# Makefile.  Hence we do this instead.
129localedir.h: localedir.hs; @true
130localedir.hs: Makefile
131	echo "#define LOCALEDIR \"$(localedir)\"" > localedir.new
132	$(srcdir)/../move-if-change localedir.new localedir.h
133	echo timestamp > localedir.hs
134
135# Installation rules and other phony targets
136
137# These rule has to look for .gmo modules in both srcdir and
138# the cwd, and has to check that we actually have a catalog
139# for each language, in case they weren't built or included
140# with the distribution.
141installdirs:
142	@$(mkinstalldirs) $(DESTDIR)$(datadir); \
143	cats="$(CATALOGS)"; for cat in $$cats; do \
144	  lang=`basename $$cat | sed 's/\.gmo$$//'`; \
145	  if [ -f $$cat ] || [ -f $(srcdir)/$$cat ]; then \
146	    dir=$(localedir)/$$lang/LC_MESSAGES; \
147	    $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \
148	  fi; \
149	done
150
151install-strip install: all installdirs
152	cats="$(CATALOGS)"; for cat in $$cats; do \
153	  lang=`basename $$cat | sed 's/\.gmo$$//'`; \
154	  if [ -f $$cat ]; then :; \
155	  elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \
156	  else continue; \
157	  fi; \
158	  dir=$(localedir)/$$lang/LC_MESSAGES; \
159	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
160	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
161	done
162
163mostlyclean:
164	-rm -f *.o
165
166clean: mostlyclean
167	-rm -rf makedepend$(EXEEXT) libcpp.a $(srcdir)/autom4te.cache
168
169distclean: clean
170	-rm -f config.h stamp-h1 config.status config.cache config.log \
171	  configure.lineno configure.status.lineno Makefile localedir.h \
172	  localedir.hs $(DEPDIR)/*.Po
173	-rmdir $(DEPDIR)
174
175maintainer-clean: distclean
176	@echo "This command is intended for maintainers to use"
177	@echo "it deletes files that may require special tools to rebuild."
178	-rm -f $(srcdir)/configure $(srcdir)/aclocal.m4
179
180check:
181installcheck:
182dvi:
183pdf:
184html:
185info:
186install-info:
187install-man:
188install-html:
189
190update-po: $(CATALOGS:.gmo=.pox)
191
192.PHONY: installdirs install install-strip mostlyclean clean distclean \
193  maintainer-clean check installcheck dvi pdf html info install-info \
194  install-man update-po install-html
195
196# Dependency rule.
197COMPILE.base = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(ALL_CFLAGS) -c
198ifeq ($(DEPMODE),depmode=gcc3)
199COMPILE = $(COMPILE.base) -o $@ -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Po
200else
201COMPILE = source='$<' object='$@' libtool=no DEPDIR=$(DEPDIR) $(DEPMODE) \
202	  $(depcomp) $(COMPILE.base)
203endif
204
205# Implicit rules and I18N
206
207.c.o:
208	$(COMPILE) $<
209
210# N.B. We do not attempt to copy these into $(srcdir).
211.po.gmo:
212	-test -d po || mkdir po
213	$(GMSGFMT) --statistics -o $@ $<
214
215# The new .po has to be gone over by hand, so we deposit it into
216# build/po with a different extension.
217# If build/po/$(PACKAGE).pot exists, use it (it was just created),
218# else use the one in srcdir.
219.po.pox:
220	-test -d po || mkdir po
221	$(MSGMERGE) $< `if test -f po/$(PACKAGE).pot; \
222	                then echo po/$(PACKAGE).pot; \
223	                else echo $(srcdir)/po/$(PACKAGE).pot; fi` -o $@
224
225# Rule for regenerating the message template.
226$(PACKAGE).pot: po/$(PACKAGE).pot
227po/$(PACKAGE).pot: $(libcpp_a_SOURCES)
228	-test -d $(srcdir)/po || mkdir $(srcdir)/po
229	$(XGETTEXT) --default-domain=$(PACKAGE) \
230	  --keyword=_ --keyword=N_ \
231	  --keyword=cpp_error:3 --keyword=cpp_errno:3 \
232	  --keyword=cpp_error_with_line:5 \
233	  --keyword=SYNTAX_ERROR --keyword=SYNTAX_ERROR2 \
234	  --copyright-holder="Free Software Foundation, Inc." \
235	  --msgid-bugs-address="http://gcc.gnu.org/bugs.html" \
236	  --language=c -o po/$(PACKAGE).pot.tmp $^
237	sed 's:$(srcdir)/::g' <po/$(PACKAGE).pot.tmp >po/$(PACKAGE).pot
238	rm po/$(PACKAGE).pot.tmp
239
240
241# Tell versions [3.59,3.63) of GNU make to not export all variables.
242# Otherwise a system limit (for SysV at least) may be exceeded.
243.NOEXPORT:
244
245# Dependencies
246-include $(patsubst %.o, $(DEPDIR)/%.Po, $(libcpp_a_OBJS) $(makedepend_OBJS))
247
248# Dependencies on generated headers have to be explicit.
249init.o: localedir.h
250