summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/gcc-multilib-config.inc
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-multilib-config.inc')
-rw-r--r--meta/recipes-devtools/gcc/gcc-multilib-config.inc45
1 files changed, 32 insertions, 13 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-multilib-config.inc b/meta/recipes-devtools/gcc/gcc-multilib-config.inc
index 31b8619be3..2afd8f6f2a 100644
--- a/meta/recipes-devtools/gcc/gcc-multilib-config.inc
+++ b/meta/recipes-devtools/gcc/gcc-multilib-config.inc
@@ -31,7 +31,10 @@ python gcc_multilib_setup() {
31 '%s/*/linux64.h' % src_conf_dir, 31 '%s/*/linux64.h' % src_conf_dir,
32 '%s/aarch64/t-aarch64' % src_conf_dir, 32 '%s/aarch64/t-aarch64' % src_conf_dir,
33 '%s/aarch64/aarch64.h' % src_conf_dir, 33 '%s/aarch64/aarch64.h' % src_conf_dir,
34 '%s/aarch64/aarch64-linux.h' % src_conf_dir,
34 '%s/aarch64/aarch64-cores.def' % src_conf_dir, 35 '%s/aarch64/aarch64-cores.def' % src_conf_dir,
36 '%s/arm/linux-eabi.h' % src_conf_dir,
37 '%s/riscv/t-linux*' % src_conf_dir,
35 '%s/*/linux.h' % src_conf_dir, 38 '%s/*/linux.h' % src_conf_dir,
36 '%s/linux.h' % src_conf_dir) 39 '%s/linux.h' % src_conf_dir)
37 40
@@ -43,6 +46,9 @@ python gcc_multilib_setup() {
43 bb.utils.mkdirhier('%s/%s' % (build_conf_dir, parent_dir)) 46 bb.utils.mkdirhier('%s/%s' % (build_conf_dir, parent_dir))
44 bb.utils.copyfile(fn, '%s/%s' % (build_conf_dir, rel_path)) 47 bb.utils.copyfile(fn, '%s/%s' % (build_conf_dir, rel_path))
45 48
49 # For now, force the riscv multilib view to our own meaning we can always enable multilib
50 bb.utils.copyfile('%s/riscv/t-linux' % src_conf_dir, '%s/riscv/t-linux-multilib' % build_conf_dir)
51
46 pn = d.getVar('PN') 52 pn = d.getVar('PN')
47 multilibs = (d.getVar('MULTILIB_VARIANTS') or '').split() 53 multilibs = (d.getVar('MULTILIB_VARIANTS') or '').split()
48 if not multilibs and pn != "nativesdk-gcc": 54 if not multilibs and pn != "nativesdk-gcc":
@@ -53,7 +59,6 @@ python gcc_multilib_setup() {
53 if ('%sgcc' % mlprefix) != pn and (not pn.startswith('gcc-cross-canadian')) and pn != "nativesdk-gcc": 59 if ('%sgcc' % mlprefix) != pn and (not pn.startswith('gcc-cross-canadian')) and pn != "nativesdk-gcc":
54 return 60 return
55 61
56
57 def write_config(root, files, options, dirnames, osdirnames): 62 def write_config(root, files, options, dirnames, osdirnames):
58 for ml_conf_file in files: 63 for ml_conf_file in files:
59 with open(root + '/' + ml_conf_file, 'r') as f: 64 with open(root + '/' + ml_conf_file, 'r') as f:
@@ -102,6 +107,8 @@ python gcc_multilib_setup() {
102 r'\1' + wrap_libdir(libdir64) + r'\3'), 107 r'\1' + wrap_libdir(libdir64) + r'\3'),
103 (r'^(#define\s*GLIBC_DYNAMIC_LINKER64\s*\"\S+\"\s*)(\S+)(\s*\"\S+\"\s*)(\S+)(\s*\".*\")$', 108 (r'^(#define\s*GLIBC_DYNAMIC_LINKER64\s*\"\S+\"\s*)(\S+)(\s*\"\S+\"\s*)(\S+)(\s*\".*\")$',
104 r'\1' + wrap_libdir(libdir64) + r'\3' + wrap_libdir(libdir64) + r'\5'), 109 r'\1' + wrap_libdir(libdir64) + r'\3' + wrap_libdir(libdir64) + r'\5'),
110 (r'^(#define\s*GLIBC_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
111 r'\1' + wrap_libdir(libdir32) + r'\3'),
105 (r'^(#define\s*GLIBC_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$', 112 (r'^(#define\s*GLIBC_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
106 r'\1' + wrap_libdir(libdirx32) + r'\3'), 113 r'\1' + wrap_libdir(libdirx32) + r'\3'),
107 (r'^(#define\s*GLIBC_DYNAMIC_LINKERN32\s*)(\S+)(\s*\".*\")$', 114 (r'^(#define\s*GLIBC_DYNAMIC_LINKERN32\s*)(\S+)(\s*\".*\")$',
@@ -112,8 +119,18 @@ python gcc_multilib_setup() {
112 r'\1' + wrap_libdir(libdir64) + r'\3'), 119 r'\1' + wrap_libdir(libdir64) + r'\3'),
113 (r'^(#define\s*UCLIBC_DYNAMIC_LINKERN32\s*)(\S+)(\s*\".*\")$', 120 (r'^(#define\s*UCLIBC_DYNAMIC_LINKERN32\s*)(\S+)(\s*\".*\")$',
114 r'\1' + wrap_libdir(libdirn32) + r'\3'), 121 r'\1' + wrap_libdir(libdirn32) + r'\3'),
122 (r'^(#define\s*UCLIBC_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
123 r'\1' + wrap_libdir(libdirx32) + r'\3'),
115 (r'^(#define\s*UCLIBC_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$', 124 (r'^(#define\s*UCLIBC_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
116 r'\1' + wrap_libdir(libdir32) + r'\3'), 125 r'\1' + wrap_libdir(libdir32) + r'\3'),
126 (r'^(#define\s*MUSL_DYNAMIC_LINKER32\s*)(\S+)(\s*\".*\")$',
127 r'\1' + wrap_libdir(libdir32) + r'\3'),
128 (r'^(#define\s*MUSL_DYNAMIC_LINKER64\s*)(\S+)(\s*\".*\")$',
129 r'\1' + wrap_libdir(libdir64) + r'\3'),
130 (r'^(#define\s*MUSL_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
131 r'\1' + wrap_libdir(libdirx32) + r'\3'),
132 (r'^(#define\s*MUSL_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
133 r'\1' + wrap_libdir(libdir32) + r'\3'),
117 ] 134 ]
118 135
119 for (i, line) in enumerate(filelines): 136 for (i, line) in enumerate(filelines):
@@ -124,13 +141,14 @@ python gcc_multilib_setup() {
124 with open(root + '/' + ml_conf_file, 'w') as f: 141 with open(root + '/' + ml_conf_file, 'w') as f:
125 f.write(''.join(filelines)) 142 f.write(''.join(filelines))
126 143
127
128 gcc_target_config_files = { 144 gcc_target_config_files = {
129 'x86_64' : ['gcc/config/i386/t-linux64'], 145 'x86_64' : ['gcc/config/i386/t-linux64'],
130 'i586' : ['gcc/config/i386/t-linux64'], 146 'i586' : ['gcc/config/i386/t-linux64'],
131 'i686' : ['gcc/config/i386/t-linux64'], 147 'i686' : ['gcc/config/i386/t-linux64'],
132 'mips' : ['gcc/config/mips/t-linux64'], 148 'mips' : ['gcc/config/mips/t-linux64'],
133 'mips64' : ['gcc/config/mips/t-linux64'], 149 'mips64' : ['gcc/config/mips/t-linux64'],
150 'riscv32' : ['gcc/config/riscv/t-linux-multilib'],
151 'riscv64' : ['gcc/config/riscv/t-linux-multilib'],
134 'powerpc' : ['gcc/config/rs6000/t-linux64'], 152 'powerpc' : ['gcc/config/rs6000/t-linux64'],
135 'powerpc64' : ['gcc/config/rs6000/t-linux64'], 153 'powerpc64' : ['gcc/config/rs6000/t-linux64'],
136 'aarch64' : ['gcc/config/aarch64/t-aarch64'], 154 'aarch64' : ['gcc/config/aarch64/t-aarch64'],
@@ -138,15 +156,17 @@ python gcc_multilib_setup() {
138 } 156 }
139 157
140 gcc_header_config_files = { 158 gcc_header_config_files = {
141 'x86_64' : ['gcc/config/i386/linux64.h'], 159 'x86_64' : ['gcc/config/linux.h', 'gcc/config/i386/linux.h', 'gcc/config/i386/linux64.h'],
142 'i586' : ['gcc/config/i386/linux64.h'], 160 'i586' : ['gcc/config/linux.h', 'gcc/config/i386/linux.h', 'gcc/config/i386/linux64.h'],
143 'i686' : ['gcc/config/i386/linux64.h'], 161 'i686' : ['gcc/config/linux.h', 'gcc/config/i386/linux.h', 'gcc/config/i386/linux64.h'],
144 'mips' : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'], 162 'mips' : ['gcc/config/linux.h', 'gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
145 'mips64' : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'], 163 'mips64' : ['gcc/config/linux.h', 'gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
146 'powerpc' : ['gcc/config/rs6000/linux64.h'], 164 'powerpc' : ['gcc/config/linux.h', 'gcc/config/rs6000/linux64.h'],
147 'powerpc64' : ['gcc/config/rs6000/linux64.h'], 165 'powerpc64' : ['gcc/config/linux.h', 'gcc/config/rs6000/linux64.h'],
148 'aarch64' : ['gcc/config/aarch64/aarch64.h'], 166 'aarch64' : ['gcc/config/linux.h', 'gcc/config/aarch64/aarch64-linux.h', 'gcc/config/arm/linux-eabi.h'],
149 'arm' : ['gcc/config/aarch64/aarch64.h'], 167 'arm' : ['gcc/config/linux.h', 'gcc/config/aarch64/aarch64-linux.h', 'gcc/config/arm/linux-eabi.h'],
168 'riscv32' : ['gcc/config/linux.h'],
169 'riscv64' : ['gcc/config/linux.h'],
150 } 170 }
151 171
152 libdir32 = 'SYSTEMLIBS_DIR' 172 libdir32 = 'SYSTEMLIBS_DIR'
@@ -154,7 +174,6 @@ python gcc_multilib_setup() {
154 libdirx32 = 'SYSTEMLIBS_DIR' 174 libdirx32 = 'SYSTEMLIBS_DIR'
155 libdirn32 = 'SYSTEMLIBS_DIR' 175 libdirn32 = 'SYSTEMLIBS_DIR'
156 176
157
158 target_arch = (d.getVar('TARGET_ARCH_MULTILIB_ORIGINAL') if mlprefix 177 target_arch = (d.getVar('TARGET_ARCH_MULTILIB_ORIGINAL') if mlprefix
159 else d.getVar('TARGET_ARCH')) 178 else d.getVar('TARGET_ARCH'))
160 if pn == "nativesdk-gcc": 179 if pn == "nativesdk-gcc":
@@ -170,7 +189,7 @@ python gcc_multilib_setup() {
170 header_config_files = gcc_header_config_files[target_arch] 189 header_config_files = gcc_header_config_files[target_arch]
171 190
172 ml_list = ['DEFAULTTUNE_MULTILIB_ORIGINAL' if mlprefix else 'DEFAULTTUNE'] 191 ml_list = ['DEFAULTTUNE_MULTILIB_ORIGINAL' if mlprefix else 'DEFAULTTUNE']
173 mltunes = [('DEFAULTTUNE_virtclass-multilib-%s' % ml) for ml in multilibs] 192 mltunes = [('DEFAULTTUNE:virtclass-multilib-%s' % ml) for ml in multilibs]
174 if mlprefix: 193 if mlprefix:
175 mlindex = 0 194 mlindex = 0
176 for ml in multilibs: 195 for ml in multilibs: