## @file
# This package provides binary device drivers to support the FAT32 file system. This package is separated from other packages because it uses a different license. 
#
# This package provides FAT drivers which are not licensed under BSD.
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
#
#    This program and the accompanying materials are licensed and made available 
#    under the terms and conditions of the BSD License which accompanies this distribution.
#    The full text of the license may be found at http://opensource.org/licenses/bsd-license.php
#    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES
#    OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
##


################################################################################
#
# Defines Section - statements that will be processed to create a Makefile.
#
################################################################################

[Defines]
  DEC_SPECIFICATION              = 0x00010005
  PACKAGE_NAME                   = FatBinPkg
  PACKAGE_GUID                   = EEAC1173-A27D-4c1a-958F-0A7F21C0FFA0
  PACKAGE_VERSION                = 0.1

