-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
81 lines (67 loc) · 2.33 KB
/
Copy pathMakefile
File metadata and controls
81 lines (67 loc) · 2.33 KB
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
# Copyright (c) 2026 Christiaan (chris@boreddev.nl)
# BoredOS Core & Network Utilities Makefile
CC = x86_64-elf-gcc
LD = x86_64-elf-ld
# Smart SDK Resolution Logic
ifneq ($(BOREDOS_SDK),)
ifeq ($(wildcard $(BOREDOS_SDK)/lib/libc.a),)
BOOTSTRAP_SDK = $(BOREDOS_SDK)
SDK_PATH = $(BOREDOS_SDK)
else
SDK_PATH = $(BOREDOS_SDK)
endif
endif
# If SDK is still unresolved, fall back to a local standalone build folder
ifeq ($(SDK_PATH),)
SDK_PATH = $(abspath build/sdk)
ifeq ($(wildcard $(SDK_PATH)/lib/libc.a),)
BOOTSTRAP_SDK = $(SDK_PATH)
endif
endif
DESTDIR ?= $(abspath build/dist)
CFLAGS = -Wall -Wextra -std=gnu11 -ffreestanding -O2 -fno-stack-protector \
-fno-stack-check -fno-lto -fno-pie -m64 -march=x86-64 -mno-red-zone \
-isystem $(SDK_PATH)/include
LDFLAGS = -m elf_x86_64 -nostdlib -static -no-pie -Ttext=0x40000000 \
--no-dynamic-linker -z text -z max-page-size=0x1000 -e _start \
-L$(SDK_PATH)/lib
# Complete list of standard and system status utilities
UTILS = clear echo grep cowsay sysfetch fdisk df du ps pwd rescan rev tail tar tty uname \
lsblk meminfo pci_list uptime beep reboot shutdown crash \
math fbtest find head help hexdump kill mkfs_fat loadkeys pidbench
ELFS = $(patsubst %, %.elf, $(UTILS))
CONFS = assets/sysfetch.cfg
ARTS = assets/boredos.txt
all: bootstrap-sdk $(ELFS)
# Autonomic SDK Bootstrapper
.PHONY: bootstrap-sdk
bootstrap-sdk:
ifdef BOOTSTRAP_SDK
@if [ ! -f "$(BOOTSTRAP_SDK)/lib/libc.a" ]; then \
if [ -d "../libc" ]; then \
echo "[STANDALONE] Peer libc found at ../libc. Building standard SDK..."; \
$(MAKE) -C ../libc SDK_DIR=$(BOOTSTRAP_SDK) install; \
else \
echo "[STANDALONE] SDK and peer libc not found. Fetching libc from GitHub..."; \
mkdir -p build; \
if [ ! -d "build/libc_src" ]; then \
git clone https://github.com/boredos/libc.git build/libc_src; \
fi; \
$(MAKE) -C build/libc_src SDK_DIR=$(BOOTSTRAP_SDK) install; \
fi \
fi
endif
%.elf: obj/%.o
$(LD) $(LDFLAGS) $(SDK_PATH)/lib/crt0.o $< -lc -o $@
obj/%.o: src/%.c
@mkdir -p obj
$(CC) $(CFLAGS) -c $< -o $@
install: all
mkdir -p $(DESTDIR)/bin
cp $(ELFS) $(DESTDIR)/bin/
mkdir -p $(DESTDIR)/Library/conf
cp $(CONFS) $(DESTDIR)/Library/conf/
mkdir -p $(DESTDIR)/Library/art
cp $(ARTS) $(DESTDIR)/Library/art/
clean:
rm -rf obj build $(ELFS)