Skip to content

Commit 0fc4607

Browse files
author
yintong
committed
riscv: add bash configure script support for riscv
1 parent e4a31e0 commit 0fc4607

2 files changed

Lines changed: 98 additions & 0 deletions

File tree

arch/riscv/Makefile.in

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Makefile for zlib-ng
2+
# Copyright (C) 1995-2013 Jean-loup Gailly, Mark Adler
3+
# Copyright (C) 2024 Hans Kristian Rosbach
4+
# For conditions of distribution and use, see copyright notice in zlib.h
5+
6+
CC=
7+
CFLAGS=
8+
SFLAGS=
9+
INCLUDES=
10+
SUFFIX=
11+
12+
# RISC-V Vector Extension flags
13+
RVVFLAG=-march=rv64gcv
14+
15+
SRCDIR=.
16+
SRCTOP=../..
17+
TOPDIR=$(SRCTOP)
18+
19+
all: \
20+
riscv_features.o riscv_features.lo \
21+
adler32_rvv.o adler32_rvv.lo \
22+
chunkset_rvv.o chunkset_rvv.lo \
23+
compare256_rvv.o compare256_rvv.lo \
24+
slide_hash_rvv.o slide_hash_rvv.lo
25+
26+
riscv_features.o: $(SRCDIR)/riscv_features.c
27+
$(CC) $(CFLAGS) $(RVVFLAG) $(INCLUDES) -c -o $@ $(SRCDIR)/riscv_features.c
28+
29+
riscv_features.lo: $(SRCDIR)/riscv_features.c
30+
$(CC) $(SFLAGS) $(RVVFLAG) -DPIC $(INCLUDES) -c -o $@ $(SRCDIR)/riscv_features.c
31+
32+
adler32_rvv.o: $(SRCDIR)/adler32_rvv.c
33+
$(CC) $(CFLAGS) $(RVVFLAG) $(INCLUDES) -c -o $@ $(SRCDIR)/adler32_rvv.c
34+
35+
adler32_rvv.lo: $(SRCDIR)/adler32_rvv.c
36+
$(CC) $(SFLAGS) $(RVVFLAG) -DPIC $(INCLUDES) -c -o $@ $(SRCDIR)/adler32_rvv.c
37+
38+
chunkset_rvv.o: $(SRCDIR)/chunkset_rvv.c
39+
$(CC) $(CFLAGS) $(RVVFLAG) $(INCLUDES) -c -o $@ $(SRCDIR)/chunkset_rvv.c
40+
41+
chunkset_rvv.lo: $(SRCDIR)/chunkset_rvv.c
42+
$(CC) $(SFLAGS) $(RVVFLAG) -DPIC $(INCLUDES) -c -o $@ $(SRCDIR)/chunkset_rvv.c
43+
44+
compare256_rvv.o: $(SRCDIR)/compare256_rvv.c
45+
$(CC) $(CFLAGS) $(RVVFLAG) $(INCLUDES) -c -o $@ $(SRCDIR)/compare256_rvv.c
46+
47+
compare256_rvv.lo: $(SRCDIR)/compare256_rvv.c
48+
$(CC) $(SFLAGS) $(RVVFLAG) -DPIC $(INCLUDES) -c -o $@ $(SRCDIR)/compare256_rvv.c
49+
50+
slide_hash_rvv.o: $(SRCDIR)/slide_hash_rvv.c
51+
$(CC) $(CFLAGS) $(RVVFLAG) $(INCLUDES) -c -o $@ $(SRCDIR)/slide_hash_rvv.c
52+
53+
slide_hash_rvv.lo: $(SRCDIR)/slide_hash_rvv.c
54+
$(CC) $(SFLAGS) $(RVVFLAG) -DPIC $(INCLUDES) -c -o $@ $(SRCDIR)/slide_hash_rvv.c
55+
56+
mostlyclean: clean
57+
clean:
58+
rm -f *.o *.lo *~
59+
rm -rf objs
60+
rm -f *.gcda *.gcno *.gcov
61+
62+
distclean: clean
63+
rm -f Makefile

configure

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,8 @@ if test "$gcc" -eq 1 && ($cc $CFLAGS -c $test.c) >> configure.log 2>&1; then
343343
ARCH=powerpc64 ;;
344344
powerpc64le | ppc64le)
345345
ARCH=powerpc64le ;;
346+
riscv64)
347+
ARCH=riscv64 ;;
346348
esac
347349
CFLAGS="-O2 ${CFLAGS}"
348350
if test -n "${ARCHS}"; then
@@ -1967,6 +1969,39 @@ EOF
19671969
fi
19681970
fi
19691971
;;
1972+
riscv64)
1973+
[ ! -z $CROSS_PREFIX ] && QEMU_ARCH=riscv64
1974+
ARCHDIR=arch/riscv
1975+
1976+
if test $without_optimizations -eq 0; then
1977+
# Check for RVV (RISC-V Vector Extension) support
1978+
cat > $test.c << EOF
1979+
#include <riscv_vector.h>
1980+
void foo(void) {
1981+
size_t vl = __riscv_vsetvlmax_e8m1();
1982+
vuint8m1_t v = __riscv_vmv_v_x_u8m1(0, vl);
1983+
}
1984+
EOF
1985+
if try $CC -march=rv64gcv $CFLAGS $test.c -c $test; then
1986+
HAVE_RVV=1
1987+
echo "Check whether RISC-V Vector Extension (RVV) is available ... Yes." | tee -a configure.log
1988+
1989+
CFLAGS="${CFLAGS} -DRISCV_FEATURES -DRISCV_RVV"
1990+
SFLAGS="${SFLAGS} -DRISCV_FEATURES -DRISCV_RVV"
1991+
1992+
ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} riscv_features.o"
1993+
ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} riscv_features.lo"
1994+
1995+
ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} adler32_rvv.o chunkset_rvv.o compare256_rvv.o slide_hash_rvv.o"
1996+
ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} adler32_rvv.lo chunkset_rvv.lo compare256_rvv.lo slide_hash_rvv.lo"
1997+
1998+
ARCH="${ARCH}+rvv"
1999+
else
2000+
HAVE_RVV=0
2001+
echo "Check whether RISC-V Vector Extension (RVV) is available ... No." | tee -a configure.log
2002+
fi
2003+
fi
2004+
;;
19702005
s390x)
19712006
[ ! -z $CROSS_PREFIX ] && QEMU_ARCH=s390x
19722007
ARCHDIR=arch/s390

0 commit comments

Comments
 (0)