This repository contains build scripts for the docker image with Hooks C compiler and Language Server, git submodules of the projects actually going into the image and their web API.
Running make
in this directory after checkout should produce the
image, but
-
It must be run as root (or at least an account privileged enough to build & run docker containers), and
-
checking out the submodules as root writes files into the .git directory that non-priviledged users cannot update,
so it's recommended to split the build into 2 steps:
$ make checkout
# make build
The final container is called xrpl-hooks-compiler
and can be run by
the run
target of Makefile in the docker directory.
Building LLVM (twice - the current setup shares LLVM repo but not the
build directory between clang & clangd) takes hours, and might not
even work on computers with less than 8GB of memory (16GB is better),
so the LLVM binaries are maintained in releases of
xrpl-hooks-compiler.
These binaries can be extracted from the file bin.zip in the top-level
directory, providing the results of running make
in clang-build,
clangd-build and cleaner-build directories, so that running the
top-level make build
target can be replaced by running just the
(default) make build
target in the docker directory. This also
allows skipping the checkout of the llvm-project
, wasi-sdk
and
hook-cleaner-c
submodules.
This project includes node.js endpoint where you can send c files and it will return compiled binary as a response. Development of this api happens under c2wasm-api folder. c2wasm-api folder contains README.md which has further information about the project.
Make sure you have Docker installed. Clone this project. Download latest bin.zip file from the releases of this GitHub repository, put it project root and unzip:
unzip bin.zip
- CD to docker folder
cd docker
- Run
make c2wasm-api && make clangd && make wasi-sdk && make hook-cleaner
- Run
docker-compose build
- Run
docker-compose up
ordocker-compose up -d
- This should start server at port
:9000
, the actual compiling endpoint is this: http://localhost:9000/api/build. Note that it takes a while to start.