#! /usr/bin/make -f # Makefile for the gint control add-in #--- # # Configuration # # Compiler flags cf := -mb -ffreestanding -nostdlib -Wall -Wextra -std=c11 -Os \ -fstrict-volatile-bitfields -I include cf-fx := $(cf) -m3 -DFX9860G cf-cg := $(cf) -m4-nofpu -DFXCG50 # Linker flags lf-fx := -Tfx9860g.ld -lprof -lgint-fx -lgcc -Wl,-Map=build.fx/map lf-cg := -Tfxcg50.ld -lprof -lgint-cg -lgcc -Wl,-Map=build.cg/map -L. -lfxcg dflags = -MMD -MT $@ -MF $(@:.o=.d) -MP cpflags := -R .bss -R .gint_bss g1af := -i icon-fx.png -n gintctl --internal=@GINTCTL g3af := -n basic:" " -i uns:icon-cg-uns.png -i sel:icon-cg-sel.png # # File listings # elf = $(dir $<)gintctl.elf bin = $(dir $<)gintctl.bin target-fx := gintctl.g1a target-cg := gintctl.g3a # Source and object files src := $(shell find src -name '*.c') res := $(wildcard resources/*.png) obj-fx := $(src:%.c=build.fx/%.o) $(res:resources/%=build.fx/%.o) obj-cg := $(src:%.c=build.cg/%.o) $(res:resources/%=build.cg/%.o) # Additional dependencies deps-fx := icon-fx.png deps-cg := icon-cg-uns.png icon-cg-sel.png # # Build rules # all: all-fx all-cg all-fx: $(target-fx) all-cg: $(target-cg) $(target-fx): $(obj-fx) $(deps-fx) sh3eb-elf-gcc -o $(elf) $(obj-fx) $(cf-fx) $(lf-fx) sh3eb-elf-objcopy -O binary $(cpflags) $(elf) $(bin) fxg1a $(bin) -o $@ $(g1af) $(target-cg): $(obj-cg) $(deps-cg) sh4eb-elf-gcc -o $(elf) $(obj-cg) $(cf-cg) $(lf-cg) sh4eb-elf-objcopy -O binary $(cpflags) $(elf) $(bin) mkg3a $(g3af) $(bin) $@ # C sources build.fx/%.o: %.c @ mkdir -p $(dir $@) sh3eb-elf-gcc -c $< -o $@ $(cf-fx) $(dflags) build.cg/%.o: %.c @ mkdir -p $(dir $@) sh4eb-elf-gcc -c $< -o $@ $(cf-cg) $(dflags) # Images build.fx/%.png.o: resources/%.png @ mkdir -p $(dir $@) fxconv -i $< -o $@ name:$* build.cg/%.png.o: resources/%.png @ echo -e "\e[31;1mWARNING: conversion for fxcg50 not supported yet\e[0m" @ mkdir -p $(dir $@) fxconv -i $< -o $@ name:$* # # Cleaning and utilities # # Dependency information -include $(shell find build* -name *.d 2> /dev/null) build.fx/%.d: ; build.cg/%.d: ; .PRECIOUS: build.fx build.cg build.fx/%.d build.cg/%.d %/ clean: @ rm -rf build* distclean: clean @ rm -f $(target-fx) $(target-cg) install-fx: $(target-fx) p7 send -f $< install-cg: $(target-cg) @ while [[ ! -h /dev/Prizm1 ]]; do sleep 0.25; done @ while ! mount /dev/Prizm1; do sleep 0.25; done @ rm -f /mnt/prizm/$< @ cp $< /mnt/prizm @ umount /dev/Prizm1 @- eject /dev/Prizm1 .PHONY: all all-fx all-cg clean distclean install-fx install-cg