# GCC Objective-C testsuite that uses the `dg.exp' driver. # Copyright (C) 1997-2014 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 # . # 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 # TODO: All these testcases compile and link two Objective-C modules. # Remove code duplication and factor the common code out. # # unclaimed-category-1 test # # This test is special because we must compile two different modules, # unclaimed-category-1a.m and unclaimed-category-1.m, then link # together, then run the resulting executable. # for all systems we point to the libobjc includes and use the -fgnu-runtime set add_flags "additional_flags=-I${srcdir}/../../libobjc" lappend add_flags "additional_flags=-fgnu-runtime" set lines [objc_target_compile "$srcdir/$subdir/unclaimed-category-1a.m" "unclaimed-category-1a.o" object $add_flags ] if ![string match "" $lines] then { fail "unclaimed-category-1a.o" } else { dg-runtest "$srcdir/$subdir/unclaimed-category-1.m" "unclaimed-category-1a.o" "-I${srcdir}/../../libobjc -fgnu-runtime" file delete unclaimed-category-1a.o } if [istarget "*-*-darwin*" ] { set add_flags "" lappend add_flags "additional_flags=-fnext-runtime" set lines [objc_target_compile "$srcdir/$subdir/unclaimed-category-1a.m" "unclaimed-category-1a.o" object $add_flags ] if ![string match "" $lines] then { fail "unclaimed-category-1a.o" } else { dg-runtest "$srcdir/$subdir/unclaimed-category-1.m" "unclaimed-category-1a.o" "-fnext-runtime" file delete unclaimed-category-1a.o } } # # load-category-1 test # # This test is similar to the one above. We compile load-category-1.m # and load-category-1a.m, link them together, and execute the result. set add_flags "additional_flags=-I${srcdir}/../../libobjc" lappend add_flags "additional_flags=-fgnu-runtime" set lines [objc_target_compile "$srcdir/$subdir/load-category-1a.m" "load-category-1a.o" object $add_flags ] if ![string match "" $lines] then { fail "load-category-1a.o" } else { dg-runtest "$srcdir/$subdir/load-category-1.m" "load-category-1a.o" "-I${srcdir}/../../libobjc -fgnu-runtime" file delete load-category-1a.o } if [istarget "*-*-darwin*" ] { set add_flags "" lappend add_flags "additional_flags=-fnext-runtime" set lines [objc_target_compile "$srcdir/$subdir/load-category-1a.m" "load-category-1a.o" object $add_flags ] if ![string match "" $lines] then { fail "load-category-1a.o" } else { dg-runtest "$srcdir/$subdir/load-category-1.m" "load-category-1a.o" "-fnext-runtime" file delete load-category-1a.o } } # # load-category-2 test # # This test is similar to the one above. We compile load-category-2.m # and load-category-2a.m, link them together, and execute the result. set add_flags "additional_flags=-I${srcdir}/../../libobjc" lappend add_flags "additional_flags=-fgnu-runtime" set lines [objc_target_compile "$srcdir/$subdir/load-category-2a.m" "load-category-2a.o" object $add_flags ] if ![string match "" $lines] then { fail "load-category-2a.o" } else { dg-runtest "$srcdir/$subdir/load-category-2.m" "load-category-2a.o" "-I${srcdir}/../../libobjc -fgnu-runtime" file delete load-category-2a.o } if [istarget "*-*-darwin*" ] { set add_flags "" lappend add_flags "additional_flags=-fnext-runtime" set lines [objc_target_compile "$srcdir/$subdir/load-category-2a.m" "load-category-2a.o" object $add_flags ] if ![string match "" $lines] then { fail "load-category-2a.o" } else { dg-runtest "$srcdir/$subdir/load-category-2.m" "load-category-2a.o" "-fnext-runtime" file delete load-category-2a.o } } # # load-category-3 test # # This test is similar to the one above. We compile load-category-3.m # and load-category-3a.m, link them together, and execute the result. set add_flags "additional_flags=-I${srcdir}/../../libobjc" lappend add_flags "additional_flags=-fgnu-runtime" set lines [objc_target_compile "$srcdir/$subdir/load-category-3a.m" "load-category-3a.o" object $add_flags ] if ![string match "" $lines] then { fail "load-category-3a.o" } else { dg-runtest "$srcdir/$subdir/load-category-3.m" "load-category-3a.o" "-I${srcdir}/../../libobjc -fgnu-runtime" file delete load-category-3a.o } if [istarget "*-*-darwin*" ] { set add_flags "" lappend add_flags "additional_flags=-fnext-runtime" set lines [objc_target_compile "$srcdir/$subdir/load-category-3a.m" "load-category-3a.o" object $add_flags ] if ![string match "" $lines] then { fail "load-category-3a.o" } else { dg-runtest "$srcdir/$subdir/load-category-3.m" "load-category-3a.o" "-fnext-runtime" file delete load-category-3a.o } } # All done. dg-finish