From 0e9bc0a922fc22d412de8fe7ecf2ae86aabb9449 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 1 May 2012 10:47:47 +0100 Subject: [PATCH] Add support for ARM using definitions from WINE --- libEMF-arm.patch | 83 ++++++++++++++++++++++++++++++++++++++++++++++++ libEMF.spec | 35 ++++++++++---------- 2 files changed, 101 insertions(+), 17 deletions(-) create mode 100644 libEMF-arm.patch diff --git a/libEMF-arm.patch b/libEMF-arm.patch new file mode 100644 index 0000000..5f4e58e --- /dev/null +++ b/libEMF-arm.patch @@ -0,0 +1,83 @@ +--- libEMF-1.0.4/include/libEMF/wine/winnt.h.orig 2012-05-01 09:36:45.607228307 +0100 ++++ libEMF-1.0.4/include/libEMF/wine/winnt.h 2012-05-01 10:27:53.636581246 +0100 +@@ -37,6 +37,10 @@ + # undef WORDS_BIGENDIAN + # undef BITFIELDS_BIGENDIAN + # undef ALLOW_UNALIGNED_ACCESS ++#elif defined(__arm__) ++# undef WORDS_BIGENDIAN ++# undef BITFIELDS_BIGENDIAN ++# undef ALLOW_UNALIGNED_ACCESS + #elif defined(__sparc__) + # define WORDS_BIGENDIAN + # define BITFIELDS_BIGENDIAN +@@ -1128,6 +1132,69 @@ + + #endif /* __s390__ */ + ++#ifdef __arm__ ++ ++/* These definitions are taken directly from wine ++ * http://source.winehq.org/git/wine.git/blob_plain/HEAD:/include/winnt.h */ ++ ++/* The following flags control the contents of the CONTEXT structure. */ ++ ++#define CONTEXT_ARM 0x0200000 ++#define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001) ++#define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002) ++#define CONTEXT_FLOATING_POINT (CONTEXT_ARM | 0x00000004) ++#define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARM | 0x00000008) ++ ++#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER) ++ ++#define EXCEPTION_READ_FAULT 0 ++#define EXCEPTION_WRITE_FAULT 1 ++#define EXCEPTION_EXECUTE_FAULT 8 ++ ++typedef struct _CONTEXT { ++/* The flags values within this flag control the contents of ++ * a CONTEXT record. ++ * ++ * If the context record is used as an input parameter, then ++ * for each portion of the context record controlled by a flag ++ * whose value is set, it is assumed that that portion of the ++ * context record contains valid context. If the context record ++ * is being used to modify a thread's context, then only that ++ * portion of the threads context will be modified. ++ * ++ * If the context record is used as an IN OUT parameter to capture ++ * the context of a thread, then only those portions of the thread's ++ * context corresponding to set flags will be returned. ++ * ++ * The context record is never used as an OUT only parameter. */ ++ ++ULONG ContextFlags; ++ ++/* This section is specified/returned if the ContextFlags word contains ++ * the flag CONTEXT_INTEGER. */ ++ULONG R0; ++ULONG R1; ++ULONG R2; ++ULONG R3; ++ULONG R4; ++ULONG R5; ++ULONG R6; ++ULONG R7; ++ULONG R8; ++ULONG R9; ++ULONG R10; ++ULONG Fp; ++ULONG Ip; ++ ++/* These are selected by CONTEXT_CONTROL */ ++ULONG Sp; ++ULONG Lr; ++ULONG Pc; ++ULONG Cpsr; ++} CONTEXT; ++ ++#endif /* __arm__ */ ++ + #if !defined(CONTEXT_FULL) && !defined(RC_INVOKED) + #error You need to define a CONTEXT for your CPU + #endif diff --git a/libEMF.spec b/libEMF.spec index 44e2a52..9037deb 100644 --- a/libEMF.spec +++ b/libEMF.spec @@ -2,18 +2,19 @@ Summary: A library for generating Enhanced Metafiles Summary(pl): Biblioteka do generowania plików w formacie Enhanced Metafile Name: libEMF Version: 1.0.4 -Release: 3%{?dist} +Release: 4%{?dist} License: LGPLv2+ and GPLv2+ Group: System Environment/Libraries +URL: http://libemf.sourceforge.net/ + Source0: http://downloads.sourceforge.net/pstoedit/%{name}-%{version}.tar.gz # Source0-md5: a4e91fd8077ce5f540f569e20e8ef7ff Patch0: %{name}-amd64.patch Patch1: %{name}-axp.patch -Patch3: %{name}-s390.patch -URL: http://libemf.sourceforge.net/ +Patch2: %{name}-s390.patch +Patch3: %{name}-arm.patch BuildRequires: libstdc++-devel BuildRequires: libtool -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(id -u -n) %description libEMF is a library for generating Enhanced Metafiles on systems which @@ -46,35 +47,32 @@ Pliki nagłówkowe libEMF. %setup -q %patch0 -p1 -b .amd64 %patch1 -p1 -b .axp -%patch3 -p1 -b .s390 +%patch2 -p1 -b .s390 +%patch3 -p1 -b .arm + chmod 0644 libemf/libemf.h %build # supplied libtool is broken (no C++ libraries support) -%{__libtoolize} --force -%{__aclocal} -%{__autoconf} -%{__automake} +libtoolize --force +aclocal +autoconf +automake %configure \ --disable-static \ --enable-editing -%{__make} %{?_smp_mflags} +make %{?_smp_mflags} %install -rm -rf $RPM_BUILD_ROOT - export CPPROG="cp -p" -%{__make} install \ +make install \ DESTDIR=$RPM_BUILD_ROOT rm $RPM_BUILD_ROOT%{_libdir}/libEMF.la %check -%{__make} check - -%clean -rm -rf $RPM_BUILD_ROOT +make check %post -p /sbin/ldconfig %postun -p /sbin/ldconfig @@ -92,6 +90,9 @@ rm -rf $RPM_BUILD_ROOT %{_includedir}/libEMF %changelog +* Tue May 1 2012 Peter Robinson - 1.0.4-4 +- Add support for ARM using definitions from WINE + * Fri Jan 13 2012 Fedora Release Engineering - 1.0.4-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild