From 3c9456dd45f38386b3357dee2fc93924bdd46696 Mon Sep 17 00:00:00 2001 From: truelight Date: Sun, 10 Jul 2005 14:57:43 +0000 Subject: [PATCH] (svn r2542) -Add: [GPMI] Added GPMI (http://sourceforge.net/projects/libgpmi/) support to OpenTTD in preperation of AIScripts (long term). It is OFF by default. Add GPMI:=1 to Makefile.config to enable. --- Makefile | 9 +++++++++ debug.c | 13 +++++++++++++ debug.h | 7 +++++++ makefiledir/Makefile.config_writer | 1 + openttd.c | 17 +++++++++++++++++ 5 files changed, 47 insertions(+) diff --git a/Makefile b/Makefile index c1e20799cd..00fbb13c2f 100644 --- a/Makefile +++ b/Makefile @@ -386,6 +386,15 @@ endif CFLAGS += $(BASECFLAGS) +# See if we want to enable GPMI +ifdef GPMI +CFLAGS += -DGPMI +GPMI_STATIC_PATH = `gpmi-config --static` +LDFLAGS += -rdynamic `gpmi-config --libs` +# Static link paths into the game +LDFLAGS += $(GPMI_STATIC_PATH)/paths-static.o +endif + ifdef UNIX CDEFS += -DUNIX endif diff --git a/debug.c b/debug.c index fe36348fc8..089f778508 100644 --- a/debug.c +++ b/debug.c @@ -15,6 +15,9 @@ int _debug_net_level; int _debug_spritecache_level; int _debug_oldloader_level; int _debug_pbs_level; +#ifdef GPMI +int _debug_gpmi_level; +#endif /* GPMI */ int _debug_npf_level; @@ -46,6 +49,9 @@ typedef struct DebugLevel { DEBUG_LEVEL(spritecache), DEBUG_LEVEL(oldloader), DEBUG_LEVEL(pbs), +#ifdef GPMI + DEBUG_LEVEL(gpmi), +#endif DEBUG_LEVEL(npf) }; #undef DEBUG_LEVEL @@ -120,3 +126,10 @@ const char *GetDebugString(void) return dbgstr; } + +#ifdef GPMI +void gpmi_debug_openttd(int level, char *s) +{ + DEBUG(gpmi, level)("[GPMI] %s", s); +} +#endif /* GPMI */ diff --git a/debug.h b/debug.h index 320e1d5dea..1bfe990ba1 100644 --- a/debug.h +++ b/debug.h @@ -15,6 +15,9 @@ extern int _debug_spritecache_level; extern int _debug_oldloader_level; extern int _debug_pbs_level; +#ifdef GPMI + extern int _debug_gpmi_level; +#endif /* GPMI */ extern int _debug_npf_level; #endif @@ -23,4 +26,8 @@ void CDECL debug(const char *s, ...); void SetDebugString(const char *s); const char *GetDebugString(void); +#ifdef GPMI +void gpmi_debug_openttd(int level, char *s); +#endif /* GPMI */ + #endif diff --git a/makefiledir/Makefile.config_writer b/makefiledir/Makefile.config_writer index 615517f980..caadb188bb 100644 --- a/makefiledir/Makefile.config_writer +++ b/makefiledir/Makefile.config_writer @@ -29,6 +29,7 @@ $(MAKE_CONFIG): $(call CONFIG_LINE,SUPRESS_LANG_ERRORS:=$(SUPRESS_LANG_ERRORS)) $(call CONFIG_LINE,WITH_NETWORK:=$(WITH_NETWORK)) $(call CONFIG_LINE,DEDICATED:=$(DEDICATED)) + $(call CONFIG_LINE,GPMI:=$(GPMI)) $(call CONFIG_LINE,) $(call CONFIG_LINE,\# Disable asserts. Leave them on for easier bug finding) diff --git a/openttd.c b/openttd.c index 04c24adbde..8ec9071624 100644 --- a/openttd.c +++ b/openttd.c @@ -37,6 +37,11 @@ #include +#ifdef GPMI +#include +#include +#endif /* GPMI */ + void GenerateWorld(int mode, uint log_x, uint log_y); void CallLandscapeTick(void); void IncreaseDate(void); @@ -593,6 +598,18 @@ int ttd_main(int argc, char* argv[]) DeterminePaths(); CheckExternalFiles(); +#ifdef GPMI + /* Set the debug proc */ + gpmi_debug_proc = &gpmi_debug_openttd; + + /* Initialize GPMI */ + gpmi_init(); + + /* Add our paths so we can find our own packages */ + gpmi_path_append(&gpmi_path_modules, "gpmi/modules"); + gpmi_path_append(&gpmi_path_packages, "gpmi/packages"); +#endif /* GPMI */ + #ifdef UNIX // We must fork here, or we'll end up without some resources we need (like sockets) if (_dedicated_forks)