mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
2cc8dafd4c
These don't test anything that isn't covered by higher level tox tests. These are also not unit tests and have never found any bug that wasn't also caught by other tests. This makes them a pure maintenance burden.
96 lines
2.5 KiB
Docker
96 lines
2.5 KiB
Docker
FROM ubuntu:20.04
|
|
|
|
ENV DEBIAN_FRONTEND="noninteractive"
|
|
|
|
# Install dependencies.
|
|
RUN apt-get update && apt-get install --no-install-recommends -y \
|
|
autoconf \
|
|
automake \
|
|
ca-certificates \
|
|
cmake \
|
|
curl \
|
|
git \
|
|
libtool \
|
|
make \
|
|
ninja-build \
|
|
pkg-config \
|
|
python3 \
|
|
unzip \
|
|
wget \
|
|
xz-utils \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /work/emsdk
|
|
RUN git clone --depth=1 https://github.com/emscripten-core/emsdk /work/emsdk \
|
|
&& ./emsdk install 3.1.3 \
|
|
&& ./emsdk activate 3.1.3
|
|
|
|
# Build libsodium.
|
|
RUN . "/work/emsdk/emsdk_env.sh" \
|
|
&& git clone --depth=1 --branch=1.0.18 https://github.com/jedisct1/libsodium /work/libsodium \
|
|
&& cd /work/libsodium \
|
|
&& autoreconf -fi \
|
|
&& emconfigure ./configure --disable-shared \
|
|
--without-pthreads \
|
|
--disable-ssp --disable-asm --disable-pie \
|
|
&& emmake make install -j8
|
|
|
|
# Build msgpack.
|
|
RUN . "/work/emsdk/emsdk_env.sh" \
|
|
&& git clone --depth=1 --branch=c-4.0.0 https://github.com/msgpack/msgpack-c /work/msgpack-c \
|
|
&& cd /work/msgpack-c \
|
|
&& emcmake cmake -B_build -H. -GNinja \
|
|
-DCMAKE_INSTALL_PREFIX:PATH="/usr/local" \
|
|
-DCMAKE_C_FLAGS="-O3 -flto -fPIC" \
|
|
-DBUILD_SHARED_LIBS=OFF \
|
|
&& emmake cmake --build _build --parallel 8 --target install
|
|
|
|
# Build an unused libsodium binding first so emcc caches all the system
|
|
# libraries. This makes rebuilds of toxcore below much faster.
|
|
RUN . "/work/emsdk/emsdk_env.sh" \
|
|
&& mkdir -p /work/wasm \
|
|
&& emcc -O3 -flto \
|
|
--closure=1 \
|
|
-s ALLOW_UNIMPLEMENTED_SYSCALLS=1 \
|
|
-s EXPORT_NAME=libtoxcore \
|
|
-s IGNORE_MISSING_MAIN=1 \
|
|
-s MAIN_MODULE=1 \
|
|
-s MALLOC=emmalloc \
|
|
-s MODULARIZE=1 \
|
|
-s STRICT=1 \
|
|
-s WEBSOCKET_URL=wss:// \
|
|
/usr/local/lib/libsodium.a \
|
|
-o /work/wasm/libsodium.js
|
|
|
|
# Build c-toxcore.
|
|
COPY . /work/c-toxcore
|
|
RUN . "/work/emsdk/emsdk_env.sh" \
|
|
&& cd /work/c-toxcore \
|
|
&& emcmake cmake -B_build -H. -GNinja \
|
|
-DCMAKE_INSTALL_PREFIX:PATH="/usr/local" \
|
|
-DCMAKE_C_FLAGS="-O3 -flto -fPIC" \
|
|
-DBUILD_TOXAV=OFF \
|
|
-DENABLE_SHARED=OFF \
|
|
-DBOOTSTRAP_DAEMON=OFF \
|
|
-DMIN_LOGGER_LEVEL=DEBUG \
|
|
&& emmake cmake --build _build --parallel 8 --target install
|
|
|
|
# Build wasm bindings.
|
|
RUN . "/work/emsdk/emsdk_env.sh" \
|
|
&& mkdir -p /work/wasm \
|
|
&& emcc -O3 -flto \
|
|
--closure=1 \
|
|
-s ALLOW_UNIMPLEMENTED_SYSCALLS=1 \
|
|
-s EXPORT_NAME=libtoxcore \
|
|
-s IGNORE_MISSING_MAIN=1 \
|
|
-s MAIN_MODULE=1 \
|
|
-s MALLOC=emmalloc \
|
|
-s MODULARIZE=1 \
|
|
-s STRICT=1 \
|
|
-s WEBSOCKET_URL=wss:// \
|
|
/usr/local/lib/libmsgpackc.a \
|
|
/usr/local/lib/libsodium.a \
|
|
/usr/local/lib/libtoxcore.a \
|
|
-o /work/wasm/libtoxcore.js
|