FROM alpine:edge

# Download ARM toolkit.
RUN apk add --no-cache gcc-arm-none-eabi gcc

# Create volume /havoc/bin for compiled firmware binaries
VOLUME /havoc
WORKDIR /havoc/firmware

# Fetch dependencies from APK
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
RUN apk update -U
RUN apk add --no-cache git tar wget cmake curl bzip2 lz4 make
RUN apk add --no-cache dfu-util ccache icu-data-full
RUN apk add --no-cache python3 py3-pip py3-yaml
RUN apk add --no-cache py3-pyyaml-env-tag
RUN apk add --no-cache g++ gcc clang clang-static clang-dev llvm-dev llvm-static

ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8

# Configure CCACHE
RUN mkdir ~/bin && cd ~/bin && \
    for tool in gcc g++ cpp c++;do ln -s $(which ccache) arm-none-eabi-$tool;done

CMD cd .. && cd build && \
    cmake .. && make firmware