@@ -34,10 +34,40 @@ jobs:
3434 sudo install -m 644 /tmp/gtest/lib/libgtest*.a /usr/lib
3535
3636 - name : Setup RISC-V libc include/lib paths
37+ shell : bash
3738 run : |
38- echo "CPATH=/usr/lib/picolibc/riscv64-unknown-elf/include" >> "${GITHUB_ENV}"
39- echo "C_INCLUDE_PATH=/usr/lib/picolibc/riscv64-unknown-elf/include" >> "${GITHUB_ENV}"
40- echo "LIBRARY_PATH=/usr/lib/picolibc/riscv64-unknown-elf/lib/rv64imafdc/lp64d" >> "${GITHUB_ENV}"
39+ set -euo pipefail
40+
41+ include_dir="/usr/lib/picolibc/riscv64-unknown-elf/include"
42+ if [[ ! -d "${include_dir}" ]]; then
43+ include_dir="$(dpkg -L picolibc-riscv64-unknown-elf | grep '/include$' | head -n1)"
44+ fi
45+
46+ libm_path="$(find /usr/lib/picolibc/riscv64-unknown-elf/lib -path '*rv64*lp64d*/libm.a' -print | head -n1 || true)"
47+ if [[ -z "${libm_path}" ]]; then
48+ libm_path="$(dpkg -L picolibc-riscv64-unknown-elf | grep '/libm\.a$' | grep 'rv64' | grep 'lp64d' | head -n1 || true)"
49+ fi
50+ if [[ -z "${libm_path}" ]]; then
51+ echo "ERROR: 未找到 rv64/lp64d 的 picolibc libm.a,请检查 runner 上的 picolibc 包内容" >&2
52+ exit 1
53+ fi
54+ lib_dir="$(dirname "${libm_path}")"
55+
56+ echo "CPATH=${include_dir}" >> "${GITHUB_ENV}"
57+ echo "C_INCLUDE_PATH=${include_dir}" >> "${GITHUB_ENV}"
58+ echo "LIBRARY_PATH=${lib_dir}" >> "${GITHUB_ENV}"
59+
60+ specs_file="$(riscv64-unknown-elf-gcc -print-file-name=picolibc.specs)"
61+ if [[ "${specs_file}" != "picolibc.specs" && -f "${specs_file}" ]]; then
62+ echo "RISCV_GCC_BENCHMARK=riscv64-unknown-elf-gcc -specs=${specs_file}" >> "${GITHUB_ENV}"
63+ echo "Detected picolibc specs: ${specs_file}"
64+ else
65+ echo "RISCV_GCC_BENCHMARK=riscv64-unknown-elf-gcc" >> "${GITHUB_ENV}"
66+ echo "picolibc.specs not found in GCC search path, fallback to default gcc + LIBRARY_PATH"
67+ fi
68+
69+ echo "Detected include dir: ${include_dir}"
70+ echo "Detected lib dir: ${lib_dir}"
4171
4272 - name : Init Submodules
4373 run : git submodule update --init --recursive
5383 run : |
5484 make -C riscv-tests/benchmarks -f Makefile \
5585 src_dir="${GITHUB_WORKSPACE}/riscv-tests/benchmarks" \
56- XLEN=64
86+ XLEN=64 \
87+ RISCV_GCC="${RISCV_GCC_BENCHMARK}"
5788
5889 - name : Configure
5990 run : cmake -S . -B build
0 commit comments