-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
43 lines (35 loc) · 1.63 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# Use an Ubuntu base image
FROM ubuntu:20.04
ENV SDK_URL="https://github.com/milkv-duo/duo-app-sdk/releases/download/duo-app-sdk-v1.2.0/duo-sdk-v1.2.0.tar.gz"
ENV TOOLCHAIN_FILE=/CMakeToolchain.txt
ENV DEBIAN_FRONTEND=non-interactive
ENV BUILD_OUTPUT=/build-output
RUN apt-get update \
&& apt-get install -y \
wget git make build-essential libtool \
cmake pkg-config
#Make a libs output directory for our builds
RUN mkdir -p $BUILD_OUTPUT/bin
ENV CC=riscv64-unknown-linux-musl-gcc
ENV MILKV_DUO_SDK=/duo-sdk
ENV TOOLCHAIN_DIR=${MILKV_DUO_SDK}/riscv64-linux-musl-x86_64
ENV TOOLCHAIN_PREFIX=${TOOLCHAIN_DIR}/bin/riscv64-unknown-linux-musl-
ENV SYSROOT=${MILKV_DUO_SDK}/rootfs
ENV LDFLAGS="-mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d -L$BUILD_OUTPUT/lib -Wl,-rpath-link,$BUILD_OUTPUT/lib"
ENV CFLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
ENV CXXFLAGS="-Wall -O3 -mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d"
ENV PATH="$PATH:${TOOLCHAIN_DIR}/bin"
ENV CPPFLAGS="-I$BUILD_OUTPUT/include"
ENV LD_LIBRARY_PATH="$BUILD_OUTPUT/lib"
#Download and install SDK
RUN wget ${SDK_URL} -O duo-sdk.tar.gz
RUN tar -xzf duo-sdk.tar.gz
RUN rm -r duo-sdk.tar.gz
# Create the toolchain file for CMake
RUN echo "set(CMAKE_SYSTEM_NAME Linux)" >> $TOOLCHAIN_FILE
RUN echo "set(CMAKE_SYSTEM_PROCESSOR riscv64)" >> $TOOLCHAIN_FILE
RUN echo "set(CMAKE_CROSSCOMPILING TRUE)" >> $TOOLCHAIN_FILE
RUN echo "set(CMAKE_C_COMPILER riscv64-unknown-linux-musl-gcc)" >> $TOOLCHAIN_FILE
RUN echo "set(CMAKE_CXX_COMPILER riscv64-unknown-linux-musl-g++)" >> $TOOLCHAIN_FILE
#Default to a bash session.
CMD bash