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