Make sound manipulation commands platform-independent
[lsnes.git] / Makefile
blob5791e069985e8b089fd212ccfad6896bf791a324
1 EXECUTABLE_SUFFIX = exe
2 OBJECT_SUFFIX = o
3 ARCHIVE_SUFFIX = a
4 FONT_SRC := unifontfull-5.1.20080820.hex
5 CC := g++-4.6
6 HOSTCC = $(CC)
7 LUAPACKAGE=lua5.1
9 OBJECTS = $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard generic/*.cpp)) $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard avidump/*.cpp)) fonts/font.$(OBJECT_SUFFIX)
10 GENERIC_LIBS = -ldl -lboost_iostreams -lboost_filesystem -lboost_system -lz
11 CFLAGS = $(USER_CFLAGS)
12 HOSTCCFLAGS = $(USER_HOSTCCFLAGS)
13 LDFLAGS = $(GENERIC_LIBS) $(USER_LDFLAGS)
14 GRAPHICS = SDL
15 SOUND = SDL
16 JOYSTICK = SDL
17 PLATFORM_CFLAGS = $(CFLAGS)
18 PLATFORM_LDFLAGS = $(LDFLAGS)
20 PROGRAMS = lsnes.$(EXECUTABLE_SUFFIX) movieinfo.$(EXECUTABLE_SUFFIX) lsnes-dumpavi.$(EXECUTABLE_SUFFIX) sdmp2sox.$(EXECUTABLE_SUFFIX)
21 all: $(PROGRAMS)
23 #Lua.
24 ifdef NO_LUA
25 CFLAGS += -DNO_LUA
26 else
27 OBJECTS += $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard lua/*.cpp))
28 CFLAGS += $(shell pkg-config $(LUAPACKAGE) --cflags)
29 LDFLAGS += $(shell pkg-config $(LUAPACKAGE) --libs)
30 endif
32 #Some misc defines.
33 ifdef NO_TIME_INTERCEPT
34 CFLAGS += -DNO_TIME_INTERCEPT
35 else
36 LDFLAGS += -Wl,--wrap,time
37 endif
38 ifdef NO_THREADS
39 CFLAGS += -DNO_THREADS
40 endif
41 ifdef USE_THREADS
42 CFLAGS += -DUSE_THREADS
43 endif
44 ifdef TEST_WIN32
45 CFLAGS += -DTEST_WIN32_CODE
46 endif
47 ifdef BSNES_IS_COMPAT
48 CFLAGS += -DBSNES_IS_COMPAT
49 endif
50 ifeq ($(JOYSTICK), SDL)
51 PLATFORM_OBJECTS += SDL/joystick-sdl.$(OBJECT_SUFFIX)
52 else
53 ifeq ($(JOYSTICK), DUMMY)
54 PLATFORM_OBJECTS += dummy/joystick-dummy.$(OBJECT_SUFFIX)
55 else
56 $(error "Unsupported joystick type")
57 endif
58 endif
60 ifeq ($(SOUND), SDL)
61 PLATFORM_OBJECTS += SDL/sound-sdl.$(OBJECT_SUFFIX)
62 else
63 ifeq ($(SOUND), PORTAUDIO)
64 PLATFORM_OBJECTS += portaudio/sound-portaudio.$(OBJECT_SUFFIX)
65 PLATFORM_LDFLAGS += -lportaudio
66 else
67 ifeq ($(SOUND), DUMMY)
68 PLATFORM_OBJECTS += dummy/sound-dummy.$(OBJECT_SUFFIX)
69 else
70 $(error "Unsupported sound type")
71 endif
72 endif
73 endif
75 ifeq ($(GRAPHICS), SDL)
76 ifneq ($(JOYSTICK), SDL)
77 $(error "SDL graphics requires SDL joystick)
78 endif
79 LSNES_MAIN = lsnes.$(OBJECT_SUFFIX)
80 PLATFORM_OBJECTS += SDL/window-sdl.$(OBJECT_SUFFIX)
81 PLATFORM_CFLAGS += $(shell sdl-config --cflags)
82 PLATFORM_LDFLAGS += $(shell sdl-config --libs)
83 ifdef TEST_WIN32
84 PLATFORM_LDFLAGS += -lSDLmain
85 endif
86 SDL/%.$(OBJECT_SUFFIX): SDL/%.cpp
87 $(CC) -I. -Igeneric -g -std=gnu++0x -I$(BSNES_PATH) -c -o $@ $< $(CFLAGS) $(PLATFORM_CFLAGS)
88 lsnes.$(OBJECT_SUFFIX): lsnes.cpp
89 $(CC) -I. -Igeneric -g -std=gnu++0x -I$(BSNES_PATH) -c -o $@ $< $(CFLAGS) $(PLATFORM_CFLAGS)
90 lsnes.$(EXECUTABLE_SUFFIX): lsnes.$(OBJECT_SUFFIX) $(OBJECTS) $(PLATFORM_OBJECTS)
91 $(CC) -o $@ $^ $(BSNES_PATH)/out/libsnes.$(ARCHIVE_SUFFIX) $(LDFLAGS) $(PLATFORM_LDFLAGS)
92 else
93 $(error "Unsupported graphics type")
94 endif
100 .PRECIOUS: %.$(EXECUTABLE_SUFFIX) %.$(OBJECT_SUFFIX)
104 %.$(EXECUTABLE_SUFFIX): %.$(OBJECT_SUFFIX) $(OBJECTS) $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard dummy/*.cpp))
105 $(CC) -o $@ $^ $(BSNES_PATH)/out/libsnes.$(ARCHIVE_SUFFIX) $(LDFLAGS)
107 %.$(OBJECT_SUFFIX): %.cpp
108 $(CC) -I. -Igeneric -g -std=gnu++0x -I$(BSNES_PATH) -c -o $@ $< $(CFLAGS)
110 fonts/font.$(OBJECT_SUFFIX): fonts/$(FONT_SRC) fonts/parsehexfont.$(EXECUTABLE_SUFFIX)
111 fonts/parsehexfont.$(EXECUTABLE_SUFFIX) <fonts/$(FONT_SRC) >fonts/font.cpp
112 $(CC) -std=gnu++0x $(HOSTCCFLAGS) -c -o fonts/font.$(OBJECT_SUFFIX) fonts/font.cpp
113 $(HOSTCC) -std=gnu++0x $(HOSTCCFLAGS) -o fonts/verifyhexfont.$(EXECUTABLE_SUFFIX) fonts/verifyhexfont.cpp fonts/font.cpp
114 fonts/verifyhexfont.$(EXECUTABLE_SUFFIX)
116 fonts/parsehexfont.$(EXECUTABLE_SUFFIX): fonts/parsehexfont.cpp
117 $(HOSTCC) -std=gnu++0x $(HOSTCCFLAGS) -o $@ $^
119 clean:
120 rm -f $(PROGRAMS) $(patsubst %.$(EXECUTABLE_SUFFIX),%.$(OBJECT_SUFFIX),$(PROGRAMS)) SDL/*.$(OBJECT_SUFFIX) avidump/*.$(OBJECT_SUFFIX) generic/*.$(OBJECT_SUFFIX) lua/*.$(OBJECT_SUFFIX) fonts/font.o fonts/font.cpp