ifeq ($(strip $(DEVKITARM)),) $(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") endif ifeq ($(filter $(DEVKITARM)/bin,$(PATH)),) export PATH:=$(DEVKITARM)/bin:$(PATH) endif CC = arm-none-eabi-gcc # LINK = arm-none-eabi-gcc LINK = arm-none-eabi-ld AS = arm-none-eabi-as OBJCOPY = arm-none-eabi-objcopy CFLAGS += -Wall -mbig-endian -std=gnu99 -march=armv5 -Os -I$(DEVKITPRO)/libnds/include LDFLAGS += --script=link.ld -EB -L"$(DEVKITARM)/arm-none-eabi/lib" -Map=output.map 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 devkitARM #--------------------------------------------------------------------------------- define bin2o bin2s $< | $(AS) -o $(@) echo "extern const u8" `(echo $( source/`(echo $(> source/`(echo $(> source/`(echo $( $@ $(PROJECTNAME).elf: $(OFILES) $(LINK) $(LDFLAGS) -o $(PROJECTNAME).elf $(filter-out build/crt0.o, $(OFILES)) clean: @rm -rf build @rm -f $(PROJECTNAME).elf $(PROJECTNAME).bin $(PROJECTNAME)_bin.h output.map @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)