Make wxwidgets gui load and save various settings
[lsnes.git] / Makefile
blob13e88e01b058bedcc044455d8ef20cd533ed21f2
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)
11 #Flags.
12 HOSTCCFLAGS = -std=gnu++0x
13 CFLAGS = -I$(BSNES_PATH) -Iinclude -Iavi -std=gnu++0x
14 LDFLAGS = -lboost_iostreams -lboost_filesystem -lboost_system -lz
15 PLATFORM_CFLAGS =
16 PLATFORM_LDFLAGS =
18 #Platform defs.
19 GRAPHICS = SDL
20 SOUND = SDL
21 JOYSTICK = SDL
23 #Core objects and what to build.
24 CORE_OBJECTS = $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/core/*.cpp)) \
25 $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard avi/*.cpp)) \
26 src/fonts/font.$(OBJECT_SUFFIX)
27 PROGRAMS = lsnes.$(EXECUTABLE_SUFFIX) movieinfo.$(EXECUTABLE_SUFFIX) lsnes-dumpavi.$(EXECUTABLE_SUFFIX) sdmp2sox.$(EXECUTABLE_SUFFIX)
28 all: $(PROGRAMS)
30 #Platform objects.
31 PLATFORM_OBJECTS=
33 #Lua.
34 ifndef LUA
35 CFLAGS += -DNO_LUA
36 else
37 CORE_OBJECTS += $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/lua/*.cpp))
38 CFLAGS += $(shell $(CROSS_PREFIX)pkg-config $(LUA) --cflags)
39 LDFLAGS += $(shell $(CROSS_PREFIX)pkg-config $(LUA) --libs)
40 endif
42 #Threads
43 ifdef THREADS
44 ifeq ($(THREADS), YES)
45 CFLAGS += -DUSE_THREADS
46 else
47 ifeq ($(THREADS), NO)
48 CFLAGS += -DNO_THREADS
49 else
50 $(error "Bad value for THREADS (expected YES or NO)")
51 endif
52 endif
53 endif
56 #Some misc defines.
57 ifdef NO_TIME_INTERCEPT
58 CFLAGS += -DNO_TIME_INTERCEPT
59 else
60 LDFLAGS += -Wl,--wrap,time
61 endif
62 ifdef BSNES_IS_COMPAT
63 CFLAGS += -DBSNES_IS_COMPAT
64 endif
66 #Joystick.
67 ifeq ($(JOYSTICK), SDL)
68 ifneq ($(GRAPHICS), SDL)
69 $(error "SDL Joystick requires SDL graphics")
70 endif
71 PLATFORM_OBJECTS += src/plat-sdl/joystick.$(OBJECT_SUFFIX)
72 else
73 ifeq ($(JOYSTICK), DUMMY)
74 CFLAGS += -DSDL_NO_JOYSTICK
75 PLATFORM_OBJECTS += src/plat-dummy/joystick.$(OBJECT_SUFFIX)
76 else
77 ifeq ($(JOYSTICK), EVDEV)
78 CFLAGS += -DSDL_NO_JOYSTICK
79 PLATFORM_OBJECTS += $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/plat-evdev/*.cpp))
80 else
81 $(error "Unsupported joystick type")
82 endif
83 endif
84 endif
86 #Sound stuff.
87 ifeq ($(SOUND), SDL)
88 ifneq ($(GRAPHICS), SDL)
89 $(error "SDL Sound requires SDL graphics")
90 endif
91 PLATFORM_OBJECTS += src/plat-sdl/sound.$(OBJECT_SUFFIX)
92 else
93 ifeq ($(SOUND), PORTAUDIO)
94 PLATFORM_OBJECTS += src/plat-portaudio/sound.$(OBJECT_SUFFIX)
95 PLATFORM_CFLAGS += $(shell $(CROSS_PREFIX)pkg-config portaudio-2.0 --cflags)
96 PLATFORM_LDFLAGS += $(shell $(CROSS_PREFIX)pkg-config portaudio-2.0 --libs)
97 else
98 ifeq ($(SOUND), DUMMY)
99 PLATFORM_OBJECTS += src/plat-dummy/sound.$(OBJECT_SUFFIX)
100 else
101 $(error "Unsupported sound type")
102 endif
103 endif
104 endif
106 #Graphics stuff.
107 ifeq ($(GRAPHICS), SDL)
108 PLATFORM_OBJECTS += src/plat-sdl/main.$(OBJECT_SUFFIX) src/plat-sdl/graphics.$(OBJECT_SUFFIX)
109 PLATFORM_CFLAGS += $(shell $(CROSS_PREFIX)sdl-config --cflags)
110 PLATFORM_LDFLAGS += $(shell $(CROSS_PREFIX)sdl-config --libs)
111 else
112 ifeq ($(GRAPHICS), WXWIDGETS)
113 PLATFORM_OBJECTS += $(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/plat-wxwidgets/*.cpp))
114 PLATFORM_CFLAGS += $(shell $(CROSS_PREFIX)wx-config --cxxflags) $(shell $(CROSS_PREFIX)pkg-config libswscale --cflags)
115 PLATFORM_LDFLAGS += $(shell $(CROSS_PREFIX)wx-config --libs) $(shell $(CROSS_PREFIX)pkg-config libswscale --libs)
116 else
117 $(error "Unsupported graphics type")
118 endif
119 endif
121 CORE_CFLAGS=$(CFLAGS) $(USER_CFLAGS)
122 SUPPORT_CFLAGS=$(CORE_CFLAGS) $(PLATFORM_CFLAGS) $(USER_PLATFORM_CFLAGS)
123 CORE_LDFLAGS=$(BSNES_PATH)/out/libsnes.$(ARCHIVE_SUFFIX) $(LDFLAGS) $(USER_LDFLAGS)
124 SUPPORT_LDFLAGS=$(CORE_LDFLAGS) $(PLATFORM_LDFLAGS) $(USER_PLATFORM_LDFLAGS)
125 PLAT_DUMMY_OBJECTS=$(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard src/plat-dummy/*.cpp))
126 HOST_CFLAGS=$(HOSTCCFLAGS) $(USER_HOSTCCFLAGS)
127 HOST_LDFLAGS=$(HOSTLDFLAGS) $(USER_HOSTLDFLAGS)
129 .PRECIOUS: %.$(EXECUTABLE_SUFFIX) %.$(OBJECT_SUFFIX)
131 #Stuff compiled with core CFLAGS.
132 avi/%.$(OBJECT_SUFFIX): avi/%.cpp
133 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
134 src/core/%.$(OBJECT_SUFFIX): src/core/%.cpp
135 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
136 src/lua/%.$(OBJECT_SUFFIX): src/lua/%.cpp
137 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
138 src/plat-dummy/%.$(OBJECT_SUFFIX): src/plat-dummy/%.cpp
139 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
140 src/util/%.$(OBJECT_SUFFIX): src/util/%.cpp
141 $(REALCC) -c -o $@ $< $(CORE_CFLAGS)
143 #Platform stuff to be compiled with support CFLAGS.
144 src/plat-evdev/%.$(OBJECT_SUFFIX): src/plat-evdev/%.cpp
145 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
146 src/plat-portaudio/%.$(OBJECT_SUFFIX): src/plat-portaudio/%.cpp
147 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
148 src/plat-sdl/%.$(OBJECT_SUFFIX): src/plat-sdl/%.cpp
149 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
150 src/plat-wxwidgets/%.$(OBJECT_SUFFIX): src/plat-wxwidgets/%.cpp
151 $(REALCC) -c -o $@ $< $(SUPPORT_CFLAGS)
153 #lsnes main executable.
154 lsnes.$(EXECUTABLE_SUFFIX): $(CORE_OBJECTS) $(PLATFORM_OBJECTS)
155 $(REALCC) -o $@ $^ $(SUPPORT_LDFLAGS)
157 #Other executables.
158 %.$(EXECUTABLE_SUFFIX): src/util/%.$(OBJECT_SUFFIX) $(CORE_OBJECTS) $(PLAT_DUMMY_OBJECTS)
159 $(REALCC) -o $@ $^ $(CORE_LDFLAGS)
161 #Fonts.
162 src/fonts/font.$(OBJECT_SUFFIX): src/fonts/$(FONT_SRC)
163 echo "extern const char* font_hex_data = " >src/fonts/font.cpp
164 sed -r -f src/fonts/fonttransform.sed <$^ >>src/fonts/font.cpp
165 echo ";" >>src/fonts/font.cpp
166 $(REALCC) $(CORE_CFLAGS) -c -o $@ src/fonts/font.cpp
168 clean:
169 rm -f $(PROGRAMS) src/*.$(OBJECT_SUFFIX) src/*/*.$(OBJECT_SUFFIX) avi/*.$(OBJECT_SUFFIX) src/fonts/font.o src/fonts/font.cpp