From ceb9471fed96f907e37a6ba031825c31167a8ff4 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Mon, 21 Apr 2025 16:45:28 -0400 Subject: update userland to compile --- user/Makefile | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 user/Makefile (limited to 'user/Makefile') diff --git a/user/Makefile b/user/Makefile new file mode 100644 index 0000000..a4d089a --- /dev/null +++ b/user/Makefile @@ -0,0 +1,67 @@ +### Copyright (c) 2025 Freya Murphy + +.PHONY: build clean +.SILENT: + +AS ?= as +AR ?= ar +CC ?= cc +LD ?= ld +CPP ?= cpp + +CPPFLAGS += -Iinclude + +CFLAGS += -O2 +CFLAGS += -std=c11 +CFLAGS += -Wall -Wextra -pedantic +CFLAGS += -fno-pie -fno-stack-protector +CFLAGS += -fno-omit-frame-pointer -ffreestanding +CFLAGS += -fno-builtin +CFLAGS += -D DEBUG -g +CFLAGS += $(CPPFLAGS) + +LDFLAGS += -nmagic -nostdlib +LDFLAGS += -z noexecstack + +USER=* +LIB=lib +BIN=../bin/user + +H_SRC = $(shell find include -type f -name "*.h") +LIBA_SRC = $(shell find $(LIB) -type f -name "*.S") +LIBA_OBJ = $(patsubst %.S,$(BIN)/%.S.o,$(LIBA_SRC)) +LIBC_SRC = $(shell find $(LIB) -type f -name "*.c") +LIBC_OBJ = $(patsubst %.c,$(BIN)/%.o,$(LIBC_SRC)) +USER_SRC = $(shell find $(USER) -maxdepth 0 -type f -name "*.c") +USER_OBJ = $(patsubst %.c,$(BIN)/%.o,$(USER_SRC)) +USER_PROJ = $(patsubst %.o,%,$(USER_OBJ)) + +build: $(USER_PROJ) + +clean: + rm -fr $(BIN) + +$(LIBA_OBJ): $(BIN)/%.S.o : %.S + mkdir -p $(@D) + printf "\033[33m AS \033[0m%s\n" $< + $(CPP) $(CPPFLAGS) -o $@.cpp $< + $(AS) -o $@ $@.cpp + +$(LIBC_OBJ): $(BIN)/%.o : %.c + mkdir -p $(@D) + printf "\033[34m CC \033[0m%s\n" $< + $(CC) -c $(CFLAGS) -o $@ $< + +$(BIN)/libc.a: $(LIBA_OBJ) $(LIBC_OBJ) + @mkdir -p $(@D) + $(AR) rcs $@ $(LIBA_OBJ) $(LIBC_OBJ) + +$(USER_OBJ): $(BIN)/%.o : %.c + mkdir -p $(@D) + printf "\033[34m CC \033[0m%s\n" $< + $(CC) -c $(CFLAGS) -o $@ $< + +$(USER_PROJ): % : %.o $(BIN)/libc.a + mkdir -p $(@D) + printf "\033[32m LD \033[0m%s\n" $@ + $(LD) $(LDFLAGS) -T ../config/user.ld -o $@ $< $(BIN)/libc.a -- cgit v1.2.3-freya From c39ce7fdb7f4075ee5461d37b3263c697d6d4e50 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Tue, 22 Apr 2025 11:21:38 -0400 Subject: prettify make messages --- user/Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'user/Makefile') diff --git a/user/Makefile b/user/Makefile index a4d089a..5233808 100644 --- a/user/Makefile +++ b/user/Makefile @@ -43,25 +43,26 @@ clean: $(LIBA_OBJ): $(BIN)/%.S.o : %.S mkdir -p $(@D) - printf "\033[33m AS \033[0m%s\n" $< + printf "\033[33m AS \033[0m%s\n" user/$< $(CPP) $(CPPFLAGS) -o $@.cpp $< $(AS) -o $@ $@.cpp $(LIBC_OBJ): $(BIN)/%.o : %.c mkdir -p $(@D) - printf "\033[34m CC \033[0m%s\n" $< + printf "\033[34m CC \033[0m%s\n" user/$< $(CC) -c $(CFLAGS) -o $@ $< $(BIN)/libc.a: $(LIBA_OBJ) $(LIBC_OBJ) @mkdir -p $(@D) + printf "\033[35m AR \033[0m%s\n" $(shell echo $@ | cut -c 4-) $(AR) rcs $@ $(LIBA_OBJ) $(LIBC_OBJ) $(USER_OBJ): $(BIN)/%.o : %.c mkdir -p $(@D) - printf "\033[34m CC \033[0m%s\n" $< + printf "\033[34m CC \033[0m%s\n" user/$< $(CC) -c $(CFLAGS) -o $@ $< $(USER_PROJ): % : %.o $(BIN)/libc.a mkdir -p $(@D) - printf "\033[32m LD \033[0m%s\n" $@ + printf "\033[32m LD \033[0m%s\n" $(shell echo $@ | cut -c 4-) $(LD) $(LDFLAGS) -T ../config/user.ld -o $@ $< $(BIN)/libc.a -- cgit v1.2.3-freya From 920aeb28996c8a404316f1304ee3f46511fb7b1a Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Tue, 22 Apr 2025 13:21:25 -0400 Subject: force rebuild on header change --- Makefile | 4 ++-- user/Makefile | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'user/Makefile') diff --git a/Makefile b/Makefile index 6eb1140..bb015aa 100644 --- a/Makefile +++ b/Makefile @@ -78,13 +78,13 @@ clean: build: $(BIN)/$(ISO) -$(A_OBJ): $(BIN)/%.S.o : %.S +$(A_OBJ): $(BIN)/%.S.o : %.S $(H_SRC) mkdir -p $(@D) printf "\033[33m AS \033[0m%s\n" $< $(CPP) $(CPPFLAGS) -o $@.cpp $< $(AS) -o $@ $@.cpp -$(C_OBJ): $(BIN)/%.o : %.c +$(C_OBJ): $(BIN)/%.o : %.c $(H_SRC) mkdir -p $(@D) printf "\033[34m CC \033[0m%s\n" $< $(CC) -c $(CFLAGS) -o $@ $< diff --git a/user/Makefile b/user/Makefile index 5233808..a01d950 100644 --- a/user/Makefile +++ b/user/Makefile @@ -41,13 +41,13 @@ build: $(USER_PROJ) clean: rm -fr $(BIN) -$(LIBA_OBJ): $(BIN)/%.S.o : %.S +$(LIBA_OBJ): $(BIN)/%.S.o : %.S $(H_SRC) mkdir -p $(@D) printf "\033[33m AS \033[0m%s\n" user/$< $(CPP) $(CPPFLAGS) -o $@.cpp $< $(AS) -o $@ $@.cpp -$(LIBC_OBJ): $(BIN)/%.o : %.c +$(LIBC_OBJ): $(BIN)/%.o : %.c $(H_SRC) mkdir -p $(@D) printf "\033[34m CC \033[0m%s\n" user/$< $(CC) -c $(CFLAGS) -o $@ $< @@ -57,7 +57,7 @@ $(BIN)/libc.a: $(LIBA_OBJ) $(LIBC_OBJ) printf "\033[35m AR \033[0m%s\n" $(shell echo $@ | cut -c 4-) $(AR) rcs $@ $(LIBA_OBJ) $(LIBC_OBJ) -$(USER_OBJ): $(BIN)/%.o : %.c +$(USER_OBJ): $(BIN)/%.o : %.c $(H_SRC) mkdir -p $(@D) printf "\033[34m CC \033[0m%s\n" user/$< $(CC) -c $(CFLAGS) -o $@ $< -- cgit v1.2.3-freya