.PHONY: clean, mrproper # ============== ENVIRONMENT VARIABLES CC = i586-elf-gcc CFLAGS = -m32 -nostdlib -nostdinc -nostartfiles -nodefaultlibs -fno-builtin -ffreestanding -fno-stack-protector -Wall -Werror -g -Wno-error=main CCFLAGS = CXX = i586-elf-g++ CXXFLAGS = -fno-rtti -fno-exceptions -Wno-write-strings -Wno-main -Wno-error=unused-parameter LD = i586-elf-ld LDFLAGS = -oformat=elf32-i386 -m elf_i386 ASM = nasm AFLAGS = -f elf # ============== GENERAL BUILD PROCEDURES all: $(Out) $(Out): $(Obj) $(ExtObj) echo ""; echo "- Linking $@..." $(LD) $(LDFLAGS) $^ -o $@ # ============== GENERAL CLEAINING PROCEDURES clean: rm $(Obj) || exit 0 rm *.o */*.o || exit 0 mrproper: clean rm $(Out) || exit 0 # ============== SOURCE FILE BUILD PROCEDURES %.o: %.asm echo ""; echo "- $<" $(ASM) $(AFLAGS) -o $@ $< %.o: %.c echo ""; echo "- $<" $(CC) -c $< -o $@ $(CFLAGS) $(CCFLAGS) %.o: %.cpp echo ""; echo "- $<" $(CXX) -c $< -o $@ $(CFLAGS) $(CXXFLAGS)