Add the base containerized c toolchain environment

This commit is contained in:
texhno 2024-02-14 02:58:33 +01:00
parent c5f8da292d
commit 2224ef7879
9 changed files with 55 additions and 2 deletions

0
.gitignore vendored Normal file
View File

View File

@ -20,5 +20,3 @@ Rules:
* Please provide an adequate entry in the Wiki for each non-trivial code contribution. * Please provide an adequate entry in the Wiki for each non-trivial code contribution.
For additional information, please refer to the [Wiki](https://gitea.dmz.rs/sborovic/dmzOS/wiki). For additional information, please refer to the [Wiki](https://gitea.dmz.rs/sborovic/dmzOS/wiki).
TEST

18
TOOLCHAIN.md Normal file
View File

@ -0,0 +1,18 @@
# Instruction on running utilities
## c_toolchain utility docker image
Dockerfile: `dockerfile.c_toolchain`
Run the docker-compose command to get a `bash` shell that is bound to the `dmzOS` directory:
```bash
docker-compose run --rm c_toolchain
```
Any changes in the container shell will be reflected in the local `dmzOS` directory.
The image contains `ident` abd `clang-format` as `C` code formatters. A .vimrc file is automatically part of the image, and it contains a rule to make vim run the following formatting command on buffer save:
```bash
ident -kr -ts4 %
```
This is using the Kernighan and Ritchie code styling, as well as identations with 4 spaces.

7
config/.vimrc Normal file
View File

@ -0,0 +1,7 @@
set nobackup
set nowritebackup
set noswapfile
set autoread
set number relativenumber
autocmd BufWritePost *.[ch] exec "!indent -kr -nut % && rm %~"

BIN
dmzOS/test/clang_test Executable file

Binary file not shown.

BIN
dmzOS/test/gcc_test Executable file

Binary file not shown.

12
dmzOS/test/test.c Normal file
View File

@ -0,0 +1,12 @@
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
if (argc < 2) {
printf("Please provide at least one argument\n");
exit(1);
};
printf("Hello, C!\n");
return 0;
}

12
docker-compose.yml Normal file
View File

@ -0,0 +1,12 @@
version: '3.8'
services:
c_toolchain:
build:
context: ./
dockerfile: dockerfile.c_toolchain
container_name: c_toolchain
tty: true
stdin_open: true
volumes:
- ./dmzOS:/dmzOS

6
dockerfile.c_toolchain Normal file
View File

@ -0,0 +1,6 @@
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y vim gcc indent clang clang-format gdb binutils
WORKDIR /dmzOS
#Getting prebuilt binary from llvm
COPY ./config/* /root
ENTRYPOINT [ "bash" ]