@@ -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