Skip to content

Commit e9c32ed

Browse files
authored
Merge pull request #4384 from yetist/develop
Fix: build failed on LoongArch
2 parents 474ce0a + d2f4f1b commit e9c32ed

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

.github/workflows/loongarch64.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ jobs:
1616
include:
1717
- target: LOONGSONGENERIC
1818
triple: loongarch64-unknown-linux-gnu
19-
opts: NO_SHARED=1 TARGET=LOONGSONGENERIC
19+
opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSONGENERIC
2020
- target: LOONGSON3R5
2121
triple: loongarch64-unknown-linux-gnu
22-
opts: NO_SHARED=1 TARGET=LOONGSON3R5
22+
opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSON3R5
2323
- target: LOONGSON2K1000
2424
triple: loongarch64-unknown-linux-gnu
25-
opts: NO_SHARED=1 TARGET=LOONGSON2K1000
25+
opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSON2K1000
2626
- target: DYNAMIC_ARCH
2727
triple: loongarch64-unknown-linux-gnu
2828
opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=GENERIC
@@ -40,8 +40,8 @@ jobs:
4040
4141
- name: Download and install loongarch64-toolchain
4242
run: |
43-
wget https://github.com/loongson/build-tools/releases/download/2022.09.06/loongarch64-clfs-7.3-cross-tools-gcc-glibc.tar.xz
44-
tar -xf loongarch64-clfs-7.3-cross-tools-gcc-glibc.tar.xz -C /opt
43+
wget https://github.com/loongson/build-tools/releases/download/2023.08.08/CLFS-loongarch64-8.1-x86_64-cross-tools-gcc-glibc.tar.xz
44+
tar -xf CLFS-loongarch64-8.1-x86_64-cross-tools-gcc-glibc.tar.xz -C /opt
4545
4646
- name: Set env
4747
run: |

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)