2011-06-28 11:15:42 +00:00
|
|
|
# I hate GNU Make
|
|
|
|
#
|
|
|
|
# Seriously.
|
|
|
|
#
|
|
|
|
# Fuck M4. I do this because it's probably the most portable way, and I don't
|
|
|
|
# want to write Yet Another Compile System because fuck that shit. I could
|
|
|
|
# use cmake but I don't know whether it is flexible enough. It probably is
|
|
|
|
# but whatever. I wrote this piece of shit below, let's just keep it that
|
|
|
|
# way. There are better way to do the hthings I do below, but who gives a
|
|
|
|
# shit.
|
|
|
|
|
|
|
|
default: emulate-nohdd
|
|
|
|
|
|
|
|
SHELL:=/bin/bash
|
|
|
|
TARGET:=i586-elf
|
2013-04-23 12:15:31 +00:00
|
|
|
CC:=$(TARGET)-gcc
|
2011-06-28 11:15:42 +00:00
|
|
|
AS:=nasm
|
2013-04-23 12:15:31 +00:00
|
|
|
LD:=$(TARGET)-ld
|
2011-06-28 11:15:42 +00:00
|
|
|
|
|
|
|
# -O2 sets -foptimize-sibling-calls which breaks code...
|
|
|
|
CFLAGS:=-Wall -Werror -nostdlib -nostartfiles -nodefaultlibs -std=c99 -g
|
|
|
|
CFLAGS+=-I ./include -Wno-packed-bitfield-compat -O2 -fno-optimize-sibling-calls
|
|
|
|
CFLAGS+= -fno-builtin
|
|
|
|
LFLAGS:=-nostdlib -nostartfiles -nodefaultlibs
|
|
|
|
|
|
|
|
.PHONY: all clean loader.bin emulate hdd.img
|
|
|
|
|
|
|
|
obj/src/%.nao : src/%.asm
|
|
|
|
@echo "[i] Assembling $*.asm..."
|
|
|
|
@$(AS) -f elf -o obj/src/$*.nao src/$*.asm
|
|
|
|
|
|
|
|
obj/src/%.o : src/%.c
|
|
|
|
@echo "[i] Compiling $*.c ..."
|
|
|
|
@if [ -e obj/src/$*.o ] ; then rm obj/src/$*.o ; fi
|
|
|
|
@mkdir -p obj/src/$*.o
|
|
|
|
@rmdir obj/src/$*.o
|
|
|
|
@$(CC) $(CFLAGS) -c src/$*.c -o obj/src/$*.o
|
|
|
|
|
|
|
|
SRC := $(shell find src -mindepth 1 -maxdepth 3 -name "*.c")
|
|
|
|
SRC += $(shell find src -mindepth 1 -maxdepth 3 -name "*.asm")
|
|
|
|
OBJ := $(patsubst %.c,%.o,$(SRC))
|
|
|
|
OBJ := $(patsubst %.asm,%.nao,$(OBJ))
|
|
|
|
OBJ_ALL := $(foreach i, $(OBJ), obj/$(i))
|
|
|
|
Loader: $(OBJ_ALL)
|
|
|
|
|
|
|
|
loader.bin: Loader
|
|
|
|
@echo "[i] Linking loader.bin..."
|
|
|
|
@$(LD) -T src/loader.ld -o loader.bin $(OBJ_ALL)
|
|
|
|
|
|
|
|
emulate-nohdd-debug: loader.bin
|
|
|
|
@echo "[i] Starting GDB..."
|
|
|
|
@gnome-terminal -x /bin/bash -c "gdb"
|
|
|
|
@echo "[i] Starting QEmu..."
|
2012-10-28 09:25:08 +00:00
|
|
|
@qemu --no-kvm -kernel loader.bin -S -gdb tcp::1234
|
2011-06-28 11:15:42 +00:00
|
|
|
|
|
|
|
emulate-nohdd: loader.bin
|
|
|
|
@echo "[i] Starting QEMU..."
|
2012-10-28 09:25:08 +00:00
|
|
|
@qemu --no-kvm -kernel loader.bin
|
2011-06-28 11:15:42 +00:00
|
|
|
|
|
|
|
clean:
|
|
|
|
@rm -Rf obj
|
|
|
|
@if [ -e loader.bin ] ; then rm loader.bin ; fi
|
|
|
|
@if [ -e hdd_temp.img ] ; then rm hdd_temp.img ; fi
|
|
|
|
@if [ -e hdd.img ] ; then rm hdd.img; fi
|