From 23c1c8b7dcbc297d711d1569d3e7cded6c71a2b8 Mon Sep 17 00:00:00 2001
From: ariclone <>
Date: Wed, 28 Mar 2001 16:42:47 +0000
Subject: [PATCH] Made it check for libpng, and only add local versions of
 libpng and libz when required.

---
 setup | 123 +++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 104 insertions(+), 19 deletions(-)

diff --git a/setup b/setup
index 2bc8509d7..709ff6074 100755
--- a/setup
+++ b/setup
@@ -25,23 +25,39 @@ cat << .. > $RULESFILE
 #------------------------------------------------------------------------------
 # HERE ARE SOME USER-CONFIGURABLE VARIABLES
 
-EXTRA_CFLAGS="-DSLOW_INPUT -DUNIT_ON_MAP -DNEW_SHIPS"
+EXTRA_CFLAGS="-DSLOW_INPUT -DUNIT_ON_MAP -DNEW_SHIPS -DNEW_NETMENUS"
 # This could be used for experimental versions
 ## There are some still not well tested code parts or branches.
 ## UNITS_ON_MAP:	Faster lookup of units
 ## NEW_MAPDRAW:		Stephans new map draw code
-## This aren't working yet:
+## These aren't working yet:
 ## NEW_NAMES:		New unit names without copyleft problems
 ## NEW_FOW:		New fog of war code, should work correct
 ## NEW_AI:		New better improved AI code
 ## NEW_SHIPS:		New correct ship movement.
-## NEW_NETMENUS:	Include new network menues.
+## NEW_NETMENUS:	Menu driven network set-up.
 
 # Compile commands
 CC=gcc
 RM="rm -f"
 MAKE=make
 
+# if your system/distribution lacks libpng, you may install the source
+# in the freecraft directory and name that directory here!
+# Default (tested) version is 1.0.5, anything above should also be ok.
+# Adjust as required - ignored if the directory does not exist.
+LOCAL_PNG="libpng-1.0.5"
+
+# Please note that on most systems libpng also requires libz, so
+# you might additionally need to install the following:
+
+# if your system/distribution lacks libz, you may install the source
+# in the freecraft directory and name that directory here!
+# Default (tested) version is 1.1.3, anything above should also be ok.
+# Adjust as required - ONLY USED IF SYSTEM HAS NO ZLIB INSTALLED BY DEFAULT!
+LOCAL_ZLIB="zlib-1.1.3"
+
+
 #------------------------------------------------------------------------------
 # DON'T CHANGE ANYTHING FROM HERE DOWN UNLESS YOU KNOW WHAT YOU ARE DOING
 
@@ -222,6 +238,62 @@ fi
 
 echo
 
+#------------------------------------------------------------------------------
+#       libpng support part
+#------------------------------------------------------------------------------
+
+echo -n "Checking for PNG library..."
+
+# libpng most likely requires libz.a, so check for it first..
+LIBCHECK="-lz"; check_for_libs
+if test "$?" = 0 ; then
+  HAVE_LIBZ=1
+  PNG_EXTRA="-lz"
+else
+  LIBCHECK="-lz -L./$LOCAL_ZLIB"; check_for_libs
+  if test "$?" = 0 ; then
+    HAVE_LIBZ=2
+    PNG_EXTRA="$LIBCHECK"
+  fi
+fi
+
+PNG_PATH=""
+PNG_LOCAL=0
+if test -d $LOCAL_PNG ; then
+    PNG_PATH="-L./\$LOCAL_PNG"
+    PNG_LOCAL=1
+fi
+LIBCHECK="$PNG_PATH -lpng $PNG_EXTRA"; check_for_libs
+if test "$?" = 0 ; then
+  if test "$PNG_LOCAL" = 1 ; then
+    echo " OK (local: $LOCAL_PNG)";
+  else
+    echo " OK";
+  fi
+else
+  echo " NOT FOUND!";
+  echo
+  echo "...You do not appear to have a working PNG library installed!"
+  echo
+  echo "libpng is required for freecraft to compile. Please "
+  echo "refer to the LOCAL_PNG section in the setup script to "
+  echo "find out how to install a local copy to compile freecraft."
+  echo
+  echo "Please also note the the PNG library most likely also"
+  echo "requires the GZIP compression library. If you are sure"
+  echo "to have libpng installed, but this test still fails,"
+  echo "check out for libz. You may refer to the LOCAL_ZLIB"
+  echo "section of this script to find out how to install a local"
+  echo "local copy of the libz."
+  echo
+
+  exit 1
+fi
+
+#------------------------------------------------------------------------------
+#       Compile commands
+#------------------------------------------------------------------------------
+
 echo "# Compile commands" >> $RULESFILE
 echo "CC=$CC" >> $RULESFILE
 echo "RM=$RM" >> $RULESFILE
@@ -252,6 +324,7 @@ echo >> $RULESFILE
 #------------------------------------------------------------------------------
 
 # Check for various libraries
+echo
 echo "Checking for various video libraries..."
 
 # Check for SDL >= 1.x
@@ -424,10 +497,6 @@ echo
 echo "Checking for compression libraries..."
 echo
 
-# libz
-LIBCHECK="-lz"; check_for_libs
-if test "$?" = 0 ; then HAVE_LIBZ=1; fi
-
 # libbz2
 LIBCHECK="-lbz2"; check_for_libs
 if test "$?" = 0 ; then HAVE_LIBBZ2=1; fi
@@ -435,11 +504,11 @@ if test "$WIN32" = 1 ; then HAVE_LIBBZ2=0; fi	# Bzip2 not supported by Cygwin
 
 # Determine default compression option based on what's available
 
-if (test "$HAVE_LIBZ" = 1 && test "$HAVE_LIBBZ2" = 1) ; then
+if (test "$HAVE_LIBZ" = 1 -o "$HAVE_LIBZ" = 2 && test "$HAVE_LIBBZ2" = 1) ; then
   DEF4=" (default)"; COMPDEF="O"
 elif test "$HAVE_LIBBZ2" = 1 ; then
   DEF3=" (default)"; COMPDEF="B"
-elif test "$HAVE_LIBZ" = 1 ; then
+elif test "$HAVE_LIBZ" = 1 -o "$HAVE_LIBZ" = 2 ; then
   DEF2=" (default)"; COMPDEF="G"
 else
   DEF1=" (default)"; COMPDEF="N"
@@ -453,10 +522,13 @@ echo "  N-None"$DEF1
 if test "$HAVE_LIBZ" = 1 ; then
   echo "  G-GZ"$DEF2
 fi
+if test "$HAVE_LIBZ" = 2 ; then
+  echo "  G-GZ"$DEF2 " (local: $LOCAL_ZLIB)"
+fi
 if test "$HAVE_LIBBZ2" = 1 ; then
   echo "  B-Bzip2"$DEF3
 fi
-if (test "$HAVE_LIBZ" = 1 && test "$HAVE_LIBBZ2" = 1) ; then
+if (test "$HAVE_LIBZ" = 1 -o "$HAVE_LIBZ" = 2 && test "$HAVE_LIBBZ2" = 1) ; then
   echo "  O-Both GZ and Bzip2"$DEF4
 fi
 echo
@@ -499,21 +571,34 @@ echo "" >> $RULESFILE
 ###############################################################################
 # Write required information to the file
 
-# May be required on some distributions for libpng and libz!
+# May be required on some (older) distributions for libpng and libz!
 # extra linker flags and include directory
 # -L/usr/lib
 
-if [ "$DARWIN" != 1 ] ; then
-  echo "XLDFLAGS	= -L/usr/X11R6/lib -L/usr/local/lib \\" >> $RULESFILE
-  echo "		  -L\$(TOPDIR)/libpng-1.0.5 -L\$(TOPDIR)/zlib-1.1.3" >> $RULESFILE
-  echo "XIFLAGS		= -I/usr/X11R6/include -I/usr/local/include \\" >> $RULESFILE
-  echo "		  -I\$(TOPDIR)/libpng-1.0.5 -I\$(TOPDIR)/zlib-1.1.3" >> $RULESFILE
+LOCAL_LDF=""
+LOCAL_IF=""
+if test "$HAVE_LIBZ" = 2 ; then
+  LOCAL_LDF=" -L\$(TOPDIR)/$LOCAL_ZLIB"
+  LOCAL_IF="-I\$(TOPDIR)/$LOCAL_ZLIB"
+  if test "$DARWIN" = 1 ; then
+    LOCAL_IF="-I\$(TOPDIR)/$LOCAL_ZLIB -I/usr/include -I/usr/include/machine"
+  fi
 else
-  echo "XLDFLAGS	= -L/usr/X11R6/lib -L/usr/local/lib" >> $RULESFILE
-  echo "XIFLAGS		= -I/usr/X11R6/include -I/usr/local/include \\" >> $RULESFILE
-  echo "                  -I/usr/include -I/usr/include/machine" >> $RULESFILE
+  if test "$DARWIN" = 1 ; then
+    LOCAL_IF="-I/usr/include -I/usr/include/machine " $LOCAL_IF
+  fi
 fi
 
+LDF_PNG_PATH=""
+IF_PNG_PATH=""
+if test "$PNG_LOCAL" = 1 ; then
+    LDF_PNG_PATH="-L\$(TOPDIR)/$LOCAL_PNG "
+    IF_PNG_PATH="-I\$(TOPDIR)/$LOCAL_PNG "
+fi
+
+echo "XLDFLAGS	= -L/usr/X11R6/lib -L/usr/local/lib $LDF_PNG_PATH $LOCAL_LDF" >> $RULESFILE
+echo "XIFLAGS		= -I/usr/X11R6/include -I/usr/local/include $IF_PNG_PATH $LOCAL_IF" >> $RULESFILE
+
 echo >> $RULESFILE
 
 # Add the last bits