## @file
#  Intrinsic Routines Wrapper Library Instance.
#
#  Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = BaseIntrinsicLib
  MODULE_UNI_FILE                = BaseIntrinsicLib.uni
  FILE_GUID                      = 63850097-3E97-4c4f-A52D-C811A0106105
  MODULE_TYPE                    = BASE
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = IntrinsicLib

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  MemoryIntrinsics.c

[Sources.IA32]
  CopyMem.c

  Ia32/MathLShiftS64.c      | MSFT
  Ia32/MathRShiftU64.c      | MSFT
  Ia32/MathFtol.c           | MSFT
  Ia32/MathLlmul.asm        | MSFT
  Ia32/MathLlshr.asm        | MSFT
  Ia32/MathUlldiv.asm       | MSFT
  Ia32/MathUlldvrm.asm      | MSFT
  Ia32/MathLldiv.asm        | MSFT
  Ia32/MathUllrem.asm       | MSFT

  Ia32/MathLShiftS64.c      | INTEL
  Ia32/MathRShiftU64.c      | INTEL
  Ia32/MathFtol.c           | INTEL

  Ia32/MathLShiftS64.nasm   | GCC
  Ia32/MathRShiftU64.nasm   | GCC
  Ia32/MathDivModU64x64.c   | GCC
  Ia32/MathDivS64x64.c      | GCC
  Ia32/MathDivU64x64.c      | GCC
  Ia32/MathModU64x64.c      | GCC
[Sources.X64]
  CopyMem.c
[Sources.RISCV64]
  CopyMem.c

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib

[BuildOptions]
   #
   # Override MSFT build option to remove /Oi and /GL
   #
   MSFT:DEBUG_VS2003_IA32_CC_FLAGS        == /nologo /c /WX /W4 /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX- /Zi /Gm
   MSFT:RELEASE_VS2003_IA32_CC_FLAGS      == /nologo /c /WX /W4 /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX-
   MSFT:DEBUG_VS2003xASL_IA32_CC_FLAGS    == /nologo /c /WX /W4 /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX- /Zi /Gm
   MSFT:RELEASE_VS2003xASL_IA32_CC_FLAGS  == /nologo /c /WX /W4 /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX-
   MSFT:DEBUG_DDK3790_IA32_CC_FLAGS       == /nologo /c /WX /Gy /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm
   MSFT:RELEASE_DDK3790_IA32_CC_FLAGS     == /nologo /c /WX /Gy /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF
   MSFT:DEBUG_DDK3790xASL_IA32_CC_FLAGS   == /nologo /c /WX /Gy /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm
   MSFT:RELEASE_DDK3790xASL_IA32_CC_FLAGS == /nologo /c /WX /Gy /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF
   MSFT:DEBUG_*_IA32_CC_FLAGS             == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm
   MSFT:RELEASE_*_IA32_CC_FLAGS           == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF
   MSFT:DEBUG_*_X64_CC_FLAGS              == /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1b2s /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm
   MSFT:RELEASE_*_X64_CC_FLAGS            == /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1b2s /Gy /FIAutoGen.h /EHs-c- /GR- /GF
  INTEL:*_*_*_CC_FLAGS                    =  /Oi-
