Builds newlib, libc++abi, and libc++ for OS development. Built libraries are for x86_64-elf target.
124
To build libraries:
docker pull uchannos/stdlib-builder
docker run uchannos/stdlib-builder
docker cp CONTAINER_ID:/usr/local/x86_64-elf ./
docker pull uchannos/stdlib-builder pulls a docker image from docker hub.
docker run uchannos/stdlib-builder creates a container from the image, and starts the container.
docker cp CONTAINER_ID:/usr/local/x86_64-elf ./ takes library files out of the container.
Dockerfile for this docker image:
FROM debian:stable
WORKDIR /usr/local/src
ADD . /usr/local/src
RUN apt-get update && apt-get install -y --no-install-recommends git-core subversion make cmake clang python ca-certificates
CMD ["/usr/local/src/build-stdlib.sh"]
build-stdlib.sh which is added by the Dockerfile:
#!/bin/sh -eux
BASEDIR=/usr/local/src
PREFIX=/usr/local/x86_64-elf
COMMON_CFLAGS="-nostdlibinc -O2 -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS"
CC=clang
CXX=clang++
TARGET_TRIPLE=x86_64-elf
cd $BASEDIR
git clone --depth 1 --branch fix-build https://github.com/uchan-nos/newlib-cygwin.git
cd $BASEDIR
mkdir build_newlib
cd build_newlib
../newlib-cygwin/newlib/configure \
CC=$CC \
CC_FOR_BUILD=$CC \
CFLAGS="-fPIC $COMMON_CFLAGS" \
--target=$TARGET_TRIPLE --prefix=$PREFIX --disable-multilib --disable-newlib-multithread
make -j 4
make install
cd $BASEDIR
git clone --depth 1 --branch llvmorg-7.0.1 https://github.com/llvm/llvm-project.git
cd $BASEDIR
mkdir build_libcxxabi
cd build_libcxxabi
cmake -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DCMAKE_CXX_COMPILER=$CXX \
-DCMAKE_CXX_FLAGS="-I$PREFIX/include $COMMON_CFLAGS -D_LIBCPP_HAS_NO_THREADS" \
-DCMAKE_C_COMPILER=$CC \
-DCMAKE_C_FLAGS="-I$PREFIX/include $COMMON_CFLAGS -D_LIBCPP_HAS_NO_THREADS" \
-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \
-DCMAKE_BUILD_TYPE=Release \
-DLIBCXXABI_LIBCXX_INCLUDES="$BASEDIR/llvm-project/libcxx/include" \
-DLIBCXXABI_ENABLE_EXCEPTIONS=False \
-DLIBCXXABI_ENABLE_THREADS=False \
-DLIBCXXABI_TARGET_TRIPLE=$TARGET_TRIPLE \
-DLIBCXXABI_ENABLE_SHARED=False \
-DLIBCXXABI_ENABLE_STATIC=True \
$BASEDIR/llvm-project/libcxxabi
make -j4
make install
cd $BASEDIR
mkdir build_libcxx
cmake -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DCMAKE_CXX_COMPILER=$CXX \
-DCMAKE_CXX_FLAGS="-I$PREFIX/include $COMMON_CFLAGS" \
-DCMAKE_CXX_COMPILER_TARGET=$TARGET_TRIPLE \
-DCMAKE_C_COMPILER=$CC \
-DCMAKE_C_FLAGS="-I$PREFIX/include $COMMON_CFLAGS" \
-DCMAKE_C_COMPILER_TARGET=$TARGET_TRIPLE \
-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \
-DCMAKE_BUILD_TYPE=Release \
-DLIBCXX_CXX_ABI=libcxxabi \
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$BASEDIR/llvm-project/libcxxabi/include" \
-DLIBCXX_CXX_ABI_LIBRARY_PATH="$PREFIX/lib" \
-DLIBCXX_ENABLE_EXCEPTIONS=False \
-DLIBCXX_ENABLE_FILESYSTEM=False \
-DLIBCXX_ENABLE_MONOTONIC_CLOCK=False \
-DLIBCXX_ENABLE_RTTI=False \
-DLIBCXX_ENABLE_THREADS=False \
-DLIBCXX_ENABLE_SHARED=False \
-DLIBCXX_ENABLE_STATIC=True \
$BASEDIR/llvm-project/libcxx
make -j4
make install
Content type
Image
Digest
Size
219.9 MB
Last updated
about 7 years ago
docker pull uchannos/stdlib-builder:1.1