## @file
#  Standard C library: Implementation for <stdio.h>.
#
#  Copyright (c) 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]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = LibStdio
  FILE_GUID                      = 7d2bd134-500d-4f42-aee2-26accfb6cb1d
  MODULE_TYPE                    = UEFI_APPLICATION
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = LibStdio

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF
#

[Sources]
  clrerr.c            #
  fclose.c            #
  fdopen.c            #
  feof.c              #
  ferror.c            #
  fflush.c            #
  fgetc.c             #
  fgetln.c            #
  fgetpos.c           #
  fgets.c             #
  fopen.c             #
  fprintf.c           #
  fputc.c             #
  fputs.c             #
  fread.c             #
  freopen.c           #
  fscanf.c            #
  fseek.c             #
  fsetpos.c           #
  ftell.c             #
  fwrite.c            #
  getc.c              #
  getchar.c           #
  gets.c              #
  perror.c            #
  printf.c            #
  putc.c              #
  putchar.c           #
  puts.c              #
  remove.c            #
  rewind.c            #
  scanf.c             #
  setbuf.c            #
  setvbuf.c           #
  sprintf.c           #
  sscanf.c            #
  tempnam.c           #
  tmpfile.c           #
  tmpnam.c            #
  ungetc.c            #
  vfprintf.c          #
  vfwprintf.c         #
  vprintf.c           #
  vsprintf.c          #

  snprintf.c
  vsnprintf.c
  fparseln.c

  # Wide character functions
  fgetwc.c            #
  fgetws.c            #
  fputwc.c            #
  fputws.c            #
  fwide.c             #
  fwprintf.c          #
  fwscanf.c           #
  getwc.c             #
  getwchar.c          #
  putwc.c             #
  putwchar.c          #
  swprintf.c          #
  swscanf.c           #
  ungetwc.c           #
  vfwscanf.c          #
  vswprintf.c         #
  vswscanf.c          #
  vwprintf.c          #
  vwscanf.c           #
  wprintf.c           #
  wscanf.c            #


  # Files internal to the implementation
  fgetstr.c           #
  findfp.c            #
  flags.c             #
  fseeko.c            #
  ftello.c            #
  fvwrite.c           #
  fwalk.c             #
  gettemp.c           #
  makebuf.c           #
  mkstemp.c           #
  mktemp.c            #
  refill.c            #
  rget.c              #
  snprintf.c          #
  stdio.c             #
  vfscanf.c           #
  wbuf.c              #
  wsetup.c            #


[Packages]
  StdLib/StdLib.dec
  StdLibPrivateInternalFiles/DoNotUse.dec
  MdePkg/MdePkg.dec
  ShellPkg/ShellPkg.dec

[LibraryClasses]
  LibC
  LibCType
  LibGdtoa
  LibLocale
  LibStdLib
  LibString
  LibTime
  LibUefi
  LibWchar

################################################################
#
# The Build Options, below, are only used when building the C library.
# DO NOT use them when building your application!
# Nasty things could happen if you do.
#
[BuildOptions]
  GCC:*_*_*_CC_FLAGS    = -fno-builtin -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast -Wno-format
