added configure script
[drnoksnes] / Makefile
1 #!/usr/bin/make
2
3 CPPFLAGS := -I. $(shell sdl-config --cflags) $(shell pkg-config --cflags x11) -I/usr/include/hgw
4 LDLIBS := -lz $(shell sdl-config --libs) $(shell pkg-config --libs x11) -lpopt -lhgw
5
6 -include config.mk
7
8 # Sane defaults
9 ifeq ($(ARCH),armel)
10         CONF_BUILD_ASM_CPU?=1
11         CONF_BUILD_ASM_SPC700?=1
12         CONF_BUILD_ASM_SA1?=0   # Still not there
13         CONF_XSP?=1
14         CONF_BUILD_MISC_ROUTINES?=misc_armel
15 else ifeq ($(ARCH),i386)
16         CONF_BUILD_ASM_CPU?=0
17         CONF_BUILD_ASM_SPC700?=0
18         CONF_BUILD_ASM_SA1?=0   # Still not there
19         CONF_XSP?=0
20         CONF_BUILD_MISC_ROUTINES?=misc_i386
21 endif
22
23 # SNES stuff
24 OBJS = apu.o c4.o c4emu.o cheats.o cheats2.o clip.o cpu.o cpuexec.o data.o
25 OBJS += dma.o dsp1.o font.o fxemu.o fxinst.o gfx.o globals.o loadzip.o memmap.o 
26 OBJS += ppu.o sa1.o sdd1.o sdd1emu.o snapshot.o soundux.o spc700.o srtc.o tile.o
27
28 ifeq ($(CONF_BUILD_ASM_CPU), 1)
29         # ASM CPU Core from yoyofr's OpenSnes9X
30         OBJS += os9x_asm_cpu.o os9x_65c816.o
31         CPPFLAGS += -DCONF_BUILD_ASM_CPU=1
32 else
33         OBJS += cpuops.o
34 endif
35
36 ifeq ($(CONF_BUILD_ASM_SPC700), 1)
37         OBJS += spc700a.o
38         CPPFLAGS += -DCONF_BUILD_ASM_SPC700=1
39 endif
40
41 ifeq ($(CONF_BUILD_ASM_SA1), 1)
42         crash
43 else
44         OBJS += sa1cpu.o
45 endif
46
47 ifeq ($(CONF_XSP), 1)
48         CPPFLAGS += -DCONF_XSP=1 $(shell pkg-config --cflags xsp)
49         LDLIBS += $(shell pkg-config --libs xsp)
50 endif
51
52 OBJS += $(CONF_BUILD_MISC_ROUTINES).o
53
54 # from open-whatever sdk
55 OBJS += unzip.o ioapi.o
56 # my extensions to snes9x (speedhacks support)
57 OBJS += hacks.o
58 # the glue code that sticks it all together in a monstruous way
59 OBJS += platform/path.o platform/config.o platform/hgw.o
60 OBJS += platform/sdl.o platform/sdlv.o platform/sdla.o platform/sdli.o
61
62 # automatic dependencies
63 DEPS := $(OBJS:.o=.d)
64
65 all: drnoksnes gui
66
67 clean: gui_clean
68         rm -f drnoksnes *.o *.d platform/*.o platform/*.d
69         rm -f build-stamp configure-stamp
70
71 remake: clean deps all
72
73 -include $(DEPS)
74
75 drnoksnes: $(OBJS)
76         $(CXX) $(CXXFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@
77
78 install: drnoksnes
79         install drnoksnes $(DESTDIR)/usr/games
80         $(MAKE) -C gui install DESTDIR="$(DESTDIR)"
81
82 deps: $(DEPS)
83 %.d: %.cpp
84         @$(CXX) $(CPPFLAGS) -MM $^ -MF $@ -MT $@ -MT $*.o
85 %.d: %.c
86         @$(CC) $(CPPFLAGS) -MM $^ -MF $@ -MT $@ -MT $*.o
87 %.d: %.s
88         @touch $@
89
90 gui:
91         $(MAKE) -C gui all
92
93 gui_clean:
94         $(MAKE) -C gui clean
95
96 .PHONY: all clean remake deps install gui gui_clean
97