1################################ 2# Configuration 3 4CC ?= gcc 5CFLAGS ?= 6LDFLAGS ?= -lm 7PREFIX ?= /usr/local 8 9# nothing below here should need to be changed 10 11################################ 12# Acting on the configuration 13 14NAME = nosefart 15VERSION = 1.92c-mls 16 17BUILDTOP = nsfobj 18BUILDDIR = $(BUILDTOP)/build 19SRCDIR = src 20 21CFLAGS += -DNSF_PLAYER 22 23CFLAGS +=\ 24 -I$(SRCDIR)\ 25 -I$(SRCDIR)/linux\ 26 -I$(SRCDIR)/sndhrdw\ 27 -I$(SRCDIR)/machine\ 28 -I$(SRCDIR)/cpu/nes6502\ 29 -I$(LOCALBASE)/include\ 30 -I$(BUILDTOP)\ 31 -I/usr/local/include/ 32 33NSFINFO_CFLAGS = $(CFLAGS) -DNES6502_MEM_ACCESS_CTRL 34 35################################ 36# Here's where the directory tree gets ugly 37 38FILES =\ 39 log\ 40 memguard\ 41 cpu/nes6502/nes6502\ 42 cpu/nes6502/dis6502\ 43 machine/nsf\ 44 sndhrdw/nes_apu\ 45 sndhrdw/vrcvisnd\ 46 sndhrdw/fmopl\ 47 sndhrdw/vrc7_snd\ 48 sndhrdw/mmc5_snd\ 49 sndhrdw/fds_snd 50 51SRCS = $(addsuffix .c, $(FILES) linux/main_linux) 52SOURCES = $(addprefix $(SRCDIR)/, $(SRCS)) 53OBJECTS = $(patsubst $(SRCDIR)/%.c,$(BUILDDIR)/%.o,$(SOURCES)) 54 55LDLIBS = -lm 56 57ALL_OBJECTS = $(OBJECTS) 58 59ALL_TARGETS = $(BUILDTOP)/$(NAME) 60 61################################ 62# Rules 63 64all: $(ALL_TARGETS) 65 66################################ 67# Support 68 69$(BUILDDIR): 70 mkdir -p $(sort $(dir $(ALL_OBJECTS))) 71# -mkdir -p $(BUILDDIR)/cpu/nes6502 $(BUILDDIR)/machine $(BUILDDIR)/sndhrdw $(BUILDDIR)/linux $(BUILDDIR)/nsfinfo 72 73$(BUILDTOP)/config.h: $(BUILDDIR) Makefile 74 @echo "[$@]" 75 @echo "#define VERSION \"$(VERSION)\"" > $@ 76 @echo "#define NAME \"$(NAME)\"" >> $@ 77 78$(BUILDDIR)/dep: $(BUILDTOP)/config.h 79 $(CC) $(NSFINFO_CFLAGS) $(CFLAGS) -M $(SOURCES) > $@ 80dep: $(BUILDDIR)/dep 81 82-include $(BUILDDIR)/dep 83 84install: all 85 mkdir -p $(PREFIX)/bin 86 $(INSTALL) $(COPY) $(STRIP) -g $(BINGRP) -m $(BINMODE) -o $(BINOWN) $(BUILDTOP)/$(NAME) $(PREFIX)/bin 87 @echo "-----------------------------------------------" 88 @echo "Be sure to run chmod +s $(PREFIX)/bin/$(NAME) if you want ordinary users" 89 @echo "to be able to use /dev/dsp. SUID isn't necessary, though, if you want to" 90 @echo "run $(NAME) with a wrapper, like artsdsp from arts or esddsp from esound." 91 @echo "-----------------------------------------------" 92 @echo "Also, make sure that $(PREFIX)/bin is in your PATH." 93 94uninstall: 95 rm -f $(PREFIX)/bin/$(NAME) 96clean: 97 rm -rf nsfobj 98 99 100################################ 101# The real heavy lifting 102 103$(BUILDTOP)/$(NAME): $(OBJECTS) 104 $(CC) $(NSFINFO_CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) 105 106$(BUILDDIR)/%.o: $(SRCDIR)/%.c 107 $(CC) $(NSFINFO_CFLAGS) -o $@ -c $< 108 109$(BUILDDIR)/%-acc.o: $(SRCDIR)/%.c 110 $(CC) $(NSFINFO_CFLAGS) -o $@ -c $< 111