# This file is used for tool tests, and also in perf/Makefile.am.

include $(top_srcdir)/Makefile.all.am

AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
		-I$(top_srcdir)/VEX/pub \
		-I$(top_builddir)/VEX/pub \
		-DVGA_@VGCONF_ARCH_PRI@=1 \
		-DVGO_@VGCONF_OS@=1 \
		-DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 \
		-DVGPV_@VGCONF_ARCH_PRI@_@VGCONF_OS@_@VGCONF_PLATVARIANT@=1

if VGCONF_HAVE_PLATFORM_SEC
AM_CPPFLAGS +=	-DVGA_SEC_@VGCONF_ARCH_SEC@=1  \
		-DVGP_SEC_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1
endif

# Nb: Tools need to augment these flags with an arch-selection option, such
# as $(AM_FLAG_M3264_PRI).
AM_CFLAGS   = -Winline -Wall -Wshadow -g
AM_CXXFLAGS = -Winline -Wall -Wshadow -g
# Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of
# automake;  see comments in Makefile.all.am for more detail.
AM_CCASFLAGS = $(AM_CPPFLAGS)

if VGCONF_OS_IS_DARWIN
noinst_DSYMS = $(check_PROGRAMS)
endif

if HAS_WRITE_STRINGS_WARNING
CFLAGS += -Wno-write-strings
endif

if HAS_ERROR_FORMAT_SECURITY
CFLAGS += -Wformat -Werror=format-security
endif

if COMPILER_IS_CLANG
CFLAGS   += -Wno-format-extra-args       # perf/tinycc.c
CFLAGS   += -Wno-literal-range           # none/tests/amd64/fxtract.c
CFLAGS   += -Wno-string-plus-int         # drd/tests/annotate_ignore_rw.c
CXXFLAGS += -Wno-unused-private-field    # drd/tests/tsan_unittest.cpp
endif

check-local: build-noinst_DSYMS

clean-local: clean-noinst_DSYMS
