fix games/xevil on sparc64

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

fix games/xevil on sparc64

Kaashif Hymabaccus-2
Hi

With this patch I can build and play xevil on sparc64. I don't
understand the intricacies of the C++ headers that allow defining
min/max macros to work on amd64 but not on sparc64. It doesn't matter
since we can just delete the macro min/max and use the STL one (not a
macro) and cast the types appropriately.

Still works on amd64 too.

diff --git games/xevil/Makefile games/xevil/Makefile
index 7aa1780b9e7..a93de58c013 100644
--- games/xevil/Makefile
+++ games/xevil/Makefile
@@ -9,7 +9,7 @@ COMMENT= side-view, fast-action, kill everything type of game
 V= 2.02r2
 DISTNAME= xevilsrc${V}
 PKGNAME= xevil-${V}
-REVISION = 7
+REVISION = 8
 
 CATEGORIES= games
 
diff --git games/xevil/patches/patch-cmn_game_cpp games/xevil/patches/patch-cmn_game_cpp
index fc02245f785..0d0d767fa2d 100644
--- games/xevil/patches/patch-cmn_game_cpp
+++ games/xevil/patches/patch-cmn_game_cpp
@@ -19,3 +19,21 @@ Index: cmn/game.cpp
 
  #include "utils.h"
  #include "coord.h"
+@@ -566,7 +567,7 @@ void GameObjects::level_reset(const Dim &worldDim,Game
+
+       // Don't allow objectWorldPercent values that are too small.
+       float objWPercent = (float)max(weapons[n]->objectWorldPercent,
+-      OBJECT_WORLD_PERCENT_MIN);
++      (float)OBJECT_WORLD_PERCENT_MIN);
+
+       maximums[weapons[n]->classId] = (int)ceil(areaFactor * objWPercent);
+       // A limit may be placed on how many times the object comes back
+@@ -579,7 +580,7 @@ void GameObjects::level_reset(const Dim &worldDim,Game
+       // Check not already set.
+       assert(maximums[oItems[n]->classId] == 0);
+       float objWPercent = (float)max(oItems[n]->objectWorldPercent,
+-      OBJECT_WORLD_PERCENT_MIN);
++      (float)OBJECT_WORLD_PERCENT_MIN);
+
+       maximums[oItems[n]->classId] = (int)ceil(areaFactor * objWPercent);
+       levelMaxTimes[oItems[n]->classId] = oItems[n]->levelMaxTimes;
diff --git games/xevil/patches/patch-cmn_utils_h games/xevil/patches/patch-cmn_utils_h
index 934c82e8c92..920edbc1b9b 100644
--- games/xevil/patches/patch-cmn_utils_h
+++ games/xevil/patches/patch-cmn_utils_h
@@ -1,10 +1,26 @@
 $OpenBSD: patch-cmn_utils_h,v 1.1 2017/05/02 23:26:32 espie Exp $
+Don't #define min and max, conflicts with STL non-macro definitions.
+
 If you're going to wrap C++ functions, you need both const correct wrappers.
 
 Index: cmn/utils.h
 --- cmn/utils.h.orig
 +++ cmn/utils.h
-@@ -237,13 +237,22 @@ class Utils {
+@@ -98,13 +98,6 @@ extern "C" {
+ #define MSEC_PER_CLOCK (1.0e3 / CLOCKS_PER_SEC)
+ #endif
+
+-#ifndef max
+-#define max(a,b)               (a<b ? b : a)
+-#endif
+-#ifndef min
+-#define min(a,b)               (a>b ? b : a)
+-#endif
+-
+ #if X11
+ typedef char Boolean;
+ #endif
+@@ -237,13 +230,22 @@ class Utils {
    /* EFFECTS: Wrapper for C library strcmp().  Return 0 if strings are the
       same. */