64 lines
1.6 KiB
Makefile
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 $@ $<
|