guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/05: gnu: irrlicht: Don't use bundled libraries.


From: Efraim Flashner
Subject: 03/05: gnu: irrlicht: Don't use bundled libraries.
Date: Thu, 2 Aug 2018 05:20:15 -0400 (EDT)

efraim pushed a commit to branch master
in repository guix.

commit 7b8a753672d65a0bc5f51e0063aa4c80688ef4ee
Author: Efraim Flashner <address@hidden>
Date:   Thu Aug 2 11:56:01 2018 +0300

    gnu: irrlicht: Don't use bundled libraries.
    
    * gnu/packages/patches/irrlicht-use-system-libs.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Register it.
    * gnu/packages/games.scm (irrlicht)[source]: Add patch. Remove bundled
    code and binaries in a snippet.
    [native-inputs]: Remove unzip.
    [inputs]: Remove glu, add bzip2, libjpeg, libpng, libx11, libxx86vm.
    [arguments]: Remove custom 'unpack phase, add custom 'chdir-to-source
    phase and adjust 'fix-build-env phase to changes.
---
 gnu/local.mk                                       |   1 +
 gnu/packages/games.scm                             |  45 +++--
 .../patches/irrlicht-use-system-libs.patch         | 202 +++++++++++++++++++++
 3 files changed, 235 insertions(+), 13 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index f615a10..d1f9a19 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -805,6 +805,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/id3lib-CVE-2007-4460.patch                      \
   %D%/packages/patches/ilmbase-fix-tests.patch                 \
   %D%/packages/patches/intltool-perl-compatibility.patch       \
+  %D%/packages/patches/irrlicht-use-system-libs.patch          \
   %D%/packages/patches/isl-0.11.1-aarch64-support.patch        \
   %D%/packages/patches/jacal-fix-texinfo.patch                 \
   %D%/packages/patches/jamvm-arm.patch                         \
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index c96cced..5ff25e4 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -1483,34 +1483,53 @@ are primarily in English, however some in other 
languages are provided.")
                     "/" version "/irrlicht-" version ".zip"))
               (sha256
                (base32
-                "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))))
+                "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
+              (patches (search-patches "irrlicht-use-system-libs.patch"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (for-each delete-file-recursively
+                     '("bin" ; bundled compiled Windows binaries"
+                       "source/Irrlicht/MacOSX"
+                       "source/Irrlicht/bzip2"
+                       "source/Irrlicht/jpeglib"
+                       "source/Irrlicht/libpng"
+                       "source/Irrlicht/lzma"
+                       "source/Irrlicht/zlib"))
+                  (delete-file "source/Irrlicht/glext.h")
+                  (delete-file "source/Irrlicht/glxext.h")
+                  (delete-file "source/Irrlicht/wglext.h")
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'fix-build-env
+         (add-after 'unpack 'chdir-to-source
+           (lambda _
+             ;; The actual source is buried a few directories deep.
+             (chdir "source/Irrlicht/")
+             #t))
+         (add-after 'chdir-to-source 'fix-build-env
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (substitute* "Makefile"
                  (("INSTALL_DIR = /usr/local/lib")
-                  (string-append "INSTALL_DIR = " out "/lib")))
+                  (string-append "INSTALL_DIR = " out "/lib"))
+                 ;; Add '-fpermissive' to the CXXFLAGS
+                 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
                ;; The Makefile assumes these directories exist.
                (mkdir-p (string-append out "/lib"))
                (mkdir-p (string-append out "/include")))))
-         (replace 'unpack
-           (lambda* (#:key source #:allow-other-keys)
-             (and (zero? (system* "unzip" source))
-                  ;; The actual source is buried a few directories deep.
-                  (chdir (string-append "irrlicht-" ,version
-                                        "/source/Irrlicht/")))))
          (delete 'configure))           ; no configure script
        #:tests? #f                      ; no check target
        #:make-flags '("CC=gcc" "sharedlib")))
-    (native-inputs
-     `(("unzip" ,unzip)))
     (inputs
-     `(("mesa" ,mesa)
-       ("glu" ,glu)))
+     `(("bzip2" ,bzip2)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libx11" ,libx11)
+       ("libxxf86vm" ,libxxf86vm)
+       ("mesa" ,mesa)))
     (synopsis "3D game engine written in C++")
     (description
      "The Irrlicht Engine is a high performance realtime 3D engine written in
diff --git a/gnu/packages/patches/irrlicht-use-system-libs.patch 
b/gnu/packages/patches/irrlicht-use-system-libs.patch
new file mode 100644
index 0000000..e764f41
--- /dev/null
+++ b/gnu/packages/patches/irrlicht-use-system-libs.patch
@@ -0,0 +1,202 @@
+This patch is a combination of the two following patches with minor
+changes to the install code
+https://sources.debian.org/src/irrlicht/1.8.4+dfsg1-1/debian/patches/debian/link-against-needed-libs.diff/
+https://sources.debian.org/src/irrlicht/1.8.4+dfsg1-1/debian/patches/debian/use-system-libs.diff/
+
+
+---
+ include/IrrCompileConfig.h                  | 26 +++++++++------------
+ source/Irrlicht/CIrrDeviceLinux.h           |  2 +-
+ source/Irrlicht/COpenGLExtensionHandler.h   |  8 +++----
+ source/Irrlicht/COpenGLSLMaterialRenderer.h |  2 +-
+ source/Irrlicht/Makefile                    | 15 ++++++------
+ 5 files changed, 25 insertions(+), 28 deletions(-)
+
+diff --git a/include/IrrCompileConfig.h b/include/IrrCompileConfig.h
+index 6bb0589..2216353 100644
+--- a/include/IrrCompileConfig.h
++++ b/include/IrrCompileConfig.h
+@@ -238,6 +238,17 @@ for Windows based systems. You also have to set #define 
UNICODE for this to comp
+ #undef _IRR_WCHAR_FILESYSTEM
+ #endif
+ 
++//! Define _IRR_COMPILE_WITH_ZLIB_ to enable compiling the engine using zlib.
++/** This enables the engine to read from compressed .zip archives. If you
++disable this feature, the engine can still read archives, but only 
uncompressed
++ones. */
++#define _IRR_COMPILE_WITH_ZLIB_
++
++//! Define _IRR_USE_NON_SYSTEM_ZLIB_ to let irrlicht use the zlib which comes 
with irrlicht.
++/** If this is commented out, Irrlicht will try to compile using the zlib 
installed in the system.
++      This is only used when _IRR_COMPILE_WITH_ZLIB_ is defined. */
++#undef _IRR_USE_NON_SYSTEM_ZLIB_
++
+ //! Define _IRR_COMPILE_WITH_JPEGLIB_ to enable compiling the engine using 
libjpeg.
+ /** This enables the engine to read jpeg images. If you comment this out,
+ the engine will no longer read .jpeg images. */
+@@ -249,10 +260,7 @@ the engine will no longer read .jpeg images. */
+ //! Define _IRR_USE_NON_SYSTEM_JPEG_LIB_ to let irrlicht use the jpeglib 
which comes with irrlicht.
+ /** If this is commented out, Irrlicht will try to compile using the jpeg lib 
installed in the system.
+       This is only used when _IRR_COMPILE_WITH_LIBJPEG_ is defined. */
+-#define _IRR_USE_NON_SYSTEM_JPEG_LIB_
+-#ifdef NO_IRR_USE_NON_SYSTEM_JPEG_LIB_
+ #undef _IRR_USE_NON_SYSTEM_JPEG_LIB_
+-#endif
+ 
+ //! Define _IRR_COMPILE_WITH_LIBPNG_ to enable compiling the engine using 
libpng.
+ /** This enables the engine to read png images. If you comment this out,
+@@ -265,10 +273,7 @@ the engine will no longer read .png images. */
+ //! Define _IRR_USE_NON_SYSTEM_LIBPNG_ to let irrlicht use the libpng which 
comes with irrlicht.
+ /** If this is commented out, Irrlicht will try to compile using the libpng 
installed in the system.
+       This is only used when _IRR_COMPILE_WITH_LIBPNG_ is defined. */
+-#define _IRR_USE_NON_SYSTEM_LIB_PNG_
+-#ifdef NO_IRR_USE_NON_SYSTEM_LIB_PNG_
+ #undef _IRR_USE_NON_SYSTEM_LIB_PNG_
+-#endif
+ 
+ //! Define _IRR_D3D_NO_SHADER_DEBUGGING to disable shader debugging in D3D9
+ /** If _IRR_D3D_NO_SHADER_DEBUGGING is undefined in IrrCompileConfig.h,
+@@ -602,10 +607,7 @@ ones. */
+ /** If this is commented out, Irrlicht will try to compile using the zlib
+ installed on the system. This is only used when _IRR_COMPILE_WITH_ZLIB_ is
+ defined. */
+-#define _IRR_USE_NON_SYSTEM_ZLIB_
+-#ifdef NO_IRR_USE_NON_SYSTEM_ZLIB_
+ #undef _IRR_USE_NON_SYSTEM_ZLIB_
+-#endif
+ //! Define _IRR_COMPILE_WITH_ZIP_ENCRYPTION_ if you want to read 
AES-encrypted ZIP archives
+ #define _IRR_COMPILE_WITH_ZIP_ENCRYPTION_
+ #ifdef NO_IRR_COMPILE_WITH_ZIP_ENCRYPTION_
+@@ -623,18 +625,12 @@ library. */
+ /** If this is commented out, Irrlicht will try to compile using the bzlib
+ installed on the system. This is only used when _IRR_COMPILE_WITH_BZLIB_ is
+ defined. */
+-#define _IRR_USE_NON_SYSTEM_BZLIB_
+-#ifdef NO_IRR_USE_NON_SYSTEM_BZLIB_
+ #undef _IRR_USE_NON_SYSTEM_BZLIB_
+-#endif
+ //! Define _IRR_COMPILE_WITH_LZMA_ if you want to use LZMA compressed zip 
files.
+ /** LZMA is a very efficient compression code, known from 7zip. Irrlicht
+ currently only supports zip archives, though. */
+-#define _IRR_COMPILE_WITH_LZMA_
+-#ifdef NO_IRR_COMPILE_WITH_LZMA_
+ #undef _IRR_COMPILE_WITH_LZMA_
+ #endif
+-#endif
+ 
+ //! Define __IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_ if you want to mount 
folders as archives
+ #define __IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_
+diff --git a/source/Irrlicht/CIrrDeviceLinux.h 
b/source/Irrlicht/CIrrDeviceLinux.h
+index 4d2a2c6..8cf24ba 100644
+--- a/source/Irrlicht/CIrrDeviceLinux.h
++++ b/source/Irrlicht/CIrrDeviceLinux.h
+@@ -22,7 +22,7 @@
+ #define GLX_GLXEXT_LEGACY 1
+ #include <GL/glx.h>
+ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
+-#include "glxext.h"
++#include <GL/glxext.h>
+ #endif
+ #endif
+ 
+diff --git a/source/Irrlicht/COpenGLExtensionHandler.h 
b/source/Irrlicht/COpenGLExtensionHandler.h
+index 1b77bad..3886a0e 100644
+--- a/source/Irrlicht/COpenGLExtensionHandler.h
++++ b/source/Irrlicht/COpenGLExtensionHandler.h
+@@ -35,7 +35,7 @@
+       #endif
+       #include <OpenGL/gl.h>
+       #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
+-              #include "glext.h"
++              #include <GL/glext.h>
+       #endif
+ #elif defined(_IRR_COMPILE_WITH_SDL_DEVICE_) && 
!defined(_IRR_COMPILE_WITH_X11_DEVICE_)
+       #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
+@@ -48,7 +48,7 @@
+       #define NO_SDL_GLEXT
+       #include <SDL/SDL_video.h>
+       #include <SDL/SDL_opengl.h>
+-      #include "glext.h"
++      #include <GL/glext.h>
+ #else
+       #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
+               #define GL_GLEXT_LEGACY 1
+@@ -60,9 +60,9 @@
+       #include <GL/gl.h>
+       #include <GL/glx.h>
+       #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
+-      #include "glext.h"
++      #include <GL/glext.h>
+       #undef GLX_ARB_get_proc_address // avoid problems with local glxext.h
+-      #include "glxext.h"
++      #include <GL/glxext.h>
+       #endif
+ #endif
+ 
+diff --git a/source/Irrlicht/COpenGLSLMaterialRenderer.h 
b/source/Irrlicht/COpenGLSLMaterialRenderer.h
+index ff71150..f8a6007 100644
+--- a/source/Irrlicht/COpenGLSLMaterialRenderer.h
++++ b/source/Irrlicht/COpenGLSLMaterialRenderer.h
+@@ -25,7 +25,7 @@
+       #include <GL/gl.h>
+ #endif
+ #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
+-      #include "glext.h"
++      #include <GL/glext.h>
+ #endif
+ #endif
+ 
+diff --git a/source/Irrlicht/Makefile b/source/Irrlicht/Makefile
+index 67a3899..d9ea7f3 100644
+--- a/source/Irrlicht/Makefile
++++ b/source/Irrlicht/Makefile
+@@ -43,7 +43,7 @@ IRRIMAGEOBJ = CColorConverter.o CImage.o CImageLoaderBMP.o 
CImageLoaderDDS.o CIm
+       CImageWriterBMP.o CImageWriterJPG.o CImageWriterPCX.o CImageWriterPNG.o 
CImageWriterPPM.o CImageWriterPSD.o CImageWriterTGA.o
+ IRRVIDEOOBJ = CVideoModeList.o CFPSCounter.o $(IRRDRVROBJ) $(IRRIMAGEOBJ)
+ IRRSWRENDEROBJ = CSoftwareDriver.o CSoftwareTexture.o CTRFlat.o CTRFlatWire.o 
CTRGouraud.o CTRGouraudWire.o CTRNormalMap.o CTRStencilShadow.o 
CTRTextureFlat.o CTRTextureFlatWire.o CTRTextureGouraud.o 
CTRTextureGouraudAdd.o CTRTextureGouraudNoZ.o CTRTextureGouraudWire.o 
CZBuffer.o CTRTextureGouraudVertexAlpha2.o CTRTextureGouraudNoZ2.o 
CTRTextureLightMap2_M2.o CTRTextureLightMap2_M4.o CTRTextureLightMap2_M1.o 
CSoftwareDriver2.o CSoftwareTexture2.o CTRTextureGouraud2.o CTRGouraud2.o CTRGo 
[...]
+-IRRIOOBJ = CFileList.o CFileSystem.o CLimitReadFile.o CMemoryFile.o 
CReadFile.o CWriteFile.o CXMLReader.o CXMLWriter.o CWADReader.o CZipReader.o 
CPakReader.o CNPKReader.o CTarReader.o CMountPointReader.o irrXML.o 
CAttributes.o lzma/LzmaDec.o
++IRRIOOBJ = CFileList.o CFileSystem.o CLimitReadFile.o CMemoryFile.o 
CReadFile.o CWriteFile.o CXMLReader.o CXMLWriter.o CWADReader.o CZipReader.o 
CPakReader.o CNPKReader.o CTarReader.o CMountPointReader.o irrXML.o 
CAttributes.o
+ IRROTHEROBJ = CIrrDeviceSDL.o CIrrDeviceLinux.o CIrrDeviceConsole.o 
CIrrDeviceStub.o CIrrDeviceWin32.o CIrrDeviceFB.o CLogger.o COSOperator.o 
Irrlicht.o os.o
+ IRRGUIOBJ = CGUIButton.o CGUICheckBox.o CGUIComboBox.o CGUIContextMenu.o 
CGUIEditBox.o CGUIEnvironment.o CGUIFileOpenDialog.o CGUIFont.o CGUIImage.o 
CGUIInOutFader.o CGUIListBox.o CGUIMenu.o CGUIMeshViewer.o CGUIMessageBox.o 
CGUIModalScreen.o CGUIScrollBar.o CGUISpinBox.o CGUISkin.o CGUIStaticText.o 
CGUITabControl.o CGUITable.o CGUIToolBar.o CGUIWindow.o CGUIColorSelectDialog.o 
CDefaultGUIElementFactory.o CGUISpriteBank.o CGUIImageList.o CGUITreeView.o
+ ZLIBOBJ = zlib/adler32.o zlib/compress.o zlib/crc32.o zlib/deflate.o 
zlib/inffast.o zlib/inflate.o zlib/inftrees.o zlib/trees.o zlib/uncompr.o 
zlib/zutil.o
+@@ -56,14 +56,14 @@ BZIP2OBJ = bzip2/blocksort.o bzip2/huffman.o 
bzip2/crctable.o bzip2/randtable.o
+ EXTRAOBJ =
+ LINKOBJ = $(IRRMESHOBJ) $(IRROBJ) $(IRRPARTICLEOBJ) $(IRRANIMOBJ) \
+       $(IRRVIDEOOBJ) $(IRRSWRENDEROBJ) $(IRRIOOBJ) $(IRROTHEROBJ) \
+-      $(IRRGUIOBJ) $(ZLIBOBJ) $(JPEGLIBOBJ) $(LIBPNGOBJ) $(LIBAESGM) \
+-      $(BZIP2OBJ) $(EXTRAOBJ)
++      $(IRRGUIOBJ) $(LIBAESGM) \
++      $(EXTRAOBJ)
+ 
+ ###############
+ #Compiler flags
+-CXXINCS = -I../../include -Izlib -Ijpeglib -Ilibpng
++CXXINCS = -I../../include # -Izlib -Ijpeglib -Ilibpng
+ CPPFLAGS += $(CXXINCS) -DIRRLICHT_EXPORTS=1
+-CXXFLAGS += -Wall -pipe -fno-exceptions -fno-rtti -fstrict-aliasing
++CXXFLAGS += -Wall -pipe -fno-exceptions -fstrict-aliasing
+ ifndef NDEBUG
+ CXXFLAGS += -g -D_DEBUG
+ else
+@@ -88,7 +88,7 @@ STATIC_LIB = libIrrlicht.a
+ LIB_PATH = ../../lib/$(SYSTEM)
+ INSTALL_DIR = /usr/local/lib
+ sharedlib install: SHARED_LIB = libIrrlicht.so
+-sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm
++staticlib sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm 
-lX11 -lz -lpng -ljpeg -lbz2
+ staticlib sharedlib: CXXINCS += -I/usr/X11R6/include
+ 
+ #OSX specific options
+@@ -153,7 +153,8 @@ install install_osx:
+       $(RM) -r $(INSTALL_DIR)/../include/irrlicht
+       mkdir -p $(INSTALL_DIR)/../include/irrlicht
+       cp ../../include/*.h $(INSTALL_DIR)/../include/irrlicht/
+-      cp $(LIB_PATH)/$(SHARED_FULLNAME) $(INSTALL_DIR)
++      cp $(LIB_PATH)/$(SHARED_FULLNAME) $(INSTALL_DIR) || true
++      cp $(LIB_PATH)/$(STATIC_LIB) $(INSTALL_DIR) || true
+       cd $(INSTALL_DIR) && ln -s -f $(SHARED_FULLNAME) $(SONAME)
+       cd $(INSTALL_DIR) && ln -s -f $(SONAME) $(SHARED_LIB)
+ #     ldconfig -n $(INSTALL_DIR)
+-- 
+2.18.0
+



reply via email to

[Prev in Thread] Current Thread [Next in Thread]