## @file
# Thirty party Jansson library for JSON operations.
#
# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
# (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
#
#    SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x0001001b
  BASE_NAME                      = JsonLib
  FILE_GUID                      = F5E36815-305A-4C5A-9D75-4F2149E45255
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = JsonLib|DXE_DRIVER UEFI_APPLICATION UEFI_DRIVER
  CONSTRUCTOR                    = JsonLibConstructor

#
#  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64 RISCV64
#

[Sources]
  #
  # Below are the source code of third
  # party jansson library.
  #
  jansson/src/dump.c
  jansson/src/error.c
  jansson/src/hashtable.c
  jansson/src/hashtable_seed.c
  jansson/src/memory.c
  jansson/src/pack_unpack.c
  jansson/src/strbuffer.c
  jansson/src/strconv.c
  jansson/src/utf.c
  jansson/src/value.c
  jansson/src/version.c
  #
  # Below are the source of edk2 JsonLib.
  #
  JsonLib.c
  jansson_config.h
  jansson_private_config.h
  #
  # Below is the source code override to fix the build issue.
  # Add code in load.c to conditionally use stdin according
  # to HAVE_UNISTD_H macro. The PR is submitted to jansson
  # open source community.
  # https://github.com/akheron/jansson/pull/558
  #
  load.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  RedfishPkg/RedfishPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  Ucs2Utf8Lib
  RedfishCrtLib
  DebugLib
  MemoryAllocationLib
  PrintLib
  UefiRuntimeServicesTableLib
  UefiLib

[BuildOptions]
  #
  # Disables the following Visual Studio compiler warnings
  # so we do not break the build with /WX option:
  #   C4090: 'function' : different 'const' qualifiers
  #   C4244: conversion from type1 to type2, possible loss of data
  #   C4334: 32-bit shift implicitly converted to 64-bit
  #   C4204: nonstandard extension used: non-constant aggregate initializer
  #   C4706: assignment within conditional expression
  #
  # Define macro HAVE_CONFIG_H to include jansson_private_config.h to build.
  # Undefined _WIN32, WIN64, _MSC_VER macros
  # On GCC, no error on the unused-function and unused-but-set-variable.
  #
  MSFT:*_*_X64_CC_FLAGS = /wd4204 /wd4244 /wd4090 /wd4334 /wd4706 /DHAVE_CONFIG_H=1 /U_WIN32 /UWIN64 /U_MSC_VER
  MSFT:*_*_IA32_CC_FLAGS = /wd4204 /wd4244 /wd4090 /wd4706 /DHAVE_CONFIG_H=1 /U_WIN32 /UWIN64 /U_MSC_VER
  GCC:*_*_*_CC_FLAGS = -Wno-unused-function -Wno-unused-but-set-variable

