From 60da9fb1100787c49ed4910eacf50e83c6462dcc Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 16 Oct 2016 17:00:56 +0200 Subject: 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. --- gnu/packages/patches/hdf4-architectures.patch | 579 ++++++++++++++++++++++++++ 1 file changed, 579 insertions(+) create mode 100644 gnu/packages/patches/hdf4-architectures.patch (limited to 'gnu/packages/patches/hdf4-architectures.patch') 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 + +--- 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 ++#include /* for unbuffered file I/O */ ++#include ++#include ++#include /* 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 ++#include /* for unbuffered file I/O */ ++#include ++#include ++#include /* 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 ++#include /* for unbuffered file I/O */ ++#include ++#include ++#include /* 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 ++#include /* for unbuffered file I/O */ ++#include ++#include ++#include /* 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 ++#include /* for unbuffered file I/O */ ++#include ++#include ++#include /* 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 ++#include /* for unbuffered file I/O */ ++#include ++#include ++#include /* 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 ++#include /* for unbuffered file I/O */ ++#include ++#include ++#include /* 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 /* for unbuffered i/o stuff */ + #include +-#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 ++#include /* for unbuffered file I/O */ ++#include ++#include ++#include /* 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 */ -- cgit v1.2.3