diff options
Diffstat (limited to 'config/eu-common.am')
| -rw-r--r-- | config/eu-common.am | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/config/eu-common.am b/config/eu-common.am new file mode 100644 index 00000000..9cc7f696 --- /dev/null +++ b/config/eu-common.am @@ -0,0 +1,148 @@ +## Common automake fragments for elfutils subdirectory makefiles. +## +## Copyright (C) 2010, 2014, 2016 Red Hat, Inc. +## Copyright (C) 2023, Mark J. Wielaard <[email protected]> +## +## 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}"' + +# 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 + +if HAVE_USE_AFTER_FREE3_WARNING +USE_AFTER_FREE3_WARNING=-Wuse-after-free=3 +else +USE_AFTER_FREE3_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) \ + $(USE_AFTER_FREE3_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 $@ | grep -F -q TEXTREL; then $(textrel_found); fi + +print-%: + @echo $*=$($*) |
