2 EXECUTABLE_SUFFIX
= exe
5 FONT_SRC
:= unifontfull-5.1
.20080820.hex
9 REALCC
= $(CROSS_PREFIX
)$(CC
)
13 HOSTCCFLAGS
= -std
=gnu
++0x
14 CFLAGS
= -I
$(BSNES_PATH
) -Iinclude
-Iavi
-std
=gnu
++0x
15 LDFLAGS
= -lboost_iostreams-mt
-lboost_filesystem-mt
-lboost_system-mt
-lboost_regex-mt
-lz
24 #Core objects and what to build.
25 CORE_OBJECTS
= $(patsubst %.
cpp,%.
$(OBJECT_SUFFIX
),$(wildcard src
/core
/*.
cpp)) \
26 $(patsubst %.
cpp,%.
$(OBJECT_SUFFIX
),$(wildcard src
/library
/*.
cpp)) \
27 $(patsubst %.
cpp,%.
$(OBJECT_SUFFIX
),$(wildcard avi
/*.
cpp)) \
28 src
/fonts
/font.
$(OBJECT_SUFFIX
) src
/core
/version.
$(OBJECT_SUFFIX
)
29 PROGRAMS
= lsnes.
$(EXECUTABLE_SUFFIX
) movieinfo.
$(EXECUTABLE_SUFFIX
) lsnes-dumpavi.
$(EXECUTABLE_SUFFIX
) sdmp2sox.
$(EXECUTABLE_SUFFIX
)
36 ifdef MAKE_MALLOC_THREADSAFE
37 CFLAGS
+= -DMAKE_MALLOC_THREADSAFE
38 LDFLAGS
+= -Wl
,--wrap
,malloc
,--wrap
,calloc
,--wrap
,realloc
,--wrap
,free
43 CFLAGS
+= -DBSNES_V
$(BSNES_VERSION
)
50 CORE_OBJECTS
+= $(patsubst %.
cpp,%.
$(OBJECT_SUFFIX
),$(wildcard src
/lua
/*.
cpp))
51 CFLAGS
+= $(shell $(CROSS_PREFIX
)pkg-config
$(LUA
) --cflags)
52 LDFLAGS
+= $(shell $(CROSS_PREFIX
)pkg-config
$(LUA
) --libs
)
57 ifeq ($(THREADS
), YES
)
58 CFLAGS
+= -DSTD_THREADS
60 ifeq ($(THREADS
), BOOST
)
61 CFLAGS
+= -DBOOST_THREADS
62 ifdef BOOST_THREAD_LIB
63 LDFLAGS
+= -l
$(BOOST_THREAD_LIB
)
65 LDFLAGS
+= -lboost_thread-mt
69 CFLAGS
+= -DNO_THREADS
71 $(error
"Bad value for THREADS (expected YES, BOOST, BOOSTNOMT or NO)")
80 CFLAGS
+= -DBSNES_IS_COMPAT
84 ifeq ($(JOYSTICK
), SDL
)
85 ifneq ($(GRAPHICS
), SDL
)
86 $(error
"SDL Joystick requires SDL graphics")
88 PLATFORM_OBJECTS
+= src
/plat-sdl
/joystick.
$(OBJECT_SUFFIX
)
90 ifeq ($(JOYSTICK
), DUMMY
)
91 CFLAGS
+= -DSDL_NO_JOYSTICK
92 PLATFORM_OBJECTS
+= src
/plat-dummy
/joystick.
$(OBJECT_SUFFIX
)
94 ifeq ($(JOYSTICK
), EVDEV
)
95 CFLAGS
+= -DSDL_NO_JOYSTICK
96 PLATFORM_OBJECTS
+= $(patsubst %.
cpp,%.
$(OBJECT_SUFFIX
),$(wildcard src
/plat-evdev
/*.
cpp))
98 $(error
"Unsupported joystick type")
105 ifneq ($(GRAPHICS
), SDL
)
106 $(error
"SDL Sound requires SDL graphics")
108 PLATFORM_OBJECTS
+= src
/plat-sdl
/sound.
$(OBJECT_SUFFIX
)
110 ifeq ($(SOUND
), PORTAUDIO
)
111 PLATFORM_OBJECTS
+= src
/plat-portaudio
/sound.
$(OBJECT_SUFFIX
)
112 PLATFORM_CFLAGS
+= $(shell $(CROSS_PREFIX
)pkg-config portaudio-2.0
--cflags)
113 PLATFORM_LDFLAGS
+= $(shell $(CROSS_PREFIX
)pkg-config portaudio-2.0
--libs
)
115 ifeq ($(SOUND
), DUMMY
)
116 PLATFORM_OBJECTS
+= src
/plat-dummy
/sound.
$(OBJECT_SUFFIX
)
118 $(error
"Unsupported sound type")
124 ifeq ($(GRAPHICS
), SDL
)
125 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
)
126 PLATFORM_CFLAGS
+= $(shell $(CROSS_PREFIX
)sdl-config
--cflags)
127 PLATFORM_LDFLAGS
+= $(shell $(CROSS_PREFIX
)sdl-config
--libs
)
129 ifeq ($(GRAPHICS
), WXWIDGETS
)
130 PLATFORM_OBJECTS
+= $(patsubst %.
cpp,%.
$(OBJECT_SUFFIX
),$(wildcard src
/plat-wxwidgets
/*.
cpp))
131 PLATFORM_CFLAGS
+= $(shell $(CROSS_PREFIX
)wx-config
--cxxflags) $(shell $(CROSS_PREFIX
)pkg-config libswscale
--cflags)
132 PLATFORM_LDFLAGS
+= $(shell $(CROSS_PREFIX
)wx-config
--libs
) $(shell $(CROSS_PREFIX
)pkg-config libswscale
--libs
)
134 $(error
"Unsupported graphics type")
138 CORE_CFLAGS
=$(CFLAGS
) $(USER_CFLAGS
)
139 SUPPORT_CFLAGS
=$(CORE_CFLAGS
) $(PLATFORM_CFLAGS
) $(USER_PLATFORM_CFLAGS
)
140 CORE_LDFLAGS
=$(BSNES_PATH
)/out
/libsnes.
$(ARCHIVE_SUFFIX
) $(LDFLAGS
) $(USER_LDFLAGS
)
141 SUPPORT_LDFLAGS
=$(CORE_LDFLAGS
) $(PLATFORM_LDFLAGS
) $(USER_PLATFORM_LDFLAGS
)
142 PLAT_DUMMY_OBJECTS
=$(patsubst %.
cpp,%.
$(OBJECT_SUFFIX
),$(wildcard src
/plat-dummy
/*.
cpp))
143 HOST_CFLAGS
=$(HOSTCCFLAGS
) $(USER_HOSTCCFLAGS
)
144 HOST_LDFLAGS
=$(HOSTLDFLAGS
) $(USER_HOSTLDFLAGS
)
148 #Stuff compiled with core CFLAGS.
149 avi
/%.
$(OBJECT_SUFFIX
): avi
/%.
cpp
150 $(REALCC
) -c
-o
$@
$< $(CORE_CFLAGS
)
151 src
/core
/%.
$(OBJECT_SUFFIX
): src
/core
/%.
cpp
152 $(REALCC
) -c
-o
$@
$< $(CORE_CFLAGS
)
153 src
/lua
/%.
$(OBJECT_SUFFIX
): src
/lua
/%.
cpp
154 $(REALCC
) -c
-o
$@
$< $(CORE_CFLAGS
)
155 src
/library
/%.
$(OBJECT_SUFFIX
): src
/library
/%.
cpp
156 $(REALCC
) -c
-o
$@
$< $(CORE_CFLAGS
)
157 src
/plat-dummy
/%.
$(OBJECT_SUFFIX
): src
/plat-dummy
/%.
cpp
158 $(REALCC
) -c
-o
$@
$< $(CORE_CFLAGS
)
159 src
/util
/%.
$(OBJECT_SUFFIX
): src
/util
/%.
cpp
160 $(REALCC
) -c
-o
$@
$< $(CORE_CFLAGS
)
162 #Platform stuff to be compiled with support CFLAGS.
163 src
/plat-evdev
/%.
$(OBJECT_SUFFIX
): src
/plat-evdev
/%.
cpp
164 $(REALCC
) -c
-o
$@
$< $(SUPPORT_CFLAGS
)
165 src
/plat-portaudio
/%.
$(OBJECT_SUFFIX
): src
/plat-portaudio
/%.
cpp
166 $(REALCC
) -c
-o
$@
$< $(SUPPORT_CFLAGS
)
167 src
/plat-sdl
/%.
$(OBJECT_SUFFIX
): src
/plat-sdl
/%.
cpp
168 $(REALCC
) -c
-o
$@
$< $(SUPPORT_CFLAGS
)
169 src
/plat-wxwidgets
/%.
$(OBJECT_SUFFIX
): src
/plat-wxwidgets
/%.
cpp
170 $(REALCC
) -c
-o
$@
$< $(SUPPORT_CFLAGS
)
172 #lsnes main executable.
173 lsnes.
$(EXECUTABLE_SUFFIX
): $(CORE_OBJECTS
) $(PLATFORM_OBJECTS
)
174 $(REALCC
) -o
$@
$^
$(SUPPORT_LDFLAGS
)
177 %.
$(EXECUTABLE_SUFFIX
): src
/util
/%.
$(OBJECT_SUFFIX
) $(CORE_OBJECTS
) $(PLAT_DUMMY_OBJECTS
)
178 $(REALCC
) -o
$@
$^
$(CORE_LDFLAGS
)
181 src
/fonts
/font.
$(OBJECT_SUFFIX
): src
/fonts
/$(FONT_SRC
)
182 echo
"extern const char* font_hex_data = " >src
/fonts
/font.
cpp
183 sed
-E
-f src
/fonts
/fonttransform.sed
<$^
>>src
/fonts
/font.
cpp
184 echo
";" >>src
/fonts
/font.
cpp
185 $(REALCC
) $(CORE_CFLAGS
) -c
-o
$@ src
/fonts
/font.
cpp
188 buildaux
/version.exe
: buildaux
/version.
cpp VERSION
189 $(HOSTCC
) $(HOSTCCFLAGS
) -o
$@
$<
190 src
/core
/version.
cpp: buildaux
/version.exe FORCE
191 buildaux
/version.exe
>$@
196 rm -f
$(PROGRAMS
) src
/*.
$(OBJECT_SUFFIX
) src
/*/*.
$(OBJECT_SUFFIX
) avi
/*.
$(OBJECT_SUFFIX
) src
/fonts
/font.o src
/fonts
/font.
cpp