Skip to content

Commit

Permalink
Build with dockererized llvm
Browse files Browse the repository at this point in the history
  • Loading branch information
jackcmay committed Nov 26, 2018
1 parent 0cbce41 commit 7152f29
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 16 deletions.
22 changes: 6 additions & 16 deletions ci/docker-llvm/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# This docker file is based on the llvm docker file example located here:
# https://github.com/llvm-mirror/llvm/blob/master/utils/docker/debian8/Dockerfile

FROM launcher.gcr.io/google/debian8:latest as builder
LABEL maintainer "Solana Maintainers"

Expand Down Expand Up @@ -28,7 +31,7 @@ RUN wget "https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-li
rm ninja-linux.zip

# Import public key required for verifying signature of cmake download.
RUN gpg --keyserver hkp://pgp.mit.edu --recv 0x2D2CEF1034921684
RUN gpg --no-tty --keyserver hkp://pgp.mit.edu --recv 0x2D2CEF1034921684

# Download, verify and install cmake version that can compile clang into /usr/local.
# (Version in debian8 repos is too old)
Expand All @@ -48,30 +51,17 @@ RUN mkdir /tmp/cmake-install && cd /tmp/cmake-install && \
# Checkout the source code
RUN git clone https://github.com/solana-labs/llvm.git && \
git clone https://github.com/solana-labs/clang.git llvm/tools/clang && \
git clone http://llvm.org/git/clang-tools-extra.git llvm/tools/clang/tools/extra && \
git clone https://github.com/solana-labs/clang-tools-extra.git llvm/tools/clang/tools/extra && \
git clone https://github.com/solana-labs/lld.git llvm/tools/lld && \
git clone http://llvm.org/git/compiler-rt.git llvm/projects/compiler-rt
git clone https://github.com/solana-labs/compiler-rt.git llvm/projects/compiler-rt

RUN mkdir /llvm/build && \
cd /llvm/build && \
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=$HOME/local -G "Ninja" .. && \
ninja -j6 && \
ninja install

# RUN cd /llvm/build && \
# cmake -G "Unix Makefiles" ..

# RUN cd /llvm/build/tools/clang/ && \
# make -j 6 install

# RUN cd /llvm/build/tools/lld/ && \
# make -j 6 install

# RUN cd /llmv/build/tools/llvm-objdump/ && \
# make -j 6 install

# Produce stage 2 docker with just the peices needed
FROM launcher.gcr.io/google/debian8:latest
LABEL maintainer "Solana Maintainers"

COPY --from=builder root/local/bin /usr/local/bin
4 changes: 4 additions & 0 deletions programs/bpf/c/sdk/bpf.mk
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,14 @@ INC_DIRS ?=
SRC_DIR ?= ./src
OUT_DIR ?= ./out

ifeq ($(USE_DOCKER),1)
LLVM_DIR = $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/llvm-wrappers
else
OS=$(shell uname)
ifeq ($(OS),Darwin)
LLVM_DIR ?= $(shell brew --prefix llvm)
endif
endif

ifdef LLVM_DIR
CC := $(LLVM_DIR)/bin/clang
Expand Down
6 changes: 6 additions & 0 deletions programs/bpf/c/sdk/llvm-wrappers/bin/clang
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

set -ex


docker run --workdir /solana_sdk --volume /Users/jack/sandbox/git/solana/programs/bpf/c:/solana_sdk --rm solanalabs/llvm `basename "$0"` "$@"
6 changes: 6 additions & 0 deletions programs/bpf/c/sdk/llvm-wrappers/bin/clang++
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

set -ex


docker run --workdir /solana_sdk --volume /Users/jack/sandbox/git/solana/programs/bpf/c:/solana_sdk --rm solanalabs/llvm `basename "$0"` "$@"
6 changes: 6 additions & 0 deletions programs/bpf/c/sdk/llvm-wrappers/bin/llc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

set -ex


docker run --workdir /solana_sdk --volume /Users/jack/sandbox/git/solana/programs/bpf/c:/solana_sdk --rm solanalabs/llvm `basename "$0"` "$@"
6 changes: 6 additions & 0 deletions programs/bpf/c/sdk/llvm-wrappers/bin/llvm-objdump
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

set -ex


docker run --workdir /solana_sdk --volume /Users/jack/sandbox/git/solana/programs/bpf/c:/solana_sdk --rm solanalabs/llvm `basename "$0"` "$@"
7 changes: 7 additions & 0 deletions programs/bpf/c/sdk/llvm-wrappers/utils/copy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env bash

mkdir -p ../bin
cp llvm.sh ../bin/clang
cp llvm.sh ../bin/clang++
cp llvm.sh ../bin/llc
cp llvm.sh ../bin/llvm-objdump
6 changes: 6 additions & 0 deletions programs/bpf/c/sdk/llvm-wrappers/utils/llvm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

set -ex


docker run --workdir /solana_sdk --volume /Users/jack/sandbox/git/solana/programs/bpf/c:/solana_sdk --rm solanalabs/llvm `basename "$0"` "$@"

0 comments on commit 7152f29

Please sign in to comment.