## Process this file with automake to produce Makefile.in
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
#
# This file is part of LIBTASN1.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAG_VISIBILITY)
AM_CPPFLAGS = -I$(top_builddir)/lib/includes -I$(top_srcdir)/lib/includes -I$(top_srcdir)/lib

AM_LDFLAGS = -no-install
LDADD = ../lib/libtasn1.la

BUILT_SOURCES = CVE-2018-1000654-1_asn1_tab.h CVE-2018-1000654-2_asn1_tab.h
EXTRA_DIST = Test_parser.asn Test_tree.asn Test_tree_asn1_tab.c	mscat.asn \
	Test_encoding.asn pkix.asn TestIndef.p12 choice.asn coding-decoding2.asn \
	TestIndef2.p12 TestIndef3.der TestCertOctetOverflow.der \
	cert-invalid-time.der setof.asn CVE-2018-1000654-1.asn CVE-2018-1000654-2.asn \
	libtasn1.supp ocsp-basic-response.der spc_pe_image_data.der \
	invalid-x509/id-000000.der invalid-x509/id-000001.der \
	invalid-x509/id-000002.der invalid-x509/id-000003.der \
	invalid-x509/id-000004.der invalid-x509/id-000005.der \
	invalid-x509/id-000006.der invalid-x509/id-000007.der \
	invalid-x509/id-000008.der invalid-x509/id-000009.der \
	invalid-x509/id-000010.der invalid-x509/id-000011.der \
	invalid-x509/id-000012.der invalid-x509/id-000013.der \
	invalid-x509/id-000014.der invalid-x509/id-000015.der \
	invalid-x509/id-000016.der invalid-x509/id-000017.der \
	invalid-x509/id-000018.der invalid-x509/id-000019.der \
	invalid-x509/id-000020.der invalid-x509/id-000021.der \
	invalid-x509/id-000022.der invalid-x509/id-000023.der \
	invalid-x509/id-000024.der invalid-x509/id-000025.der \
	invalid-x509/id-000026.der invalid-x509/id-000027.der \
	invalid-x509/id-000028.der invalid-x509/id-000029.der \
	invalid-x509/id-000030.der invalid-x509/id-000031.der \
	invalid-x509/id-000032.der invalid-x509/id-000033.der \
	invalid-x509/id-000034.der invalid-x509/id-000035.der \
	invalid-pkcs7/id-000001.der invalid-pkcs7/id-000002.der \
	invalid-pkcs7/id-000003.der invalid-assignments1.txt \
	invalid-assignments2.txt pkix.asn.out

# For crlf.
EXTRA_DIST += crlf.cer crl.der ocsp.der
dist_check_SCRIPTS = crlf benchmark threadsafety decoding decoding-invalid-x509 \
	decoding-invalid-pkcs7 coding parser.sh

MOSTLYCLEANFILES = Test_parser_ERROR.asn CVE-2018-1000654-1_asn1_tab.h CVE-2018-1000654-2_asn1_tab.h

check_PROGRAMS = Test_parser Test_tree Test_encoding Test_indefinite \
	Test_errors Test_simple Test_overflow Test_strings Test_choice \
	Test_encdec copynode coding-decoding2 strict-der Test_choice_ocsp \
	ocsp-basic-response octet-string coding-long-oid object-id-decoding \
	spc_pe_image_data setof CVE-2018-1000654 reproducers

TESTS = Test_parser Test_tree Test_encoding Test_indefinite	\
	Test_errors Test_simple Test_overflow crlf threadsafety \
	Test_strings Test_choice Test_encdec copynode coding-decoding2 \
	strict-der Test_choice_ocsp decoding decoding-invalid-x509 \
	ocsp-basic-response octet-string coding-long-oid object-id-decoding \
	spc_pe_image_data decoding-invalid-pkcs7 coding setof \
	CVE-2018-1000654 parser.sh reproducers

CVE-2018-1000654-1_asn1_tab.h: $(srcdir)/CVE-2018-1000654-1.asn
	$(top_builddir)/src/asn1Parser$(EXEEXT) $^ -o $@

CVE-2018-1000654-2_asn1_tab.h: $(srcdir)/CVE-2018-1000654-2.asn
	$(top_builddir)/src/asn1Parser$(EXEEXT) $^ -o $@

CVE_2018_1000654_SOURCES = CVE-2018-1000654-1_asn1_tab.h CVE-2018-1000654-2_asn1_tab.h CVE-2018-1000654.c

LOG_COMPILER = $(VALGRIND)

TESTS_ENVIRONMENT = \
	ASN1PARSER=$(srcdir)/Test_parser.asn \
	ASN1TREE=$(srcdir)/Test_tree.asn \
	ASN1CHOICE=$(srcdir)/choice.asn \
	ASN1CODINGDECODING2=$(srcdir)/coding-decoding2.asn \
	ASN1PKIX=$(srcdir)/pkix.asn \
	ASN1SETOF=$(srcdir)/setof.asn \
	ASN1CRLDER=$(srcdir)/crl.der \
	ASN1INDEF=$(srcdir)/TestIndef.p12 \
	ASN1INDEF2=$(srcdir)/TestIndef2.p12 \
	ASN1INDEF3=$(srcdir)/TestIndef3.der \
	ASN1ENCODING=$(srcdir)/Test_encoding.asn \
	ASN1CHOICE_OCSP=$(srcdir)/pkix.asn \
	ASN1CHOICE_OCSP_DATA=$(srcdir)/ocsp.der \
	ASN1_RESPONSE_OCSP_DATA=$(srcdir)/ocsp-basic-response.der \
	ASN1_MSCAT=$(srcdir)/mscat.asn \
	ASN1_SPC_PE_IMAGE_DATA=$(srcdir)/spc_pe_image_data.der \
	ASAN_OPTIONS="detect_leaks=0:exitcode=6" \
	THREADSAFETY_FILES=`find $(top_srcdir)/lib -name \*.c` \
	EXEEXT=$(EXEEXT) \
	LSAN_OPTIONS=suppressions=libtasn1.supp
