## Process this file with automake to generate Makefile.in
#
#   Copyright (C) 2020-2021 Free Software Foundation, Inc.
#
# This file 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; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.
#

AUTOMAKE_OPTIONS = no-dist foreign
ACLOCAL_AMFLAGS = -I . -I ../config

AM_CPPFLAGS = -I$(srcdir)/../include -I$(srcdir)/../gdb \
    -I../gnulib/import -I$(srcdir)/../gnulib/import \
    -I.. -I$(srcdir)/.. $(INCINTL) -I../bfd -I$(srcdir)/../bfd \
    @LARGEFILE_CPPFLAGS@

override CXX += $(CXX_DIALECT)

AM_CXXFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)

noinst_LIBRARIES = libgdbsupport.a

if SELFTEST
selftest = selftest.cc
endif

libgdbsupport_a_SOURCES = \
    agent.cc \
    btrace-common.cc \
    buffer.cc \
    cleanups.cc \
    common-debug.cc \
    common-exceptions.cc \
    common-inferior.cc \
    common-regcache.cc \
    common-utils.cc \
    environ.cc \
    errors.cc \
    event-loop.cc \
    fileio.cc \
    filestuff.cc \
    format.cc \
    gdb-dlfcn.cc \
    gdb_tilde_expand.cc \
    gdb_wait.cc \
    gdb_vecs.cc \
    job-control.cc \
    netstuff.cc \
    new-op.cc \
    pathstuff.cc \
    print-utils.cc \
    ptid.cc \
    rsp-low.cc \
    run-time-clock.cc \
    safe-strerror.cc \
    scoped_mmap.cc \
    search.cc \
    signals.cc \
    signals-state-save-restore.cc \
    tdesc.cc \
    thread-pool.cc \
    xml-utils.cc \
    $(selftest)

# Double-check that no defines are missing from our configury.
check-defines:
	cd $(srcdir) && emacs --script check-defines.el
