mirror of
https://github.com/wiiu-env/haxchi.git
synced 2024-11-16 21:29:17 +01:00
67 lines
2.0 KiB
Makefile
67 lines
2.0 KiB
Makefile
|
ifeq ($(strip $(DEVKITPPC)),)
|
||
|
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
|
||
|
endif
|
||
|
|
||
|
ifeq ($(filter $(DEVKITPPC)/bin,$(PATH)),)
|
||
|
export PATH:=$(DEVKITPPC)/bin:$(PATH)
|
||
|
endif
|
||
|
|
||
|
CC = powerpc-eabi-gcc
|
||
|
LINK = powerpc-eabi-ld
|
||
|
AS = powerpc-eabi-as
|
||
|
OBJCOPY = powerpc-eabi-objcopy
|
||
|
CFLAGS += -Wall -mbig-endian -mcpu=750 -meabi -std=c99 -O2
|
||
|
LDFLAGS += --script=ccd00.ld -EB -L"$(DEVKITPPC)/powerpc-eabi/lib" -Map=output.map -lm -lg -lc
|
||
|
|
||
|
CFILES = $(wildcard source/*.c)
|
||
|
BINFILES = $(wildcard data/*.bin)
|
||
|
OFILES = $(BINFILES:data/%.bin=build/%.bin.o)
|
||
|
OFILES += $(CFILES:source/%.c=build/%.o)
|
||
|
DFILES = $(CFILES:source/%.c=build/%.d)
|
||
|
SFILES = $(wildcard source/*.s)
|
||
|
OFILES += $(SFILES:source/%.s=build/%.o)
|
||
|
PROJECTNAME = ${shell basename "$(CURDIR)"}
|
||
|
CWD = "$(CURDIR)""
|
||
|
|
||
|
#---------------------------------------------------------------------------------
|
||
|
# canned command sequence for binary data, taken from devkitPPC
|
||
|
#---------------------------------------------------------------------------------
|
||
|
define bin2o
|
||
|
bin2s $< | $(AS) -o $(@)
|
||
|
echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > source/`(echo $(<F) | tr . _)`.h
|
||
|
echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> source/`(echo $(<F) | tr . _)`.h
|
||
|
echo "extern const u32" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> source/`(echo $(<F) | tr . _)`.h
|
||
|
endef
|
||
|
|
||
|
.PHONY:=all dirs
|
||
|
|
||
|
all: dirs $(PROJECTNAME).bin
|
||
|
|
||
|
dirs:
|
||
|
mkdir -p build
|
||
|
|
||
|
$(PROJECTNAME).bin: $(PROJECTNAME).elf
|
||
|
$(OBJCOPY) -O binary $< $@
|
||
|
|
||
|
$(PROJECTNAME).elf: $(OFILES)
|
||
|
$(LINK) $(LDFLAGS) -o $(PROJECTNAME).elf $(filter-out build/crt0.o, $(OFILES))
|
||
|
|
||
|
clean:
|
||
|
@rm -f build/*.o build/*.d
|
||
|
@rm -f $(PROJECTNAME).elf $(PROJECTNAME).bin
|
||
|
@echo "all cleaned up !"
|
||
|
|
||
|
-include $(DFILES)
|
||
|
|
||
|
build/%.o: source/%.c
|
||
|
$(CC) $(CFLAGS) -c $< -o $@
|
||
|
@$(CC) -MM $< > build/$*.d
|
||
|
|
||
|
build/%.o: source/%.s
|
||
|
$(CC) $(CFLAGS) -xassembler-with-cpp -c $< -o $@
|
||
|
@$(CC) -MM $< > build/$*.d
|
||
|
|
||
|
build/%.bin.o: data/%.bin
|
||
|
@echo $(notdir $<)
|
||
|
@$(bin2o)
|