@@ -135,7 +135,11 @@ function application_build_versioned_components()
135135 " }
136136 fi
137137 fi
138- else
138+ elif [[ ${XBB_RELEASE_VERSION} =~ 11[.][5][.][0-9]* -[2] ]] || \
139+ [[ ${XBB_RELEASE_VERSION} =~ 12[.][4][.][0-9]* -[2] ]] || \
140+ [[ ${XBB_RELEASE_VERSION} =~ 13[.][3][.][0-9]* -[2] ]] || \
141+ [[ ${XBB_RELEASE_VERSION} =~ 14[.][2][.][0-9]* -[2] ]]
142+ then
139143 # Releases from 14.2.*-2 up (September 2024) use the Debian list.
140144 if [ " ${XBB_APPLICATION_WITHOUT_MULTILIB:- " " } " != " y" ]
141145 then
@@ -234,6 +238,111 @@ function application_build_versioned_components()
234238 " }
235239 fi
236240 fi
241+ else
242+ # Releases from 14.2.*-3 up (December 2024) use the Debian list,
243+ # with two more combinations:
244+ # - rv32ec-ilp32e
245+ # - rv32imc-ilp32
246+
247+ if [ " ${XBB_APPLICATION_WITHOUT_MULTILIB:- " " } " != " y" ]
248+ then
249+ if [ " ${XBB_IS_DEVELOPMENT} " != " y" ]
250+ then
251+ # Possible future 'light' releases should include:
252+ # - rv32imac, rv64imafdc: for QEMU tests
253+ # - rv32imac: for SiFive HiFive1 (16K RAM only!)
254+ # - rv32ec: for the small WCH CH32V003
255+ # - rv32imac, rv32imacf: for WCH QingKe V4 series (xw!)
256+ # like CH32V20[38]*, CH32V30[357]*
257+ # https://www.wch-ic.com/downloads/QingKeV4_Processor_Manual_PDF.html
258+
259+ # https://codeberg.org/20-100/Awesome_RISC-V/src/branch/master/RISC-V_MCU_development_boards.pdf
260+
261+ # https://www.gigadevice.com/product/mcu/risc-v
262+ # https://www.renesas.com/us/en/products/microcontrollers-microprocessors/risc-v/product-selector
263+ # https://products.espressif.com/#/product-selector?language=en&names=
264+
265+ # --with-arch=rv64imafdc
266+ # Debian 12 $ riscv64-unknown-elf-gcc -print-multi-lib
267+ # rv32e/ilp32e;@march=rv32e@mabi=ilp32e
268+ # rv32ea/ilp32e;@march=rv32ea@mabi=ilp32e
269+ # rv32em/ilp32e;@march=rv32em@mabi=ilp32e
270+ # rv32eac/ilp32e;@march=rv32eac@mabi=ilp32e
271+ # rv32emac/ilp32e;@march=rv32emac@mabi=ilp32e
272+ # rv32i/ilp32;@march=rv32i@mabi=ilp32
273+ # rv32ia/ilp32;@march=rv32ia@mabi=ilp32
274+ # rv32im/ilp32;@march=rv32im@mabi=ilp32
275+ # rv32if/ilp32f;@march=rv32if@mabi=ilp32f
276+ # rv32ifd/ilp32d;@march=rv32ifd@mabi=ilp32d
277+ # rv32iaf/ilp32f;@march=rv32iaf@mabi=ilp32f
278+ # rv32iafd/ilp32d;@march=rv32iafd@mabi=ilp32d
279+ # rv32imf/ilp32f;@march=rv32imf@mabi=ilp32f
280+ # rv32imfd/ilp32d;@march=rv32imfd@mabi=ilp32d
281+ # rv32iac/ilp32;@march=rv32iac@mabi=ilp32
282+ # rv32imac/ilp32;@march=rv32imac@mabi=ilp32
283+ # rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
284+ # rv32imafdc/ilp32d;@march=rv32imafdc@mabi=ilp32d
285+ # rv64i/lp64;@march=rv64i@mabi=lp64
286+ # rv64ia/lp64;@march=rv64ia@mabi=lp64
287+ # rv64im/lp64;@march=rv64im@mabi=lp64
288+ # rv64if/lp64f;@march=rv64if@mabi=lp64f
289+ # rv64ifd/lp64d;@march=rv64ifd@mabi=lp64d
290+ # rv64iaf/lp64f;@march=rv64iaf@mabi=lp64f
291+ # rv64iafd/lp64d;@march=rv64iafd@mabi=lp64d
292+ # rv64imf/lp64f;@march=rv64imf@mabi=lp64f
293+ # rv64iac/lp64;@march=rv64iac@mabi=lp64
294+ # rv64imac/lp64;@march=rv64imac@mabi=lp64
295+ # rv64imafc/lp64f;@march=rv64imafc@mabi=lp64f
296+
297+ # ./multilib-generator rv32e-ilp32e--c rv32ea-ilp32e--m rv32em-ilp32e--c rv32eac-ilp32e-- rv32emac-ilp32e-- rv32i-ilp32--c rv32ia-ilp32--m rv32im-ilp32--c rv32if-ilp32f-rv32ifd-c rv32iaf-ilp32f-rv32imaf,rv32iafc-d rv32imf-ilp32f-rv32imfd-c rv32iac-ilp32-- rv32imac-ilp32-- rv32imafc-ilp32f-rv32imafdc- rv32ifd-ilp32d--c rv32imfd-ilp32d--c rv32iafd-ilp32d-rv32imafd,rv32iafdc- rv32imafdc-ilp32d-- rv64i-lp64--c rv64ia-lp64--m rv64im-lp64--c rv64if-lp64f-rv64ifd-c rv64iaf-lp64f-rv64imaf,rv64iafc-d rv64imf-lp64f-rv64imfd-c rv64iac-lp64-- rv64imac-lp64-- rv64imafc-lp64f-rv64imafdc- rv64ifd-lp64d--m,c rv64iafd-lp64d-rv64imafd,rv64iafdc- rv64imafdc-lp64d--
298+
299+ # Default rv32imac-ilp32--
300+ XBB_GCC_MULTILIB_LIST=${XBB_APPLICATION_GCC_MULTILIB_LIST:- " \
301+ rv32e-ilp32e-- \
302+ rv32ec-ilp32e-- \
303+ rv32ea-ilp32e--m \
304+ rv32em-ilp32e--c \
305+ rv32eac-ilp32e-- \
306+ rv32emac-ilp32e-- \
307+ \
308+ rv32i-ilp32--c \
309+ rv32ia-ilp32--m \
310+ rv32im-ilp32-- \
311+ rv32imc-ilp32-- \
312+ rv32if-ilp32f-rv32ifd-c \
313+ rv32iaf-ilp32f-rv32imaf,rv32iafc-d \
314+ rv32imf-ilp32f-rv32imfd-c \
315+ rv32iac-ilp32-- \
316+ rv32imac-ilp32-- \
317+ rv32imafc-ilp32f-rv32imafdc- \
318+ rv32ifd-ilp32d--c \
319+ rv32imfd-ilp32d--c \
320+ rv32iafd-ilp32d-rv32imafd,rv32iafdc- \
321+ rv32imafdc-ilp32d-- \
322+ \
323+ rv64i-lp64--c \
324+ rv64ia-lp64--m \
325+ rv64im-lp64--c \
326+ rv64if-lp64f-rv64ifd-c \
327+ rv64iaf-lp64f-rv64imaf,rv64iafc-d \
328+ rv64imf-lp64f-rv64imfd-c \
329+ rv64iac-lp64-- rv64imac-lp64-- \
330+ rv64imafc-lp64f-rv64imafdc- \
331+ rv64ifd-lp64d--m,c \
332+ rv64iafd-lp64d-rv64imafd,rv64iafdc- \
333+ rv64imafdc-lp64d-- \
334+ " }
335+ echo
336+ echo " Use Debian multi-libs: ${XBB_GCC_MULTILIB_LIST} "
337+ else
338+ # Short list used during development to save time.
339+ XBB_GCC_MULTILIB_LIST=${XBB_APPLICATION_GCC_MULTILIB_LIST:- " \
340+ rv32emac-ilp32e-- \
341+ rv32imac-ilp32-- \
342+ rv64imac-lp64-- \
343+ " }
344+ fi
345+ fi
237346 fi
238347
239348 # ---------------------------------------------------------------------------
0 commit comments