Author: cazfi
Date: Fri Jul  8 07:27:28 2016
New Revision: 33200

URL: http://svn.gna.org/viewcvs/freeciv?rev=33200&view=rev
Log:
Made it possible to link stub AI statically in.

See patch #7388

Modified:
    trunk/ai/Makefile.am
    trunk/ai/stub/Makefile.am
    trunk/configure.ac
    trunk/server/Makefile.am
    trunk/server/aiiface.c

Modified: trunk/ai/Makefile.am
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/ai/Makefile.am?rev=33200&r1=33199&r2=33200&view=diff
==============================================================================
--- trunk/ai/Makefile.am        (original)
+++ trunk/ai/Makefile.am        Fri Jul  8 07:27:28 2016
@@ -18,6 +18,10 @@
 module_dirs += threxpr
 endif
 
+if AI_MOD_STATIC_STUB
+module_dirs += stub
+endif
+
 AM_CPPFLAGS = -I$(top_srcdir)/utility -I$(top_srcdir)/common \
  -I$(top_srcdir)/common/networking \
  -I$(top_srcdir)/dependencies/tinycthread
@@ -33,7 +37,9 @@
 if !AI_MOD_STATIC_THREXPR
 module_dirs += threxpr
 endif
+if !AI_MOD_STATIC_STUB
 module_dirs += stub
+endif
 else
 # AI module loading supported, but experimental modules not built
 endif

Modified: trunk/ai/stub/Makefile.am
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/ai/stub/Makefile.am?rev=33200&r1=33199&r2=33200&view=diff
==============================================================================
--- trunk/ai/stub/Makefile.am   (original)
+++ trunk/ai/stub/Makefile.am   Fri Jul  8 07:27:28 2016
@@ -1,12 +1,19 @@
 ## Process this file with automake to produce Makefile.in
 
+if AI_MOD_STATIC_STUB
+noinst_LTLIBRARIES = libstubai.la
+else
 aimodule_LTLIBRARIES = fc_ai_stub.la
+endif
 
 AM_CPPFLAGS = \
        -I$(top_srcdir)/utility \
        -I$(top_srcdir)/common \
        -I$(top_srcdir)/common/networking
 
+if AI_MOD_STATIC_STUB
+libstubai_la_SOURCES = stubai.c
+else
 fc_ai_stub_la_SOURCES = stubai.c
-
 fc_ai_stub_la_LDFLAGS = -module
+endif

Modified: trunk/configure.ac
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/configure.ac?rev=33200&r1=33199&r2=33200&view=diff
==============================================================================
--- trunk/configure.ac  (original)
+++ trunk/configure.ac  Fri Jul  8 07:27:28 2016
@@ -542,6 +542,7 @@
 ai_mod_static_classic=no
 ai_mod_static_threaded=no
 ai_mod_static_threxpr=no
+ai_mod_static_stub=no
 
 for module in $(echo $static_modules | $SED 's/,/ /g') ; do
   if test "x$module" = "xclassic" ; then
@@ -559,6 +560,10 @@
     ai_mod_default_needed=yes
     AC_DEFINE([AI_MOD_STATIC_THREXPR], [1],
               [experimental threads ai module statically linked])
+  elif test "x$module" = "xstub" ; then
+    ai_mod_static_stub=yes
+    AC_DEFINE([AI_MOD_STATIC_STUB], [1],
+              [stub ai module statically linked])
   else
     AC_MSG_ERROR([bad value ${module} for --enable-ai-static])
   fi
@@ -573,6 +578,8 @@
 [test "x$ai_mod_static_threaded" = "xyes"])
 AM_CONDITIONAL([AI_MOD_STATIC_THREXPR],
 [test "x$ai_mod_static_threxpr" = "xyes"])
+AM_CONDITIONAL([AI_MOD_STATIC_STUB],
+[test "x$ai_mod_static_stub" = "xyes"])
 
 AC_ARG_WITH([default-ai],
   AS_HELP_STRING([--with-default-ai], [default ai type [first static]]),
@@ -598,6 +605,9 @@
   fc_ai_last=$fc_ai_last+1
 fi
 if test "x$ai_mod_static_threxpr" = "xyes" ; then
+  fc_ai_last=$fc_ai_last+1
+fi
+if test "x$ai_mod_static_stub" = "xyes" ; then
   fc_ai_last=$fc_ai_last+1
 fi
 if test "x$enable_aimodules" = "xyes" ; then

Modified: trunk/server/Makefile.am
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/Makefile.am?rev=33200&r1=33199&r2=33200&view=diff
==============================================================================
--- trunk/server/Makefile.am    (original)
+++ trunk/server/Makefile.am    Fri Jul  8 07:27:28 2016
@@ -145,6 +145,9 @@
 if AI_MOD_STATIC_THREXPR
 da_libs += $(top_builddir)/ai/threxpr/libthrexprai.la
 endif
+if AI_MOD_STATIC_STUB
+da_libs += $(top_builddir)/ai/stub/libstubai.la
+endif
 
 # These files are not generated to builddir, but to srcdir */
 MAINTAINERCLEANFILES = \

Modified: trunk/server/aiiface.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/aiiface.c?rev=33200&r1=33199&r2=33200&view=diff
==============================================================================
--- trunk/server/aiiface.c      (original)
+++ trunk/server/aiiface.c      Fri Jul  8 07:27:28 2016
@@ -40,6 +40,10 @@
 
 #ifdef AI_MOD_STATIC_THREXPR
 bool fc_ai_threxpr_setup(struct ai_type *ai);
+#endif
+
+#ifdef AI_MOD_STATIC_STUB
+bool fc_ai_stub_setup(struct ai_type *ai);
 #endif
 
 static struct ai_type *default_ai = NULL;
@@ -129,7 +133,7 @@
 void ai_init(void)
 {
   bool failure = FALSE;
-#if !defined(AI_MODULES) || defined(AI_MOD_STATIC_CLASSIC) || 
defined(AI_MOD_STATIC_THREADED) || defined(AI_MOD_STATIC_THREXPR)
+#if !defined(AI_MODULES) || defined(AI_MOD_STATIC_CLASSIC) || 
defined(AI_MOD_STATIC_THREADED) || defined(AI_MOD_STATIC_THREXPR) || 
defined(AI_MOD_STATIC_STUB)
   /* First !defined(AI_MODULES) case is for default ai support. */
   struct ai_type *ai;
 #endif
@@ -193,6 +197,17 @@
   }
 #endif /* AI_MOD_STATIC_THREXPR */
 
+#ifdef AI_MOD_STATIC_STUB
+  ai = ai_type_alloc();
+  if (ai != NULL) {
+    init_ai(ai);
+    if (!fc_ai_stub_setup(ai)) {
+      log_error(_("Failed to setup \"%s\" AI module"), "stub");
+      ai_type_dealloc();
+    }
+  }
+#endif /* AI_MOD_STATIC_STUB */
+
   default_ai = ai_type_by_name(AI_MOD_DEFAULT);
 #ifdef AI_MODULES
   if (default_ai == NULL) {


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to