Custom-OS-Kernel / phase2 / Makefile
Makefile
Raw
XT_PRG_PREFIX = mipsel-linux-gnu-
CC = $(XT_PRG_PREFIX)gcc
LD = $(XT_PRG_PREFIX)ld


ifneq ($(wildcard /usr/bin/umps3),)
	UMPS3_DIR_PREFIX = /usr
else
	UMPS3_DIR_PREFIX = /usr/local
endif

UMPS3_DATA_DIR = $(UMPS3_DIR_PREFIX)/share/umps3
UMPS3_INCLUDE_DIR = $(UMPS3_DIR_PREFIX)/include/umps3
UMPS3_INCLUDE_DIR2 = $(UMPS3_DIR_PREFIX)/include/umps3/umps
UMPS3_INCLUDE_DIR3 = /usr/include # Arch based distros fix

CFLAGS_LANG = -ffreestanding
CFLAGS_MIPS = -mips1 -mabi=32 -mno-gpopt -G 0 -mno-abicalls -fno-pic -mfp32
CFLAGS = $(CFLAGS_LANG) $(CFLAGS_MIPS) -I$(UMPS3_INCLUDE_DIR) -I$(UMPS3_INCLUDE_DIR3) -I$(UMPS3_INCLUDE_DIR2) -Wall -O0


LDFLAGS = -G 0 -nostdlib -T $(UMPS3_DATA_DIR)/umpscore.ldscript

SRC = $(wildcard *.c)
OBJS = $(SRC:.c=.o)	# Auto-updated obj listing

VPATH = $(UMPS3_DATA_DIR)

.PHONY : all clean

all : kernel.core.umps clean
	@echo "** All successfull! Good Luck!! :) [remember to set the TLB Floor Address to 0x80000000 in UMPS3!!]"

kernel.core.umps : kernel
	umps3-elf2umps -k $<
	
kernel : $(OBJS) crtso.o libumps.o
	$(LD) -o $@ $^ $(LDFLAGS)
	@echo "** Compilation successfull!"
	
clean :
	@echo "** Cleaning object files..."
	-rm -f *.o

clean_all :
	@echo "** Cleaning all generated umps files..."
	-rm -f *.o kernel *.umps

%.o : %.S
	$(CC) $(CFLAGS) -c -o $@ $<