Skip to content
26 changes: 26 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
FROM buildpack-deps:stretch

RUN \
set -e; \
apt update && apt install -y \
clang \
ninja-build \
cmake; \
cd /root; \
curl -fL http://releases.llvm.org/7.0.1/llvm-7.0.1.src.tar.xz \
| tar xJf -; \
mv /root/llvm-7.0.1.src /root/llvm; \
mkdir -p /root/llvm/build;

COPY . /root/llvm/projects/llvm-cbe/

RUN \
set -e; \
mkdir -p /root/llvm/build; \
cd /root/llvm/build; \
cmake -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..; \
ninja llvm-cbe; \
ninja lli; \
ninja CBEUnitTests; \
/root/llvm/build/projects/llvm-cbe/unittests/CWriterTest; \
ln -s /root/llvm/build/bin/llvm-cbe /bin/llvm-cbe;
27 changes: 27 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
version: "3"

services:
llvm-cbe:
build: .
working_dir: /root
volumes:
- ./test:/test
command: |
bash -c "
set -e;

# Navigate to test folder
cd /test/hello_world;

# Compile main.c to llvm IR
clang -S -emit-llvm main.c;

# Compile llvm IR back to C
llvm-cbe main.ll;

# Compile llvm-cbe generated C code
gcc -g -o main.cbe main.cbe.c;

# Run it
./main.cbe;
"
3 changes: 3 additions & 0 deletions test/hello_world/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*
!.gitignore
!main.c
6 changes: 6 additions & 0 deletions test/hello_world/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#include <stdio.h>

int main() {
printf("Hello, World!\n");
return 0;
}