mirror of
https://github.com/EnderIce2/Fennix.git
synced 2025-05-28 23:44:31 +00:00
65 lines
1.6 KiB
Makefile
65 lines
1.6 KiB
Makefile
define find-sources
|
|
$(shell find ./ -type f -name '$1' $(shell echo $(foreach board,$(filter-out $(BOARD_TYPE),$(AVAILABLE_BOARDS)), -not -path \"./$(board)/*\")) -print0 | xargs -0)
|
|
endef
|
|
|
|
S_SOURCES := $(call find-sources,*.S)
|
|
s_SOURCES := $(call find-sources,*.s)
|
|
C_SOURCES := $(call find-sources,*.c)
|
|
|
|
define find-common-sources
|
|
$(shell find ../../common -type f -name '$1' -print0 | xargs -0)
|
|
endef
|
|
|
|
C_COMMON_SOURCES := $(call find-common-sources,*.c)
|
|
|
|
OBJ = $(s_SOURCES:.s=.o) $(S_SOURCES:.S=.o) $(C_SOURCES:.c=.o) $(C_COMMON_SOURCES:.c=.o)
|
|
|
|
LDFLAGS = -static -nostdlib -nodefaultlibs -nolibc \
|
|
-Wl,-static,--no-dynamic-linker,-ztext \
|
|
-zmax-page-size=0x1000 \
|
|
-Wl,-Map boot.map -fno-pic -fno-pie
|
|
|
|
CFLAGS := \
|
|
$(INCLUDE_DIR) \
|
|
-D__kernel__='1' \
|
|
-DGIT_COMMIT='"$(GIT_COMMIT)"' \
|
|
-DGIT_COMMIT_SHORT='"$(GIT_COMMIT_SHORT)"' \
|
|
-fno-pic -fno-pie -fno-builtin -I../../include
|
|
|
|
CFLAGS += -mcmodel=large
|
|
LDFLAGS += -T$(BOARD_TYPE)/linker.ld
|
|
|
|
ifeq ($(DEBUG), 1)
|
|
CFLAGS += -DDEBUG -ggdb3 -O0 -fdiagnostics-color=always
|
|
# CFLAGS += -fsanitize=undefined
|
|
CFLAGS += -fstack-check -fverbose-asm
|
|
LDFLAGS += -ggdb3 -O0
|
|
ASFLAGS += -g --gstabs+ --gdwarf-5 -D
|
|
endif # DEBUG
|
|
|
|
default:
|
|
$(error Do not run this Makefile directly!)
|
|
|
|
build: boot.bin
|
|
|
|
boot.bin: $(OBJ)
|
|
$(info Linking $@)
|
|
$(CC) $(LDFLAGS) $(OBJ) -o tmp.elf
|
|
$(OBJCOPY) tmp.elf -O binary ../../boot.bin
|
|
# rm tmp.elf
|
|
|
|
%.o: %.c $(HEADERS)
|
|
$(info Compiling $<)
|
|
$(CC) $(CFLAGS) -fstack-protector-all -std=c17 -c $< -o $@
|
|
|
|
%.o: %.S
|
|
$(info Compiling $<)
|
|
$(AS) $(ASFLAGS) -c $< -o $@
|
|
|
|
%.o: %.s
|
|
$(info Compiling $<)
|
|
$(AS) $(ASFLAGS) -c $< -o $@
|
|
|
|
clean:
|
|
rm -f $(OBJ) boot.map
|