From 3451c57db8cb94eb7e7dd4f0aa7130996f471068 Mon Sep 17 00:00:00 2001 From: David Yip Date: Tue, 16 Aug 2016 12:21:39 -0500 Subject: [PATCH] physfs: enable x86-64 build This commit contains a patch (submitted to icculus, awaiting feedback) that works around some pointer-to-integer-cast problems. --- src/physfs-1-cast-fixes.patch | 44 +++++++++++++++++++++++++++++++++++ src/physfs.mk | 2 -- 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 src/physfs-1-cast-fixes.patch diff --git a/src/physfs-1-cast-fixes.patch b/src/physfs-1-cast-fixes.patch new file mode 100644 index 00000000..cb15c107 --- /dev/null +++ b/src/physfs-1-cast-fixes.patch @@ -0,0 +1,44 @@ +This file is part of MXE. +See index.html for further information. + +# HG changeset patch +# User David Yip +# Date 1471367884 18000 +# Tue Aug 16 12:18:04 2016 -0500 +# Branch stable-2.0 +# Node ID 990fd55ba0c4979db59888283c7dde6c359927e2 +# Parent 34ebe997c5c07f57aff8e56695cd89856800d11d +Replace unsigned long cast with cast to uintptr_t. + +When targeting MinGW-w64's x86_64 target, unsigned long is 4 bytes but void* is +8 bytes. This mismatch triggers the pointer-to-int-cast warning. + +diff -r 34ebe997c5c0 -r 990fd55ba0c4 archivers/lzma.c +--- a/archivers/lzma.c Fri Jan 01 12:53:41 2016 -0500 ++++ b/archivers/lzma.c Tue Aug 16 12:18:04 2016 -0500 +@@ -9,6 +9,7 @@ + + #if (defined PHYSFS_SUPPORTS_7Z) + ++#include + #include + #include + #include +@@ -130,7 +131,7 @@ + SZ_RESULT SzFileReadImp(void *object, void *buffer, size_t size, + size_t *processedSize) + { +- FileInputStream *s = (FileInputStream *)((unsigned long)object - offsetof(FileInputStream, inStream)); /* HACK! */ ++ FileInputStream *s = (FileInputStream *)((uintptr_t)object - offsetof(FileInputStream, inStream)); /* HACK! */ + size_t processedSizeLoc = __PHYSFS_platformRead(s->file, buffer, 1, size); + if (processedSize != 0) + *processedSize = processedSizeLoc; +@@ -145,7 +146,7 @@ + */ + SZ_RESULT SzFileSeekImp(void *object, CFileSize pos) + { +- FileInputStream *s = (FileInputStream *)((unsigned long)object - offsetof(FileInputStream, inStream)); /* HACK! */ ++ FileInputStream *s = (FileInputStream *)((uintptr_t)object - offsetof(FileInputStream, inStream)); /* HACK! */ + if (__PHYSFS_platformSeek(s->file, (PHYSFS_uint64) pos)) + return SZ_OK; + return SZE_FAIL; diff --git a/src/physfs.mk b/src/physfs.mk index d1509bb5..baa4c5ab 100644 --- a/src/physfs.mk +++ b/src/physfs.mk @@ -34,5 +34,3 @@ define $(PKG)_BUILD '$(TEST_FILE)' -o '$(PREFIX)/$(TARGET)/bin/test-physfs.exe' \ -lphysfs -lz endef - -$(PKG)_BUILD_x86_64-w64-mingw32 =