Development environment setup¶
Clone the repository:
git clone https://github.com/Muzuwi/MuOS.git
cd MuOS/
export MUREPO=${PWD}
Further in the documentation, any references to ${MUREPO}
shall refer to the root directory of the cloned repository.
Preparing the toolchain¶
The project requires a custom toolchain to be built in order to build the kernel/userland. To do this, you can either use the pre-built toolchain Docker image, or compile the toolchain yourself.
Building the toolchain¶
Requirements¶
To compile GCC/binutils, you need to have the following:
libmpfr
libmpc
Procedure¶
Compiling and installing the toolchain can be done by doing the following (it is assumed that you’re in the repository root already):
cd Toolchain/src/
./download-archives.sh
./make-binutils.sh
./make-gcc.sh
This downloads the required GCC/binutils archives, applies the required patches, and then builds/installs the tools into the proper prefix directory.
The prefix directory is by default set to /usr/local/muOS
.
For now, changing the prefix directory is only possible by modifying the path in all CMakeLists and the build scripts for binutils/GCC, which is a bit of a hassle. It is recommended to stick to the default path for now, until a better way of customizing it is implemented.
If you encounter problems during the installation phase, make sure that /usr/local/muOS
is accessible for the build user (for example: by creating that directory and chmod
’ing it to belong to the current user).
Development using an IDE¶
VSCode¶
Open the repository folder in VSCode, and you should get autocompletion automatically. This requires the following extensions:
clangd
CMake
Note
When using VSCode for development, the workspace configuration assumes the prefix directory /usr/local/muOS
contains the toolchain.
The CMake configuration for the build utilizes globs, so if something isn’t behaving correctly, make sure you perform a CMake Clean
followed by a CMake Configure
to pick up new source files.