99
1010# -----------------------------------------------------------------------------
1111
12+ function set_multilib_list() {
13+ # Releases from 14.2.*-3 up (December 2024) use the Debian list,
14+ # with two more combinations:
15+ # - rv32ec-ilp32e
16+ # - rv32imc-ilp32
17+
18+ if [ " ${XBB_APPLICATION_WITHOUT_MULTILIB:- " " } " != " y" ]
19+ then
20+ if [ " ${XBB_IS_DEVELOPMENT} " != " y" ]
21+ then
22+
23+ # $ docker run -it debian:13
24+ # $ apt-get update
25+ # $ apt-get install -y gcc-riscv64-unknown-elf
26+ # $ riscv64-unknown-elf-gcc -print-multi-lib
27+ # .; (--with-arch=rv64imafdc)
28+ # rv32e/ilp32e;@march=rv32e@mabi=ilp32e
29+ # rv32ea/ilp32e;@march=rv32ea@mabi=ilp32e
30+ # rv32em/ilp32e;@march=rv32em@mabi=ilp32e
31+ # rv32eac/ilp32e;@march=rv32eac@mabi=ilp32e
32+ # rv32emac/ilp32e;@march=rv32emac@mabi=ilp32e
33+ # rv32i/ilp32;@march=rv32i@mabi=ilp32
34+ # rv32ia/ilp32;@march=rv32ia@mabi=ilp32
35+ # rv32im/ilp32;@march=rv32im@mabi=ilp32
36+ # rv32if/ilp32f;@march=rv32if@mabi=ilp32f
37+ # rv32ifd/ilp32d;@march=rv32ifd@mabi=ilp32d
38+ # rv32iaf/ilp32f;@march=rv32iaf@mabi=ilp32f
39+ # rv32iafd/ilp32d;@march=rv32iafd@mabi=ilp32d
40+ # rv32imf/ilp32f;@march=rv32imf@mabi=ilp32f
41+ # rv32imfd/ilp32d;@march=rv32imfd@mabi=ilp32d
42+ # rv32iac/ilp32;@march=rv32iac@mabi=ilp32
43+ # rv32imac/ilp32;@march=rv32imac@mabi=ilp32
44+ # rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
45+ # rv32imafdc/ilp32d;@march=rv32imafdc@mabi=ilp32d
46+ # rv64i/lp64;@march=rv64i@mabi=lp64
47+ # rv64ia/lp64;@march=rv64ia@mabi=lp64
48+ # rv64im/lp64;@march=rv64im@mabi=lp64
49+ # rv64if/lp64f;@march=rv64if@mabi=lp64f
50+ # rv64ifd/lp64d;@march=rv64ifd@mabi=lp64d
51+ # rv64iaf/lp64f;@march=rv64iaf@mabi=lp64f
52+ # rv64iafd/lp64d;@march=rv64iafd@mabi=lp64d
53+ # rv64imf/lp64f;@march=rv64imf@mabi=lp64f
54+ # rv64iac/lp64;@march=rv64iac@mabi=lp64
55+ # rv64imac/lp64;@march=rv64imac@mabi=lp64
56+ # rv64imafc/lp64f;@march=rv64imafc@mabi=lp64f
57+
58+ # https://packages.debian.org/stable/devel/gcc-riscv64-unknown-elf
59+ # https://packages.debian.org/source/trixie/gcc-riscv64-unknown-elf
60+ # http://deb.debian.org/debian/pool/main/g/gcc-riscv64-unknown-elf/gcc-riscv64-unknown-elf_19.tar.xz
61+ # debian/patches/0002-Add-more-multi-lib-for-rv32-and-rv64.patch
62+
63+ # (14.2.0+19)
64+ # ./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--
65+
66+ # Default rv32imac-ilp32--
67+ XBB_GCC_MULTILIB_LIST=${XBB_APPLICATION_GCC_MULTILIB_LIST:- " \
68+ rv32e-ilp32e-- \
69+ rv32ec-ilp32e-- \
70+ rv32ea-ilp32e--m \
71+ rv32em-ilp32e--c \
72+ rv32eac-ilp32e-- \
73+ rv32emac-ilp32e-- \
74+ \
75+ rv32i-ilp32--c \
76+ rv32ia-ilp32--m \
77+ rv32im-ilp32-- \
78+ rv32imc-ilp32-- \
79+ rv32if-ilp32f-rv32ifd-c \
80+ rv32iaf-ilp32f-rv32imaf,rv32iafc-d \
81+ rv32imf-ilp32f-rv32imfd-c \
82+ rv32iac-ilp32-- \
83+ rv32imac-ilp32-- \
84+ rv32imafc-ilp32f-rv32imafdc- \
85+ rv32ifd-ilp32d--c \
86+ rv32imfd-ilp32d--c \
87+ rv32iafd-ilp32d-rv32imafd,rv32iafdc- \
88+ rv32imafdc-ilp32d-- \
89+ \
90+ rv64i-lp64--c \
91+ rv64ia-lp64--m \
92+ rv64im-lp64--c \
93+ rv64if-lp64f-rv64ifd-c \
94+ rv64iaf-lp64f-rv64imaf,rv64iafc-d \
95+ rv64imf-lp64f-rv64imfd-c \
96+ rv64iac-lp64-- \
97+ rv64imac-lp64-- \
98+ rv64imafc-lp64f-rv64imafdc- \
99+ rv64ifd-lp64d--m,c \
100+ rv64iafd-lp64d-rv64imafd,rv64iafdc- \
101+ rv64imafdc-lp64d-- \
102+ " }
103+ echo
104+ echo " Use Debian multi-libs + rv32ec + rv32imc: ${XBB_GCC_MULTILIB_LIST} "
105+ else
106+ # Short list used during development to save time.
107+ XBB_GCC_MULTILIB_LIST=${XBB_APPLICATION_GCC_MULTILIB_LIST:- " \
108+ rv32emac-ilp32e-- \
109+ rv32imac-ilp32-- \
110+ rv64imac-lp64-- \
111+ " }
112+ fi
113+ fi
114+ }
115+
12116function application_build_versioned_components()
13117{
14118 export XBB_GCC_VERSION=" $( xbb_strip_version_pre_release " ${XBB_RELEASE_VERSION} " ) "
@@ -65,108 +169,7 @@ function application_build_versioned_components()
65169 [[ ${XBB_RELEASE_VERSION} =~ 15[.][012][.][0-9]* -[0-9]* ]]
66170 then
67171
68-
69- # Releases from 14.2.*-3 up (December 2024) use the Debian list,
70- # with two more combinations:
71- # - rv32ec-ilp32e
72- # - rv32imc-ilp32
73-
74- if [ " ${XBB_APPLICATION_WITHOUT_MULTILIB:- " " } " != " y" ]
75- then
76- if [ " ${XBB_IS_DEVELOPMENT} " != " y" ]
77- then
78-
79- # $ docker run -it debian:13
80- # $ apt-get update
81- # $ apt-get install -y gcc-riscv64-unknown-elf
82- # $ riscv64-unknown-elf-gcc -print-multi-lib
83- # .; (--with-arch=rv64imafdc)
84- # rv32e/ilp32e;@march=rv32e@mabi=ilp32e
85- # rv32ea/ilp32e;@march=rv32ea@mabi=ilp32e
86- # rv32em/ilp32e;@march=rv32em@mabi=ilp32e
87- # rv32eac/ilp32e;@march=rv32eac@mabi=ilp32e
88- # rv32emac/ilp32e;@march=rv32emac@mabi=ilp32e
89- # rv32i/ilp32;@march=rv32i@mabi=ilp32
90- # rv32ia/ilp32;@march=rv32ia@mabi=ilp32
91- # rv32im/ilp32;@march=rv32im@mabi=ilp32
92- # rv32if/ilp32f;@march=rv32if@mabi=ilp32f
93- # rv32ifd/ilp32d;@march=rv32ifd@mabi=ilp32d
94- # rv32iaf/ilp32f;@march=rv32iaf@mabi=ilp32f
95- # rv32iafd/ilp32d;@march=rv32iafd@mabi=ilp32d
96- # rv32imf/ilp32f;@march=rv32imf@mabi=ilp32f
97- # rv32imfd/ilp32d;@march=rv32imfd@mabi=ilp32d
98- # rv32iac/ilp32;@march=rv32iac@mabi=ilp32
99- # rv32imac/ilp32;@march=rv32imac@mabi=ilp32
100- # rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
101- # rv32imafdc/ilp32d;@march=rv32imafdc@mabi=ilp32d
102- # rv64i/lp64;@march=rv64i@mabi=lp64
103- # rv64ia/lp64;@march=rv64ia@mabi=lp64
104- # rv64im/lp64;@march=rv64im@mabi=lp64
105- # rv64if/lp64f;@march=rv64if@mabi=lp64f
106- # rv64ifd/lp64d;@march=rv64ifd@mabi=lp64d
107- # rv64iaf/lp64f;@march=rv64iaf@mabi=lp64f
108- # rv64iafd/lp64d;@march=rv64iafd@mabi=lp64d
109- # rv64imf/lp64f;@march=rv64imf@mabi=lp64f
110- # rv64iac/lp64;@march=rv64iac@mabi=lp64
111- # rv64imac/lp64;@march=rv64imac@mabi=lp64
112- # rv64imafc/lp64f;@march=rv64imafc@mabi=lp64f
113-
114- # https://packages.debian.org/stable/devel/gcc-riscv64-unknown-elf
115- # https://packages.debian.org/source/trixie/gcc-riscv64-unknown-elf
116- # http://deb.debian.org/debian/pool/main/g/gcc-riscv64-unknown-elf/gcc-riscv64-unknown-elf_19.tar.xz
117- # debian/patches/0002-Add-more-multi-lib-for-rv32-and-rv64.patch
118-
119- # (14.2.0+19)
120- # ./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--
121-
122- # Default rv32imac-ilp32--
123- XBB_GCC_MULTILIB_LIST=${XBB_APPLICATION_GCC_MULTILIB_LIST:- " \
124- rv32e-ilp32e-- \
125- rv32ec-ilp32e-- \
126- rv32ea-ilp32e--m \
127- rv32em-ilp32e--c \
128- rv32eac-ilp32e-- \
129- rv32emac-ilp32e-- \
130- \
131- rv32i-ilp32--c \
132- rv32ia-ilp32--m \
133- rv32im-ilp32-- \
134- rv32imc-ilp32-- \
135- rv32if-ilp32f-rv32ifd-c \
136- rv32iaf-ilp32f-rv32imaf,rv32iafc-d \
137- rv32imf-ilp32f-rv32imfd-c \
138- rv32iac-ilp32-- \
139- rv32imac-ilp32-- \
140- rv32imafc-ilp32f-rv32imafdc- \
141- rv32ifd-ilp32d--c \
142- rv32imfd-ilp32d--c \
143- rv32iafd-ilp32d-rv32imafd,rv32iafdc- \
144- rv32imafdc-ilp32d-- \
145- \
146- rv64i-lp64--c \
147- rv64ia-lp64--m \
148- rv64im-lp64--c \
149- rv64if-lp64f-rv64ifd-c \
150- rv64iaf-lp64f-rv64imaf,rv64iafc-d \
151- rv64imf-lp64f-rv64imfd-c \
152- rv64iac-lp64-- \
153- rv64imac-lp64-- \
154- rv64imafc-lp64f-rv64imafdc- \
155- rv64ifd-lp64d--m,c \
156- rv64iafd-lp64d-rv64imafd,rv64iafdc- \
157- rv64imafdc-lp64d-- \
158- " }
159- echo
160- echo " Use Debian multi-libs + rv32ec + rv32imc: ${XBB_GCC_MULTILIB_LIST} "
161- else
162- # Short list used during development to save time.
163- XBB_GCC_MULTILIB_LIST=${XBB_APPLICATION_GCC_MULTILIB_LIST:- " \
164- rv32emac-ilp32e-- \
165- rv32imac-ilp32-- \
166- rv64imac-lp64-- \
167- " }
168- fi
169- fi
172+ set_multilib_list
170173
171174 # Starting with GCC 15, no more cross patches.
172175 if [ " ${XBB_HOST_PLATFORM} " == " darwin" ]
@@ -517,7 +520,8 @@ function application_build_versioned_components()
517520 rv64if-lp64f-rv64ifd-c \
518521 rv64iaf-lp64f-rv64imaf,rv64iafc-d \
519522 rv64imf-lp64f-rv64imfd-c \
520- rv64iac-lp64-- rv64imac-lp64-- \
523+ rv64iac-lp64-- \
524+ rv64imac-lp64-- \
521525 rv64imafc-lp64f-rv64imafdc- \
522526 rv64ifd-lp64d--m,c \
523527 rv64iafd-lp64d-rv64imafd,rv64iafdc- \
@@ -535,96 +539,7 @@ function application_build_versioned_components()
535539 fi
536540 fi
537541 else
538- # Releases from 14.2.*-3 up (December 2024) use the Debian list,
539- # with two more combinations:
540- # - rv32ec-ilp32e
541- # - rv32imc-ilp32
542-
543- if [ " ${XBB_APPLICATION_WITHOUT_MULTILIB:- " " } " != " y" ]
544- then
545- if [ " ${XBB_IS_DEVELOPMENT} " != " y" ]
546- then
547- # --with-arch=rv64imafdc
548- # Debian 12 $ riscv64-unknown-elf-gcc -print-multi-lib
549- # rv32e/ilp32e;@march=rv32e@mabi=ilp32e
550- # rv32ea/ilp32e;@march=rv32ea@mabi=ilp32e
551- # rv32em/ilp32e;@march=rv32em@mabi=ilp32e
552- # rv32eac/ilp32e;@march=rv32eac@mabi=ilp32e
553- # rv32emac/ilp32e;@march=rv32emac@mabi=ilp32e
554- # rv32i/ilp32;@march=rv32i@mabi=ilp32
555- # rv32ia/ilp32;@march=rv32ia@mabi=ilp32
556- # rv32im/ilp32;@march=rv32im@mabi=ilp32
557- # rv32if/ilp32f;@march=rv32if@mabi=ilp32f
558- # rv32ifd/ilp32d;@march=rv32ifd@mabi=ilp32d
559- # rv32iaf/ilp32f;@march=rv32iaf@mabi=ilp32f
560- # rv32iafd/ilp32d;@march=rv32iafd@mabi=ilp32d
561- # rv32imf/ilp32f;@march=rv32imf@mabi=ilp32f
562- # rv32imfd/ilp32d;@march=rv32imfd@mabi=ilp32d
563- # rv32iac/ilp32;@march=rv32iac@mabi=ilp32
564- # rv32imac/ilp32;@march=rv32imac@mabi=ilp32
565- # rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
566- # rv32imafdc/ilp32d;@march=rv32imafdc@mabi=ilp32d
567- # rv64i/lp64;@march=rv64i@mabi=lp64
568- # rv64ia/lp64;@march=rv64ia@mabi=lp64
569- # rv64im/lp64;@march=rv64im@mabi=lp64
570- # rv64if/lp64f;@march=rv64if@mabi=lp64f
571- # rv64ifd/lp64d;@march=rv64ifd@mabi=lp64d
572- # rv64iaf/lp64f;@march=rv64iaf@mabi=lp64f
573- # rv64iafd/lp64d;@march=rv64iafd@mabi=lp64d
574- # rv64imf/lp64f;@march=rv64imf@mabi=lp64f
575- # rv64iac/lp64;@march=rv64iac@mabi=lp64
576- # rv64imac/lp64;@march=rv64imac@mabi=lp64
577- # rv64imafc/lp64f;@march=rv64imafc@mabi=lp64f
578-
579- # ./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--
580-
581- # Default rv32imac-ilp32--
582- XBB_GCC_MULTILIB_LIST=${XBB_APPLICATION_GCC_MULTILIB_LIST:- " \
583- rv32e-ilp32e-- \
584- rv32ec-ilp32e-- \
585- rv32ea-ilp32e--m \
586- rv32em-ilp32e--c \
587- rv32eac-ilp32e-- \
588- rv32emac-ilp32e-- \
589- \
590- rv32i-ilp32--c \
591- rv32ia-ilp32--m \
592- rv32im-ilp32-- \
593- rv32imc-ilp32-- \
594- rv32if-ilp32f-rv32ifd-c \
595- rv32iaf-ilp32f-rv32imaf,rv32iafc-d \
596- rv32imf-ilp32f-rv32imfd-c \
597- rv32iac-ilp32-- \
598- rv32imac-ilp32-- \
599- rv32imafc-ilp32f-rv32imafdc- \
600- rv32ifd-ilp32d--c \
601- rv32imfd-ilp32d--c \
602- rv32iafd-ilp32d-rv32imafd,rv32iafdc- \
603- rv32imafdc-ilp32d-- \
604- \
605- rv64i-lp64--c \
606- rv64ia-lp64--m \
607- rv64im-lp64--c \
608- rv64if-lp64f-rv64ifd-c \
609- rv64iaf-lp64f-rv64imaf,rv64iafc-d \
610- rv64imf-lp64f-rv64imfd-c \
611- rv64iac-lp64-- rv64imac-lp64-- \
612- rv64imafc-lp64f-rv64imafdc- \
613- rv64ifd-lp64d--m,c \
614- rv64iafd-lp64d-rv64imafd,rv64iafdc- \
615- rv64imafdc-lp64d-- \
616- " }
617- echo
618- echo " Use Debian multi-libs + rv32ec + rv32imc: ${XBB_GCC_MULTILIB_LIST} "
619- else
620- # Short list used during development to save time.
621- XBB_GCC_MULTILIB_LIST=${XBB_APPLICATION_GCC_MULTILIB_LIST:- " \
622- rv32emac-ilp32e-- \
623- rv32imac-ilp32-- \
624- rv64imac-lp64-- \
625- " }
626- fi
627- fi
542+ set_multilib_list
628543 fi
629544
630545 # -------------------------------------------------------------------------
0 commit comments