* gnu/local.mk (widelands): New variable. * gnu/packages/patches/widelands-system-wide_minizip.patch: New file. (dist_patch_DATA): Register file above. Co-authored-by: Nicolas Goaziou <mail@nicolasgoaziou.fr>
		
			
				
	
	
		
			153 lines
		
	
	
	
		
			4.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
	
		
			4.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Description: use the system-wide minizip instead of the embeeded one if found.
 | |
| Forwarded-Upstream: It was provided by upstream: http://bazaar.launchpad.net/~widelands-dev/widelands/b19-debian/revision/8147
 | |
|  .
 | |
|  Thanks to Fòram na Gàidhlig for the patch.
 | |
|  
 | |
| I just added this line to make its use easier:
 | |
|   set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_HOME_DIRECTORY}/Modules)
 | |
| 
 | |
| === modified file 'CMakeLists.txt'
 | |
| ---
 | |
|  CMakeLists.txt                     |    3 +++
 | |
|  Modules/FindMinizip.cmake          |   37 +++++++++++++++++++++++++++++++++++++
 | |
|  cmake/WlFunctions.cmake            |    7 +++++++
 | |
|  src/io/CMakeLists.txt              |    2 +-
 | |
|  src/third_party/CMakeLists.txt     |   20 +++++++++++---------
 | |
|  src/third_party/minizip/README.txt |    4 ++++
 | |
|  6 files changed, 63 insertions(+), 10 deletions(-)
 | |
| 
 | |
| --- a/CMakeLists.txt
 | |
| +++ b/CMakeLists.txt
 | |
| @@ -43,6 +43,7 @@
 | |
|  endif(POLICY CMP0074)
 | |
|  
 | |
|  include("${CMAKE_SOURCE_DIR}/cmake/WlFunctions.cmake")
 | |
| +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_HOME_DIRECTORY}/Modules)
 | |
|  
 | |
|  option(OPTION_USE_GLBINDING "Use glbinding instead of GLEW" OFF)
 | |
|  option(OPTION_GLEW_STATIC "Use static GLEW Library" OFF)
 | |
| @@ -105,6 +106,8 @@
 | |
|  find_package(SDL2_ttf REQUIRED)
 | |
|  find_package(ZLIB REQUIRED)
 | |
|  find_package(ICU REQUIRED)
 | |
| +find_package(Minizip)
 | |
| +
 | |
|  if(OPTION_USE_GLBINDING)
 | |
|    find_package(glbinding REQUIRED)
 | |
|  else()
 | |
| --- /dev/null
 | |
| +++ b/Modules/FindMinizip.cmake
 | |
| @@ -0,0 +1,37 @@
 | |
| +# - Try to find Minizip
 | |
| +# Once done this will define
 | |
| +#  
 | |
| +#  MINIZIP_FOUND        - system has MINIZIP
 | |
| +#  MINIZIP_INCLUDE_DIR  - the MINIZIP include directory
 | |
| +#  MINIZIP_LIBRARY_DIR  - where the libraries are
 | |
| +#  MINIZIP_LIBRARY      - Link these to use MINIZIP
 | |
| +#   
 | |
| +
 | |
| +IF (MINIZIP_INCLUDE_DIR)
 | |
| +  # Already in cache, be silent
 | |
| +  SET(MINIZIP_FIND_QUIETLY TRUE)
 | |
| +ENDIF (MINIZIP_INCLUDE_DIR)
 | |
| +
 | |
| +FIND_PATH( MINIZIP_INCLUDE_DIR 
 | |
| +	  NAMES zip.h unzip.h ioapi.h
 | |
| +	  PATHS /usr/local/include /usr/include
 | |
| +	  PATH_SUFFIXES minizip/ )
 | |
| +SET( MINIZIP_NAMES minizip MINIZIP )
 | |
| +FIND_LIBRARY( MINIZIP_LIBRARY
 | |
| +	      NAMES ${MINIZIP_NAMES}
 | |
| +	      PATHS /usr/lib /usr/local/lib )
 | |
| +
 | |
| +GET_FILENAME_COMPONENT( MINIZIP_LIBRARY_DIR ${MINIZIP_LIBRARY} PATH )
 | |
| +
 | |
| +IF (MINIZIP_INCLUDE_DIR AND MINIZIP_LIBRARY)
 | |
| +   SET(MINIZIP_FOUND TRUE)
 | |
| +   SET(MINIZIP_LIBRARY_DIR ${MINIZIP_LIBRARY} )
 | |
| +   IF (NOT MINIZIP_FIND_QUIETLY)
 | |
| +     MESSAGE (STATUS "Found Minizip: ${MINIZIP_LIBRARY} ${MINIZIP_INCLUDE_DIR}")
 | |
| +   ENDIF (NOT MINIZIP_FIND_QUIETLY)
 | |
| +ELSE (MINIZIP_INCLUDE_DIR AND MINIZIP_LIBRARY)
 | |
| +   SET( MINIZIP_FOUND FALSE )
 | |
| +   SET( MINIZIP_LIBRARY_DIR )
 | |
| +   SET( MINIZIP_EXTRA_DEFINITIONS )
 | |
| +ENDIF (MINIZIP_INCLUDE_DIR AND MINIZIP_LIBRARY)
 | |
| +
 | |
| --- a/cmake/WlFunctions.cmake
 | |
| +++ b/cmake/WlFunctions.cmake
 | |
| @@ -81,6 +81,14 @@
 | |
|    if(ARG_USES_ZLIB)
 | |
|      wl_include_system_directories(${NAME} ${ZLIB_INCLUDE_DIRS})
 | |
|      target_link_libraries(${NAME} ${ZLIB_LIBRARY})
 | |
| +    if (MINIZIP_FOUND)
 | |
| +      wl_include_system_directories(${NAME}  ${MINIZIP_INCLUDE_DIR})
 | |
| +      target_link_libraries(${NAME}  ${MINIZIP_LIBRARY})
 | |
| +      target_compile_definitions(${NAME} PUBLIC -DHAVE_SYSTEM_MINIZIP)
 | |
| +    else(MINIZIP_FOUND)
 | |
| +      target_link_libraries(${NAME}  third_party_minizip)
 | |
| +      message(FATAL_ERROR "You are using widelands-bundled minizip sources. Please install your distribution's minizip dev library or urge your distribution maintainer to include the minizip library in your package repository. Thank you.")
 | |
| +    endif(MINIZIP_FOUND)
 | |
|    endif()
 | |
|  
 | |
|    # OpenGL and GLEW are one thing for us. If you use the one, you also use the
 | |
| --- a/src/third_party/CMakeLists.txt
 | |
| +++ b/src/third_party/CMakeLists.txt
 | |
| @@ -1,12 +1,14 @@
 | |
| -wl_library(third_party_minizip
 | |
| -  THIRD_PARTY
 | |
| -  SRCS
 | |
| -    minizip/ioapi.h
 | |
| -    minizip/unzip.cc
 | |
| -    minizip/unzip.h
 | |
| -    minizip/zip.h
 | |
| -  USES_ZLIB
 | |
| -)
 | |
| +if(NOT MINIZIP_FOUND)
 | |
| +  wl_library(third_party_minizip
 | |
| +    THIRD_PARTY
 | |
| +    SRCS
 | |
| +      ioapi.h
 | |
| +      unzip.cc
 | |
| +      unzip.h
 | |
| +      zip.h
 | |
| +    USES_ZLIB
 | |
| +  )
 | |
| +endif(NOT MINIZIP_FOUND)
 | |
|  
 | |
|  wl_library(third_party_eris
 | |
|    THIRD_PARTY
 | |
| --- a/src/io/filesystem/CMakeLists.txt
 | |
| +++ b/src/io/filesystem/CMakeLists.txt
 | |
| @@ -12,6 +12,7 @@
 | |
|      zip_exceptions.h
 | |
|      zip_filesystem.cc
 | |
|      zip_filesystem.h
 | |
| +  USES_ZLIB
 | |
|    DEPENDS
 | |
|      base_exceptions
 | |
|      base_i18n
 | |
| @@ -19,5 +20,4 @@
 | |
|      base_macros
 | |
|      graphic_text_layout
 | |
|      io_stream
 | |
| -    third_party_minizip
 | |
|  )
 | |
| --- a/src/io/filesystem/zip_filesystem.h
 | |
| +++ b/src/io/filesystem/zip_filesystem.h
 | |
| @@ -28,8 +28,14 @@
 | |
|  #include "io/filesystem/filesystem.h"
 | |
|  #include "io/streamread.h"
 | |
|  #include "io/streamwrite.h"
 | |
| +
 | |
| +#ifndef HAVE_SYSTEM_MINIZIP
 | |
|  #include "third_party/minizip/unzip.h"
 | |
|  #include "third_party/minizip/zip.h"
 | |
| +#else
 | |
| +#include <minizip/unzip.h>
 | |
| +#include <minizip/zip.h>
 | |
| +#endif
 | |
|  
 | |
|  class ZipFilesystem : public FileSystem {
 | |
|  public:
 |