Skip to content

Commit 0baf462

Browse files
committed
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.
1 parent 68ef232 commit 0baf462

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

cmake/cc.cmake

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,19 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "LS
3636

3737
if (LOONGARCH64)
3838
if (BINARY64)
39-
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp64")
39+
CHECK_CXX_COMPILER_FLAG("-mabi=lp64d" COMPILER_SUPPORT_LP64D_ABI)
40+
if(COMPILER_SUPPORT_LP64D_ABI)
41+
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp64d")
42+
else()
43+
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp64")
44+
endif ()
4045
else ()
41-
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp32")
46+
CHECK_CXX_COMPILER_FLAG("-mabi=ilp32d" COMPILER_SUPPORT_ILP32D_ABI)
47+
if(COMPILER_SUPPORT_ILP32D_ABI)
48+
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=ilp32d")
49+
else()
50+
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp32")
51+
endif ()
4252
endif ()
4353
set(BINARY_DEFINED 1)
4454
endif ()

cmake/fc.cmake

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,19 @@ if (${F_COMPILER} STREQUAL "GFORTRAN" OR ${F_COMPILER} STREQUAL "F95" OR CMAKE_F
6161
endif ()
6262
if (LOONGARCH64)
6363
if (BINARY64)
64-
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64")
64+
CHECK_CXX_COMPILER_FLAG("-mabi=lp64d" COMPILER_SUPPORT_LP64D_ABI)
65+
if(COMPILER_SUPPORT_LP64D_ABI)
66+
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64d")
67+
else()
68+
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64")
69+
endif ()
6570
else ()
66-
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp32")
71+
CHECK_CXX_COMPILER_FLAG("-mabi=ilp32d" COMPILER_SUPPORT_ILP32D_ABI)
72+
if(COMPILER_SUPPORT_ILP32D_ABI)
73+
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=ilp32d")
74+
else()
75+
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp32")
76+
endif ()
6777
endif ()
6878
endif ()
6979
if (RISCV64)

0 commit comments

Comments
 (0)