summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Enge <andreas@enge.fr>2016-10-16 17:00:56 +0200
committerAndreas Enge <andreas@enge.fr>2016-10-16 17:00:56 +0200
commit60da9fb1100787c49ed4910eacf50e83c6462dcc (patch)
tree317cf48863e79d021e6ebeff24892129d6f7e838
parentf349d36e48fca49541a0d76829f857e1ad925a20 (diff)
downloadguix-60da9fb1100787c49ed4910eacf50e83c6462dcc.tar.gz
gnu: hdf4: Fix non-x86 architectures.
* gnu/packages/patches/hdf4-architectures.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register patch.
* gnu/packages/maths.scm (hdf4)[source]: Add patch.
-rw-r--r--gnu/packages/patches/hdf4-architectures.patch579
1 files changed, 579 insertions, 0 deletions
diff --git a/gnu/packages/patches/hdf4-architectures.patch b/gnu/packages/patches/hdf4-architectures.patch
new file mode 100644
index 0000000000..5549f11277
--- /dev/null
+++ b/gnu/packages/patches/hdf4-architectures.patch
@@ -0,0 +1,579 @@
+Copied from Debian.
+
+Description: Support additional architectures.
+Author: Francesco Paolo Lovergine <frankie@debian.org>
+
+--- a/hdf/src/hdfi.h
++++ b/hdf/src/hdfi.h
+@@ -48,6 +48,7 @@
+ /*      8 - Cray IEEE                                                       */
+ /*          (i.e. Big-Endian, all 64-bit architecture w/IEEE Floats)        */
+ /*--------------------------------------------------------------------------*/
++#define     DFMT_S390           0x1111
+ #define     DFMT_SUN            0x1111 
+ #define     DFMT_SUN_INTEL      0x4441
+ #define     DFMT_ALLIANT        0x1111
+@@ -62,6 +63,7 @@
+ #define     DFMT_CTSS           0x3331
+ #define     DFMT_VAX            0x2221
+ #define     DFMT_MIPSEL         0x4441
++#define     DFMT_MIPSEB         0x1111
+ #define     DFMT_PC             0x4441
+ #define     DFMT_APPLE          0x1111
+ #define     DFMT_APPLE_INTEL    0x4441
+@@ -75,6 +77,12 @@
+ #define     DFMT_IA64           0x4441
+ #define     DFMT_LINUX64        0x4441
+ #define     DFMT_POWERPC64      0x1111
++#define     DFMT_POWERPC64LE    0x4441
++#define     DFMT_ARMV4L         0x4441
++#define     DFMT_AARCH64        0x4441
++#define     DFMT_X86_64         0x4441
++#define     DFMT_SH		0x4441
++#define     DFMT_SHEB		0x1111
+ 
+ /* I/O library constants */
+ #define UNIXUNBUFIO 1
+@@ -288,7 +296,7 @@ typedef int               hdf_pint_t;
+ 
+ #endif /* IBM6000 */
+ 
+-#if defined(HP9000) || (!defined(__convexc__) && (defined(hpux) || defined(__hpux)))
++#if defined(HP9000) || (!defined(__convexc__) && (defined(hpux) || defined(__hpux) || defined(__hppa__)))
+ 
+ #ifndef HP9000
+ #define HP9000
+@@ -347,6 +355,10 @@ typedef int               hdf_pint_t;
+ /*  what each does */
+ #define JMEMSYS         MEM_ANSI
+ 
++#ifdef __linux__
++#define FNAME_POST_UNDERSCORE
++#endif
++
+ #endif /* HP9000 */
+ 
+ 
+@@ -666,6 +678,410 @@ typedef int               hdf_pint_t;
+ #endif /* !(defined(__APPLE__)) */
+ 
+ /*-----------------------------------------------------*/
++#if defined (__linux__) && defined (__mc68000__)
++
++#ifdef GOT_MACHINE
++If you get an error on this line more than one machine type has been defined.
++Please check your Makefile.
++#endif
++#define GOT_MACHINE 1
++
++#include <fcntl.h>
++#include <sys/types.h>      /* for unbuffered file I/O */
++#include <sys/stat.h>
++#include <unistd.h>
++#include <ctype.h>          /* for character macros */
++
++#define DF_MT             DFMT_MOTOROLA
++
++#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
++typedef void              VOID;
++#endif  /* end VOID */
++typedef void *            VOIDP;
++typedef char *            _fcd;
++typedef char              char8;
++typedef unsigned char     uchar8;
++typedef char              int8;
++typedef unsigned char     uint8;
++typedef short int         int16;
++typedef unsigned short int uint16;
++typedef long int          int32;
++typedef unsigned long int uint32;
++typedef int               intn;
++typedef unsigned int      uintn;
++typedef float             float32;
++typedef double            float64;
++typedef long              intf;     /* size of INTEGERs in Fortran compiler */
++typedef int               hdf_pint_t;   /* an integer the same size as a pointer */
++#define FNAME_POST_UNDERSCORE
++#define _fcdtocp(desc) (desc)
++
++#ifdef  HAVE_FMPOOL
++#define FILELIB PAGEBUFIO  /* enable page buffering */
++#else
++#define FILELIB UNIXBUFIO
++#endif
++
++/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
++
++/* Determine the memory manager we are going to use. Valid values are: */
++/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
++/*  what each does */
++#define JMEMSYS         MEM_ANSI
++#define HAVE_STDC
++#define INCLUDES_ARE_ANSI
++
++#endif /* Linux/m68k */
++
++#if defined (__linux__) && defined (__sparc__)
++
++#ifdef GOT_MACHINE
++If you get an error on this line more than one machine type has been defined.
++Please check your Makefile.
++#endif
++#define GOT_MACHINE 1
++
++#include <fcntl.h>
++#include <sys/types.h>      /* for unbuffered file I/O */
++#include <sys/stat.h>
++#include <unistd.h>
++#include <ctype.h>          /* for character macros */
++
++#define DF_MT             DFMT_SUN
++
++#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
++typedef void              VOID;
++#endif  /* end VOID */
++typedef void *            VOIDP;
++typedef char *            _fcd;
++typedef char              char8;
++typedef unsigned char     uchar8;
++typedef char              int8;
++typedef unsigned char     uint8;
++typedef short int         int16;
++typedef unsigned short int uint16;
++#ifdef _LP64 /* 64-bit environment */
++typedef int               int32;
++typedef unsigned int      uint32;
++#else /* 32-bit environment */
++typedef long int          int32;
++typedef unsigned long int uint32;
++#endif
++typedef int               intn;
++typedef unsigned int      uintn;
++typedef float             float32;
++typedef double            float64;
++typedef long              intf;     /* size of INTEGERs in Fortran compiler */
++#ifdef _LP64 /* 64-bit environment */
++typedef long              hdf_pint_t;   /* an integer the same size as a pointer */
++#else /* 32-bit environment */
++typedef int               hdf_pint_t;   /* an integer the same size as a pointer */
++#endif
++#define FNAME_POST_UNDERSCORE
++#define _fcdtocp(desc) (desc)
++
++#ifdef  HAVE_FMPOOL
++#define FILELIB PAGEBUFIO  /* enable page buffering */
++#else
++#define FILELIB UNIXBUFIO
++#endif
++
++/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
++
++/* Determine the memory manager we are going to use. Valid values are: */
++/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
++/*  what each does */
++#define JMEMSYS         MEM_ANSI
++#define HAVE_STDC
++#define INCLUDES_ARE_ANSI
++
++#endif /* Linux/Sparc */
++
++#if defined (__linux__) && defined (__powerpc__) && !defined(__powerpc64__)
++
++#ifdef GOT_MACHINE
++If you get an error on this line more than one machine type has been defined.
++Please check your Makefile.
++#endif
++#define GOT_MACHINE 1
++
++#include <fcntl.h>
++#include <sys/types.h>      /* for unbuffered file I/O */
++#include <sys/stat.h>
++#include <unistd.h>
++#include <ctype.h>          /* for character macros */
++
++#define DF_MT             DFMT_MOTOROLA
++
++#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
++typedef void              VOID;
++#endif  /* end VOID */
++typedef void *            VOIDP;
++typedef char *            _fcd;
++typedef char              char8;
++typedef unsigned char     uchar8;
++typedef signed char       int8;
++typedef unsigned char     uint8;
++typedef short int         int16;
++typedef unsigned short int uint16;
++typedef long int          int32;
++typedef unsigned long int uint32;
++typedef int               intn;
++typedef unsigned int      uintn;
++typedef float             float32;
++typedef double            float64;
++typedef long              intf;     /* size of INTEGERs in Fortran compiler */
++typedef int               hdf_pint_t;   /* an integer the same size as a pointer */
++#define FNAME_POST_UNDERSCORE
++#define _fcdtocp(desc) (desc)
++
++#ifdef  HAVE_FMPOOL
++#define FILELIB PAGEBUFIO  /* enable page buffering */
++#else
++#define FILELIB UNIXBUFIO
++#endif
++
++/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
++
++/* Determine the memory manager we are going to use. Valid values are: */
++/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
++/*  what each does */
++#define JMEMSYS         MEM_ANSI
++#define HAVE_STDC
++#define INCLUDES_ARE_ANSI
++
++#endif /* Linux/powerpc */
++
++#if defined (__linux__) && defined (__s390__)
++
++#ifdef GOT_MACHINE
++If you get an error on this line more than one machine type has been defined.
++Please check your Makefile.
++#endif
++#define GOT_MACHINE 1
++
++#include <fcntl.h>
++#include <sys/types.h>      /* for unbuffered file I/O */
++#include <sys/stat.h>
++#include <unistd.h>
++#include <ctype.h>          /* for character macros */
++
++#define DF_MT             DFMT_S390
++
++#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
++typedef void              VOID;
++#endif  /* end VOID */
++typedef void *            VOIDP;
++typedef char *            _fcd;
++typedef char              char8;
++typedef unsigned char     uchar8;
++typedef signed char       int8;
++typedef unsigned char     uint8;
++typedef short int         int16;
++typedef unsigned short int uint16;
++#ifdef _LP64 /* 64-bit environment */
++typedef int               int32;
++typedef unsigned int      uint32;
++#else /* 32-bit environment */
++typedef long int          int32;
++typedef unsigned long int uint32;
++#endif
++typedef int               intn;
++typedef unsigned int      uintn;
++typedef float             float32;
++typedef double            float64;
++typedef long              intf;     /* size of INTEGERs in Fortran compiler */
++#ifdef _LP64 /* 64-bit environment */
++typedef long              hdf_pint_t;   /* an integer the same size as a pointer */
++#else /* 32-bit environment */
++typedef int               hdf_pint_t;   /* an integer the same size as a pointer */
++#endif
++#define FNAME_POST_UNDERSCORE
++#define _fcdtocp(desc) (desc)
++
++#ifdef  HAVE_FMPOOL
++#define FILELIB PAGEBUFIO  /* enable page buffering */
++#else
++#define FILELIB UNIXBUFIO
++#endif
++
++/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
++
++/* Determine the memory manager we are going to use. Valid values are: */
++/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
++/*  what each does */
++#define JMEMSYS         MEM_ANSI
++#define HAVE_STDC
++#define INCLUDES_ARE_ANSI
++
++#endif /* Linux/s390 */
++
++#if defined (__linux__) && (defined (__MIPSEB__) || defined(__MIPSEL__))
++
++#ifdef GOT_MACHINE
++If you get an error on this line more than one machine type has been defined.
++Please check your Makefile.
++#endif
++#define GOT_MACHINE 1
++
++#include <fcntl.h>
++#include <sys/types.h>      /* for unbuffered file I/O */
++#include <sys/stat.h>
++#include <unistd.h>
++#include <ctype.h>          /* for character macros */
++
++#if defined (__MIPSEB__)
++#define DF_MT             DFMT_MIPSEB
++#elif defined(__MIPSEL__)
++#define DF_MT		  DFMT_MIPSEL
++#endif
++
++#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
++typedef void              VOID;
++#endif  /* end VOID */
++typedef void *            VOIDP;
++typedef char *            _fcd;
++typedef char              char8;
++typedef unsigned char     uchar8;
++typedef signed char       int8;
++typedef unsigned char     uint8;
++typedef short int         int16;
++typedef unsigned short int uint16;
++typedef int          int32;
++typedef unsigned int uint32;
++typedef int               intn;
++typedef unsigned int      uintn;
++typedef float             float32;
++typedef double            float64;
++typedef long              intf;     /* size of INTEGERs in Fortran compiler */
++typedef long int               hdf_pint_t;   /* an integer the same size as a pointer */
++#define FNAME_POST_UNDERSCORE
++#define _fcdtocp(desc) (desc)
++
++#ifdef  HAVE_FMPOOL
++#define FILELIB PAGEBUFIO  /* enable page buffering */
++#else
++#define FILELIB UNIXBUFIO
++#endif
++
++/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
++
++/* Determine the memory manager we are going to use. Valid values are: */
++/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
++/*  what each does */
++#define JMEMSYS         MEM_ANSI
++#define HAVE_STDC
++#define INCLUDES_ARE_ANSI
++
++#endif /* Linux/mips */
++
++#if defined (__linux__) && defined (__arm__)
++
++#ifdef GOT_MACHINE
++If you get an error on this line more than one machine type has been defined.
++Please check your Makefile.
++#endif
++#define GOT_MACHINE 1
++
++#include <fcntl.h>
++#include <sys/types.h>      /* for unbuffered file I/O */
++#include <sys/stat.h>
++#include <unistd.h>
++#include <ctype.h>          /* for character macros */
++
++#define DF_MT             DFMT_ARMV4L
++
++#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
++typedef void              VOID;
++#endif  /* end VOID */
++typedef void *            VOIDP;
++typedef char *            _fcd;
++typedef char              char8;
++typedef unsigned char     uchar8;
++typedef signed char       int8;
++typedef unsigned char     uint8;
++typedef short int         int16;
++typedef unsigned short int uint16;
++typedef int          int32;
++typedef unsigned int uint32;
++typedef int               intn;
++typedef unsigned int      uintn;
++typedef float             float32;
++typedef double            float64;
++typedef long              intf;     /* size of INTEGERs in Fortran compiler */
++typedef long              hdf_pint_t;   /* an integer the same size as a pointer */
++#define FNAME_POST_UNDERSCORE
++#define _fcdtocp(desc) (desc)
++
++#ifdef  HAVE_FMPOOL
++#define FILELIB PAGEBUFIO  /* enable page buffering */
++#else
++#define FILELIB UNIXBUFIO
++#endif
++
++/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
++
++/* Determine the memory manager we are going to use. Valid values are: */
++/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
++/*  what each does */
++#define JMEMSYS         MEM_ANSI
++#define HAVE_STDC
++#define INCLUDES_ARE_ANSI
++
++#endif /* Linux/arm */
++
++#if defined (__linux__) && defined (__aarch64__)
++
++#ifdef GOT_MACHINE
++If you get an error on this line more than one machine type has been defined.
++Please check your Makefile.
++#endif
++#define GOT_MACHINE 1
++
++#include <fcntl.h>
++#include <sys/types.h>      /* for unbuffered file I/O */
++#include <sys/stat.h>
++#include <unistd.h>
++#include <ctype.h>          /* for character macros */
++
++#define DF_MT             DFMT_AARCH64
++
++typedef void              VOID;
++typedef void *            VOIDP;
++typedef char *            _fcd;
++typedef char              char8;
++typedef unsigned char     uchar8;
++typedef signed char       int8;
++typedef unsigned char     uint8;
++typedef short int         int16;
++typedef unsigned short int uint16;
++typedef int               int32;
++typedef unsigned int      uint32;
++typedef int               intn;
++typedef unsigned int      uintn;
++typedef float             float32;
++typedef double            float64;
++typedef int               intf;     /* size of INTEGERs in Fortran compiler */
++typedef long              hdf_pint_t;   /* an integer the same size as a pointer */
++#define FNAME_POST_UNDERSCORE
++#define _fcdtocp(desc) (desc)
++#define FILELIB UNIXBUFIO
++
++#ifndef BIG_LONGS
++#define BIG_LONGS
++#endif
++
++/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
++
++/* Determine the memory manager we are going to use. Valid values are: */
++/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
++/*  what each does */
++#define JMEMSYS         MEM_ANSI
++#define HAVE_STDC
++#define INCLUDES_ARE_ANSI
++
++#endif /* Linux/aarch64 */
++
+ #if defined(NEXT) || defined(NeXT)
+ 
+ #ifndef NEXT
+@@ -928,7 +1344,11 @@ Please check your Makefile.
+ 
+ #include <sys/file.h>               /* for unbuffered i/o stuff */
+ #include <sys/stat.h>
+-#define DF_MT             DFMT_POWERPC64
++#ifdef __LITTLE_ENDIAN__
++#define DF_MT DFMT_POWERPC64LE
++#else
++#define DF_MT DFMT_POWERPC64
++#endif
+ typedef void              VOID;
+ typedef void              *VOIDP;
+ typedef char              *_fcd;
+@@ -952,6 +1372,11 @@ typedef long              hdf_pint_t;
+ #define _fcdtocp(desc) (desc)
+ #define FILELIB UNIXBUFIO
+ 
++#ifndef BIG_LONGS
++#define BIG_LONGS
++#endif
++
++
+ /* JPEG #define's - Look in the JPEG docs before changing - (Q) */
+ 
+ /* Determine the memory manager we are going to use. Valid values are: */
+@@ -1097,6 +1522,8 @@ typedef long              hdf_pint_t;
+ #define _fcdtocp(desc) (desc)
+ #define FILELIB UNIXBUFIO
+ 
++#define BIG_LONGS
++
+ /* JPEG #define's - Look in the JPEG docs before changing - (Q) */
+ 
+ /* Determine the memory manager we are going to use. Valid values are: */
+@@ -1111,6 +1538,66 @@ typedef long              hdf_pint_t;
+ 
+ #endif /* IA64 */
+ 
++/* Renesas SuperH SH3(little/big)/SH4(little/big) */
++#if defined (__linux__) && defined(__sh__)
++
++#ifdef GOT_MACHINE
++If you get an error on this line more than one machine type has been defined.
++Please check your Makefile.
++#endif
++#define GOT_MACHINE 1
++
++#include <fcntl.h>
++#include <sys/types.h>      /* for unbuffered file I/O */
++#include <sys/stat.h>
++#include <unistd.h>
++#include <ctype.h>          /* for character macros */
++
++#if defined (__LITTLE_ENDIAN__)
++#define DF_MT             DFMT_SH
++#elif defined(__BIG_ENDIAN__)
++#define DF_MT		  DFMT_SHEB
++#endif
++
++#ifndef VOID /* The stupid windows.h header file uses a #define instead of a typedef */
++typedef void              VOID;
++#endif  /* end VOID */
++
++typedef void *            VOIDP;
++typedef char *            _fcd;
++typedef char              char8;
++typedef unsigned char     uchar8;
++typedef signed char       int8;
++typedef unsigned char     uint8;
++typedef short int         int16;
++typedef unsigned short int uint16;
++typedef long int          int32;
++typedef unsigned long int uint32;
++typedef int               intn;
++typedef unsigned int      uintn;
++typedef float             float32;
++typedef double            float64;
++typedef long              intf;
++typedef int               hdf_pint_t;
++#define FNAME_POST_UNDERSCORE
++#define _fcdtocp(desc) (desc)
++
++#ifdef  HAVE_FMPOOL
++#define FILELIB PAGEBUFIO  /* enable page buffering */
++#else
++#define FILELIB UNIXBUFIO
++#endif
++
++/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
++/* Determine the memory manager we are going to use. Valid values are: */
++/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
++/*  what each does */
++#define JMEMSYS         MEM_ANSI
++#define HAVE_STDC
++#define INCLUDES_ARE_ANSI
++
++#endif /* Linux/sh */
++
+ #ifndef GOT_MACHINE
+ No machine type has been defined.  Your Makefile needs to have someing like
+ -DSUN or -DUNICOS in order for the HDF internal structures to be defined
+--- a/hdf/src/hconv.h
++++ b/hdf/src/hconv.h
+@@ -59,7 +59,7 @@
+ /* CONSTANT DEFINITIONS                                                      */
+ /*****************************************************************************/
+ /* Generally Big-Endian machines */
+-#if !defined(INTEL86) && !defined(MIPSEL) && !defined(DEC_ALPHA) && !defined(I860) && !defined(SUN386) && !(defined(__ia64) && !(defined(hpux) || defined(__hpux))) && !defined(__x86_64__)
++#if !defined(INTEL86) && !defined(MIPSEL) && !defined(DEC_ALPHA) && !defined(I860) && !defined(SUN386) && !(defined(__ia64) && !(defined(hpux) || defined(__hpux))) && !defined(__x86_64__) && !(defined(__powerpc__) && defined(__LITTLE_ENDIAN__)) && !defined(__aarch64__) && !defined(__ARM_EABI__)
+ #       define UI8_IN     DFKnb1b   /* Unsigned Integer, 8 bits */
+ #       define UI8_OUT    DFKnb1b
+ #       define SI16_IN    DFKnb2b   /* S = Signed */