Files
osdev-from-nothing/makefile
plane000 4782d084a7 MD files
2018-10-07 18:04:37 +01:00

64 lines
1.6 KiB
Makefile

# ThanOS
# Copyright Benjamin Kyd (c) 2018
# Origionaly written by xX_WhatsTheGeek_Xx
# Modified by Benjamin Kyd
# CONFIGURATION
DELETE = rm -f
# DIRECTORIES
SRC_DIR = ./
LIB_DIR = ./libs
OBJ_DIR = ./obj
INC_DIR = ./libs/includes
# C++
SRC_FILES = $(wildcard $(SRC_DIR)/*.cpp)
LIB_FILES = $(wildcard $(LIB_DIR)/*.cpp)
CPP_OBJ = $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES)) $(patsubst $(LIB_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(LIB_FILES))
# ASSEMBLY
ASM_SRC = $(wildcard $(SRC_DIR)/*.asm)
ASM_LIB = $(wildcard $(LIB_DIR)/*.asm)
ASM_OBJ = $(patsubst $(SRC_DIR)/%.asm,$(OBJ_DIR)/%.o,$(ASM_SRC)) $(patsubst $(LIB_DIR)/%.asm,$(OBJ_DIR)/%.o,$(ASM_LIB))
# COMPILER STUFF
# unused: -Wall -Wextra
GPP_CMD = i686-elf-g++
GAS_CMD = i686-elf-as
LDFLAGS = -T link.ld -ffreestanding -O2 -nostdlib -lgcc -Wwrite-strings
CPPFLAGS = -I $(INC_DIR) -ffreestanding -O2 -fno-rtti -Wno-write-strings -Wno-multichar -Wno-unused-parameter -Wno-overflow -Wno-narrowing -fno-exceptions -Wno-trigraphs
CXXFLAGS =
GASFLAGS =
OBJ_FILES = $(CPP_OBJ) $(ASM_OBJ)
OUTPUT = ./bin/ThanOS.bin
ISO_OUTPUT = ./bin/ThanOS.iso
all: $(OUTPUT)
clean:
$(DELETE) ./obj/*
$(DELETE) ./bin/*
iso: all
cp $(OUTPUT) ./ISO/boot/ThanOS
grub-mkrescue -o $(ISO_OUTPUT) ./ISO
folders:
mkdir -p ./bin
mkdir -p ./obj
$(OUTPUT): $(OBJ_FILES)
$(GPP_CMD) $(LDFLAGS) -o $@ $^
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
$(GPP_CMD) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
$(OBJ_DIR)/%.o: $(LIB_DIR)/%.cpp
$(GPP_CMD) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.asm
$(GAS_CMD) $(GASFLAGS) -o $@ $<
$(OBJ_DIR)/%.o: $(LIB_DIR)/%.asm
$(GAS_CMD) $(GASFLAGS) -o $@ $<