Fix: build failed on LoongArch

According to the documentation at https://github.com/loongson/la-abi-specs/blob/release/lapcs.adoc#the-base-abi-variants, valid -mabi parameters are lp64s, lp64f, lp64d, ilp32s, ilp32f and ilp32d.
This commit is contained in:
Wu Xiaotian 2023-12-20 10:34:47 +08:00 committed by Xiaotian Wu
parent 68ef2328eb
commit 0baf462dbc
2 changed files with 24 additions and 4 deletions

View File

@ -36,10 +36,20 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "LS
if (LOONGARCH64) if (LOONGARCH64)
if (BINARY64) if (BINARY64)
CHECK_CXX_COMPILER_FLAG("-mabi=lp64d" COMPILER_SUPPORT_LP64D_ABI)
if(COMPILER_SUPPORT_LP64D_ABI)
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp64d")
else()
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp64") set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp64")
endif ()
else ()
CHECK_CXX_COMPILER_FLAG("-mabi=ilp32d" COMPILER_SUPPORT_ILP32D_ABI)
if(COMPILER_SUPPORT_ILP32D_ABI)
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=ilp32d")
else() else()
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp32") set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp32")
endif () endif ()
endif ()
set(BINARY_DEFINED 1) set(BINARY_DEFINED 1)
endif () endif ()

View File

@ -61,11 +61,21 @@ if (${F_COMPILER} STREQUAL "GFORTRAN" OR ${F_COMPILER} STREQUAL "F95" OR CMAKE_F
endif () endif ()
if (LOONGARCH64) if (LOONGARCH64)
if (BINARY64) if (BINARY64)
CHECK_CXX_COMPILER_FLAG("-mabi=lp64d" COMPILER_SUPPORT_LP64D_ABI)
if(COMPILER_SUPPORT_LP64D_ABI)
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64d")
else()
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64") set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64")
endif ()
else ()
CHECK_CXX_COMPILER_FLAG("-mabi=ilp32d" COMPILER_SUPPORT_ILP32D_ABI)
if(COMPILER_SUPPORT_ILP32D_ABI)
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=ilp32d")
else() else()
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp32") set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp32")
endif () endif ()
endif () endif ()
endif ()
if (RISCV64) if (RISCV64)
if (BINARY64) if (BINARY64)
if (INTERFACE64) if (INTERFACE64)