#===-- Build Script For test ----------------------------------*- Python -*-===#
#
#                      High Level Virtual Machine (HLVM)
#
# Copyright (C) 2006 Reid Spencer. All Rights Reserved.
#
# This software is free software; you can redistribute it and/or modify it 
# under the terms of the GNU Lesser General Public License as published by 
# the Free Software Foundation; either version 2.1 of the License, or (at 
# your option) any later version.
#
# This software 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 Lesser General Public License for 
# more details.
#
# You should have received a copy of the GNU Lesser General Public License 
# along with this library in the file named LICENSE.txt; if not, write to the 
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
# MA 02110-1301 USA
#
#===----------------------------------------------------------------------===#
from build import hlvm
Import('env')
if 'check' in COMMAND_LINE_TARGETS:
  from build import check
  if env['suites'] == 'normal':
    check.Check(env,['xml2xml','invalid','return0'])
  elif env['suites'] == 'all':
      check.Check(env,['xml2xml','invalid','return0','generate'])
  else:
    suites = env['suites'].split(' ')
    print "Suites To Run=",suites
    check.Check(env,suites)
