@@ -40,7 +40,7 @@ if(TARGET_ARCH_NAME STREQUAL "arm")
4040 set (TOOLCHAIN "arm-linux-gnueabihf" )
4141 endif ()
4242 if (TIZEN)
43- set (TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf/9.2.0 " )
43+ set (TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf" )
4444 endif ()
4545elseif (TARGET_ARCH_NAME STREQUAL "arm64" )
4646 set (CMAKE_SYSTEM_PROCESSOR aarch64)
@@ -49,7 +49,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64")
4949 elseif (LINUX)
5050 set (TOOLCHAIN "aarch64-linux-gnu" )
5151 if (TIZEN)
52- set (TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0 " )
52+ set (TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu" )
5353 endif ()
5454 elseif (FREEBSD)
5555 set (triple "aarch64-unknown-freebsd12" )
@@ -58,7 +58,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "armel")
5858 set (CMAKE_SYSTEM_PROCESSOR armv7l)
5959 set (TOOLCHAIN "arm-linux-gnueabi" )
6060 if (TIZEN)
61- set (TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/9.2.0 " )
61+ set (TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi" )
6262 endif ()
6363elseif (TARGET_ARCH_NAME STREQUAL "armv6" )
6464 set (CMAKE_SYSTEM_PROCESSOR armv6l)
@@ -67,6 +67,13 @@ elseif(TARGET_ARCH_NAME STREQUAL "armv6")
6767 else ()
6868 set (TOOLCHAIN "arm-linux-gnueabihf" )
6969 endif ()
70+ elseif (TARGET_ARCH_NAME STREQUAL "loongarch64" )
71+ set (CMAKE_SYSTEM_PROCESSOR "loongarch64" )
72+ if (EXISTS ${CROSS_ROOTFS} /usr/lib/gcc/loongarch64-alpine-linux-musl)
73+ set (TOOLCHAIN "loongarch64-alpine-linux-musl" )
74+ else ()
75+ set (TOOLCHAIN "loongarch64-linux-gnu" )
76+ endif ()
7077elseif (TARGET_ARCH_NAME STREQUAL "ppc64le" )
7178 set (CMAKE_SYSTEM_PROCESSOR ppc64le)
7279 if (EXISTS ${CROSS_ROOTFS} /usr/lib/gcc/powerpc64le-alpine-linux-musl)
@@ -81,7 +88,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "riscv64")
8188 else ()
8289 set (TOOLCHAIN "riscv64-linux-gnu" )
8390 if (TIZEN)
84- set (TIZEN_TOOLCHAIN "riscv64-tizen-linux-gnu/13.1.0 " )
91+ set (TIZEN_TOOLCHAIN "riscv64-tizen-linux-gnu" )
8592 endif ()
8693 endif ()
8794elseif (TARGET_ARCH_NAME STREQUAL "s390x" )
@@ -98,7 +105,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64")
98105 elseif (LINUX)
99106 set (TOOLCHAIN "x86_64-linux-gnu" )
100107 if (TIZEN)
101- set (TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu/9.2.0 " )
108+ set (TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu" )
102109 endif ()
103110 elseif (FREEBSD)
104111 set (triple "x86_64-unknown-freebsd12" )
@@ -115,10 +122,10 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86")
115122 set (TOOLCHAIN "i686-linux-gnu" )
116123 endif ()
117124 if (TIZEN)
118- set (TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0 " )
125+ set (TIZEN_TOOLCHAIN "i586-tizen-linux-gnu" )
119126 endif ()
120127else ()
121- message (FATAL_ERROR "Arch is ${TARGET_ARCH_NAME} . Only arm, arm64, armel, armv6, ppc64le, riscv64, s390x, x64 and x86 are supported!" )
128+ message (FATAL_ERROR "Arch is ${TARGET_ARCH_NAME} . Only arm, arm64, armel, armv6, loongarch64, ppc64le, riscv64, s390x, x64 and x86 are supported!" )
122129endif ()
123130
124131if (DEFINED ENV{TOOLCHAIN})
@@ -127,32 +134,46 @@ endif()
127134
128135# Specify include paths
129136if (TIZEN)
130- if (TARGET_ARCH_NAME STREQUAL "arm" )
131- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib/gcc/${TIZEN_TOOLCHAIN} /include /c++/)
132- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib/gcc/${TIZEN_TOOLCHAIN} /include /c++/armv7hl-tizen-linux-gnueabihf)
133- endif ()
134- if (TARGET_ARCH_NAME STREQUAL "armel" )
135- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib/gcc/${TIZEN_TOOLCHAIN} /include /c++/)
136- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib/gcc/${TIZEN_TOOLCHAIN} /include /c++/armv7l-tizen-linux-gnueabi)
137- endif ()
138- if (TARGET_ARCH_NAME STREQUAL "arm64" )
139- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib64/gcc/${TIZEN_TOOLCHAIN} /include /c++/)
140- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib64/gcc/${TIZEN_TOOLCHAIN} /include /c++/aarch64-tizen-linux-gnu)
141- endif ()
142- if (TARGET_ARCH_NAME STREQUAL "x86" )
143- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib/gcc/${TIZEN_TOOLCHAIN} /include /c++/)
144- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib/gcc/${TIZEN_TOOLCHAIN} /include /c++/i586-tizen-linux-gnu)
145- endif ()
146- if (TARGET_ARCH_NAME STREQUAL "x64" )
147- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib64/gcc/${TIZEN_TOOLCHAIN} /include /c++/)
148- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib64/gcc/${TIZEN_TOOLCHAIN} /include /c++/x86_64-tizen-linux-gnu)
149- endif ()
150- if (TARGET_ARCH_NAME STREQUAL "riscv64" )
151- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib64/gcc/${TIZEN_TOOLCHAIN} /include /c++/)
152- include_directories (SYSTEM ${CROSS_ROOTFS} /usr/lib64/gcc/${TIZEN_TOOLCHAIN} /include /c++/riscv64-tizen-linux-gnu)
137+ function (find_toolchain_dir prefix )
138+ # Dynamically find the version subdirectory
139+ file (GLOB DIRECTORIES "${prefix} /*" )
140+ list (GET DIRECTORIES 0 FIRST_MATCH)
141+ get_filename_component (TOOLCHAIN_VERSION ${FIRST_MATCH} NAME )
142+
143+ set (TIZEN_TOOLCHAIN_PATH "${prefix} /${TOOLCHAIN_VERSION} " PARENT_SCOPE)
144+ endfunction ()
145+
146+ if (TARGET_ARCH_NAME MATCHES "^(arm|armel|x86)$" )
147+ find_toolchain_dir("${CROSS_ROOTFS} /usr/lib/gcc/${TIZEN_TOOLCHAIN} " )
148+ else ()
149+ find_toolchain_dir("${CROSS_ROOTFS} /usr/lib64/gcc/${TIZEN_TOOLCHAIN} " )
153150 endif ()
151+
152+ message (STATUS "TIZEN_TOOLCHAIN_PATH set to: ${TIZEN_TOOLCHAIN_PATH} " )
153+
154+ include_directories (SYSTEM ${TIZEN_TOOLCHAIN_PATH} /include /c++)
155+ include_directories (SYSTEM ${TIZEN_TOOLCHAIN_PATH} /include /c++/${TIZEN_TOOLCHAIN} )
154156endif ()
155157
158+ function (locate_toolchain_exec exec var)
159+ set (TOOLSET_PREFIX ${TOOLCHAIN} -)
160+ string (TOUPPER ${exec} EXEC_UPPERCASE)
161+ if (NOT "$ENV{CLR_${EXEC_UPPERCASE} }" STREQUAL "" )
162+ set (${var} "$ENV{CLR_${EXEC_UPPERCASE} }" PARENT_SCOPE)
163+ return ()
164+ endif ()
165+
166+ find_program (EXEC_LOCATION_${exec}
167+ NAMES
168+ "${TOOLSET_PREFIX}${exec}${CLR_CMAKE_COMPILER_FILE_NAME_VERSION} "
169+ "${TOOLSET_PREFIX}${exec} " )
170+
171+ if (EXEC_LOCATION_${exec} STREQUAL "EXEC_LOCATION_${exec} -NOTFOUND" )
172+ message (FATAL_ERROR "Unable to find toolchain executable. Name: ${exec} , Prefix: ${TOOLSET_PREFIX} ." )
173+ endif ()
174+ set (${var} ${EXEC_LOCATION_${exec} } PARENT_SCOPE)
175+ endfunction ()
176+
156177if (ANDROID)
157178 if (TARGET_ARCH_NAME STREQUAL "arm" )
158179 set (ANDROID_ABI armeabi-v7a)
@@ -183,66 +204,24 @@ elseif(FREEBSD)
183204 set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=lld" )
184205elseif (ILLUMOS)
185206 set (CMAKE_SYSROOT "${CROSS_ROOTFS} " )
207+ set (CMAKE_SYSTEM_PREFIX_PATH "${CROSS_ROOTFS} " )
208+ set (CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp" )
209+ set (CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp" )
186210
187211 include_directories (SYSTEM ${CROSS_ROOTFS} /include )
188212
189- set (TOOLSET_PREFIX ${TOOLCHAIN} -)
190- function (locate_toolchain_exec exec var)
191- string (TOUPPER ${exec} EXEC_UPPERCASE)
192- if (NOT "$ENV{CLR_${EXEC_UPPERCASE} }" STREQUAL "" )
193- set (${var} "$ENV{CLR_${EXEC_UPPERCASE} }" PARENT_SCOPE)
194- return ()
195- endif ()
196-
197- find_program (EXEC_LOCATION_${exec}
198- NAMES
199- "${TOOLSET_PREFIX}${exec}${CLR_CMAKE_COMPILER_FILE_NAME_VERSION} "
200- "${TOOLSET_PREFIX}${exec} " )
201-
202- if (EXEC_LOCATION_${exec} STREQUAL "EXEC_LOCATION_${exec} -NOTFOUND" )
203- message (FATAL_ERROR "Unable to find toolchain executable. Name: ${exec} , Prefix: ${TOOLSET_PREFIX} ." )
204- endif ()
205- set (${var} ${EXEC_LOCATION_${exec} } PARENT_SCOPE)
206- endfunction ()
207-
208- set (CMAKE_SYSTEM_PREFIX_PATH "${CROSS_ROOTFS} " )
209-
210213 locate_toolchain_exec(gcc CMAKE_C_COMPILER)
211214 locate_toolchain_exec(g++ CMAKE_CXX_COMPILER)
212-
213- set (CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp" )
214- set (CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp" )
215215elseif (HAIKU)
216216 set (CMAKE_SYSROOT "${CROSS_ROOTFS} " )
217217 set (CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH} ;${CROSS_ROOTFS} /cross-tools-x86_64/bin" )
218-
219- set (TOOLSET_PREFIX ${TOOLCHAIN} -)
220- function (locate_toolchain_exec exec var)
221- string (TOUPPER ${exec} EXEC_UPPERCASE)
222- if (NOT "$ENV{CLR_${EXEC_UPPERCASE} }" STREQUAL "" )
223- set (${var} "$ENV{CLR_${EXEC_UPPERCASE} }" PARENT_SCOPE)
224- return ()
225- endif ()
226-
227- find_program (EXEC_LOCATION_${exec}
228- NAMES
229- "${TOOLSET_PREFIX}${exec}${CLR_CMAKE_COMPILER_FILE_NAME_VERSION} "
230- "${TOOLSET_PREFIX}${exec} " )
231-
232- if (EXEC_LOCATION_${exec} STREQUAL "EXEC_LOCATION_${exec} -NOTFOUND" )
233- message (FATAL_ERROR "Unable to find toolchain executable. Name: ${exec} , Prefix: ${TOOLSET_PREFIX} ." )
234- endif ()
235- set (${var} ${EXEC_LOCATION_${exec} } PARENT_SCOPE)
236- endfunction ()
237-
238218 set (CMAKE_SYSTEM_PREFIX_PATH "${CROSS_ROOTFS} " )
219+ set (CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp" )
220+ set (CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp" )
239221
240222 locate_toolchain_exec(gcc CMAKE_C_COMPILER)
241223 locate_toolchain_exec(g++ CMAKE_CXX_COMPILER)
242224
243- set (CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp" )
244- set (CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp" )
245-
246225 # let CMake set up the correct search paths
247226 include (Platform/Haiku)
248227else ()
@@ -272,21 +251,21 @@ endif()
272251
273252if (TARGET_ARCH_NAME MATCHES "^(arm|armel)$" )
274253 if (TIZEN)
275- add_toolchain_linker_flag("-B${CROSS_ROOTFS} /usr/lib/gcc/ ${TIZEN_TOOLCHAIN } " )
254+ add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH } " )
276255 add_toolchain_linker_flag("-L${CROSS_ROOTFS} /lib" )
277256 add_toolchain_linker_flag("-L${CROSS_ROOTFS} /usr/lib" )
278- add_toolchain_linker_flag("-L${CROSS_ROOTFS} /usr/lib/gcc/ ${TIZEN_TOOLCHAIN } " )
257+ add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH } " )
279258 endif ()
280259elseif (TARGET_ARCH_NAME MATCHES "^(arm64|x64|riscv64)$" )
281260 if (TIZEN)
282- add_toolchain_linker_flag("-B${CROSS_ROOTFS} /usr/lib64/gcc/ ${TIZEN_TOOLCHAIN } " )
261+ add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH } " )
283262 add_toolchain_linker_flag("-L${CROSS_ROOTFS} /lib64" )
284263 add_toolchain_linker_flag("-L${CROSS_ROOTFS} /usr/lib64" )
285- add_toolchain_linker_flag("-L${CROSS_ROOTFS} /usr/lib64/gcc/ ${TIZEN_TOOLCHAIN } " )
264+ add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH } " )
286265
287266 add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS} /lib64" )
288267 add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS} /usr/lib64" )
289- add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS} /usr/lib64/gcc/ ${TIZEN_TOOLCHAIN } " )
268+ add_toolchain_linker_flag("-Wl,--rpath-link=${TIZEN_TOOLCHAIN_PATH } " )
290269 endif ()
291270elseif (TARGET_ARCH_NAME STREQUAL "s390x" )
292271 add_toolchain_linker_flag("--target=${TOOLCHAIN} " )
@@ -297,10 +276,10 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86")
297276 endif ()
298277 add_toolchain_linker_flag(-m32)
299278 if (TIZEN)
300- add_toolchain_linker_flag("-B${CROSS_ROOTFS} /usr/lib/gcc/ ${TIZEN_TOOLCHAIN } " )
279+ add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH } " )
301280 add_toolchain_linker_flag("-L${CROSS_ROOTFS} /lib" )
302281 add_toolchain_linker_flag("-L${CROSS_ROOTFS} /usr/lib" )
303- add_toolchain_linker_flag("-L${CROSS_ROOTFS} /usr/lib/gcc/ ${TIZEN_TOOLCHAIN } " )
282+ add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH } " )
304283 endif ()
305284elseif (ILLUMOS)
306285 add_toolchain_linker_flag("-L${CROSS_ROOTFS} /lib/amd64" )
@@ -312,7 +291,7 @@ endif()
312291
313292# Specify compile options
314293
315- if ((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|ppc64le|riscv64|s390x|x64|x86)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU)
294+ if ((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|loongarch64| ppc64le|riscv64|s390x|x64|x86)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU)
316295 set (CMAKE_C_COMPILER_TARGET ${TOOLCHAIN} )
317296 set (CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN} )
318297 set (CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN} )
0 commit comments