28 lines
568 B
Makefile
28 lines
568 B
Makefile
|
|
TARGET = 80x
|
||
|
|
ENTRY = 0x900000000
|
||
|
|
src = $(TARGET).c
|
||
|
|
|
||
|
|
CC = gcc
|
||
|
|
CFLAGS = -O -Wno-int-conversion -fno-strict-aliasing -masm=intel -nostartfiles
|
||
|
|
CFLAGS += -fwrapv -no-pie -Ttext=$(ENTRY) -Tscript.ld -Wl,--build-id=none
|
||
|
|
CFLAGS += -fwrapv-pointer -std=gnu11
|
||
|
|
|
||
|
|
.PHONY: all
|
||
|
|
all: $(TARGET).elf
|
||
|
|
|
||
|
|
$(TARGET).elf: $(TARGET).o
|
||
|
|
$(CC) $(TARGET).o -o $(TARGET).elf $(CFLAGS)
|
||
|
|
|
||
|
|
.PHONY: clean
|
||
|
|
clean:
|
||
|
|
-rm -f *.d *.o *.elf
|
||
|
|
|
||
|
|
%.d: %.c
|
||
|
|
@set -e; \
|
||
|
|
rm -f $@; \
|
||
|
|
$(CC) -MM $(CPPFLAGS) $< > $@.$$$$; \
|
||
|
|
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
|
||
|
|
rm -f $@.$$$$;
|
||
|
|
|
||
|
|
include $(src:.c=.d)
|