## Process this file with automake to produce Makefile.in.

AUTOMAKE_OPTIONS = subdir-objects
ACLOCAL_AMFLAGS = -I m4

## This seems to have become necessary for building in non-source directory.

AM_CPPFLAGS="-I$(srcdir)/src"

## Specify the documentation files that are distributed.

dist_doc_DATA = \
  AUTHORS \
  COPYING \
  ChangeLog \
  LICENCE \
  NEWS \
  README \
  doc/pcre2.txt \
  doc/pcre2-config.txt \
  doc/pcre2grep.txt \
  doc/pcre2test.txt

dist_html_DATA = \
  doc/html/NON-AUTOTOOLS-BUILD.txt \
  doc/html/README.txt \
  doc/html/index.html \
  doc/html/pcre2-config.html \
  doc/html/pcre2.html \
  doc/html/pcre2_callout_enumerate.html \
  doc/html/pcre2_code_copy.html \
  doc/html/pcre2_code_copy_with_tables.html \
  doc/html/pcre2_code_free.html \
  doc/html/pcre2_compile.html \
  doc/html/pcre2_compile_context_copy.html \
  doc/html/pcre2_compile_context_create.html \
  doc/html/pcre2_compile_context_free.html \
  doc/html/pcre2_config.html \
  doc/html/pcre2_convert_context_copy.html \
  doc/html/pcre2_convert_context_create.html \
  doc/html/pcre2_convert_context_free.html \
  doc/html/pcre2_converted_pattern_free.html \
  doc/html/pcre2_dfa_match.html \
  doc/html/pcre2_general_context_copy.html \
  doc/html/pcre2_general_context_create.html \
  doc/html/pcre2_general_context_free.html \
  doc/html/pcre2_get_error_message.html \
  doc/html/pcre2_get_mark.html \
  doc/html/pcre2_get_match_data_size.html \
  doc/html/pcre2_get_ovector_count.html \
  doc/html/pcre2_get_ovector_pointer.html \
  doc/html/pcre2_get_startchar.html \
  doc/html/pcre2_jit_compile.html \
  doc/html/pcre2_jit_free_unused_memory.html \
  doc/html/pcre2_jit_match.html \
  doc/html/pcre2_jit_stack_assign.html \
  doc/html/pcre2_jit_stack_create.html \
  doc/html/pcre2_jit_stack_free.html \
  doc/html/pcre2_maketables.html \
  doc/html/pcre2_maketables_free.html \
  doc/html/pcre2_match.html \
  doc/html/pcre2_match_context_copy.html \
  doc/html/pcre2_match_context_create.html \
  doc/html/pcre2_match_context_free.html \
  doc/html/pcre2_match_data_create.html \
  doc/html/pcre2_match_data_create_from_pattern.html \
  doc/html/pcre2_match_data_free.html \
  doc/html/pcre2_pattern_convert.html \
  doc/html/pcre2_pattern_info.html \
  doc/html/pcre2_serialize_decode.html \
  doc/html/pcre2_serialize_encode.html \
  doc/html/pcre2_serialize_free.html \
  doc/html/pcre2_serialize_get_number_of_codes.html \
  doc/html/pcre2_set_bsr.html \
  doc/html/pcre2_set_callout.html \
  doc/html/pcre2_set_character_tables.html \
  doc/html/pcre2_set_compile_extra_options.html \
  doc/html/pcre2_set_compile_recursion_guard.html \
  doc/html/pcre2_set_depth_limit.html \
  doc/html/pcre2_set_glob_escape.html \
  doc/html/pcre2_set_glob_separator.html \
  doc/html/pcre2_set_heap_limit.html \
  doc/html/pcre2_set_match_limit.html \
  doc/html/pcre2_set_max_pattern_length.html \
  doc/html/pcre2_set_offset_limit.html \
  doc/html/pcre2_set_newline.html \
  doc/html/pcre2_set_parens_nest_limit.html \
  doc/html/pcre2_set_recursion_limit.html \
  doc/html/pcre2_set_recursion_memory_management.html \
  doc/html/pcre2_set_substitute_callout.html \
  doc/html/pcre2_substitute.html \
  doc/html/pcre2_substring_copy_byname.html \
  doc/html/pcre2_substring_copy_bynumber.html \
  doc/html/pcre2_substring_free.html \
  doc/html/pcre2_substring_get_byname.html \
  doc/html/pcre2_substring_get_bynumber.html \
  doc/html/pcre2_substring_length_byname.html \
  doc/html/pcre2_substring_length_bynumber.html \
  doc/html/pcre2_substring_list_free.html \
  doc/html/pcre2_substring_list_get.html \
  doc/html/pcre2_substring_nametable_scan.html \
  doc/html/pcre2_substring_number_from_name.html \
  doc/html/pcre2api.html \
  doc/html/pcre2build.html \
  doc/html/pcre2callout.html \
  doc/html/pcre2compat.html \
  doc/html/pcre2convert.html \
  doc/html/pcre2demo.html \
  doc/html/pcre2grep.html \
  doc/html/pcre2jit.html \
  doc/html/pcre2limits.html \
  doc/html/pcre2matching.html \
  doc/html/pcre2partial.html \
  doc/html/pcre2pattern.html \
  doc/html/pcre2perform.html \
  doc/html/pcre2posix.html \
  doc/html/pcre2sample.html \
  doc/html/pcre2serialize.html \
  doc/html/pcre2syntax.html \
  doc/html/pcre2test.html \
  doc/html/pcre2unicode.html

dist_man_MANS = \
  doc/pcre2-config.1 \
  doc/pcre2.3 \
  doc/pcre2_callout_enumerate.3 \
  doc/pcre2_code_copy.3 \
  doc/pcre2_code_copy_with_tables.3 \
  doc/pcre2_code_free.3 \
  doc/pcre2_compile.3 \
  doc/pcre2_compile_context_copy.3 \
  doc/pcre2_compile_context_create.3 \
  doc/pcre2_compile_context_free.3 \
  doc/pcre2_config.3 \
  doc/pcre2_convert_context_copy.3 \
  doc/pcre2_convert_context_create.3 \
  doc/pcre2_convert_context_free.3 \
  doc/pcre2_converted_pattern_free.3 \
  doc/pcre2_dfa_match.3 \
  doc/pcre2_general_context_copy.3 \
  doc/pcre2_general_context_create.3 \
  doc/pcre2_general_context_free.3 \
  doc/pcre2_get_error_message.3 \
  doc/pcre2_get_mark.3 \
  doc/pcre2_get_match_data_size.3 \
  doc/pcre2_get_ovector_count.3 \
  doc/pcre2_get_ovector_pointer.3 \
  doc/pcre2_get_startchar.3 \
  doc/pcre2_jit_compile.3 \
  doc/pcre2_jit_free_unused_memory.3 \
  doc/pcre2_jit_match.3 \
  doc/pcre2_jit_stack_assign.3 \
  doc/pcre2_jit_stack_create.3 \
  doc/pcre2_jit_stack_free.3 \
  doc/pcre2_maketables.3 \
  doc/pcre2_maketables_free.3 \
  doc/pcre2_match.3 \
  doc/pcre2_match_context_copy.3 \
  doc/pcre2_match_context_create.3 \
  doc/pcre2_match_context_free.3 \
  doc/pcre2_match_data_create.3 \
  doc/pcre2_match_data_create_from_pattern.3 \
  doc/pcre2_match_data_free.3 \
  doc/pcre2_pattern_convert.3 \
  doc/pcre2_pattern_info.3 \
  doc/pcre2_serialize_decode.3 \
  doc/pcre2_serialize_encode.3 \
  doc/pcre2_serialize_free.3 \
  doc/pcre2_serialize_get_number_of_codes.3 \
  doc/pcre2_set_bsr.3 \
  doc/pcre2_set_callout.3 \
  doc/pcre2_set_character_tables.3 \
  doc/pcre2_set_compile_extra_options.3 \
  doc/pcre2_set_compile_recursion_guard.3 \
  doc/pcre2_set_depth_limit.3 \
  doc/pcre2_set_glob_escape.3 \
  doc/pcre2_set_glob_separator.3 \
  doc/pcre2_set_heap_limit.3 \
  doc/pcre2_set_match_limit.3 \
  doc/pcre2_set_max_pattern_length.3 \
  doc/pcre2_set_offset_limit.3 \
  doc/pcre2_set_newline.3 \
  doc/pcre2_set_parens_nest_limit.3 \
  doc/pcre2_set_recursion_limit.3 \
  doc/pcre2_set_recursion_memory_management.3 \
  doc/pcre2_set_substitute_callout.3 \
  doc/pcre2_substitute.3 \
  doc/pcre2_substring_copy_byname.3 \
  doc/pcre2_substring_copy_bynumber.3 \
  doc/pcre2_substring_free.3 \
  doc/pcre2_substring_get_byname.3 \
  doc/pcre2_substring_get_bynumber.3 \
  doc/pcre2_substring_length_byname.3 \
  doc/pcre2_substring_length_bynumber.3 \
  doc/pcre2_substring_list_free.3 \
  doc/pcre2_substring_list_get.3 \
  doc/pcre2_substring_nametable_scan.3 \
  doc/pcre2_substring_number_from_name.3 \
  doc/pcre2api.3 \
  doc/pcre2build.3 \
  doc/pcre2callout.3 \
  doc/pcre2compat.3 \
  doc/pcre2convert.3 \
  doc/pcre2demo.3 \
  doc/pcre2grep.1 \
  doc/pcre2jit.3 \
  doc/pcre2limits.3 \
  doc/pcre2matching.3 \
  doc/pcre2partial.3 \
  doc/pcre2pattern.3 \
  doc/pcre2perform.3 \
  doc/pcre2posix.3 \
  doc/pcre2sample.3 \
  doc/pcre2serialize.3 \
  doc/pcre2syntax.3 \
  doc/pcre2test.1 \
  doc/pcre2unicode.3

# The Libtool libraries to install.  We'll add to this later.

lib_LTLIBRARIES =

# Unit tests you want to run when people type 'make check'.
# TESTS is for binary unit tests, check_SCRIPTS for script-based tests

TESTS =
check_SCRIPTS =
dist_noinst_SCRIPTS =

# Some of the binaries we make are to be installed, and others are
# (non-user-visible) helper programs needed to build the libraries.

bin_PROGRAMS =
noinst_PROGRAMS =

# Additional files to delete on 'make clean', 'make distclean',
# and 'make maintainer-clean'.

CLEANFILES =
DISTCLEANFILES = src/config.h.in~
MAINTAINERCLEANFILES =

# Additional files to bundle with the distribution, over and above what
# the Autotools include by default.

EXTRA_DIST =

# These files contain additional m4 macros that are used by autoconf.

EXTRA_DIST += \
  m4/ax_pthread.m4 m4/pcre2_visibility.m4

# These files contain maintenance information

EXTRA_DIST += \
  NON-AUTOTOOLS-BUILD \
  HACKING

# These files are used in the preparation of a release

EXTRA_DIST += \
  PrepareRelease \
  CheckMan \
  CleanTxt \
  Detrail \
  132html \
  doc/index.html.src

# These files are usable versions of pcre2.h and config.h that are distributed
# for the benefit of people who are building PCRE2 manually, without the
# Autotools support.

EXTRA_DIST += \
  src/pcre2.h.generic \
  src/config.h.generic

# The only difference between pcre2.h.in and pcre2.h is the setting of the PCRE
# version number. Therefore, we can create the generic version just by copying.

src/pcre2.h.generic: src/pcre2.h.in configure.ac
	rm -f $@
	cp -p src/pcre2.h $@

# It is more complicated for config.h.generic. We need the version that results
# from a default configuration so as to get all the default values for PCRE
# configuration macros such as MATCH_LIMIT and NEWLINE. We can get this by
# doing a configure in a temporary directory. However, some trickery is needed,
# because the source directory may already be configured. If you just try
# running configure in a new directory, it complains. For this reason, we move
# config.status out of the way while doing the default configuration. The
# resulting config.h is munged by perl to put #ifdefs round any #defines for
# macros with values, and to #undef all boolean macros such as HAVE_xxx and
# SUPPORT_xxx. We also get rid of any gcc-specific visibility settings. Make
# sure that PCRE2_EXP_DEFN is unset (in case it has visibility settings).

src/config.h.generic: configure.ac
	rm -rf $@ _generic
	mkdir _generic
	cs=$(srcdir)/config.status; test ! -f $$cs || mv -f $$cs $$cs.aside
	cd _generic && $(abs_top_srcdir)/configure || :
	cs=$(srcdir)/config.status; test ! -f $$cs.aside || mv -f $$cs.aside $$cs
	test -f _generic/src/config.h
	perl -n \
	  -e 'BEGIN{$$blank=0;}' \
	  -e 'if(/PCRE2_EXP_DEFN/){print"/* #undef PCRE2_EXP_DEFN */\n";$$blank=0;next;}' \
	  -e 'if(/to make a symbol visible/){next;}' \
	  -e 'if(/__attribute__ \(\(visibility/){next;}' \
	  -e 'if(/LT_OBJDIR/){print"/* This is ignored unless you are using libtool. */\n";}' \
	  -e 'if(/^#define\s((?:HAVE|SUPPORT|STDC)_\w+)/){print"/* #undef $$1 */\n";$$blank=0;next;}' \
	  -e 'if(/^#define\s(?!PACKAGE|VERSION)(\w+)/){print"#ifndef $$1\n$$_#endif\n";$$blank=0;next;}' \
	  -e 'if(/^\s*$$/){print unless $$blank; $$blank=1;} else{print;$$blank=0;}' \
	  _generic/src/config.h >$@
	rm -rf _generic

MAINTAINERCLEANFILES += src/pcre2.h.generic src/config.h.generic

# These are the header files we'll install. We do not distribute pcre2.h
# because it is generated from pcre2.h.in.

nodist_include_HEADERS = src/pcre2.h
include_HEADERS = src/pcre2posix.h

# This is the "config" script.

bin_SCRIPTS = pcre2-config

## ---------------------------------------------------------------
## The pcre2_dftables program is used to rebuild character tables before
## compiling PCRE2, if --enable-rebuild-chartables is specified. It is not an
## installed program. The default (when --enable-rebuild-chartables is not
## specified) is to copy a distributed set of tables that are defined for ASCII
## code. In this case, pcre2_dftables is not needed.

if WITH_REBUILD_CHARTABLES
noinst_PROGRAMS += pcre2_dftables
pcre2_dftables_SOURCES = src/pcre2_dftables.c
src/pcre2_chartables.c: pcre2_dftables$(EXEEXT)
	rm -f $@
	./pcre2_dftables$(EXEEXT) $@
else
src/pcre2_chartables.c: $(srcdir)/src/pcre2_chartables.c.dist
	rm -f $@
	$(LN_S) $(abs_srcdir)/src/pcre2_chartables.c.dist $(abs_builddir)/src/pcre2_chartables.c
endif # WITH_REBUILD_CHARTABLES

BUILT_SOURCES = src/pcre2_chartables.c
NODIST_SOURCES = src/pcre2_chartables.c

## Define the list of common sources, then arrange to build whichever of the
## 8-, 16-, or 32-bit libraries are configured.

COMMON_SOURCES = \
  src/pcre2_auto_possess.c \
  src/pcre2_compile.c \
  src/pcre2_config.c \
  src/pcre2_context.c \
  src/pcre2_convert.c \
  src/pcre2_dfa_match.c \
  src/pcre2_error.c \
  src/pcre2_extuni.c \
  src/pcre2_find_bracket.c \
  src/pcre2_internal.h \
  src/pcre2_intmodedep.h \
  src/pcre2_jit_compile.c \
  src/pcre2_jit_neon_inc.h \
  src/pcre2_jit_simd_inc.h \
  src/pcre2_maketables.c \
  src/pcre2_match.c \
  src/pcre2_match_data.c \
  src/pcre2_newline.c \
  src/pcre2_ord2utf.c \
  src/pcre2_pattern_info.c \
  src/pcre2_script_run.c \
  src/pcre2_serialize.c \
  src/pcre2_string_utils.c \
  src/pcre2_study.c \
  src/pcre2_substitute.c \
  src/pcre2_substring.c \
  src/pcre2_tables.c \
  src/pcre2_ucd.c \
  src/pcre2_ucp.h \
  src/pcre2_valid_utf.c \
  src/pcre2_xclass.c

# The pcre2_ucptables.c file is #included by pcre2_tables.c

EXTRA_DIST += src/pcre2_ucptables.c

if WITH_PCRE2_8
lib_LTLIBRARIES += libpcre2-8.la
libpcre2_8_la_SOURCES = \
  $(COMMON_SOURCES)
nodist_libpcre2_8_la_SOURCES = \
  $(NODIST_SOURCES)
libpcre2_8_la_CFLAGS = \
  -DPCRE2_CODE_UNIT_WIDTH=8 \
  $(VISIBILITY_CFLAGS) \
  $(CET_CFLAGS) \
  $(AM_CFLAGS)
libpcre2_8_la_LIBADD =
endif # WITH_PCRE2_8

if WITH_PCRE2_16
lib_LTLIBRARIES += libpcre2-16.la
libpcre2_16_la_SOURCES = \
  $(COMMON_SOURCES)
nodist_libpcre2_16_la_SOURCES = \
  $(NODIST_SOURCES)
libpcre2_16_la_CFLAGS = \
  -DPCRE2_CODE_UNIT_WIDTH=16 \
  $(VISIBILITY_CFLAGS) \
  $(CET_CFLAGS) \
  $(AM_CFLAGS)
libpcre2_16_la_LIBADD =
endif # WITH_PCRE2_16

if WITH_PCRE2_32
lib_LTLIBRARIES += libpcre2-32.la
libpcre2_32_la_SOURCES = \
  $(COMMON_SOURCES)
nodist_libpcre2_32_la_SOURCES = \
  $(NODIST_SOURCES)
libpcre2_32_la_CFLAGS = \
  -DPCRE2_CODE_UNIT_WIDTH=32 \
  $(VISIBILITY_CFLAGS) \
  $(CET_CFLAGS) \
  $(AM_CFLAGS)
libpcre2_32_la_LIBADD =
endif # WITH_PCRE2_32

# The pcre2_chartables.c.dist file is the default version of
# pcre2_chartables.c, used unless --enable-rebuild-chartables is specified.

EXTRA_DIST += src/pcre2_chartables.c.dist
CLEANFILES += src/pcre2_chartables.c

# The JIT compiler lives in a separate directory, but its files are #included
# when pcre2_jit_compile.c is processed, so they must be distributed.

EXTRA_DIST += \
  src/sljit/sljitConfig.h \
  src/sljit/sljitConfigInternal.h \
  src/sljit/sljitExecAllocator.c \
  src/sljit/sljitLir.c \
  src/sljit/sljitLir.h \
  src/sljit/sljitNativeARM_32.c \
  src/sljit/sljitNativeARM_64.c \
  src/sljit/sljitNativeARM_T2_32.c \
  src/sljit/sljitNativeMIPS_32.c \
  src/sljit/sljitNativeMIPS_64.c \
  src/sljit/sljitNativeMIPS_common.c \
  src/sljit/sljitNativePPC_32.c \
  src/sljit/sljitNativePPC_64.c \
  src/sljit/sljitNativePPC_common.c \
  src/sljit/sljitNativeS390X.c \
  src/sljit/sljitNativeSPARC_32.c \
  src/sljit/sljitNativeSPARC_common.c \
  src/sljit/sljitNativeX86_32.c \
  src/sljit/sljitNativeX86_64.c \
  src/sljit/sljitNativeX86_common.c \
  src/sljit/sljitProtExecAllocator.c \
  src/sljit/sljitUtils.c \
  src/sljit/sljitWXExecAllocator.c

# Some of the JIT sources are also in separate files that are #included.

EXTRA_DIST += \
  src/pcre2_jit_match.c \
  src/pcre2_jit_misc.c

if WITH_PCRE2_8
libpcre2_8_la_LDFLAGS = $(EXTRA_LIBPCRE2_8_LDFLAGS)
endif # WITH_PCRE2_8
if WITH_PCRE2_16
libpcre2_16_la_LDFLAGS = $(EXTRA_LIBPCRE2_16_LDFLAGS)
endif # WITH_PCRE2_16
if WITH_PCRE2_32
libpcre2_32_la_LDFLAGS = $(EXTRA_LIBPCRE2_32_LDFLAGS)
endif # WITH_PCRE2_32

if WITH_VALGRIND
if WITH_PCRE2_8
libpcre2_8_la_CFLAGS += $(VALGRIND_CFLAGS)
endif # WITH_PCRE2_8
if WITH_PCRE2_16
libpcre2_16_la_CFLAGS += $(VALGRIND_CFLAGS)
endif # WITH_PCRE2_16
if WITH_PCRE2_32
libpcre2_32_la_CFLAGS += $(VALGRIND_CFLAGS)
endif # WITH_PCRE2_32
endif # WITH_VALGRIND

if WITH_GCOV
if WITH_PCRE2_8
libpcre2_8_la_CFLAGS += $(GCOV_CFLAGS)
endif # WITH_PCRE2_8
if WITH_PCRE2_16
libpcre2_16_la_CFLAGS += $(GCOV_CFLAGS)
endif # WITH_PCRE2_16
if WITH_PCRE2_32
libpcre2_32_la_CFLAGS += $(GCOV_CFLAGS)
endif # WITH_PCRE2_32
endif # WITH_GCOV

## A version of the 8-bit library that has a POSIX API.

if WITH_PCRE2_8
lib_LTLIBRARIES += libpcre2-posix.la
libpcre2_posix_la_SOURCES = src/pcre2posix.c
libpcre2_posix_la_CFLAGS = \
  -DPCRE2_CODE_UNIT_WIDTH=8 \
  $(VISIBILITY_CFLAGS) $(AM_CFLAGS)
libpcre2_posix_la_LDFLAGS = $(EXTRA_LIBPCRE2_POSIX_LDFLAGS)
libpcre2_posix_la_LIBADD = libpcre2-8.la
if WITH_GCOV
libpcre2_posix_la_CFLAGS += $(GCOV_CFLAGS)
endif # WITH_GCOV
endif # WITH_PCRE2_8

## Build pcre2grep and optional fuzzer stuff if the 8-bit library is enabled

if WITH_PCRE2_8
bin_PROGRAMS += pcre2grep
pcre2grep_SOURCES = src/pcre2grep.c
pcre2grep_CFLAGS = $(AM_CFLAGS)
pcre2grep_LDADD = $(LIBZ) $(LIBBZ2)
pcre2grep_LDADD += libpcre2-8.la
if WITH_GCOV
pcre2grep_CFLAGS += $(GCOV_CFLAGS)
pcre2grep_LDADD += $(GCOV_LIBS)
endif # WITH_GCOV

## If fuzzer support is enabled, build a non-distributed library containing the
## fuzzing function. Also build the standalone checking binary from the same
## source but using -DSTANDALONE.

if WITH_FUZZ_SUPPORT
noinst_LIBRARIES = .libs/libpcre2-fuzzsupport.a
_libs_libpcre2_fuzzsupport_a_SOURCES = src/pcre2_fuzzsupport.c
_libs_libpcre2_fuzzsupport_a_CFLAGS = $(AM_CFLAGS)
_libs_libpcre2_fuzzsupport_a_LIBADD =

noinst_PROGRAMS += pcre2fuzzcheck
pcre2fuzzcheck_SOURCES = src/pcre2_fuzzsupport.c
pcre2fuzzcheck_CFLAGS = -DSTANDALONE $(AM_CFLAGS)
pcre2fuzzcheck_LDADD = libpcre2-8.la
if WITH_GCOV
pcre2fuzzcheck_CFLAGS += $(GCOV_CFLAGS)
pcre2fuzzcheck_LDADD += $(GCOV_LIBS)
endif # WITH_GCOV
endif # WITH FUZZ_SUPPORT
endif # WITH_PCRE2_8

## -------- Testing ----------

## If JIT support is enabled, arrange for the JIT test program to run.

if WITH_JIT
TESTS += pcre2_jit_test
noinst_PROGRAMS += pcre2_jit_test
pcre2_jit_test_SOURCES = src/pcre2_jit_test.c
pcre2_jit_test_CFLAGS = $(AM_CFLAGS)
pcre2_jit_test_LDADD =
if WITH_PCRE2_8
pcre2_jit_test_LDADD += libpcre2-8.la
endif # WITH_PCRE2_8
if WITH_PCRE2_16
pcre2_jit_test_LDADD += libpcre2-16.la
endif # WITH_PCRE2_16
if WITH_PCRE2_32
pcre2_jit_test_LDADD += libpcre2-32.la
endif # WITH_PCRE2_32
if WITH_GCOV
pcre2_jit_test_CFLAGS += $(GCOV_CFLAGS)
pcre2_jit_test_LDADD += $(GCOV_LIBS)
endif # WITH_GCOV
endif # WITH_JIT

# Build the general pcre2test program. The file src/pcre2_printint.c is
# #included by pcre2test as many times as needed, at different code unit
# widths.

bin_PROGRAMS += pcre2test
EXTRA_DIST += src/pcre2_printint.c
pcre2test_SOURCES = src/pcre2test.c
pcre2test_CFLAGS = $(AM_CFLAGS)
pcre2test_LDADD = $(LIBREADLINE)

if WITH_PCRE2_8
pcre2test_LDADD += libpcre2-8.la libpcre2-posix.la
endif # WITH_PCRE2_8

if WITH_PCRE2_16
pcre2test_LDADD += libpcre2-16.la
endif # WITH_PCRE2_16

if WITH_PCRE2_32
pcre2test_LDADD += libpcre2-32.la
endif # WITH_PCRE2_32

if WITH_VALGRIND
pcre2test_CFLAGS += $(VALGRIND_CFLAGS)
endif # WITH_VALGRIND

if WITH_GCOV
pcre2test_CFLAGS += $(GCOV_CFLAGS)
pcre2test_LDADD += $(GCOV_LIBS)
endif # WITH_GCOV

## The main library tests. Each test is a binary plus a script that runs that
## binary in various ways. We install these test binaries in case folks find it
## helpful. The two .bat files are for running the tests under Windows.

TESTS += RunTest
EXTRA_DIST += RunTest.bat
dist_noinst_SCRIPTS += RunTest

## When the 8-bit library is configured, pcre2grep will have been built.

if WITH_PCRE2_8
TESTS += RunGrepTest
EXTRA_DIST += RunGrepTest.bat
dist_noinst_SCRIPTS += RunGrepTest
endif # WITH_PCRE2_8

## Distribute all the test data files

EXTRA_DIST += \
  testdata/grepbinary \
  testdata/grepfilelist \
  testdata/grepinput \
  testdata/grepinput3 \
  testdata/grepinput8 \
  testdata/grepinputM \
  testdata/grepinputv \
  testdata/grepinputx \
  testdata/greplist \
  testdata/grepoutput \
  testdata/grepoutput8 \
  testdata/grepoutputC \
  testdata/grepoutputCN \
  testdata/grepoutputN \
  testdata/greppatN4 \
  testdata/testbtables \
  testdata/testinput1 \
  testdata/testinput2 \
  testdata/testinput3 \
  testdata/testinput4 \
  testdata/testinput5 \
  testdata/testinput6 \
  testdata/testinput7 \
  testdata/testinput8 \
  testdata/testinput9 \
  testdata/testinput10 \
  testdata/testinput11 \
  testdata/testinput12 \
  testdata/testinput13 \
  testdata/testinput14 \
  testdata/testinput15 \
  testdata/testinput16 \
  testdata/testinput17 \
  testdata/testinput18 \
  testdata/testinput19 \
  testdata/testinput20 \
  testdata/testinput21 \
  testdata/testinput22 \
  testdata/testinput23 \
  testdata/testinput24 \
  testdata/testinput25 \
  testdata/testinput26 \
  testdata/testinputEBC \
  testdata/testoutput1 \
  testdata/testoutput2 \
  testdata/testoutput3 \
  testdata/testoutput3A \
  testdata/testoutput3B \
  testdata/testoutput4 \
  testdata/testoutput5 \
  testdata/testoutput6 \
  testdata/testoutput7 \
  testdata/testoutput8-16-2 \
  testdata/testoutput8-16-3 \
  testdata/testoutput8-16-4 \
  testdata/testoutput8-32-2 \
  testdata/testoutput8-32-3 \
  testdata/testoutput8-32-4 \
  testdata/testoutput8-8-2 \
  testdata/testoutput8-8-3 \
  testdata/testoutput8-8-4 \
  testdata/testoutput9 \
  testdata/testoutput10 \
  testdata/testoutput11-16 \
  testdata/testoutput11-32 \
  testdata/testoutput12-16 \
  testdata/testoutput12-32 \
  testdata/testoutput13 \
  testdata/testoutput14-16 \
  testdata/testoutput14-32 \
  testdata/testoutput14-8 \
  testdata/testoutput15 \
  testdata/testoutput16 \
  testdata/testoutput17 \
  testdata/testoutput18 \
  testdata/testoutput19 \
  testdata/testoutput20 \
  testdata/testoutput21 \
  testdata/testoutput22-16 \
  testdata/testoutput22-32 \
  testdata/testoutput22-8 \
  testdata/testoutput23 \
  testdata/testoutput24 \
  testdata/testoutput25 \
  testdata/testoutput26 \
  testdata/testoutputEBC \
  testdata/valgrind-jit.supp \
  testdata/wintestinput3 \
  testdata/wintestoutput3 \
  perltest.sh

# RunTest and RunGrepTest should clean up after themselves, but just in case
# they don't, add their working files to CLEANFILES.

CLEANFILES += \
        testSinput \
        test3input \
        test3output \
        test3outputA \
        test3outputB \
        testtry \
        teststdout \
	teststderr \
        teststderrgrep \
        testtemp1grep \
        testtemp2grep \
        testtrygrep \
        testNinputgrep

## ------------ End of testing -------------


# PCRE2 demonstration program. Not built automatcally. The point is that the
# users should build it themselves. So just distribute the source.

EXTRA_DIST += src/pcre2demo.c


# We have .pc files for pkg-config users.

pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA =

if WITH_PCRE2_8
pkgconfig_DATA += libpcre2-8.pc libpcre2-posix.pc
endif

if WITH_PCRE2_16
pkgconfig_DATA += libpcre2-16.pc
endif

if WITH_PCRE2_32
pkgconfig_DATA += libpcre2-32.pc
endif


# gcov/lcov code coverage reporting
#
# Coverage reporting targets:
#
# coverage: Create a coverage report from 'make check'
# coverage-baseline: Capture baseline coverage information
# coverage-reset: This zeros the coverage counters only
# coverage-report: This creates the coverage report only
# coverage-clean-report: This removes the generated coverage report
#   without cleaning the coverage data itself
# coverage-clean-data: This removes the captured coverage data without
#   removing the coverage files created at compile time (*.gcno)
# coverage-clean: This cleans all coverage data including the generated
#   coverage report.

if WITH_GCOV
COVERAGE_TEST_NAME = $(PACKAGE)
COVERAGE_NAME = $(PACKAGE)-$(VERSION)
COVERAGE_OUTPUT_FILE = $(COVERAGE_NAME)-coverage.info
COVERAGE_OUTPUT_DIR = $(COVERAGE_NAME)-coverage
COVERAGE_LCOV_EXTRA_FLAGS =
COVERAGE_GENHTML_EXTRA_FLAGS =

coverage_quiet = $(coverage_quiet_$(V))
coverage_quiet_ = $(coverage_quiet_$(AM_DEFAULT_VERBOSITY))
coverage_quiet_0 = --quiet

coverage-check: all
	-$(MAKE) $(AM_MAKEFLAGS) -k check

coverage-baseline:
	$(LCOV) $(coverage_quiet) \
		--directory $(top_builddir) \
		--output-file "$(COVERAGE_OUTPUT_FILE)" \
		--capture \
		--initial

coverage-report:
	$(LCOV) $(coverage_quiet) \
		--directory $(top_builddir) \
		--capture \
		--output-file "$(COVERAGE_OUTPUT_FILE).tmp" \
		--test-name "$(COVERAGE_TEST_NAME)" \
		--no-checksum \
		--compat-libtool \
		$(COVERAGE_LCOV_EXTRA_FLAGS)
	$(LCOV) $(coverage_quiet) \
		--directory $(top_builddir) \
		--output-file "$(COVERAGE_OUTPUT_FILE)" \
		--remove "$(COVERAGE_OUTPUT_FILE).tmp" \
		"/tmp/*" \
		"/usr/include/*" \
		"$(includedir)/*"
	-@rm -f "$(COVERAGE_OUTPUT_FILE).tmp"
	LANG=C $(GENHTML) $(coverage_quiet) \
		--prefix $(top_builddir) \
		--output-directory "$(COVERAGE_OUTPUT_DIR)" \
		--title "$(PACKAGE) $(VERSION) Code Coverage Report" \
		--show-details "$(COVERAGE_OUTPUT_FILE)" \
		--legend \
		$(COVERAGE_GENHTML_EXTRA_FLAGS)
	@echo "Code coverage report written to file://$(abs_builddir)/$(COVERAGE_OUTPUT_DIR)/index.html"

coverage-reset:
	-$(LCOV) $(coverage_quiet) --zerocounters --directory $(top_builddir)

coverage-clean-report:
	-rm -f "$(COVERAGE_OUTPUT_FILE)" "$(COVERAGE_OUTPUT_FILE).tmp"
	-rm -rf "$(COVERAGE_OUTPUT_DIR)"

coverage-clean-data:
	-find $(top_builddir) -name "*.gcda" -delete

coverage-clean: coverage-reset coverage-clean-report coverage-clean-data
	-find $(top_builddir) -name "*.gcno" -delete

coverage-distclean: coverage-clean

coverage: coverage-reset coverage-baseline coverage-check coverage-report
clean-local: coverage-clean
distclean-local: coverage-distclean

.PHONY: coverage coverage-baseline coverage-check coverage-report coverage-reset coverage-clean-report coverage-clean-data coverage-clean coverage-distclean

# Without coverage support, still arrange for 'make distclean' to get rid of
# any coverage files that may have been left from a different configuration.

else

coverage:
	@echo "Configuring with --enable-coverage is required to generate code coverage report."

DISTCLEANFILES += src/*.gcda src/*.gcno

distclean-local:
	rm -rf $(PACKAGE)-$(VERSION)-coverage*

endif # WITH_GCOV

## CMake support

EXTRA_DIST += \
  cmake/COPYING-CMAKE-SCRIPTS \
  cmake/FindEditline.cmake \
  cmake/FindPackageHandleStandardArgs.cmake \
  cmake/FindReadline.cmake \
  cmake/pcre2-config-version.cmake.in \
  cmake/pcre2-config.cmake.in \
  CMakeLists.txt \
  config-cmake.h.in

## end Makefile.am
