wxwidgets: Allow editing jukebox from the GUI
[lsnes.git] / Makefile
blobeefddb0ebd40087ce540dba1c44322fdacf92f97
1 CROSS_PREFIX=
2 EXECUTABLE_SUFFIX = exe
3 OBJECT_SUFFIX = o
4 ARCHIVE_SUFFIX = a
5 FONT_SRC := unifontfull-5.1.20080820.hex
7 #Compilers.
8 CC := g++
9 REALCC = $(CROSS_PREFIX)$(CC)
10 HOSTCC = $(CC)
12 #Flags.
13 HOSTCCFLAGS = -std=gnu++0x
14 CFLAGS = -I$(BSNES_PATH) -Iinclude -Iavi -std=gnu++0x
15 LDFLAGS = -lboost_iostreams -lboost_filesystem -lboost_system -lz
16 PLATFORM_CFLAGS =
17 PLATFORM_LDFLAGS =
19 #Platform defs.
20 GRAPHICS = SDL
21 SOUND = SDL
22 JOYSTICK = SDL
24 #Core objects and what to build.
25 CORE_OBJECTS = $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/core/*.cpp)) \
26 $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard avi/*.cpp)) \
27 src/fonts/font.$(OBJECT_SUFFIX) src/core/version.$(OBJECT_SUFFIX)
28 PROGRAMS = lsnes.$(EXECUTABLE_SUFFIX) movieinfo.$(EXECUTABLE_SUFFIX) lsnes-dumpavi.$(EXECUTABLE_SUFFIX) sdmp2sox.$(EXECUTABLE_SUFFIX)
29 all: $(PROGRAMS)
31 #Platform objects.
32 PLATFORM_OBJECTS=
34 #Lua.
35 ifndef LUA
36 CFLAGS += -DNO_LUA
37 else
38 CORE_OBJECTS += $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/lua/*.cpp))
39 CFLAGS += $(shell $(CROSS_PREFIX)pkg-config $(LUA) --cflags)
40 LDFLAGS += $(shell $(CROSS_PREFIX)pkg-config $(LUA) --libs)
41 endif
43 #Threads
44 ifdef THREADS
45 ifeq ($(THREADS), YES)
46 CFLAGS += -DUSE_THREADS
47 else
48 ifeq ($(THREADS), NO)
49 CFLAGS += -DNO_THREADS
50 else
51 $(error "Bad value for THREADS (expected YES or NO)")
52 endif
53 endif
54 endif
57 #Some misc defines.
58 ifdef BSNES_IS_COMPAT
59 CFLAGS += -DBSNES_IS_COMPAT
60 endif
62 #Joystick.
63 ifeq ($(JOYSTICK), SDL)
64 ifneq ($(GRAPHICS), SDL)
65 $(error "SDL Joystick requires SDL graphics")
66 endif
67 PLATFORM_OBJECTS += src/plat-sdl/joystick.$(OBJECT_SUFFIX)
68 else
69 ifeq ($(JOYSTICK), DUMMY)
70 CFLAGS += -DSDL_NO_JOYSTICK
71 PLATFORM_OBJECTS += src/plat-dummy/joystick.$(OBJECT_SUFFIX)
72 else
73 ifeq ($(JOYSTICK), EVDEV)
74 CFLAGS += -DSDL_NO_JOYSTICK
75 PLATFORM_OBJECTS += $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/plat-evdev/*.cpp))
76 else
77 $(error "Unsupported joystick type")
78 endif
79 endif
80 endif
82 #Sound stuff.
83 ifeq ($(SOUND), SDL)
84 ifneq ($(GRAPHICS), SDL)
85 $(error "SDL Sound requires SDL graphics")
86 endif
87 PLATFORM_OBJECTS += src/plat-sdl/sound.$(OBJECT_SUFFIX)
88 else
89 ifeq ($(SOUND), PORTAUDIO)
90 PLATFORM_OBJECTS += src/plat-portaudio/sound.$(OBJECT_SUFFIX)
91 PLATFORM_CFLAGS += $(shell $(CROSS_PREFIX)pkg-config portaudio-2.0 --cflags)
92 PLATFORM_LDFLAGS += $(shell $(CROSS_PREFIX)pkg-config portaudio-2.0 --libs)
93 else
94 ifeq ($(SOUND), DUMMY)
95 PLATFORM_OBJECTS += src/plat-dummy/sound.$(OBJECT_SUFFIX)
96 else
97 $(error "Unsupported sound type")
98 endif
99 endif
100 endif
102 #Graphics stuff.
103 ifeq ($(GRAPHICS), SDL)
104 PLATFORM_OBJECTS += src/plat-sdl/commandline.$(OBJECT_SUFFIX) src/plat-sdl/drawprim.$(OBJECT_SUFFIX) src/plat-sdl/graphicsfn.$(OBJECT_SUFFIX) src/plat-sdl/keyboard.$(OBJECT_SUFFIX) src/plat-sdl/main.$(OBJECT_SUFFIX) src/plat-sdl/thread.$(OBJECT_SUFFIX) src/plat-sdl/status.$(OBJECT_SUFFIX) src/plat-sdl/thread.$(OBJECT_SUFFIX)
105 PLATFORM_CFLAGS += $(shell $(CROSS_PREFIX)sdl-config --cflags)
106 PLATFORM_LDFLAGS += $(shell $(CROSS_PREFIX)sdl-config --libs)
107 else
108 ifeq ($(GRAPHICS), WXWIDGETS)
109 PLATFORM_OBJECTS += $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/plat-wxwidgets/*.cpp))
110 PLATFORM_CFLAGS += $(shell $(CROSS_PREFIX)wx-config --cxxflags) $(shell $(CROSS_PREFIX)pkg-config libswscale --cflags)
111 PLATFORM_LDFLAGS += $(shell $(CROSS_PREFIX)wx-config --libs) $(shell $(CROSS_PREFIX)pkg-config libswscale --libs)
112 else
113 $(error "Unsupported graphics type")
114 endif
115 endif
117 CORE_CFLAGS=$(CFLAGS) $(USER_CFLAGS)
118 SUPPORT_CFLAGS=$(CORE_CFLAGS) $(PLATFORM_CFLAGS) $(USER_PLATFORM_CFLAGS)
119 CORE_LDFLAGS=$(BSNES_PATH)/out/libsnes.$(ARCHIVE_SUFFIX) $(LDFLAGS) $(USER_LDFLAGS)
120 SUPPORT_LDFLAGS=$(CORE_LDFLAGS) $(PLATFORM_LDFLAGS) $(USER_PLATFORM_LDFLAGS)
121 PLAT_DUMMY_OBJECTS=$(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/plat-dummy/*.cpp))
122 HOST_CFLAGS=$(HOSTCCFLAGS) $(USER_HOSTCCFLAGS)
123 HOST_LDFLAGS=$(HOSTLDFLAGS) $(USER_HOSTLDFLAGS)
125 .PRECIOUS: %
127 #Stuff compiled with core CFLAGS.
128 avi/%.$(OBJECT_SUFFIX): avi/%.cpp
129 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
130 src/core/%.$(OBJECT_SUFFIX): src/core/%.cpp
131 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
132 src/lua/%.$(OBJECT_SUFFIX): src/lua/%.cpp
133 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
134 src/plat-dummy/%.$(OBJECT_SUFFIX): src/plat-dummy/%.cpp
135 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
136 src/util/%.$(OBJECT_SUFFIX): src/util/%.cpp
137 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
139 #Platform stuff to be compiled with support CFLAGS.
140 src/plat-evdev/%.$(OBJECT_SUFFIX): src/plat-evdev/%.cpp
141 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
142 src/plat-portaudio/%.$(OBJECT_SUFFIX): src/plat-portaudio/%.cpp
143 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
144 src/plat-sdl/%.$(OBJECT_SUFFIX): src/plat-sdl/%.cpp
145 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
146 src/plat-wxwidgets/%.$(OBJECT_SUFFIX): src/plat-wxwidgets/%.cpp
147 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
149 #lsnes main executable.
150 lsnes.$(EXECUTABLE_SUFFIX): $(CORE_OBJECTS) $(PLATFORM_OBJECTS)
151 $(REALCC) -o $@ $^ $(SUPPORT_LDFLAGS)
153 #Other executables.
154 %.$(EXECUTABLE_SUFFIX): src/util/%.$(OBJECT_SUFFIX) $(CORE_OBJECTS) $(PLAT_DUMMY_OBJECTS)
155 $(REALCC) -o $@ $^ $(CORE_LDFLAGS)
157 #Fonts.
158 src/fonts/font.$(OBJECT_SUFFIX): src/fonts/$(FONT_SRC)
159 echo "extern const char* font_hex_data = " >src/fonts/font.cpp
160 sed -E -f src/fonts/fonttransform.sed <$^ >>src/fonts/font.cpp
161 echo ";" >>src/fonts/font.cpp
162 $(REALCC) $(CORE_CFLAGS) -c -o $@ src/fonts/font.cpp
164 #Version info.
165 buildaux/version.exe: buildaux/version.cpp VERSION
166 $(HOSTCC) $(HOSTCCFLAGS) -o $@ $<
167 src/core/version.cpp: buildaux/version.exe FORCE
168 buildaux/version.exe >$@
170 .PHONY: FORCE
172 clean:
173 rm -f $(PROGRAMS) src/*.$(OBJECT_SUFFIX) src/*/*.$(OBJECT_SUFFIX) avi/*.$(OBJECT_SUFFIX) src/fonts/font.o src/fonts/font.cpp