87cf065171
* diagnostic.h (diagnostic_override_option_index): New macro to set a diagnostic's option_index. * c-tree.h (c_cpp_error): Add warning reason argument. * opts.c (_warning_as_error_callback): New. (register_warning_as_error_callback): Store callback for warnings enabled via enable_warning_as_error. (enable_warning_as_error): Call callback, minor code tidy. * opts.h (register_warning_as_error_callback): Declare. * c-opts.c (warning_as_error_callback): New, set cpp_opts flag in response to -Werror=. (c_common_init_options): Register warning_as_error_callback in opts.c. * common.opt: Add -Wno-cpp option. * c-common.c (struct reason_option_codes_t): Map cpp warning reason codes to gcc option indexes. * (c_option_controlling_cpp_error): New function, lookup the gcc option index for a cpp warning reason code. * (c_cpp_error): Add warning reason argument, call c_option_controlling_cpp_error for diagnostic_override_option_index. * doc/invoke.texi: Document -Wno-cpp. * cpp.c (cb_cpp_error): Add warning reason argument, set a value for diagnostic_override_option_index if CPP_W_WARNING_DIRECTIVE. * directives.c (do_diagnostic): Add warning reason argument, call appropriate error reporting function for code. (directive_diagnostics): Call specific warning functions with warning reason where appropriate. (do_error, do_warning, do_pragma_dependency): Add warning reason argument to do_diagnostic calls. * macro.c (_cpp_warn_if_unused_macro, enter_macro_context, _cpp_create_definition): Call specific warning functions with warning reason where appropriate. * Makefile.in: Add new diagnostic functions to gettext translations. * include/cpplib.h (struct cpp_callbacks): Add warning reason code to error callback. (CPP_DL_WARNING, CPP_DL_WARNING_SYSHDR, CPP_DL_PEDWARN, CPP_DL_ERROR, CPP_DL_ICE, CPP_DL_NOTE, CPP_DL_FATAL): Replace macros with enums. (CPP_W_NONE, CPP_W_DEPRECATED, CPP_W_COMMENTS, CPP_W_MISSING_INCLUDE_DIRS, CPP_W_TRIGRAPHS, CPP_W_MULTICHAR, CPP_W_TRADITIONAL, CPP_W_LONG_LONG, CPP_W_ENDIF_LABELS, CPP_W_NUM_SIGN_CHANGE, CPP_W_VARIADIC_MACROS, CPP_W_BUILTIN_MACRO_REDEFINED, CPP_W_DOLLARS, CPP_W_UNDEF, CPP_W_UNUSED_MACROS, CPP_W_CXX_OPERATOR_NAMES, CPP_W_NORMALIZE, CPP_W_INVALID_PCH, CPP_W_WARNING_DIRECTIVE): New enums for cpp warning reason codes. (cpp_warning, cpp_pedwarning, cpp_warning_syshdr, cpp_warning_with_line, cpp_pedwarning_with_line, cpp_warning_with_line_syshdr): New specific error reporting functions. * pch.c (cpp_valid_state): Call specific warning functions with warning reason where appropriate. * errors.c (cpp_diagnostic, cpp_diagnostic_with_line): New central diagnostic handlers. (cpp_warning, cpp_pedwarning, cpp_warning_syshdr, cpp_warning_with_line, cpp_pedwarning_with_line, cpp_warning_with_line_syshdr): New specific error reporting functions. * expr.c (cpp_classify_number, eval_token, num_unary_op): Call specific warning functions with warning reason where appropriate. * lex.c (_cpp_process_line_notes, _cpp_skip_block_comment, warn_about_normalization, lex_identifier_intern, lex_identifier, _cpp_lex_direct): Ditto. * charset.c (_cpp_valid_ucn, convert_hex, convert_escape, narrow_str_to_charconst): Ditto. * gcc.dg/cpp/warn-undef-2.c: New. * gcc.dg/cpp/warn-traditional-2.c: New. * gcc.dg/cpp/warn-comments-2.c: New. * gcc.dg/cpp/warning-directive-1.c: New. * gcc.dg/cpp/warn-long-long.c: New. * gcc.dg/cpp/warn-traditional.c: New. * gcc.dg/cpp/warn-variadic-2.c: New. * gcc.dg/cpp/warn-undef.c: New. * gcc.dg/cpp/warn-normalized-1.c: New. * gcc.dg/cpp/warning-directive-2.c: New. * gcc.dg/cpp/warn-long-long-2.c: New. * gcc.dg/cpp/warn-variadic.c: New. * gcc.dg/cpp/warn-normalized-2.c: New. * gcc.dg/cpp/warning-directive-3.c: New. * gcc.dg/cpp/warn-deprecated-2.c: New. * gcc.dg/cpp/warn-trigraphs-1.c: New. * gcc.dg/cpp/warn-multichar-2.c: New. * gcc.dg/cpp/warn-normalized-3.c: New. * gcc.dg/cpp/warning-directive-4.c: New. * gcc.dg/cpp/warn-unused-macros.c: New. * gcc.dg/cpp/warn-trigraphs-2.c: New. * gcc.dg/cpp/warn-cxx-compat-2.c: New. * gcc.dg/cpp/warn-cxx-compat.c: New. * gcc.dg/cpp/warn-redefined.c: New. * gcc.dg/cpp/warn-trigraphs-3.c: New. * gcc.dg/cpp/warn-unused-macros-2.c: New. * gcc.dg/cpp/warn-deprecated.c: New. * gcc.dg/cpp/warn-trigraphs-4.c: New. * gcc.dg/cpp/warn-redefined-2.c: New. * gcc.dg/cpp/warn-comments.c: New. * gcc.dg/cpp/warn-multichar.c: New. * g++.dg/cpp/warning-directive-1.C: New. * g++.dg/cpp/warning-directive-2.C: New. * g++.dg/cpp/warning-directive-3.C: New. * g++.dg/cpp/warning-directive-4.C: New. * gfortran.dg/warning-directive-1.F90: New. * gfortran.dg/warning-directive-3.F90: New. * gfortran.dg/warning-directive-2.F90: New. * gfortran.dg/warning-directive-4.F90: New. From-SVN: r158079
284 lines
8.4 KiB
Makefile
284 lines
8.4 KiB
Makefile
# @configure_input@
|
|
# Makefile for libcpp. Run 'configure' to generate Makefile from Makefile.in
|
|
|
|
# Copyright (C) 2004, 2008, 2009 Free Software Foundation, Inc.
|
|
|
|
#This file is part of libcpp.
|
|
|
|
#libcpp is free software; you can redistribute it and/or modify
|
|
#it under the terms of the GNU General Public License as published by
|
|
#the Free Software Foundation; either version 3, or (at your option)
|
|
#any later version.
|
|
|
|
#libcpp is distributed in the hope that it will be useful,
|
|
#but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
#GNU General Public License for more details.
|
|
|
|
#You should have received a copy of the GNU General Public License
|
|
#along with libcpp; see the file COPYING3. If not see
|
|
#<http://www.gnu.org/licenses/>.
|
|
|
|
@SET_MAKE@
|
|
|
|
srcdir = @srcdir@
|
|
top_builddir = .
|
|
VPATH = @srcdir@
|
|
INSTALL = @INSTALL@
|
|
AR = ar
|
|
ARFLAGS = cru
|
|
ACLOCAL = @ACLOCAL@
|
|
AUTOCONF = @AUTOCONF@
|
|
AUTOHEADER = @AUTOHEADER@
|
|
CATALOGS = $(patsubst %,po/%,@CATALOGS@)
|
|
CC = @CC@
|
|
CFLAGS = @CFLAGS@
|
|
WARN_CFLAGS = @warn@ @c_warn@ @WARN_PEDANTIC@ @WERROR@
|
|
CXX = @CXX@
|
|
CXXFLAGS = @CXXFLAGS@
|
|
WARN_CXXFLAGS = @warn@ @WARN_PEDANTIC@ @WERROR@
|
|
CPP = @CPP@
|
|
CPPFLAGS = @CPPFLAGS@
|
|
EXEEXT = @EXEEXT@
|
|
GMSGFMT = @GMSGFMT@
|
|
INCINTL = @INCINTL@
|
|
INSTALL_DATA = @INSTALL_DATA@
|
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
LDFLAGS = @LDFLAGS@
|
|
LIBICONV = @LIBICONV@
|
|
LIBINTL = @LIBINTL@
|
|
PACKAGE = @PACKAGE@
|
|
RANLIB = @RANLIB@
|
|
SHELL = @SHELL@
|
|
USED_CATALOGS = @USED_CATALOGS@
|
|
XGETTEXT = @XGETTEXT@
|
|
CCDEPMODE = @CCDEPMODE@
|
|
CXXDEPMODE = @CXXDEPMODE@
|
|
DEPDIR = @DEPDIR@
|
|
|
|
datarootdir = @datarootdir@
|
|
datadir = @datadir@
|
|
exec_prefix = @prefix@
|
|
libdir = @libdir@
|
|
localedir = $(datadir)/locale
|
|
prefix = @prefix@
|
|
|
|
MSGMERGE = msgmerge
|
|
mkinstalldirs = $(SHELL) $(srcdir)/../mkinstalldirs
|
|
depcomp = $(SHELL) $(srcdir)/../depcomp
|
|
|
|
INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \
|
|
-I$(srcdir)/include
|
|
|
|
ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS)
|
|
ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(INCLUDES) $(CPPFLAGS)
|
|
|
|
# The name of the compiler to use.
|
|
ENABLE_BUILD_WITH_CXX = @ENABLE_BUILD_WITH_CXX@
|
|
ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
|
|
COMPILER = $(CC)
|
|
COMPILER_FLAGS = $(ALL_CFLAGS)
|
|
DEPMODE = $(CCDEPMODE)
|
|
else
|
|
COMPILER = $(CXX)
|
|
COMPILER_FLAGS = $(ALL_CXXFLAGS)
|
|
DEPMODE = $(CXXDEPMODE)
|
|
endif
|
|
|
|
|
|
libcpp_a_OBJS = charset.o directives.o directives-only.o errors.o \
|
|
expr.o files.o identifiers.o init.o lex.o line-map.o macro.o \
|
|
mkdeps.o pch.o symtab.o traditional.o
|
|
|
|
libcpp_a_SOURCES = charset.c directives.c directives-only.c errors.c \
|
|
expr.c files.c identifiers.c init.c lex.c line-map.c macro.c \
|
|
mkdeps.c pch.c symtab.c traditional.c
|
|
|
|
all: libcpp.a $(USED_CATALOGS)
|
|
|
|
.SUFFIXES:
|
|
.SUFFIXES: .c .gmo .o .obj .po .pox
|
|
|
|
libcpp.a: $(libcpp_a_OBJS)
|
|
-rm -f libcpp.a
|
|
$(AR) $(ARFLAGS) libcpp.a $(libcpp_a_OBJS)
|
|
$(RANLIB) libcpp.a
|
|
|
|
# Rules to rebuild the configuration
|
|
|
|
Makefile: $(srcdir)/Makefile.in config.status
|
|
$(SHELL) ./config.status Makefile
|
|
|
|
config.status: $(srcdir)/configure
|
|
$(SHELL) ./config.status --recheck
|
|
|
|
$(srcdir)/configure: @MAINT@ $(srcdir)/aclocal.m4
|
|
cd $(srcdir) && $(AUTOCONF)
|
|
|
|
$(srcdir)/aclocal.m4: @MAINT@ $(srcdir)/../config/acx.m4 \
|
|
$(srcdir)/../config/gettext-sister.m4 $(srcdir)/../config/iconv.m4 \
|
|
$(srcdir)/../config/codeset.m4 $(srcdir)/../config/lib-ld.m4 \
|
|
$(srcdir)/../config/lib-link.m4 $(srcdir)/../config/lib-prefix.m4 \
|
|
$(srcdir)/../config/override.m4 $(srcdir)/../config/proginstall.m4 \
|
|
$(srcdir)/configure.ac
|
|
cd $(srcdir) && $(ACLOCAL) -I ../config
|
|
|
|
config.h: stamp-h1
|
|
test -f config.h || (rm -f stamp-h1 && $(MAKE) stamp-h1)
|
|
|
|
stamp-h1: $(srcdir)/config.in config.status
|
|
-rm -f stamp-h1
|
|
$(SHELL) ./config.status config.h
|
|
|
|
$(srcdir)/config.in: @MAINT@ $(srcdir)/configure.ac
|
|
cd $(srcdir) && $(AUTOHEADER)
|
|
-rm -f stamp-h1
|
|
|
|
# It is not possible to get LOCALEDIR defined in config.h because
|
|
# the value it needs to be defined to is only determined in the
|
|
# Makefile. Hence we do this instead.
|
|
localedir.h: localedir.hs; @true
|
|
localedir.hs: Makefile
|
|
echo "#define LOCALEDIR \"$(localedir)\"" > localedir.new
|
|
$(srcdir)/../move-if-change localedir.new localedir.h
|
|
echo timestamp > localedir.hs
|
|
|
|
# Installation rules and other phony targets
|
|
|
|
# These rule has to look for .gmo modules in both srcdir and
|
|
# the cwd, and has to check that we actually have a catalog
|
|
# for each language, in case they weren't built or included
|
|
# with the distribution.
|
|
installdirs:
|
|
@$(mkinstalldirs) $(DESTDIR)$(datadir); \
|
|
cats="$(CATALOGS)"; for cat in $$cats; do \
|
|
lang=`basename $$cat | sed 's/\.gmo$$//'`; \
|
|
if [ -f $$cat ] || [ -f $(srcdir)/$$cat ]; then \
|
|
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
|
$(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \
|
|
fi; \
|
|
done
|
|
|
|
install-strip install: all installdirs
|
|
cats="$(CATALOGS)"; for cat in $$cats; do \
|
|
lang=`basename $$cat | sed 's/\.gmo$$//'`; \
|
|
if [ -f $$cat ]; then :; \
|
|
elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \
|
|
else continue; \
|
|
fi; \
|
|
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
|
echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
|
|
$(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
|
|
done
|
|
|
|
mostlyclean:
|
|
-rm -f *.o
|
|
|
|
clean: mostlyclean
|
|
-rm -rf libcpp.a $(srcdir)/autom4te.cache
|
|
|
|
distclean: clean
|
|
-rm -f config.h stamp-h1 config.status config.cache config.log \
|
|
configure.lineno configure.status.lineno Makefile localedir.h \
|
|
localedir.hs $(DEPDIR)/*.Po
|
|
-rmdir $(DEPDIR)
|
|
|
|
maintainer-clean: distclean
|
|
@echo "This command is intended for maintainers to use"
|
|
@echo "it deletes files that may require special tools to rebuild."
|
|
-rm -f $(srcdir)/configure $(srcdir)/aclocal.m4
|
|
|
|
check:
|
|
installcheck:
|
|
dvi:
|
|
pdf:
|
|
html:
|
|
info:
|
|
install-info:
|
|
install-pdf:
|
|
install-man:
|
|
install-html:
|
|
|
|
update-po: $(CATALOGS:.gmo=.pox)
|
|
|
|
.PHONY: installdirs install install-strip mostlyclean clean distclean \
|
|
maintainer-clean check installcheck dvi pdf html info install-info \
|
|
install-man update-po install-html
|
|
|
|
# Dependency rule.
|
|
COMPILE.base = $(COMPILER) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(COMPILER_FLAGS) -c
|
|
ifeq ($(DEPMODE),depmode=gcc3)
|
|
# Note that we put the dependencies into a .Tpo file, then move them
|
|
# into place if the compile succeeds. We need this because gcc does
|
|
# not atomically write the dependency output file.
|
|
COMPILE = $(COMPILE.base) -o $@ -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Tpo
|
|
POSTCOMPILE = @mv $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
|
else
|
|
COMPILE = source='$<' object='$@' libtool=no DEPDIR=$(DEPDIR) $(DEPMODE) \
|
|
$(depcomp) $(COMPILE.base)
|
|
# depcomp handles atomicity for us, so we don't need a postcompile
|
|
# step.
|
|
POSTCOMPILE =
|
|
endif
|
|
|
|
# Implicit rules and I18N
|
|
|
|
.c.o:
|
|
$(COMPILE) $<
|
|
$(POSTCOMPILE)
|
|
|
|
# N.B. We do not attempt to copy these into $(srcdir).
|
|
.po.gmo:
|
|
$(mkinstalldirs) po
|
|
$(GMSGFMT) --statistics -o $@ $<
|
|
|
|
# The new .po has to be gone over by hand, so we deposit it into
|
|
# build/po with a different extension.
|
|
# If build/po/$(PACKAGE).pot exists, use it (it was just created),
|
|
# else use the one in srcdir.
|
|
.po.pox:
|
|
$(mkinstalldirs) po
|
|
$(MSGMERGE) $< `if test -f po/$(PACKAGE).pot; \
|
|
then echo po/$(PACKAGE).pot; \
|
|
else echo $(srcdir)/po/$(PACKAGE).pot; fi` -o $@
|
|
|
|
# Rule for regenerating the message template.
|
|
$(PACKAGE).pot: po/$(PACKAGE).pot
|
|
po/$(PACKAGE).pot: $(libcpp_a_SOURCES)
|
|
$(mkinstalldirs) $(srcdir)/po
|
|
$(XGETTEXT) --default-domain=$(PACKAGE) \
|
|
--keyword=_ --keyword=N_ \
|
|
--keyword=cpp_error:3 \
|
|
--keyword=cpp_warning:3 \
|
|
--keyword=cpp_pedwarning:3 \
|
|
--keyword=cpp_warning_syshdr:3 \
|
|
--keyword=cpp_error_with_line:5 \
|
|
--keyword=cpp_warning_with_line:5 \
|
|
--keyword=cpp_pedwarning_with_line:5 \
|
|
--keyword=cpp_warning_with_line_syshdr:5 \
|
|
--keyword=cpp_errno:3 \
|
|
--keyword=SYNTAX_ERROR --keyword=SYNTAX_ERROR2 \
|
|
--copyright-holder="Free Software Foundation, Inc." \
|
|
--msgid-bugs-address="http://gcc.gnu.org/bugs.html" \
|
|
--language=c -o po/$(PACKAGE).pot.tmp $^
|
|
sed 's:$(srcdir)/::g' <po/$(PACKAGE).pot.tmp >po/$(PACKAGE).pot
|
|
rm po/$(PACKAGE).pot.tmp
|
|
|
|
TAGS_SOURCES = $(libcpp_a_SOURCES) internal.h ucnid.h \
|
|
include/line-map.h include/symtab.h include/cpp-id-data.h \
|
|
include/cpplib.h include/mkdeps.h system.h
|
|
|
|
TAGS: $(TAGS_SOURCES)
|
|
cd $(srcdir) && etags $(TAGS_SOURCES)
|
|
|
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
.NOEXPORT:
|
|
|
|
# Dependencies
|
|
-include $(patsubst %.o, $(DEPDIR)/%.Po, $(libcpp_a_OBJS))
|
|
|
|
# Dependencies on generated headers have to be explicit.
|
|
init.o: localedir.h
|