xref: /aosp_15_r20/external/elfutils/config/eu.am (revision 7304104da70ce23c86437a01be71edd1a2d7f37e)
1## Common automake fragments for elfutils subdirectory makefiles.
2##
3## Copyright (C) 2010, 2014, 2016 Red Hat, Inc.
4## Copyright (C) 2023, Mark J. Wielaard <[email protected]>
5##
6## This file is part of elfutils.
7##
8## This file is free software; you can redistribute it and/or modify
9## it under the terms of either
10##
11##   * the GNU Lesser General Public License as published by the Free
12##     Software Foundation; either version 3 of the License, or (at
13##     your option) any later version
14##
15## or
16##
17##   * the GNU General Public License as published by the Free
18##     Software Foundation; either version 2 of the License, or (at
19##     your option) any later version
20##
21## or both in parallel, as here.
22##
23## elfutils is distributed in the hope that it will be useful, but
24## WITHOUT ANY WARRANTY; without even the implied warranty of
25## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
26## General Public License for more details.
27##
28## You should have received copies of the GNU General Public License and
29## the GNU Lesser General Public License along with this program.  If
30## not, see <http://www.gnu.org/licenses/>.
31##
32
33DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
34AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I..
35
36# Drop the 'u' flag that automake adds by default. It is incompatible
37# with deterministic archives.
38ARFLAGS = cr
39
40# Warn about stack usage of more than 256K = 262144 bytes.
41if ADD_STACK_USAGE_WARNING
42STACK_USAGE_WARNING=-Wstack-usage=262144
43STACK_USAGE_NO_ERROR=-Wno-error=stack-usage=
44else
45STACK_USAGE_WARNING=
46STACK_USAGE_NO_ERROR=
47endif
48
49if SANE_LOGICAL_OP_WARNING
50LOGICAL_OP_WARNING=-Wlogical-op
51else
52LOGICAL_OP_WARNING=
53endif
54
55if HAVE_DUPLICATED_COND_WARNING
56DUPLICATED_COND_WARNING=-Wduplicated-cond
57else
58DUPLICATED_COND_WARNING=
59endif
60
61if HAVE_NULL_DEREFERENCE_WARNING
62NULL_DEREFERENCE_WARNING=-Wnull-dereference
63else
64NULL_DEREFERENCE_WARNING=
65endif
66
67if HAVE_IMPLICIT_FALLTHROUGH_WARNING
68# Use strict fallthrough. Only __attribute__((fallthrough)) will prevent the
69# warning
70if HAVE_IMPLICIT_FALLTHROUGH_5_WARNING
71IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough=5
72else
73IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough
74endif
75else
76IMPLICIT_FALLTHROUGH_WARNING=
77endif
78
79if HAVE_TRAMPOLINES_WARNING
80TRAMPOLINES_WARNING=-Wtrampolines
81else
82TRAMPOLINES_WARNING=
83endif
84
85if HAVE_NO_PACKED_NOT_ALIGNED_WARNING
86NO_PACKED_NOT_ALIGNED_WARNING=-Wno-packed-not-aligned
87else
88NO_PACKED_NOT_ALIGNED_WARNING=
89endif
90
91if HAVE_USE_AFTER_FREE3_WARNING
92USE_AFTER_FREE3_WARNING=-Wuse-after-free=3
93else
94USE_AFTER_FREE3_WARNING=
95endif
96
97AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
98	    -Wold-style-definition -Wstrict-prototypes $(TRAMPOLINES_WARNING) \
99	    $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \
100	    $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \
101	    $(USE_AFTER_FREE3_WARNING) \
102	    $(if $($(*F)_no_Werror),,-Werror) \
103	    $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
104	    $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
105	    $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \
106	    $($(*F)_CFLAGS)
107
108AM_CXXFLAGS = -std=c++11 -Wall -Wshadow \
109	   $(TRAMPOLINES_WARNING) \
110	   $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \
111	   $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \
112	   $(if $($(*F)_no_Werror),,-Werror) \
113	   $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
114	   $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
115	   $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \
116	   $($(*F)_CXXFLAGS)
117
118COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
119
120DEFS.os = -DPIC -DSHARED
121if SYMBOL_VERSIONING
122DEFS.os += -DSYMBOL_VERSIONING
123else
124endif
125
126%.os: %.c %.o
127if AMDEP
128	$(AM_V_CC)if $(COMPILE.os) -c -o $@ $(fpic_CFLAGS) $(DEFS.os) -MT $@ -MD -MP \
129	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
130	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
131	     rm -f "$(DEPDIR)/$*.Tpo"; \
132	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
133	fi
134else
135	$(AM_V_CC)$(COMPILE.os) -c -o $@ $(fpic_CFLAGS) $(DEFS.os) $<
136endif
137
138CLEANFILES = *.gcno *.gcda
139
140textrel_msg = echo "WARNING: TEXTREL found in '$@'"
141if FATAL_TEXTREL
142textrel_found = $(textrel_msg); exit 1
143else
144textrel_found = $(textrel_msg)
145endif
146textrel_check = if $(READELF) -d $@ | grep -F -q TEXTREL; then $(textrel_found); fi
147
148print-%:
149	@echo $*=$($*)
150