With the removal of CLANG35 and CLANG38 and the update of the CLANGDWARF toolchain definition in Conf/tools_def.txt update the compiler flags in BaseCryptLib and OpensslLib.
Signed-off-by: Rebecca Cran <rebe...@bsdio.com> Reviewed-by: Oliver Smith-Denny <o...@smith-denny.com> --- CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf | 3 +- CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf | 3 +- CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf | 3 +- CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf | 3 +- CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf | 3 +- CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf | 3 +- CryptoPkg/Library/OpensslLib/OpensslLib.inf | 3 +- CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf | 3 +- CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | 3 +- CryptoPkg/Library/OpensslLib/OpensslLibFull.inf | 3 +- CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf | 3 +- BaseTools/Conf/tools_def.template | 86 +------------------- 12 files changed, 13 insertions(+), 106 deletions(-) diff --git a/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf index 5be1724f0852..d99337a9ea39 100644 --- a/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf +++ b/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf @@ -110,8 +110,7 @@ [BuildOptions] # # suppress the following warnings so we do not break the build with warnings-as-errors: # - GCC:*_CLANG35_*_CC_FLAGS = -std=c99 - GCC:*_CLANG38_*_CC_FLAGS = -std=c99 + GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types XCODE:*_*_*_CC_FLAGS = -std=c99 diff --git a/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf index 66261138a00b..5203941c75c1 100644 --- a/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf +++ b/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf @@ -97,8 +97,7 @@ [BuildOptions] # # suppress the following warnings so we do not break the build with warnings-as-errors: # - GCC:*_CLANG35_*_CC_FLAGS = -std=c99 - GCC:*_CLANG38_*_CC_FLAGS = -std=c99 + GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types XCODE:*_*_*_CC_FLAGS = -std=c99 diff --git a/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf index 07dbc0e7a8bd..ea64d2aa72a9 100644 --- a/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf +++ b/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf @@ -106,8 +106,7 @@ [BuildOptions] # # suppress the following warnings so we do not break the build with warnings-as-errors: # - GCC:*_CLANG35_*_CC_FLAGS = -std=c99 - GCC:*_CLANG38_*_CC_FLAGS = -std=c99 + GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types XCODE:*_*_*_CC_FLAGS = -std=c99 diff --git a/CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf index 4ad59b7bbc59..426cab2c5c8f 100644 --- a/CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf +++ b/CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf @@ -81,8 +81,7 @@ [BuildOptions] # # suppress the following warnings so we do not break the build with warnings-as-errors: # - GCC:*_CLANG35_*_CC_FLAGS = -std=c99 - GCC:*_CLANG38_*_CC_FLAGS = -std=c99 + GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types XCODE:*_*_*_CC_FLAGS = -std=c99 diff --git a/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf index ab1993087167..df345a8996e0 100644 --- a/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf +++ b/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf @@ -105,6 +105,5 @@ [BuildOptions] XCODE:*_*_*_CC_FLAGS = -mmmx -msse -std=c99 - GCC:*_CLANG35_*_CC_FLAGS = -std=c99 - GCC:*_CLANG38_*_CC_FLAGS = -std=c99 + GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types diff --git a/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf index 80261794470f..1f0f11c22cc5 100644 --- a/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf +++ b/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf @@ -78,8 +78,7 @@ [BuildOptions] # # suppress the following warnings so we do not break the build with warnings-as-errors: # - GCC:*_CLANG35_*_CC_FLAGS = -std=c99 - GCC:*_CLANG38_*_CC_FLAGS = -std=c99 + GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types XCODE:*_*_*_CC_FLAGS = -std=c99 diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf b/CryptoPkg/Library/OpensslLib/OpensslLib.inf index 86a00b1c4b2a..003e17cb8e17 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf @@ -639,8 +639,7 @@ [BuildOptions] GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable -Wno-error=format GCC:*_*_RISCV64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable GCC:*_*_LOONGARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable - GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized - GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized + GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize # Revisit after switching to 3.0 branch GCC:*_GCC5_*_CC_FLAGS = -Wno-unused-but-set-variable diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf b/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf index 2e4f95909b51..dded0b66806b 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf @@ -687,8 +687,7 @@ [BuildOptions] # GCC:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=unused-but-set-variable GCC:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS - GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized - GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized + GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize # Revisit after switching to 3.0 branch GCC:*_GCC5_*_CC_FLAGS = -Wno-unused-but-set-variable diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf index 637d4769e8ca..523d766f6be0 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf @@ -589,8 +589,7 @@ [BuildOptions] GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable -Wno-error=format GCC:*_*_RISCV64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable GCC:*_*_LOONGARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable - GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized - GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized + GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize # Revisit after switching to 3.0 branch GCC:*_GCC5_*_CC_FLAGS = -Wno-unused-but-set-variable diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf b/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf index c5f90221fc66..9baf0cbfb42c 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf @@ -694,8 +694,7 @@ [BuildOptions] GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable -Wno-error=format GCC:*_*_RISCV64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable GCC:*_*_LOONGARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable - GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized - GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized + GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize # Revisit after switching to 3.0 branch GCC:*_GCC5_*_CC_FLAGS = -Wno-unused-but-set-variable diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf b/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf index 076295244a2a..beb8e6986a4a 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf @@ -742,8 +742,7 @@ [BuildOptions] # GCC:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=unused-but-set-variable GCC:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS - GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized - GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized + GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize # Revisit after switching to 3.0 branch GCC:*_GCC5_*_CC_FLAGS = -Wno-unused-but-set-variable diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index 471eb67c0c83..2f0b804acef3 100755 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -2479,90 +2479,8 @@ RELEASE_GCC5_LOONGARCH64_CC_FLAGS = DEF(GCC5_LOONGARCH64_CC_FLAGS) -Wno-un #################################################################################### # -# CLANG35 - This configuration is used to compile under Linux to produce -# PE/COFF binaries using the clang compiler and assembler (v3.5 and up) -# and GNU linker -# -#################################################################################### -*_CLANG35_*_*_FAMILY = GCC - -*_CLANG35_*_MAKE_PATH = make -*_CLANG35_*_*_DLL = ENV(CLANG35_DLL) -*_CLANG35_*_ASL_PATH = DEF(UNIX_IASL_BIN) - -*_CLANG35_*_PP_FLAGS = DEF(GCC_PP_FLAGS) -*_CLANG35_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -*_CLANG35_*_APP_FLAGS = -*_CLANG35_*_ASL_FLAGS = DEF(IASL_FLAGS) -*_CLANG35_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) -*_CLANG35_*_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) - -*_CLANG35_*_CC_PATH = ENV(CLANG35_BIN)clang -*_CLANG35_*_ASM_PATH = ENV(CLANG35_BIN)clang -*_CLANG35_*_PP_PATH = ENV(CLANG35_BIN)clang -*_CLANG35_*_VFRPP_PATH = ENV(CLANG35_BIN)clang -*_CLANG35_*_ASLCC_PATH = ENV(CLANG35_BIN)clang -*_CLANG35_*_ASLPP_PATH = ENV(CLANG35_BIN)clang -*_CLANG35_*_DLINK_PATH = ENV(CLANG35_BIN)clang -*_CLANG35_*_ASLDLINK_PATH = ENV(CLANG35_BIN)clang -*_CLANG35_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS) - -DEFINE CLANG35_ARM_TARGET = -target arm-linux-gnueabi -DEFINE CLANG35_AARCH64_TARGET = -target aarch64-linux-gnu - -DEFINE CLANG35_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -DEFINE CLANG35_ARM_CC_FLAGS = DEF(GCC_ARM_CC_FLAGS) DEF(CLANG35_ARM_TARGET) DEF(CLANG35_WARNING_OVERRIDES) -DEFINE CLANG35_AARCH64_CC_FLAGS = DEF(GCC_AARCH64_CC_FLAGS) DEF(CLANG35_AARCH64_TARGET) -mcmodel=small DEF(CLANG35_WARNING_OVERRIDES) - -################## -# CLANG35 ARM definitions -################## -*_CLANG35_ARM_SLINK_PATH = ENV(CLANG35_ARM_PREFIX)ar -*_CLANG35_ARM_RC_PATH = ENV(CLANG35_ARM_PREFIX)objcopy - -*_CLANG35_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -*_CLANG35_ARM_ASLDLINK_FLAGS = DEF(CLANG35_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS) -*_CLANG35_ARM_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANG35_ARM_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments -*_CLANG35_ARM_DLINK_FLAGS = DEF(CLANG35_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS) -*_CLANG35_ARM_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 -*_CLANG35_ARM_PLATFORM_FLAGS = -march=armv7-a -mkernel -Qunused-arguments -*_CLANG35_ARM_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG35_ARM_TARGET) $(PLATFORM_FLAGS) -*_CLANG35_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) -*_CLANG35_ARM_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG35_ARM_TARGET) $(PLATFORM_FLAGS) -*_CLANG35_ARM_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG35_ARM_TARGET) -*_CLANG35_ARM_CC_XIPFLAGS = DEF(GCC_ARM_CC_XIPFLAGS) - - DEBUG_CLANG35_ARM_CC_FLAGS = DEF(CLANG35_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O1 -RELEASE_CLANG35_ARM_CC_FLAGS = DEF(CLANG35_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -Oz - NOOPT_CLANG35_ARM_CC_FLAGS = DEF(CLANG35_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0 - -################## -# CLANG35 AARCH64 definitions -################## -*_CLANG35_AARCH64_SLINK_PATH = ENV(CLANG35_AARCH64_PREFIX)ar -*_CLANG35_AARCH64_RC_PATH = ENV(CLANG35_AARCH64_PREFIX)objcopy - -*_CLANG35_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -*_CLANG35_AARCH64_ASLDLINK_FLAGS = DEF(CLANG35_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS) -*_CLANG35_AARCH64_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANG35_AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments -*_CLANG35_AARCH64_DLINK_FLAGS = DEF(CLANG35_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 -*_CLANG35_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -*_CLANG35_AARCH64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 -*_CLANG35_AARCH64_PLATFORM_FLAGS = -*_CLANG35_AARCH64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG35_AARCH64_TARGET) $(PLATFORM_FLAGS) -*_CLANG35_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) -*_CLANG35_AARCH64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG35_AARCH64_TARGET) $(PLATFORM_FLAGS) -*_CLANG35_AARCH64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG35_AARCH64_TARGET) -*_CLANG35_AARCH64_CC_XIPFLAGS = DEF(GCC_AARCH64_CC_XIPFLAGS) - - DEBUG_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O1 -RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -Oz - NOOPT_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0 - -#################################################################################### -# -# Clang 3.8 - This configuration is used to compile under Linux to produce -# PE/COFF binaries using LLVM/Clang 3.8 with Link Time Optimization enabled +# Clang - This configuration is used to compile under Linux to produce +# PE/COFF binaries using LLVM/Clang with Link Time Optimization enabled # #################################################################################### *_CLANG38_*_*_FAMILY = GCC -- 2.34.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#102041): https://edk2.groups.io/g/devel/message/102041 Mute This Topic: https://groups.io/mt/97910994/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-