## @file
#  Standard C library: Miscelaneous implementations.
#
#  Copyright (c) 2010 - 2014, 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.
#
#  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                      = LibC
  FILE_GUID                      = 695bec93-82ae-4c17-bdad-7f184f4e651d
  MODULE_TYPE                    = UEFI_APPLICATION
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = LibC

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF
#

[Sources]
  Main/errno.c
  Main/assert.c
  Main/isinfd_ieee754.c
  Main/isinff_ieee754.c
  Main/isnand_ieee754.c
  Main/isnanf_ieee754.c
  Main/infinityf_ieee754.c
  Main/Main.c
  Main/HtoNtoH.c
  Main/ByteSwap.c
  Main/longjmp.c

[Sources.IA32]
  Main/x86flt_rounds.c
  Main/Ia32/fpu_rmode.asm | MSFT
  Main/Ia32/fpu_rmode.asm | INTEL
  Main/Ia32/fpu_rmode.S   | GCC
  Main/Ia32/isinfl.c
  Main/Ia32/isnanl.c

  # Compiler helper (C RunTime) functions
  CRT/Ia32/llmul.c          | MSFT    # __allmul
  CRT/Ia32/llshl.c          | MSFT    # __allshl
  CRT/Ia32/llshr.c          | MSFT    # __allshr
  CRT/Ia32/ulldiv.c         | MSFT    # __aulldiv
  CRT/Ia32/ullrem.c         | MSFT    # __aullrem
  CRT/Ia32/ullshr.c         | MSFT    # __aullshr
  CRT/Ia32/lldiv.c          | MSFT    # __alldiv
  CRT/Ia32/llrem.c          | MSFT    # __allrem
  CRT/Ia32/lldvrm.c         | MSFT    # __alldvrm
  CRT/Ia32/ulldvrm.c        | MSFT    # __aulldvrm

  CRT/Ia32/llmul.c          | INTEL
  CRT/Ia32/llshl.c          | INTEL
  CRT/Ia32/llshr.c          | INTEL
  CRT/Ia32/ulldiv.c         | INTEL
  CRT/Ia32/ullrem.c         | INTEL
  CRT/Ia32/ullshr.c         | INTEL
  CRT/Ia32/lldiv.c          | INTEL
  CRT/Ia32/llrem.c          | INTEL
  CRT/Ia32/lldvrm.c         | INTEL
  CRT/Ia32/ulldvrm.c        | INTEL

  CRT/Gcc.c                 | GCC

[Sources.X64]
  Main/x86flt_rounds.c
  Main/X64/fpu_rmode.asm  | MSFT
  Main/X64/fpu_rmode.asm  | INTEL
  Main/X64/fpu_rmode.S    | GCC
  Main/X64/isinfl.c
  Main/X64/isnanl.c

[Sources.IPF]
  Main/x86flt_rounds.c
  Main/Ipf/FpuRmode.s

[Sources.ARM]
  Main/Arm/flt_rounds.c

[Binaries.IA32]
  LIB|Main/Ia32/ftol2.obj|*|MSFT

[Packages]
  StdLib/StdLib.dec
  StdLibPrivateInternalFiles/DoNotUse.dec
  MdePkg/MdePkg.dec
  ShellPkg/ShellPkg.dec

[LibraryClasses]
  ShellCEntryLib
  UefiLib
  BaseLib
  BaseMemoryLib
  MemoryAllocationLib
  LibStdLib
  LibStdio
  LibString
  DevConsole

################################################################
#
# 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]
  MSFT:*_*_IA32_CC_FLAGS = /GL-
