mirror of
https://github.com/gbowne1/ClassicOS.git
synced 2025-10-13 21:25:07 -07:00
Made some minor fixes to CMakeLists.tx and working on descriptor tables
This commit is contained in:
66
Makefile
66
Makefile
@@ -1,37 +1,51 @@
|
||||
# Compiler and linker options
|
||||
# Compiler and flags
|
||||
CC = gcc
|
||||
CXX = g++
|
||||
AS = nasm
|
||||
LD = ld
|
||||
NASM = nasm
|
||||
CFLAGS = -Wall -O2 -std=c17
|
||||
CXXFLAGS = -Wall -O2 -std=c++20
|
||||
LDFLAGS = -melf_i386
|
||||
NASMFLAGS = -f elf32
|
||||
|
||||
# Target architecture
|
||||
ARCH = i386
|
||||
|
||||
# Libraries
|
||||
LIBS = -lm
|
||||
CFLAGS = -g -Wall
|
||||
CXXFLAGS = -g -Wall
|
||||
LDFLAGS = -T linker.ld
|
||||
|
||||
# Source files
|
||||
SRCS = $(wildcard *.c) $(wildcard *.cpp) $(wildcard *.asm)
|
||||
OBJS = $(SRCS:.c=.o) $(SRCS:.cpp=.o) $(SRCS:.asm=.o)
|
||||
BOOT_SOURCE_FILES = src/boot/boot.asm src/boot/linker.ld
|
||||
GRUB_SOURCE_FILES = src/boot/grub/grub.cfg src/boot/grub/menu.lst
|
||||
DRIVERS_SOURCE_FILES = src/drivers/audio/audio.c src/drivers/audio/audio.h \
|
||||
src/drivers/bus/eisa.c src/drivers/bus/eisa.h \
|
||||
src/drivers/bus/isa.c src/drivers/bus/isa.h \
|
||||
src/drivers/bus/mca.c src/drivers/bus/mca.h \
|
||||
src/drivers/bus/pci.c src/drivers/bus/pci.h \
|
||||
src/drivers/bus/vesa.c src/drivers/bus/vesa.h \
|
||||
src/drivers/display/display.c src/drivers/display/display.h \
|
||||
src/drivers/io/io.c src/drivers/io/io.h \
|
||||
src/drivers/keyboard/keyboard.c src/drivers/keyboard/keyboard.h \
|
||||
src/drivers/screen/screen.c src/drivers/screen/screen.h \
|
||||
src/drivers/tty/tty.c src/drivers/tty/tty.h
|
||||
KERNEL_SOURCE_FILES = src/kernel/arch/x86/include/memory.h \
|
||||
src/kernel/arch/x86/include/types.h \
|
||||
src/kernel/arch/x86/memory/memory.c \
|
||||
src/kernel/arch/x86/gdt.c \
|
||||
src/kernel/arch/x86/idt.c src/kernel/arch/x86/idt.h \
|
||||
src/kernel/arch/x86/isr.c src/kernel/arch/x86/isr.h \
|
||||
src/kernel/kernel.c src/kernel/kernel.h \
|
||||
src/kernel/linker.ld src/kernel/print.c
|
||||
|
||||
# Targets
|
||||
all: kernel
|
||||
# Object files
|
||||
BOOT_OBJECT_FILES = $(patsubst %.asm, %.o, $(filter %.asm, $(BOOT_SOURCE_FILES)))
|
||||
KERNEL_OBJECT_FILES = $(patsubst %.c, %.o, $(filter %.c, $(KERNEL_SOURCE_FILES)))
|
||||
|
||||
kernel: $(OBJS)
|
||||
$(LD) $(LDFLAGS) -o $@ $^ $(LIBS)
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) $(CXXFLAGS) -c -o $@ $<
|
||||
# Executable
|
||||
ClassicOS: $(BOOT_OBJECT_FILES) $(KERNEL_OBJECT_FILES)
|
||||
$(LD) $(LDFLAGS) -o $@ $^
|
||||
|
||||
# Assembly files
|
||||
%.o: %.asm
|
||||
$(NASM) $(NASMFLAGS) -o $@ $<
|
||||
$(AS) -f elf32 -o $@ $<
|
||||
|
||||
# C files
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
# Clean
|
||||
clean:
|
||||
rm -f $(OBJS) kernel
|
||||
rm -f $(BOOT_OBJECT_FILES) $(KERNEL_OBJECT_FILES) ClassicOS
|
Reference in New Issue
Block a user