diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-multilib-config.inc')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-multilib-config.inc | 45 |
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: |