| ## Common automake fragments for elfutils subdirectory makefiles. |
| ## |
| ## Copyright (C) 2010, 2014, 2016 Red Hat, Inc. |
| ## |
| ## This file is part of elfutils. |
| ## |
| ## This file is free software; you can redistribute it and/or modify |
| ## it under the terms of either |
| ## |
| ## * the GNU Lesser General Public License as published by the Free |
| ## Software Foundation; either version 3 of the License, or (at |
| ## your option) any later version |
| ## |
| ## or |
| ## |
| ## * the GNU General Public License as published by the Free |
| ## Software Foundation; either version 2 of the License, or (at |
| ## your option) any later version |
| ## |
| ## or both in parallel, as here. |
| ## |
| ## elfutils 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 copies of the GNU General Public License and |
| ## the GNU Lesser General Public License along with this program. If |
| ## not, see <http://www.gnu.org/licenses/>. |
| ## |
| |
| DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"' |
| AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. |
| |
| # Drop the 'u' flag that automake adds by default. It is incompatible |
| # with deterministic archives. |
| ARFLAGS = cr |
| |
| # Warn about stack usage of more than 256K = 262144 bytes. |
| if ADD_STACK_USAGE_WARNING |
| STACK_USAGE_WARNING=-Wstack-usage=262144 |
| STACK_USAGE_NO_ERROR=-Wno-error=stack-usage= |
| else |
| STACK_USAGE_WARNING= |
| STACK_USAGE_NO_ERROR= |
| endif |
| |
| if SANE_LOGICAL_OP_WARNING |
| LOGICAL_OP_WARNING=-Wlogical-op |
| else |
| LOGICAL_OP_WARNING= |
| endif |
| |
| if HAVE_DUPLICATED_COND_WARNING |
| DUPLICATED_COND_WARNING=-Wduplicated-cond |
| else |
| DUPLICATED_COND_WARNING= |
| endif |
| |
| if HAVE_NULL_DEREFERENCE_WARNING |
| NULL_DEREFERENCE_WARNING=-Wnull-dereference |
| else |
| NULL_DEREFERENCE_WARNING= |
| endif |
| |
| if HAVE_IMPLICIT_FALLTHROUGH_WARNING |
| # Use strict fallthrough. Only __attribute__((fallthrough)) will prevent the |
| # warning |
| if HAVE_IMPLICIT_FALLTHROUGH_5_WARNING |
| IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough=5 |
| else |
| IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough |
| endif |
| else |
| IMPLICIT_FALLTHROUGH_WARNING= |
| endif |
| |
| if HAVE_TRAMPOLINES_WARNING |
| TRAMPOLINES_WARNING=-Wtrampolines |
| else |
| TRAMPOLINES_WARNING= |
| endif |
| |
| if HAVE_NO_PACKED_NOT_ALIGNED_WARNING |
| NO_PACKED_NOT_ALIGNED_WARNING=-Wno-packed-not-aligned |
| else |
| NO_PACKED_NOT_ALIGNED_WARNING= |
| endif |
| |
| AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \ |
| -Wold-style-definition -Wstrict-prototypes $(TRAMPOLINES_WARNING) \ |
| $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \ |
| $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \ |
| $(if $($(*F)_no_Werror),,-Werror) \ |
| $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ |
| $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \ |
| $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \ |
| $($(*F)_CFLAGS) |
| |
| AM_CXXFLAGS = -std=c++11 -Wall -Wshadow \ |
| $(TRAMPOLINES_WARNING) \ |
| $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \ |
| $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \ |
| $(if $($(*F)_no_Werror),,-Werror) \ |
| $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ |
| $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \ |
| $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \ |
| $($(*F)_CXXFLAGS) |
| |
| COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE)) |
| |
| DEFS.os = -DPIC -DSHARED |
| if SYMBOL_VERSIONING |
| DEFS.os += -DSYMBOL_VERSIONING |
| else |
| endif |
| |
| %.os: %.c %.o |
| if AMDEP |
| $(AM_V_CC)if $(COMPILE.os) -c -o $@ $(fpic_CFLAGS) $(DEFS.os) -MT $@ -MD -MP \ |
| -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ |
| then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ |
| rm -f "$(DEPDIR)/$*.Tpo"; \ |
| else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ |
| fi |
| else |
| $(AM_V_CC)$(COMPILE.os) -c -o $@ $(fpic_CFLAGS) $(DEFS.os) $< |
| endif |
| |
| CLEANFILES = *.gcno *.gcda |
| |
| textrel_msg = echo "WARNING: TEXTREL found in '$@'" |
| if FATAL_TEXTREL |
| textrel_found = $(textrel_msg); exit 1 |
| else |
| textrel_found = $(textrel_msg) |
| endif |
| textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi |
| |
| print-%: |
| @echo $*=$($*) |