# perifirmware/perifirmware.buildenv Bare metal compilation environment for the perfirmware projects for the corePCB `periCore`. ## Creating the image The following command can be used to create an image from the docker file. It is assume the Dockerfile is located in the same directory. ```shell docker build -t arm-none-eabi.buildenv . ``` ## Usage The working directory of the image is `/work`. To use the image call it similar to the following examples: ```shell docker run --rm -v $(pwd):/work --user $(id -u):$(id -g) arm-none-eabi.buildenv make ``` This puts your current work directory into the container, builds your code and afterwards it removes the container. ```shell docker run --rm -v $(pwd):/work --user $(id -u):$(id -g) -it arm-none-eabi.buildenv /bin/bash ``` This puts your current work directory into the container and starts an interactive bash from the container. ## Example output ```shell docker run --rm arm-none-eabi.buildenv arm-none-eabi-gcc --version arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 9-2019-q4-major) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ``` ## Example integration (vscode) For Microsoft's open source visual studio code, the integration of how to invoke make within the docker container is shown in the following excerpt: ```javascript { "version": "2.0.0", "tasks": [ { "label": "build-elf", "command": "docker", "args": ["run","--rm","-v","${workspaceRoot}/Tickless demo:/work","--user","1000:1001","arm-none-eabi.buildenv","make","-C","gcc","-j8"], "type": "process", "group": { "kind": "build", "isDefault": true }, "problemMatcher": { "base": "$gcc", "fileLocation": ["relative", "${workspaceRoot}/Tickless demo/gcc"], }, "runOptions": { "reveal":"always", "focus":false, } }, { "label": "build-elf-clean", "command": "docker", "args": ["run","--rm","-v","${workspaceRoot}/Tickless demo:/work","--user","1000:1001","arm-none-eabi.buildenv","make","-C","gcc","-j8","clean"], "type": "process", "group": { "kind": "build", "isDefault": true }, "problemMatcher": { "base": "$gcc", "fileLocation": ["relative", "${workspaceRoot}/Tickless demo/gcc"], }, }, ] } ```