-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
37 lines (27 loc) · 908 Bytes
/
Copy pathMakefile
File metadata and controls
37 lines (27 loc) · 908 Bytes
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
# Copyright (c) 2026 Christiaan (chris@boreddev.nl)
# Pure Standard C Library & OS SDK Makefile
CC = x86_64-elf-gcc
AR = x86_64-elf-ar
AS = nasm
SDK_DIR ?= ../../build/sdk
CFLAGS = -Wall -Wextra -std=gnu11 -ffreestanding -O2 -fno-stack-protector \
-fno-stack-check -fno-lto -fno-pie -m64 -march=x86-64 -mno-red-zone \
-Iinclude
LIBC_SOURCES = $(wildcard src/*.c)
LIBC_OBJS = $(patsubst src/%.c, obj/libc_%.o, $(LIBC_SOURCES))
all: obj/libc.a obj/crt0.o obj/crt1.o obj/crti.o obj/crtn.o
obj/libc_%.o: src/%.c
@mkdir -p obj
$(CC) $(CFLAGS) -c $< -o $@
obj/crt%.o: src/crt%.asm
@mkdir -p obj
$(AS) -f elf64 $< -o $@
obj/libc.a: $(LIBC_OBJS)
$(AR) rcs $@ $^
install: all
mkdir -p $(SDK_DIR)/include/sys $(SDK_DIR)/lib
cp -r include/. $(SDK_DIR)/include/
cp obj/libc.a $(SDK_DIR)/lib/
cp obj/crt0.o obj/crt1.o obj/crti.o obj/crtn.o $(SDK_DIR)/lib/
clean:
rm -rf obj