From b1a912a8a6ff472a49b2e0a09cfd433adfc2cb24 Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Sat, 18 May 2024 21:53:38 -0400 Subject: reorganization, cross compiler --- readme.txt | 104 ++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 65 insertions(+), 39 deletions(-) (limited to 'readme.txt') diff --git a/readme.txt b/readme.txt index bdd8e45..d48c43c 100644 --- a/readme.txt +++ b/readme.txt @@ -1,48 +1,74 @@ -hilbert os is a 64-bit hobby operating system, which is not -very mature yet. to build and test it, you will need some -dependencies. these can be installed on debian with: - apt install g++ gcc gdb git make nasm qemu-system-x86 xorriso +hilbert os is a 64-bit hobby operating system, which is not very mature yet. to +build and test it, you will need some software installed. on debian, i believe +running command [1] below as root (e.g. with sudo) is sufficient. the default +makefile target builds a disk image at build/disk.iso that can be booted on a +64-bit bios system. you can use command [2] to build that. finally, use command +[3] to run the disk in qemu with gdb attached. -then, just run "make -jx", replacing x with the number of threads to use -while building. this will create a bios-bootable disk image in out/disk.iso. -you can then test it in qemu with gdb attached by running "make run". + [1] apt install g++ gdb git make nasm qemu-system-x86 xorriso + [2] make -j$(nproc) + [3] make run -acknowledgements (* = downloaded during make): +acknowledgements (any under "dependencies" are downloaded during build): - - limine bootloader* - homepage: https://limine-bootloader.org/ - license: limine/COPYING (bsd two-clause) + - dependencies/binutils (gnu binutils v2.42) + copyright 2024 free software foundation, inc. + license: dependencies/binutils/COPYING (gnu gpl v2) + homepage: https://www.gnu.org/software/binutils/ + note: the patch in patches/binutils.txt is applied before building - - terminus font - homepage: https://terminus-font.sourceforge.net/ - license: terminus/license.txt (sil open font license v1.1) + - dependencies/gcc (gnu compiler collection v14.1.0) + copyright 2024 free software foundation, inc. + license: + dependencies/gcc/COPYING3 (gnu gpl v3) + dependencies/gcc/COPYING.RUNTIME (gcc runtime library exception v3.1) + homepage: https://gcc.gnu.org/ - - photo at skeleton/assets/burdon.ppm - photographer: aaron burdon - source: https://unsplash.com/photos/selective-focus-photography-snowflakes-9yhy1FXlKwI - license: https://unsplash.com/license + - dependencies/limine (limine bootloader v7.5.1) + copyright 2019 - 2024 mintsuki and contributors + license: dependencies/limine/COPYING (bsd two-clause) + homepage: https://limine-bootloader.org/ - - mintsuki's freestanding c headers* - homepage: https://github.com/mintsuki/freestanding-headers - license: mintsuki-freestanding-headers/LICENSE (bsd zero-clause) + - dependencies/minstuki-headers + copyright 2022 - 2024 mintsuki and contributors + license: dependencies/mintsuki-headers/LICENSE (bsd zero-clause) + homepage: https://github.com/mintsuki/freestanding-headers/ + + - skeleton/assets/burden.ppm + ("selective focus photography snowflakes" by aaron burden) + license: https://unsplash.com/license + source: https://unsplash.com/photos/selective-focus-photography-snowflakes-9yhy1FXlKwI + +everything in the following directories is copyright 2024 benji dial, under the +license in license.txt (the isc license): + + - applications + - euler + - kernel + - libraries project structure: - - applications/init: the first application started by the kernel - - applications/link.ld: a common linker script used by every application - - documentation: documentation on the kernel (not very organized) - - kernel: the kernel of hilbert os - - libraries/daguerre: an image loading / rendering library - - libraries/euler: the c++ standard library and runtime for applications - - limine: the limine bootloader (see acknowledgements) - - mintsuki-freestanding-headers: - mintsuki's freestanding headers (see acknowledgements) - - obj: built object files - - out: completed builds - - skeleton: files that are directly copied to the initfs - - terminus: the terminus font (see acknowledgements) - - license.txt: the license that hilbert os is under - - limine.cfg: the limine configuration used by the built disk - - makefile: the makefile that is used to build the entire os - - qmeu.gdb: a file for gdb to include when doing make run - - readme.txt: this file + - applications/init: + the initial program loaded by the kernel. currently it displays the image + by aaron burden, and inverts the colors when the enter key is pressed. + + - documentation: + documentation. currently this directory is a bit disorganized, and has + some descriptions of things that have not been created yet. + + - euler: + (a minimal start to) a c/c++ standard library and runtime. the plan is to + follow the c++17 standard, and only add things as i need them. + + - kernel: + the kernel. + + - libraries/daguerre: + an image loading / rendering library. + + - patches/binutils.txt: + a patch that is applied to gnu binutils before it is built. + + - skeleton: + files that are copied directly to the initfs. -- cgit v1.2.3