# GCC Objective-C testsuite that uses the `dg.exp' driver.
#   Copyright (C) 1997-2022 Free Software Foundation, Inc.

# 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 GCC; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.

# Load support procs.
load_lib objc-dg.exp

# If a testcase doesn't have special options, use these.
global DEFAULT_CFLAGS
if ![info exists DEFAULT_CFLAGS] then {
    set DEFAULT_CFLAGS ""
}

# Initialize `dg'.
dg-init

# Gather a list of all tests.
set tests [lsort [glob -nocomplain $srcdir/$subdir/*.m]]

# Main loop.
dg-runtest $tests "-fgnu-runtime" $DEFAULT_CFLAGS

# darwin targets can also run code with the NeXT runtime.
if [istarget "*-*-darwin*" ] {
  dg-runtest $tests "-fnext-runtime" $DEFAULT_CFLAGS
}

# All done.
dg-finish
