2 # Makefile for libcpp. Run 'configure' to generate Makefile from Makefile.in
4 # Copyright (C) 2004-2013 Free Software Foundation, Inc.
6 #This file is part of libcpp.
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 3, or (at your option)
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.
18 #You should have received a copy of the GNU General Public License
19 #along with libcpp; see the file COPYING3. If not see
20 #<http://www.gnu.org/licenses/>.
32 AUTOHEADER = @AUTOHEADER@
33 CATALOGS = $(patsubst %,po/%,@CATALOGS@)
36 WARN_CFLAGS = @warn@ @c_warn@ @WARN_PEDANTIC@ @WERROR@
39 WARN_CXXFLAGS = @warn@ @WARN_PEDANTIC@ @WERROR@
45 INSTALL_DATA = @INSTALL_DATA@
46 INSTALL_PROGRAM = @INSTALL_PROGRAM@
47 INSTALL_SCRIPT = @INSTALL_SCRIPT@
54 USED_CATALOGS = @USED_CATALOGS@
56 CCDEPMODE = @CCDEPMODE@
57 CXXDEPMODE = @CXXDEPMODE@
59 NOEXCEPTION_FLAGS = @noexception_flags@
61 datarootdir = @datarootdir@
63 exec_prefix = @prefix@
65 localedir = $(datadir)/locale
69 mkinstalldirs = $(SHELL) $(srcdir)/../mkinstalldirs
70 depcomp = $(SHELL) $(srcdir)/../depcomp
72 INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \
75 ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS)
76 ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(NOEXCEPTION_FLAGS) $(INCLUDES) \
79 # The name of the compiler to use.
81 COMPILER_FLAGS = $(ALL_CXXFLAGS)
82 DEPMODE = $(CXXDEPMODE)
85 libcpp_a_OBJS = charset.o directives.o directives-only.o errors.o \
86 expr.o files.o identifiers.o init.o lex.o line-map.o macro.o \
87 mkdeps.o pch.o symtab.o traditional.o
89 libcpp_a_SOURCES = charset.c directives.c directives-only.c errors.c \
90 expr.c files.c identifiers.c init.c lex.c line-map.c macro.c \
91 mkdeps.c pch.c symtab.c traditional.c
93 all: libcpp.a $(USED_CATALOGS)
96 .SUFFIXES: .c .gmo .o .obj .po .pox
98 libcpp.a: $(libcpp_a_OBJS)
100 $(AR) $(ARFLAGS) libcpp.a $(libcpp_a_OBJS)
103 # Rules to rebuild the configuration
105 Makefile: $(srcdir)/Makefile.in config.status
106 $(SHELL) ./config.status Makefile
108 config.status: $(srcdir)/configure
109 $(SHELL) ./config.status --recheck
111 $(srcdir)/configure: @MAINT@ $(srcdir)/aclocal.m4
112 cd $(srcdir) && $(AUTOCONF)
114 $(srcdir)/aclocal.m4: @MAINT@ $(srcdir)/../config/acx.m4 \
115 $(srcdir)/../config/gettext-sister.m4 $(srcdir)/../config/iconv.m4 \
116 $(srcdir)/../config/codeset.m4 $(srcdir)/../config/lib-ld.m4 \
117 $(srcdir)/../config/lib-link.m4 $(srcdir)/../config/lib-prefix.m4 \
118 $(srcdir)/../config/override.m4 $(srcdir)/../config/proginstall.m4 \
119 $(srcdir)/configure.ac
120 cd $(srcdir) && $(ACLOCAL) -I ../config
123 test -f config.h || (rm -f stamp-h1 && $(MAKE) stamp-h1)
125 stamp-h1: $(srcdir)/config.in config.status
127 $(SHELL) ./config.status config.h
129 $(srcdir)/config.in: @MAINT@ $(srcdir)/configure.ac
130 cd $(srcdir) && $(AUTOHEADER)
133 # It is not possible to get LOCALEDIR defined in config.h because
134 # the value it needs to be defined to is only determined in the
135 # Makefile. Hence we do this instead.
136 localedir.h: localedir.hs; @true
137 localedir.hs: Makefile
138 echo "#define LOCALEDIR \"$(localedir)\"" > localedir.new
139 $(srcdir)/../move-if-change localedir.new localedir.h
140 echo timestamp > localedir.hs
142 # Installation rules and other phony targets
144 # These rule has to look for .gmo modules in both srcdir and
145 # the cwd, and has to check that we actually have a catalog
146 # for each language, in case they weren't built or included
147 # with the distribution.
149 @$(mkinstalldirs) $(DESTDIR)$(datadir); \
150 cats="$(CATALOGS)"; for cat in $$cats; do \
151 lang=`basename $$cat | sed 's/\.gmo$$//'`; \
152 if [ -f $$cat ] || [ -f $(srcdir)/$$cat ]; then \
153 dir=$(localedir)/$$lang/LC_MESSAGES; \
154 $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \
158 install-strip install: all installdirs
159 cats="$(CATALOGS)"; for cat in $$cats; do \
160 lang=`basename $$cat | sed 's/\.gmo$$//'`; \
161 if [ -f $$cat ]; then :; \
162 elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \
165 dir=$(localedir)/$$lang/LC_MESSAGES; \
166 echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
167 $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
174 -rm -rf libcpp.a $(srcdir)/autom4te.cache
177 -rm -f config.h stamp-h1 config.status config.cache config.log \
178 configure.lineno configure.status.lineno Makefile localedir.h \
179 localedir.hs $(DEPDIR)/*.Po
182 maintainer-clean: distclean
183 @echo "This command is intended for maintainers to use"
184 @echo "it deletes files that may require special tools to rebuild."
185 -rm -f $(srcdir)/configure $(srcdir)/aclocal.m4
198 update-po: $(CATALOGS:.gmo=.pox)
200 .PHONY: installdirs install install-strip mostlyclean clean distclean \
201 maintainer-clean check installcheck dvi pdf html info install-info \
202 install-man update-po install-html
205 COMPILE.base = $(COMPILER) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(COMPILER_FLAGS) -c
206 ifeq ($(DEPMODE),depmode=gcc3)
207 # Note that we put the dependencies into a .Tpo file, then move them
208 # into place if the compile succeeds. We need this because gcc does
209 # not atomically write the dependency output file.
210 COMPILE = $(COMPILE.base) -o $@ -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Tpo
211 POSTCOMPILE = @mv $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
213 COMPILE = source='$<' object='$@' libtool=no DEPDIR=$(DEPDIR) $(DEPMODE) \
214 $(depcomp) $(COMPILE.base)
215 # depcomp handles atomicity for us, so we don't need a postcompile
220 # Implicit rules and I18N
226 # N.B. We do not attempt to copy these into $(srcdir).
229 $(GMSGFMT) --statistics -o $@ $<
231 # The new .po has to be gone over by hand, so we deposit it into
232 # build/po with a different extension.
233 # If build/po/$(PACKAGE).pot exists, use it (it was just created),
234 # else use the one in srcdir.
237 $(MSGMERGE) $< `if test -f po/$(PACKAGE).pot; \
238 then echo po/$(PACKAGE).pot; \
239 else echo $(srcdir)/po/$(PACKAGE).pot; fi` -o $@
241 # Rule for regenerating the message template.
242 $(PACKAGE).pot: po/$(PACKAGE).pot
243 po/$(PACKAGE).pot: $(libcpp_a_SOURCES)
244 $(mkinstalldirs) $(srcdir)/po
245 $(XGETTEXT) --default-domain=$(PACKAGE) \
246 --keyword=_ --keyword=N_ \
247 --keyword=cpp_error:3 \
248 --keyword=cpp_warning:3 \
249 --keyword=cpp_pedwarning:3 \
250 --keyword=cpp_warning_syshdr:3 \
251 --keyword=cpp_error_with_line:5 \
252 --keyword=cpp_warning_with_line:5 \
253 --keyword=cpp_pedwarning_with_line:5 \
254 --keyword=cpp_warning_with_line_syshdr:5 \
255 --keyword=cpp_errno:3 \
256 --keyword=SYNTAX_ERROR --keyword=SYNTAX_ERROR2 \
257 --copyright-holder="Free Software Foundation, Inc." \
258 --msgid-bugs-address="http://gcc.gnu.org/bugs.html" \
259 --language=c -o po/$(PACKAGE).pot.tmp $^
260 sed 's:$(srcdir)/::g' <po/$(PACKAGE).pot.tmp >po/$(PACKAGE).pot
261 rm po/$(PACKAGE).pot.tmp
263 TAGS_SOURCES = $(libcpp_a_SOURCES) internal.h ucnid.h \
264 include/line-map.h include/symtab.h include/cpp-id-data.h \
265 include/cpplib.h include/mkdeps.h system.h
267 TAGS: $(TAGS_SOURCES)
268 cd $(srcdir) && etags $(TAGS_SOURCES)
270 # Tell versions [3.59,3.63) of GNU make to not export all variables.
271 # Otherwise a system limit (for SysV at least) may be exceeded.
275 -include $(patsubst %.o, $(DEPDIR)/%.Po, $(libcpp_a_OBJS))
277 # Dependencies on generated headers have to be explicit.