From def3936a5353924fb7b9ffa30b8c1c96c9175ca7 Mon Sep 17 00:00:00 2001 From: Lars Wendler Date: Fri, 11 Nov 2016 17:52:07 +0100 Subject: [PATCH] Introduce --with-system-zip configure flag to use system zip (minizip) if available. --- conffile.h | 6 +++++- gtk/Makefile.am | 6 +++++- gtk/configure.ac | 28 +++++++++++++++++++++++++++- loadzip.cpp | 4 ++++ memmap.cpp | 6 +++++- stream.cpp | 6 +++++- stream.h | 7 +++++-- unix/Makefile.in | 9 +++++++-- unix/configure.ac | 47 +++++++++++++++++++++++++++++++++++++++-------- 9 files changed, 102 insertions(+), 17 deletions(-) diff --git a/conffile.h b/conffile.h index ed8a13b4..366706fa 100644 --- a/conffile.h +++ b/conffile.h @@ -197,7 +197,11 @@ #include #ifdef UNZIP_SUPPORT -#include "unzip/unzip.h" +# ifdef SYSTEM_ZIP +# include +# else +# include "unzip/unzip.h" +# endif #endif #include "snes9x.h" diff --git a/gtk/Makefile.am b/gtk/Makefile.am index fad1cf22..57f00fb5 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -196,12 +196,16 @@ snes9x_gtk_SOURCES += \ ../server.cpp endif + # Zip support is nonconfigurable. snes9x_gtk_SOURCES += \ - ../loadzip.cpp \ + ../loadzip.cpp +if ! SYSTEM_ZIP +snes9x_gtk_SOURCES += \ ../unzip/unzip.c \ ../unzip/ioapi.c \ ../unzip/zip.c +endif UNZIPDEFINES=-DUNZIP_SUPPORT if JMA diff --git a/gtk/configure.ac b/gtk/configure.ac index 4d21792a..e3bab4eb 100644 --- a/gtk/configure.ac +++ b/gtk/configure.ac @@ -138,6 +138,12 @@ AC_ARG_WITH(zlib, [], [with_zlib=yes]) +AC_ARG_WITH(system-zip, + [AS_HELP_STRING([--with(out)-system-zip], + [Use system zip])], + [], + [system_zip=check]) + AC_ARG_WITH(screenshot, [AS_HELP_STRING([--with(out)-screenshot], [Screenshot support through libpng if available (default: with)])], @@ -313,6 +319,25 @@ if test yes = "$with_screenshot"; then ]) fi +SYSTEM_ZIP=0 +SYSTEM_ZIP_CFLAGS="" +SYSTEM_ZIP_LIBS="" +ZIP_CFLAGS="-I../unzip" +if test no != "$with_system_zip" && test yes = "$with_zlib" ; then + PKG_CHECK_MODULES([SYSTEM_ZIP],[minizip],[ + ZIP_CFLAGS="" + SYSTEM_ZIP=yes + CFLAGS="$CFLAGS $SYSTEM_ZIP_CFLAGS -DSYSTEM_ZIP" + LIBS="$LIBS $SYSTEM_ZIP_LIBS" + ],[ + if test check = "$with_system_zip"; then + AC_MSG_WARN(Cannot find SYSTEM_ZIP) + else + AC_MSG_ERROR(--with-system-zip given but cannot find proper zlib) + fi + ]) +fi + if test yes = "$with_hq2x" ; then HQ2X=yes CFLAGS="$CFLAGS -DUSE_HQ2X" @@ -440,7 +465,7 @@ if test $ac_cv_my_sar_int8 = yes && \ CFLAGS="$CFLAGS -DRIGHTSHIFT_IS_SAR" fi -CFLAGS="$CFLAGS -DUNZIP_SUPPORT -DSPC700_C -I. -I.. -I../unzip" +CFLAGS="$CFLAGS -DUNZIP_SUPPORT -DSPC700_C -I. -I.. $ZIP_CFLAGS" CXXFLAGS="$CFLAGS" @@ -462,6 +487,7 @@ AM_CONDITIONAL(ALSA, [test yes = "$ALSA"]) AM_CONDITIONAL(PULSEAUDIO, [test yes = "$PULSEAUDIO"]) AM_CONDITIONAL(HQ2X, [test yes = "$HQ2X"]) AM_CONDITIONAL(XBRZ, [test yes = "$XBRZ"]) +AM_CONDITIONAL(SYSTEM_ZIP, [test yes = "$SYSTEM_ZIP"]) AC_SUBST(NASM) AC_SUBST(NASM_FLAGS) diff --git a/loadzip.cpp b/loadzip.cpp index 024bc793..dab25045 100644 --- a/loadzip.cpp +++ b/loadzip.cpp @@ -192,7 +192,11 @@ #include #include +#ifdef SYSTEM_ZIP +#include +#else #include "unzip/unzip.h" +#endif #include "snes9x.h" #include "memmap.h" diff --git a/memmap.cpp b/memmap.cpp index 19df95cb..98de3197 100644 --- a/memmap.cpp +++ b/memmap.cpp @@ -193,7 +193,11 @@ #include #ifdef UNZIP_SUPPORT -#include "unzip/unzip.h" +# ifdef SYSTEM_ZIP +# include +# else +# include "unzip/unzip.h" +# endif #endif #ifdef JMA_SUPPORT diff --git a/stream.cpp b/stream.cpp index 37051c32..bb64113d 100644 --- a/stream.cpp +++ b/stream.cpp @@ -192,7 +192,11 @@ #include #ifdef UNZIP_SUPPORT -#include "unzip.h" +# ifdef SYSTEM_ZIP +# include +# else +# include "unzip.h" +# endif #endif #include "snes9x.h" #include "stream.h" diff --git a/stream.h b/stream.h index b03dea9a..ea22df0a 100644 --- a/stream.h +++ b/stream.h @@ -229,8 +229,11 @@ class fStream : public Stream }; #ifdef UNZIP_SUPPORT - -#include "unzip.h" +# ifdef SYSTEM_ZIP +# include +# else +# include "unzip.h" +# endif #define unz_BUFFSIZ 1024 diff --git a/unix/Makefile.in b/unix/Makefile.in index 58495689..aecad31e 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -2,6 +2,7 @@ @S9XNETPLAY@ @S9XZIP@ @S9XJMA@ +@S9X_SYSTEM_ZIP@ # Fairly good and special-char-safe descriptor of the os being built on. OS = `uname -s -r -m|sed \"s/ /-/g\"|tr \"[A-Z]\" \"[a-z]\"|tr \"/()\" \"___\"` @@ -19,7 +20,11 @@ OBJECTS += ../netplay.o ../server.o endif ifdef S9XZIP -OBJECTS += ../loadzip.o ../unzip/ioapi.o ../unzip/unzip.o +OBJECTS += ../loadzip.o +ifndef SYSTEM_ZIP +OBJECTS += ../unzip/ioapi.o ../unzip/unzip.o +INCLUDES = -I../unzip/ +endif endif ifdef S9XJMA @@ -29,7 +34,7 @@ endif CCC = @CXX@ CC = @CC@ GASM = @CXX@ -INCLUDES = -I. -I.. -I../apu/ -I../apu/bapu -I../unzip/ -I../jma/ -I../filter/ +INCLUDES += -I. -I.. -I../apu/ -I../apu/bapu -I../jma/ -I../filter/ CCFLAGS = @S9XFLGS@ @S9XDEFS@ $(DEFS) CFLAGS = $(CCFLAGS) diff --git a/unix/configure.ac b/unix/configure.ac index 3c851dcb..47f37808 100644 --- a/unix/configure.ac +++ b/unix/configure.ac @@ -201,16 +201,43 @@ AC_ARG_ENABLE([zip], [enable ZIP support through zlib (default: yes)])], [], [enable_zip="yes"]) +S9X_SYSTEM_ZIP="#SYSTEM_ZIP=1" + +AC_ARG_WITH([system-zip], + [AS_HELP_STRING([--with-system-zip], + [Use system zip (default: check)])], + [], [with_system_zip="check"]) + if test "x$enable_zip" = "xyes"; then - if test "x$snes9x_cv_zlib" = "xyes"; then - S9XZIP="S9XZIP=1" - S9XDEFS="$S9XDEFS -DUNZIP_SUPPORT" - if test "x$enable_gzip" = "xno"; then - S9XLIBS="$S9XLIBS -lz" - fi + if test "x$with_system_zip" != "xno"; then + PKG_CHECK_MODULES( + SYSTEM_ZIP, + minizip, + S9XZIP="S9XZIP=1" + S9XDEFS="$S9XDEFS -DUNZIP_SUPPORT" + S9X_SYSTEM_ZIP="SYSTEM_ZIP=1" + S9XLIBS="$S9XLIBS $SYSTEM_ZIP_LIBS" + if test "x$enable_gzip" = "xno"; then + S9XLIBS="$S9XLIBS -lz" + fi + S9XDEFS="$S9XDEFS -DSYSTEM_ZIP", + if test "x${with_system_zip}" != "xcheck"; then + AC_MSG_ERROR([--with-system-zip requested but no proper zlib found.]) + else + AC_MSG_WARN([zlib not found. Build without SYSTEM_ZIP support.]) + fi + ) else - AC_MSG_WARN([zlib not found. Build without ZIP support.]) - enable_zip="no" + if test "x$snes9x_cv_zlib" = "xyes"; then + S9XZIP="S9XZIP=1" + S9XDEFS="$S9XDEFS -DUNZIP_SUPPORT" + if test "x$enable_gzip" = "xno"; then + S9XLIBS="$S9XLIBS -lz" + fi + else + AC_MSG_WARN([zlib not found. Build without ZIP support.]) + enable_zip="no" + fi fi fi @@ -427,9 +454,11 @@ S9XLIBS="$LIBS $S9XLIBS" S9XFLGS="`echo \"$S9XFLGS\" | sed -e 's/ */ /g'`" S9XDEFS="`echo \"$S9XDEFS\" | sed -e 's/ */ /g'`" S9XLIBS="`echo \"$S9XLIBS\" | sed -e 's/ */ /g'`" +S9X_SYSTEM_ZIP="`echo \"$S9X_SYSTEM_ZIP\" | sed -e 's/ */ /g'`" S9XFLGS="`echo \"$S9XFLGS\" | sed -e 's/^ *//'`" S9XDEFS="`echo \"$S9XDEFS\" | sed -e 's/^ *//'`" S9XLIBS="`echo \"$S9XLIBS\" | sed -e 's/^ *//'`" +S9X_SYSTEM_ZIP="`echo \"$S9X_SYSTEM_ZIP\" | sed -e 's/^ *//'`" AC_SUBST(S9XFLGS) AC_SUBST(S9XDEFS) @@ -439,6 +468,7 @@ AC_SUBST(S9XDEBUGGER) AC_SUBST(S9XNETPLAY) AC_SUBST(S9XZIP) AC_SUBST(S9XJMA) +AC_SUBST(S9X_SYSTEM_ZIP) rm config.info 2>/dev/null @@ -459,6 +489,7 @@ netplay support...... $enable_netplay gamepad support...... $enable_gamepad GZIP support......... $enable_gzip ZIP support.......... $enable_zip +SYSTEM_ZIP........... $with_system_zip JMA support.......... $enable_jma debugger............. $enable_debugger