#-----------------------------------------------------------------//
# Script: cktarg.pm
#
# (c) 2000 Microsoft Corporation. All rights reserved.
#
# Purpose: This script validate various build targets depending on
#          the given language/target and check the listed architecture
#          in %RazzleToolPath%\intlbod.txt against $ENV{_BuildArch}.
#
# Version: <1.00> 06/20/2000 : Suemiao Rossognol
#-----------------------------------------------------------------//
###-----Set current script Name/Version.-------------//
package cktarg;

$VERSION = '1.00';

###-----Require section and extern modual.------------//

require 5.003;
use strict;
no strict 'vars';
no strict 'subs';

use lib $ENV{ "RazzleToolPath" };
use lib $ENV{ "RazzleToolPath" }. "\\PostBuildScripts";

use HashText;
use cklang;
use GetParams;

###-----Main Function.--------------------------------//
sub CkTarg
{
    my ( $pTarg, $pLang ) = @_;

    $pTarg = uc( $pTarg );
    $pLang = uc( $pLang );

    ###(1)Get Hash from intlbld.txt file.-----------//

    my %hashCodes=();

    &HashText::Read_Text_Hash( 0, "$ENV{RazzleToolPath}\\intlbld.txt", \%hashCodes );

    ###(2)Validate the target.-----------------------//
    if ( !exists( $hashCodes{ $pTarg } ) )
    {
        return(0);
    }

    ###(3)Validate the Class by target---------------//
    ###---Call cklang.pm to verify the class by lang

    if( !&cklang::CkLang( $pLang, $hashCodes{$pTarg}->{ 'Languages'} ) )
    {
        return (0); 	
    }

    ###(4)Validate the Architecture.---------------//
    @theArch = split( /\;/, $hashCodes{$pTarg}->{"Architectures"} );

    for( @theArch )
    {
        if( $ENV{"_BuildArch"} eq $_  ){ return(1); }
    }
    return(0);
}

#-------------------------------------------------------------//
#Function Usage
#-------------------------------------------------------------//
sub Usage
{
print <<USAGE;

    Validate target by checking against the given
    language and the razzle's architecture.
    The valid target/language/architecture combinations
    are listed in tools\\intlbld.txt and tools\\codes.txt.

    Usage: $0 -t target -l lang

    Example: $0 -t STARTUP  -l jpn
             $0 -t TXTSETUP -l ger

USAGE
exit(1);
}
###--Cmd entry point for script.----------------------------//
if (eval("\$0 =~ /" . __PACKAGE__ . "\\.pm\$/i"))
{
    # <run perl.exe GetParams.pm /? to get the complete usage for GetParams.pm>
    &GetParams ('-n', 't:l:','-p', 'target lang', @ARGV);

    $rtno = &cktarg::CkTarg( uc($target),uc($lang) );

    exit( !$rtno );

}
sub GetParams
{
    #Call pm getparams with specified arguments
    &GetParams::getparams(@_);

    #Call the usage if specified by /?
    if ($HELP) {
        &Usage();
    }
}

#-------------------------------------------------------------//
=head1 NAME
B<cktarg> - Check Target

=head1 SYNOPSIS

      perl cktarg.pm -t bootfix -l jpn

=head1 DESCRIPTION

Check target bootfix, language jpn with class defined in intlbld.txt,
and architecture in $ENV{ _BuildAcrh }
=head1 INSTANCES

=head2 <myinstances>

<Description of myinstances>

=head1 METHODS

=head2 <mymathods>

<Description of mymathods>

=head1 SEE ALSO

=head1 AUTHOR
<Suemiao Rossignol <suemiaor@microsoft.com>>

=cut
1;