#!/usr/bin/make
-CPPFLAGS := -I. $(shell sdl-config --cflags) $(shell pkg-config --cflags x11) -I/usr/include/hgw
-LDLIBS := -lz $(shell sdl-config --libs) $(shell pkg-config --libs x11) -lpopt -lhgw
+CPPFLAGS := -I. $(shell sdl-config --cflags) $(shell pkg-config --cflags x11)
+LDLIBS := -lz $(shell sdl-config --libs) $(shell pkg-config --libs x11) -lpopt
-include config.mk
# Sane defaults
+CONF_GUI?=1
+CONF_HGW?=$(CONF_GUI)
ifeq ($(ARCH),armel)
CONF_BUILD_ASM_CPU?=1
CONF_BUILD_ASM_SPC700?=1
# my extensions to snes9x (speedhacks support)
OBJS += hacks.o
# the glue code that sticks it all together in a monstruous way
-OBJS += platform/path.o platform/config.o platform/hgw.o
+OBJS += platform/path.o platform/config.o
OBJS += platform/sdl.o platform/sdlv.o platform/sdla.o platform/sdli.o
+ifeq ($(CONF_HGW), 1)
+ CPPFLAGS += -DCONF_HGW=1 -I/usr/include/hgw
+ LDLIBS += -lhgw
+ OBJS += platform/hgw.o
+endif
+
# automatic dependencies
DEPS := $(OBJS:.o=.d)
-all: drnoksnes gui
+all: drnoksnes
-clean: gui_clean
+clean:
rm -f drnoksnes *.o *.d platform/*.o platform/*.d
rm -f build-stamp configure-stamp
install: drnoksnes
install drnoksnes $(DESTDIR)/usr/games
- $(MAKE) -C gui install DESTDIR="$(DESTDIR)"
deps: $(DEPS)
%.d: %.cpp
%.d: %.s
@touch $@
+# GUI
gui:
$(MAKE) -C gui all
gui_clean:
$(MAKE) -C gui clean
+
+gui_install:
+ $(MAKE) -C gui install DESTDIR="$(DESTDIR)"
+
+ifeq ($(CONF_GUI), 1)
+all: gui
+clean: gui_clean
+install: gui_install
+endif
.PHONY: all clean remake deps install gui gui_clean
$(M4) $(M4DEFS) debian/drnoksnes.postinst.m4 > debian/drnoksnes.postinst
echo ARCH="$(ARCH)" > config.mk
+ echo CONF_GUI=1 >> config.mk
+ echo CONF_HGW=1 >> config.mk
ifeq ($(shell expr "$(MAEMO_VERSION)" ">" 4), 1)
# Maemo 5 devices do not support Xsp
echo CONF_XSP=0 >> config.mk
// Command line parameters (including --conf args)
parseArgs(optCon);
+#if CONF_HGW
if (!gotRomFile() && !hgwLaunched) {
// User did not specify a ROM file,
// and we're not being launched from D-Bus.
fprintf(stderr, "You need to specify a ROM, like this:\n");
poptPrintUsage(optCon, stdout, 0);
- poptFreeContext(optCon);
+ poptFreeContext(optCon);
exit(2);
}
+#else
+ if (!gotRomFile()) {
+ // User did not specify a ROM file
+ fprintf(stderr, "You need to specify a ROM, like this:\n");
+ poptPrintUsage(optCon, stdout, 0);
+ poptFreeContext(optCon);
+ exit(2);
+ }
+#endif
poptFreeContext(optCon);
}
}
}
+#if CONF_HGW
/** Wraps HgwPollEvents, taking care of kPollHgwEveryNFrames */
static inline void pollHgwEvents() {
static int frames = 0;
frames = 0;
}
}
+#endif
int main(int argc, const char ** argv) {
// Initialise SDL
DIE("SDL_Init: %s", SDL_GetError());
// Configure snes9x
+#if CONF_HGW
HgwInit(); // Hildon-games-wrapper initialization.
+#endif
S9xLoadConfig(argc, argv); // Load config files and parse cmd line.
+#if CONF_HGW
HgwConfig(); // Apply specific hildon-games config.
+#endif
// S9x initialization
S9xInitDisplay(argc, argv);
frameSync(); // May block, or set frameskip to true.
S9xMainLoop(); // Does CPU things, renders if needed.
pollEvents();
+#if CONF_HGW
pollHgwEvents();
+#endif
} while (!Config.quitting);
// Deinitialization
S9xGraphicsDeinit();
Memory.Deinit();
S9xUnloadConfig();
+#if CONF_HGW
HgwDeinit();
+#endif
SDL_Quit();