# 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 -Wno-long-long -g \
              @FLAG_FNO_STACK_PROTECTOR@
AM_CXXFLAGS = -Winline -Wall -Wshadow -Wno-long-long -g \
              @FLAG_FNO_STACK_PROTECTOR@
# 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_SOLARIS
# Make sure that all test programs have threaded errno.
# Disable largefile support as there are test cases explicitly enabling it.
AM_CFLAGS  += -D_REENTRANT @SOLARIS_UNDEF_LARGESOURCE@
endif

if VGCONF_OS_IS_DARWIN
noinst_DSYMS = $(check_PROGRAMS)
endif

if COMPILER_IS_CLANG
AM_CFLAGS   += -Wno-format-extra-args       # perf/tinycc.c
AM_CFLAGS   += -Wno-literal-range           # none/tests/amd64/fxtract.c
AM_CFLAGS   += -Wno-tautological-constant-out-of-range-compare # ...../aes.c
AM_CFLAGS   += -Wno-self-assign             # memcheck/tests/unit_libcbase.c
AM_CFLAGS   += -Wno-string-plus-int         # drd/tests/annotate_ignore_rw.c
AM_CFLAGS   += -Wno-uninitialized           # clang 3.4.2 and earlier
AM_CFLAGS   += -Wno-unused-value            # clang 3.0.0
AM_CXXFLAGS += -Wno-unused-private-field    # drd/tests/tsan_unittest.cpp
endif

check-local: build-noinst_DSYMS

clean-local: clean-noinst_DSYMS
