Skip to content

Commit b0c6128

Browse files
committed
versioning.sh: group defs in set_multilib_list()
1 parent 77ff974 commit b0c6128

File tree

1 file changed

+108
-193
lines changed

1 file changed

+108
-193
lines changed

build-assets/scripts/versioning.sh

Lines changed: 108 additions & 193 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,110 @@
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+
12116
function 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

Comments
 (0)