processors += r65816 spc700 arm gsu hg51b upd96050

objects += sfc-interface sfc-system sfc-scheduler sfc-controller
objects += sfc-cartridge sfc-cheat
objects += sfc-memory sfc-cpu sfc-smp sfc-dsp sfc-ppu
objects += sfc-satellaview sfc-superdisc
objects += sfc-21fx
objects += sfc-icd2 sfc-mcc sfc-nss sfc-event
objects += sfc-sa1 sfc-superfx
objects += sfc-armdsp sfc-hitachidsp sfc-necdsp
objects += sfc-epsonrtc sfc-sharprtc
objects += sfc-spc7110 sfc-sdd1 sfc-obc1
objects += sfc-msu1
objects += sfc-bsmemory sfc-sufamiturbo

ifeq ($(profile),accuracy)
  flags += -DPROFILE_ACCURACY
  sfccpu := cpu
  sfcsmp := smp
  sfcdsp := dsp
  sfcppu := ppu
else ifeq ($(profile),balanced)
  flags += -DPROFILE_BALANCED
  sfccpu := cpu
  sfcsmp := smp
  sfcdsp := alt/dsp
  sfcppu := alt/ppu-balanced
else ifeq ($(profile),performance)
  flags += -DPROFILE_PERFORMANCE
  sfccpu := alt/cpu
  sfcsmp := alt/smp
  sfcdsp := alt/dsp
  sfcppu := alt/ppu-performance
else
  $(error "unknown Super Famicom profile")
endif

obj/sfc-interface.o:   sfc/interface/interface.cpp $(call rwildcard,sfc/interface)
obj/sfc-system.o:      sfc/system/system.cpp $(call rwildcard,sfc/system/)
obj/sfc-scheduler.o:   sfc/scheduler/scheduler.cpp $(call rwildcard,sfc/scheduler/)
obj/sfc-controller.o:  sfc/controller/controller.cpp $(call rwildcard,sfc/controller/)
obj/sfc-cartridge.o:   sfc/cartridge/cartridge.cpp $(call rwildcard,sfc/cartridge/)
obj/sfc-cheat.o:       sfc/cheat/cheat.cpp $(call rwildcard,sfc/cheat/)
obj/sfc-memory.o:      sfc/memory/memory.cpp $(call rwildcard,sfc/memory/)
obj/sfc-cpu.o:         sfc/$(sfccpu)/cpu.cpp $(call rwildcard,sfc/$(sfccpu)/)
obj/sfc-smp.o:         sfc/$(sfcsmp)/smp.cpp $(call rwildcard,sfc/$(sfcsmp)/)
obj/sfc-dsp.o:         sfc/$(sfcdsp)/dsp.cpp $(call rwildcard,sfc/$(sfcdsp)/)
obj/sfc-ppu.o:         sfc/$(sfcppu)/ppu.cpp $(call rwildcard,sfc/$(sfcppu)/)

obj/sfc-satellaview.o: sfc/expansion/satellaview/satellaview.cpp $(call rwildcard,sfc/expansion/satellaview/)
obj/sfc-superdisc.o:   sfc/expansion/superdisc/superdisc.cpp $(call rwildcard,sfc/expansion/superdisc/)
obj/sfc-21fx.o:        sfc/expansion/21fx/21fx.cpp $(call rwildcard,sfc/expansion/21fx/)

obj/sfc-icd2.o:        sfc/coprocessor/icd2/icd2.cpp $(call rwildcard,sfc/coprocessor/icd2/)
obj/sfc-mcc.o:         sfc/coprocessor/mcc/mcc.cpp $(call rwildcard,sfc/coprocessor/mcc/)
obj/sfc-nss.o:         sfc/coprocessor/nss/nss.cpp $(call rwildcard,sfc/coprocessor/nss/)
obj/sfc-event.o:       sfc/coprocessor/event/event.cpp $(call rwildcard,sfc/coprocessor/event/)

obj/sfc-sa1.o:         sfc/coprocessor/sa1/sa1.cpp $(call rwildcard,sfc/coprocessor/sa1/)
obj/sfc-superfx.o:     sfc/coprocessor/superfx/superfx.cpp $(call rwildcard,sfc/coprocessor/superfx/)

obj/sfc-armdsp.o:      sfc/coprocessor/armdsp/armdsp.cpp $(call rwildcard,sfc/coprocessor/armdsp/)
obj/sfc-hitachidsp.o:  sfc/coprocessor/hitachidsp/hitachidsp.cpp $(call rwildcard,sfc/coprocessor/hitachidsp/)
obj/sfc-necdsp.o:      sfc/coprocessor/necdsp/necdsp.cpp $(call rwildcard,sfc/coprocessor/necdsp/)

obj/sfc-epsonrtc.o:    sfc/coprocessor/epsonrtc/epsonrtc.cpp $(call rwildcard,sfc/coprocessor/epsonrtc/)
obj/sfc-sharprtc.o:    sfc/coprocessor/sharprtc/sharprtc.cpp $(call rwildcard,sfc/coprocessor/sharprtc/)

obj/sfc-spc7110.o:     sfc/coprocessor/spc7110/spc7110.cpp $(call rwildcard,sfc/coprocessor/spc7110/)
obj/sfc-sdd1.o:        sfc/coprocessor/sdd1/sdd1.cpp $(call rwildcard,sfc/coprocessor/sdd1/)
obj/sfc-obc1.o:        sfc/coprocessor/obc1/obc1.cpp $(call rwildcard,sfc/coprocessor/obc1/)

obj/sfc-msu1.o:        sfc/coprocessor/msu1/msu1.cpp $(call rwildcard,sfc/coprocessor/msu1/)

obj/sfc-bsmemory.o:    sfc/slot/bsmemory/bsmemory.cpp $(call rwildcard,sfc/slot/bsmemory/)
obj/sfc-sufamiturbo.o: sfc/slot/sufamiturbo/sufamiturbo.cpp $(call rwildcard,sfc/slot/sufamiturbo/)
