122359e265395fd2f8267190ef97f5417770e6206Roland McGrath## Common automake fragments for elfutils subdirectory makefiles.
222359e265395fd2f8267190ef97f5417770e6206Roland McGrath##
3f48eb6b15fee66e54b488d71738979fc608f25eeMark Wielaard## Copyright (C) 2010, 2014 Red Hat, Inc.
422359e265395fd2f8267190ef97f5417770e6206Roland McGrath##
5de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard## This file is part of elfutils.
622359e265395fd2f8267190ef97f5417770e6206Roland McGrath##
7de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard## This file is free software; you can redistribute it and/or modify
8de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard## it under the terms of either
9de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard##
10de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard##   * the GNU Lesser General Public License as published by the Free
11de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard##     Software Foundation; either version 3 of the License, or (at
12de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard##     your option) any later version
13de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard##
14de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard## or
15de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard##
16de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard##   * the GNU General Public License as published by the Free
17de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard##     Software Foundation; either version 2 of the License, or (at
18de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard##     your option) any later version
19de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard##
20de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard## or both in parallel, as here.
21de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard##
22de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard## elfutils is distributed in the hope that it will be useful, but
2322359e265395fd2f8267190ef97f5417770e6206Roland McGrath## WITHOUT ANY WARRANTY; without even the implied warranty of
2422359e265395fd2f8267190ef97f5417770e6206Roland McGrath## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2522359e265395fd2f8267190ef97f5417770e6206Roland McGrath## General Public License for more details.
2622359e265395fd2f8267190ef97f5417770e6206Roland McGrath##
27de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard## You should have received copies of the GNU General Public License and
28de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard## the GNU Lesser General Public License along with this program.  If
29de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard## not, see <http://www.gnu.org/licenses/>.
3022359e265395fd2f8267190ef97f5417770e6206Roland McGrath##
3122359e265395fd2f8267190ef97f5417770e6206Roland McGrath
32b386ccfe5439f6ed886f87d47259886e6fdc54a1Roland McGrathDEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
33cdaaf2153a1f40d1be080c8ff6e10767b51a1c96Mark WielaardAM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I..
34712f3c8930a372345b94270ede67233f94a7263bMark Wielaard
357b74830ec65081a8ea1be6d544ccd6ed0c61eaa1Mark Wielaard# Drop the 'u' flag that automake adds by default. It is incompatible
367b74830ec65081a8ea1be6d544ccd6ed0c61eaa1Mark Wielaard# with deterministic archives.
377b74830ec65081a8ea1be6d544ccd6ed0c61eaa1Mark WielaardARFLAGS = cr
387b74830ec65081a8ea1be6d544ccd6ed0c61eaa1Mark Wielaard
39712f3c8930a372345b94270ede67233f94a7263bMark Wielaard# Warn about stack usage of more than 256K = 262144 bytes.
404b7953db48ed736ed913fd17a038c8474ce2198dMark Wielaardif ADD_STACK_USAGE_WARNING
414b7953db48ed736ed913fd17a038c8474ce2198dMark WielaardSTACK_USAGE_WARNING=-Wstack-usage=262144
424b7953db48ed736ed913fd17a038c8474ce2198dMark Wielaardelse
434b7953db48ed736ed913fd17a038c8474ce2198dMark WielaardSTACK_USAGE_WARNING=
444b7953db48ed736ed913fd17a038c8474ce2198dMark Wielaardendif
45f48eb6b15fee66e54b488d71738979fc608f25eeMark WielaardAM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
461ccdfb683ad6c7e59793136c3a657ddf131cafd1Mark Wielaard	    -Wold-style-definition -Wstrict-prototypes \
4722359e265395fd2f8267190ef97f5417770e6206Roland McGrath	    $(if $($(*F)_no_Werror),,-Werror) \
4822359e265395fd2f8267190ef97f5417770e6206Roland McGrath	    $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
494b7953db48ed736ed913fd17a038c8474ce2198dMark Wielaard	    $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
5022359e265395fd2f8267190ef97f5417770e6206Roland McGrath	    $($(*F)_CFLAGS)
5122359e265395fd2f8267190ef97f5417770e6206Roland McGrath
523232479483cad695d1872b879128a23da3953a7dMark WielaardCOMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
5322359e265395fd2f8267190ef97f5417770e6206Roland McGrath
54bafacacaf7659a4933604662daba26a480b29a8dMax FilippovDEFS.os = -DPIC -DSHARED
55bafacacaf7659a4933604662daba26a480b29a8dMax Filippovif SYMBOL_VERSIONING
56bafacacaf7659a4933604662daba26a480b29a8dMax FilippovDEFS.os += -DSYMBOL_VERSIONING
57bafacacaf7659a4933604662daba26a480b29a8dMax Filippovelse
58bafacacaf7659a4933604662daba26a480b29a8dMax Filippovendif
59bafacacaf7659a4933604662daba26a480b29a8dMax Filippov
6022359e265395fd2f8267190ef97f5417770e6206Roland McGrath%.os: %.c %.o
6122359e265395fd2f8267190ef97f5417770e6206Roland McGrathif AMDEP
62daee4714ee3761e2d92f764a724e83875a79a3f0Josh Stone	$(AM_V_CC)if $(COMPILE.os) -c -o $@ -fPIC $(DEFS.os) -MT $@ -MD -MP \
6322359e265395fd2f8267190ef97f5417770e6206Roland McGrath	  -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
6422359e265395fd2f8267190ef97f5417770e6206Roland McGrath	then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
6522359e265395fd2f8267190ef97f5417770e6206Roland McGrath	     rm -f "$(DEPDIR)/$*.Tpo"; \
6622359e265395fd2f8267190ef97f5417770e6206Roland McGrath	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
6722359e265395fd2f8267190ef97f5417770e6206Roland McGrath	fi
6822359e265395fd2f8267190ef97f5417770e6206Roland McGrathelse
69daee4714ee3761e2d92f764a724e83875a79a3f0Josh Stone	$(AM_V_CC)$(COMPILE.os) -c -o $@ -fPIC $(DEFS.os) $<
7022359e265395fd2f8267190ef97f5417770e6206Roland McGrathendif
7122359e265395fd2f8267190ef97f5417770e6206Roland McGrath
7222359e265395fd2f8267190ef97f5417770e6206Roland McGrathCLEANFILES = *.gcno *.gcda
7322359e265395fd2f8267190ef97f5417770e6206Roland McGrath
74805ec833c17b01e1791162227ab0b4119ffe1eb0Mark Wielaardtextrel_msg = echo "WARNING: TEXTREL found in '$@'"
75805ec833c17b01e1791162227ab0b4119ffe1eb0Mark Wielaardif FATAL_TEXTREL
76805ec833c17b01e1791162227ab0b4119ffe1eb0Mark Wielaardtextrel_found = $(textrel_msg); exit 1
77805ec833c17b01e1791162227ab0b4119ffe1eb0Mark Wielaardelse
78805ec833c17b01e1791162227ab0b4119ffe1eb0Mark Wielaardtextrel_found = $(textrel_msg)
79805ec833c17b01e1791162227ab0b4119ffe1eb0Mark Wielaardendif
80805ec833c17b01e1791162227ab0b4119ffe1eb0Mark Wielaardtextrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi
813425454a10d307fae891fb667cf7969e945cde79Josh Stone
823425454a10d307fae891fb667cf7969e945cde79Josh Stoneprint-%:
833425454a10d307fae891fb667cf7969e945cde79Josh Stone	@echo $*=$($*)
84