summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorclaude <[email protected]>2026-07-12 01:19:32 +0000
committerclaude <[email protected]>2026-07-12 01:19:32 +0000
commita4dce7f4d920e492d38c32ad3e42efdcfef3b3f1 (patch)
treeb0a0ad513792f5c0ddc524d67f6ab89e2044c642 /README.md
downloadplan9-kencc-linux-a4dce7f4d920e492d38c32ad3e42efdcfef3b3f1.tar.gz
plan9-kencc-linux-a4dce7f4d920e492d38c32ad3e42efdcfef3b3f1.zip
🌭 plan9-kencc-linux: кросс-Ρ‚ΡƒΠ»Ρ‡Π΅ΠΉΠ½ Plan9 (cc/as/ld) + EFI-Π±ΠΎΠ»Π²Π°Π½ΠΊΠ°
- build_arch.sh / build_al.sh: сборка kencc-компиляторов, ассСмблСров, Π»ΠΈΠ½ΠΊΠ΅Ρ€ΠΎΠ² всСх Π°Ρ€ΠΎΠΊ (5/6/8/v/q/k) Π½Π° Linux-хостС Ρ‡Π΅Ρ€Π΅Π· plan9port. - ΠΏΠ°Ρ‚Ρ‡ΠΈ ΠΏΠΎΠ΄ musl/gcc: sbrk->mmap, round/log2->p9*, Runemask, swcmp const, -fcommon, machcap/omachcap, /sys Ρ€Π°Π½Ρ‚Π°ΠΉΠΌ-Ρ„Π°ΠΉΠ»Ρ‹. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² PATCHES.md. - bin/: Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ 8c 6c 5c vc qc kc + 6a 6l (Linux/musl x86_64). - efi/: Π±ΠΎΠ»Π²Π°Π½ΠΎΡ‡Π½Ρ‹ΠΉ bootx64.efi (PE32+) Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ‚ΡƒΠ»Ρ‡Π΅ΠΉΠ½ΠΎΠΌ (6a+6c+6l+dd), рСфСрСнс β€” 9legacy nboot/efi; ESP-ΠΎΠ±Ρ€Π°Π· Ρ‡Π΅Ρ€Π΅Π· mkesp.py. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Diffstat (limited to 'README.md')
-rw-r--r--README.md75
1 files changed, 75 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ba80bb4
--- /dev/null
+++ b/README.md
@@ -0,0 +1,75 @@
+# plan9-kencc-linux
+
+ΠšΡ€ΠΎΡΡ-сборка **компиляторов / ассСмблСров / Π»ΠΈΠ½ΠΊΠ΅Ρ€ΠΎΠ² Plan 9 (kencc)** для всСх
+Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ **с Linux-хоста**, плюс Π±ΠΎΠ»Π²Π°Π½ΠΎΡ‡Π½ΠΎΠ΅ **UEFI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅** (PE32+),
+собранноС этим ΠΆΠ΅ Ρ‚ΡƒΠ»Ρ‡Π΅ΠΉΠ½ΠΎΠΌ. НичСго юниксового Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ сборки самих `.efi`.
+
+Π‘ΠΎΠ±Ρ€Π°Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Π½Π° Linux/musl. Пилилось Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-Π±ΠΎΡ‚ΠΎΠΌ (Claude) ΠΏΠΎ Π·Π°ΠΊΠ°Π·Ρƒ
+Ρ‡Π°Ρ‚Π° ancap.in.ua.
+
+## Π§Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ
+```
+bin/ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€ΠΈ: 8c 6c 5c vc qc kc (компиляторы) + 6a 6l
+scripts/
+ setup.sh ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ plan9foundation + plan9port, собираСт plan9port
+ build_arch.sh <X> собираСт C-компилятор Π°Ρ€ΠΊΠΈ X (5|6|8|v|q|k)
+ build_al.sh <Xa|Xl> собираСт ассСмблСр/Π»ΠΈΠ½ΠΊΠ΅Ρ€
+ build_all.sh собираСт вСсь кросс-ΠΊΠΈΡ‚
+efi/
+ hello.c сам EFI-апп (наш код)
+ fetch_ref.sh тянСт pe64.s/efi.h/mem.h ΠΈΠ· 9legacy (nboot/efi)
+ efi_build.sh 6a+6c+6l -> dd -> bootx64.efi (PE32+)
+ mkesp.py Π·Π°Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ .efi Π² Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ ESP (FAT16)
+patches/ ΠΏΠ°Ρ‚Ρ‡ΠΈ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€Π°Π²ΠΊΠ΅ (докумСнтация)
+PATCHES.md ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‡ Π½ΡƒΠΆΠ΅Π½
+```
+
+## ИдСя
+Π€Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-компилятора Plan 9 (`cc/`) + ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π°Ρ€ΠΎΠΊ (`5c`,`6c`,`8c`,`vc`,`qc`,`kc`)
+ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π½Π° Plan 9 C ΠΈ рассчитаны Π½Π° Ρ€ΠΎΠ΄Π½ΡƒΡŽ сборку Π² Plan 9. ΠœΡ‹ собираСм ΠΈΡ… Π½Π° Linux,
+компилируя **plan9port**-овским `9c`/`9l` (ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚ `lib9`/`libbio`/`libmach` ΠΈ
+Π΄Ρ€ΡƒΠΆΠ°Ρ‚ с хостовым gcc/musl). Всё, Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚, лСчится нСбольшими ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ (см. `PATCHES.md`).
+
+| Π°Ρ€ΠΊΠ° | ΠΊΠΎΠΌΠΏ | ассСмблСр | Π»ΠΈΠ½ΠΊΠ΅Ρ€ |
+|------|------|-----------|--------|
+| 386 | 8c | 8a | 8l |
+| amd64 | 6c | 6a | 6l |
+| arm | 5c | 5a | 5l |
+| mips | vc | va | vl |
+| power | qc | qa | ql |
+| sparc | kc | ka | kl |
+
+## Быстрый старт
+```sh
+# 1. зависимости (plan9foundation + plan9port)
+bash scripts/setup.sh
+export PLAN9SRC=$PWD/deps/plan9foundation
+export PLAN9PORT=$PWD/deps/plan9port
+# (ΠΎΠΏΡ†. musl: export MUSL_ENV=/path/to/env.sh)
+
+# 2. ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всё
+bash scripts/build_all.sh # -> build/*/{6c,6a,6l,...}
+
+# 3. ΠΎΠ΄ΠΈΠ½ компилятор
+bash scripts/build_arch.sh 6 # -> build/6c/6c
+
+# 4. ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ
+echo 'int f(void){return 42;}' > t.c
+build/6c/6c t.c && ls t.6 # ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΈΠΊ Plan9 .6
+```
+
+## EFI-Π±ΠΎΠ»Π²Π°Π½ΠΊΠ°
+```sh
+cd efi
+./fetch_ref.sh # pe64.s/efi.h/mem.h ΠΈΠ· 9legacy
+PLAN9SRC=$PWD/../deps/plan9foundation ./efi_build.sh
+# -> bootx64.efi : PE32+ x64 EFI_APPLICATION
+python3 mkesp.py bootx64.efi esp.img # -> Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ ESP (/EFI/BOOT/BOOTX64.EFI)
+# запуск: qemu-system-x86_64 -bios OVMF.fd -drive format=raw,file=esp.img
+```
+
+## Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€ΠΈ
+Π’ `bin/` Π»Π΅ΠΆΠ°Ρ‚ ΡƒΠΆΠ΅ собранныС компиляторы/асм/Π»ΠΈΠ½ΠΊΠ΅Ρ€ (Linux/musl x86_64).
+Под свой хост пСрСсобСри скриптами β€” Π±Π°ΠΉΡ‚-Π²-Π±Π°ΠΉΡ‚ воспроизводимо.
+
+Π›ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΈ авторство исходников β€” см. `NOTICE`.