summaryrefslogtreecommitdiff
path: root/readme.txt
blob: 331d76759215ebac698a9e2832e9ebb8ae029852 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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.

  [1] apt install g++ gdb git make nasm qemu-system-x86 xorriso
  [2] make -j$(nproc)
  [3] make run

acknowledgements (any under "dependencies" are downloaded during build):

  - 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/

  - 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/
      i patch the output <memory> header file from libstdc++ with
        patches/gcc-memory.patch to include my std::allocator implementation.

  - 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/

  - dependencies/minstuki-headers
      copyright 2022 - 2024 mintsuki and contributors
      license: dependencies/mintsuki-headers/LICENSE (bsd zero-clause)
      homepage: https://github.com/osdev0/freestanding-headers/
      i patch the <stddef.h> header file with patches/minstuki-stddef.patch
        to add a max_align_t type to make libstdc++ happy. i use the commit
        dd3abd2d7147efc4170dff478d3b7730bed14147 so i don't have to worry
        about that file changing in a future commit.

  - 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

  - skeleton/assets/terminus-bold-18x10.psf (terminus font, bold, 18x10)
      copyright 2020 dimitar toshkov zhekov
      license: skeleton/assets/terminus-ofl.txt (sil open font license v1.1)
      homepage: https://terminus-font.sourceforge.net/

the following directories and files are copyright 2024 benji dial, under the
license in isc.txt (isc license):

  - applications
  - euler
  - kernel
  - libraries
  - makefile

the following directories and files are copyright 2024 benji dial, under the
license in cc-by.txt (creative commons attribution 4.0 international):

  - skeleton/assets/pointer.ppm

project structure:

  - applications/goldman:
      in the future, this will be the default compositor.

  - applications/init:
      the initial program loaded by the kernel. currently it just
      (attempts to) start /bin/compositor and then /bin/hello.

  - 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++20 standard library, plus some hilbert
      specific functions. this uses the freestanding part of libstdc++.

  - kernel:
      the kernel.

  - libraries/daguerre:
      an image loading / rendering library.

  - patches:
      a couple patches that are applied to dependencies

  - skeleton:
      files that are copied directly to the initfs.