diff options
author | Kito Cheng <kito.cheng@sifive.com> | 2024-04-11 15:58:33 +0800 |
---|---|---|
committer | Kito Cheng <kito.cheng@sifive.com> | 2024-04-11 16:02:10 +0800 |
commit | e719bb7cb6a72af59dbcfd36614b406ab7e089c5 (patch) | |
tree | 58fbed7d02ed9826ca8b528888489a5e5921bb2d | |
parent | ae8dc939fd6425df12a96da18f0d43cef08c70e6 (diff) | |
download | riscv-gnu-toolchain-kitoc/fix-generate_target_board.zip riscv-gnu-toolchain-kitoc/fix-generate_target_board.tar.gz riscv-gnu-toolchain-kitoc/fix-generate_target_board.tar.bz2 |
Handle multilib config correctlykitoc/fix-generate_target_board
`--build-arch-abi` may give more than one arch/abi pair if multilib
enabled, but we don't handle that well before...
Before the patch:
```bash
$ scripts/generate_target_board --sim-name riscv-sim --cmodel medlow \
--build-arch-abi "rv32imac-ilp32 rv32imafdc-ilp32d rv64imac-lp64 rv64imafdc-lp64d" \
--extra-test-arch-abi-flags-list ""
riscv-sim/-march=rv32imac/-mabi=ilp32 rv32imafdc/-mcmodel=medlow
```
After the patch:
```bash
$ scripts/generate_target_board --sim-name riscv-sim --cmodel medlow \
--build-arch-abi "rv32imac-ilp32 rv32imafdc-ilp32d rv64imac-lp64 rv64imafdc-lp64d" \
--extra-test-arch-abi-flags-list ""
riscv-sim/-march=rv32imac/-mabi=ilp32/-mcmodel=medlow riscv-sim/-march=rv32imafdc/-mabi=ilp32d/-mcmodel=medlow riscv-sim/-march=rv64imac/-mabi=lp64/-mcmodel=medlow riscv-sim/-march=rv64imafdc/-mabi=lp64d/-mcmodel=medlow
```
-rwxr-xr-x | scripts/generate_target_board | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/scripts/generate_target_board b/scripts/generate_target_board index c4d91ee..4829c0b 100755 --- a/scripts/generate_target_board +++ b/scripts/generate_target_board @@ -43,6 +43,26 @@ def generate_one_target_board(arch_abi, flags, options): return "{0}/-march={1}/-mabi={2}/-mcmodel={3}/{4}".format( options.sim_name, arch, abi, options.cmodel, flags) +def gen_list(arch_abi_list, options): + target_board_list = [] + extra_test_list = arch_abi_list + + for extra_test in extra_test_list: + idx = extra_test.find(":") + + if idx == -1: + one_target_board = generate_one_target_board(extra_test, "", options) + target_board_list.append(one_target_board) + else: + arch_abi = extra_test[:idx] + flags = extra_test[idx + 1:] + + for flag in flags.split(","): + one_target_board = generate_one_target_board(arch_abi, flag, options) + target_board_list.append(one_target_board) + + return target_board_list + def main(argv): options = parse_options(argv) @@ -50,26 +70,11 @@ def main(argv): print ("The --sim-name and/or --build-arch-abi cannot be empty or null.") return - target_board_list = [ - generate_one_target_board(options.build_arch_abi, "", options) - ] + target_board_list = gen_list(options.build_arch_abi.split(" "), options) if options.extra_test_arch_abi_flags_list: extra_test_list = options.extra_test_arch_abi_flags_list.split (";") - - for extra_test in extra_test_list: - idx = extra_test.find(":") - - if idx == -1: - one_target_board = generate_one_target_board(extra_test, "", options) - target_board_list.append(one_target_board) - else: - arch_abi = extra_test[:idx] - flags = extra_test[idx + 1:] - - for flag in flags.split(","): - one_target_board = generate_one_target_board(arch_abi, flag, options) - target_board_list.append(one_target_board) + target_board_list += gen_list(extra_test_list, options) print(' '.join(target_board_list)) |