Wxwidgets: Pass correct mode when dumping
[lsnes.git] / Makefile
blob247bdb03957f7f1abe9e35e9da629373ca6248f1
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 += -DSTD_THREADS
47 else
48 ifeq ($(THREADS), BOOST)
49 CFLAGS += -DBOOST_THREADS
50 ifdef BOOST_THREAD_LIB
51 LDFLAGS += -l$(BOOST_THREAD_LIB)
52 else
53 LDFLAGS += -lboost_thread-mt
54 endif
55 else
56 ifeq ($(THREADS), NO)
57 CFLAGS += -DNO_THREADS
58 else
59 $(error "Bad value for THREADS (expected YES, BOOST, BOOSTNOMT or NO)")
60 endif
61 endif
62 endif
63 endif
66 #Some misc defines.
67 ifdef BSNES_IS_COMPAT
68 CFLAGS += -DBSNES_IS_COMPAT
69 endif
71 #Joystick.
72 ifeq ($(JOYSTICK), SDL)
73 ifneq ($(GRAPHICS), SDL)
74 $(error "SDL Joystick requires SDL graphics")
75 endif
76 PLATFORM_OBJECTS += src/plat-sdl/joystick.$(OBJECT_SUFFIX)
77 else
78 ifeq ($(JOYSTICK), DUMMY)
79 CFLAGS += -DSDL_NO_JOYSTICK
80 PLATFORM_OBJECTS += src/plat-dummy/joystick.$(OBJECT_SUFFIX)
81 else
82 ifeq ($(JOYSTICK), EVDEV)
83 CFLAGS += -DSDL_NO_JOYSTICK
84 PLATFORM_OBJECTS += $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/plat-evdev/*.cpp))
85 else
86 $(error "Unsupported joystick type")
87 endif
88 endif
89 endif
91 #Sound stuff.
92 ifeq ($(SOUND), SDL)
93 ifneq ($(GRAPHICS), SDL)
94 $(error "SDL Sound requires SDL graphics")
95 endif
96 PLATFORM_OBJECTS += src/plat-sdl/sound.$(OBJECT_SUFFIX)
97 else
98 ifeq ($(SOUND), PORTAUDIO)
99 PLATFORM_OBJECTS += src/plat-portaudio/sound.$(OBJECT_SUFFIX)
100 PLATFORM_CFLAGS += $(shell $(CROSS_PREFIX)pkg-config portaudio-2.0 --cflags)
101 PLATFORM_LDFLAGS += $(shell $(CROSS_PREFIX)pkg-config portaudio-2.0 --libs)
102 else
103 ifeq ($(SOUND), DUMMY)
104 PLATFORM_OBJECTS += src/plat-dummy/sound.$(OBJECT_SUFFIX)
105 else
106 $(error "Unsupported sound type")
107 endif
108 endif
109 endif
111 #Graphics stuff.
112 ifeq ($(GRAPHICS), SDL)
113 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)
114 PLATFORM_CFLAGS += $(shell $(CROSS_PREFIX)sdl-config --cflags)
115 PLATFORM_LDFLAGS += $(shell $(CROSS_PREFIX)sdl-config --libs)
116 else
117 ifeq ($(GRAPHICS), WXWIDGETS)
118 PLATFORM_OBJECTS += $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/plat-wxwidgets/*.cpp))
119 PLATFORM_CFLAGS += $(shell $(CROSS_PREFIX)wx-config --cxxflags) $(shell $(CROSS_PREFIX)pkg-config libswscale --cflags)
120 PLATFORM_LDFLAGS += $(shell $(CROSS_PREFIX)wx-config --libs) $(shell $(CROSS_PREFIX)pkg-config libswscale --libs)
121 else
122 $(error "Unsupported graphics type")
123 endif
124 endif
126 CORE_CFLAGS=$(CFLAGS) $(USER_CFLAGS)
127 SUPPORT_CFLAGS=$(CORE_CFLAGS) $(PLATFORM_CFLAGS) $(USER_PLATFORM_CFLAGS)
128 CORE_LDFLAGS=$(BSNES_PATH)/out/libsnes.$(ARCHIVE_SUFFIX) $(LDFLAGS) $(USER_LDFLAGS)
129 SUPPORT_LDFLAGS=$(CORE_LDFLAGS) $(PLATFORM_LDFLAGS) $(USER_PLATFORM_LDFLAGS)
130 PLAT_DUMMY_OBJECTS=$(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/plat-dummy/*.cpp))
131 HOST_CFLAGS=$(HOSTCCFLAGS) $(USER_HOSTCCFLAGS)
132 HOST_LDFLAGS=$(HOSTLDFLAGS) $(USER_HOSTLDFLAGS)
134 .PRECIOUS: %
136 #Stuff compiled with core CFLAGS.
137 avi/%.$(OBJECT_SUFFIX): avi/%.cpp
138 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
139 src/core/%.$(OBJECT_SUFFIX): src/core/%.cpp
140 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
141 src/lua/%.$(OBJECT_SUFFIX): src/lua/%.cpp
142 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
143 src/plat-dummy/%.$(OBJECT_SUFFIX): src/plat-dummy/%.cpp
144 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
145 src/util/%.$(OBJECT_SUFFIX): src/util/%.cpp
146 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
148 #Platform stuff to be compiled with support CFLAGS.
149 src/plat-evdev/%.$(OBJECT_SUFFIX): src/plat-evdev/%.cpp
150 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
151 src/plat-portaudio/%.$(OBJECT_SUFFIX): src/plat-portaudio/%.cpp
152 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
153 src/plat-sdl/%.$(OBJECT_SUFFIX): src/plat-sdl/%.cpp
154 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
155 src/plat-wxwidgets/%.$(OBJECT_SUFFIX): src/plat-wxwidgets/%.cpp
156 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
158 #lsnes main executable.
159 lsnes.$(EXECUTABLE_SUFFIX): $(CORE_OBJECTS) $(PLATFORM_OBJECTS)
160 $(REALCC) -o $@ $^ $(SUPPORT_LDFLAGS)
162 #Other executables.
163 %.$(EXECUTABLE_SUFFIX): src/util/%.$(OBJECT_SUFFIX) $(CORE_OBJECTS) $(PLAT_DUMMY_OBJECTS)
164 $(REALCC) -o $@ $^ $(CORE_LDFLAGS)
166 #Fonts.
167 src/fonts/font.$(OBJECT_SUFFIX): src/fonts/$(FONT_SRC)
168 echo "extern const char* font_hex_data = " >src/fonts/font.cpp
169 sed -E -f src/fonts/fonttransform.sed <$^ >>src/fonts/font.cpp
170 echo ";" >>src/fonts/font.cpp
171 $(REALCC) $(CORE_CFLAGS) -c -o $@ src/fonts/font.cpp
173 #Version info.
174 buildaux/version.exe: buildaux/version.cpp VERSION
175 $(HOSTCC) $(HOSTCCFLAGS) -o $@ $<
176 src/core/version.cpp: buildaux/version.exe FORCE
177 buildaux/version.exe >$@
179 .PHONY: FORCE
181 clean:
182 rm -f $(PROGRAMS) src/*.$(OBJECT_SUFFIX) src/*/*.$(OBJECT_SUFFIX) avi/*.$(OBJECT_SUFFIX) src/fonts/font.o src/fonts/font.cpp