early-access version 2853
This commit is contained in:
20
externals/vcpkg/ports/physfs/001-fix-lzmasdk-arm64-windows.patch
vendored
Executable file
20
externals/vcpkg/ports/physfs/001-fix-lzmasdk-arm64-windows.patch
vendored
Executable file
@@ -0,0 +1,20 @@
|
||||
diff --git a/src/physfs_lzmasdk.h b/src/physfs_lzmasdk.h
|
||||
--- a/src/physfs_lzmasdk.h
|
||||
+++ b/src/physfs_lzmasdk.h
|
||||
@@ -506,6 +506,7 @@ MY_CPU_LE_UNALIGN means that CPU is LITTLE ENDIAN and CPU supports unaligned mem
|
||||
#endif
|
||||
|
||||
#if defined(MY_CPU_AMD64) \
|
||||
+ || defined(_M_ARM64) \
|
||||
|| defined(_M_IA64) \
|
||||
|| defined(__AARCH64EL__) \
|
||||
|| defined(__AARCH64EB__)
|
||||
@@ -531,6 +532,8 @@ MY_CPU_LE_UNALIGN means that CPU is LITTLE ENDIAN and CPU supports unaligned mem
|
||||
|
||||
#if defined(_WIN32) && defined(_M_ARM)
|
||||
#define MY_CPU_ARM_LE
|
||||
+#elif defined(_WIN64) && defined(_M_ARM64)
|
||||
+#define MY_CPU_ARM_LE
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32) && defined(_M_IA64)
|
||||
73
externals/vcpkg/ports/physfs/002-fix-posix-eintr.patch
vendored
Executable file
73
externals/vcpkg/ports/physfs/002-fix-posix-eintr.patch
vendored
Executable file
@@ -0,0 +1,73 @@
|
||||
diff --git a/src/physfs_platform_posix.c b/src/physfs_platform_posix.c
|
||||
--- a/src/physfs_platform_posix.c
|
||||
+++ b/src/physfs_platform_posix.c
|
||||
@@ -6,8 +6,6 @@
|
||||
* This file written by Ryan C. Gordon.
|
||||
*/
|
||||
|
||||
-/* !!! FIXME: check for EINTR? */
|
||||
-
|
||||
#define __PHYSICSFS_INTERNAL__
|
||||
#include "physfs_platforms.h"
|
||||
|
||||
@@ -167,7 +165,9 @@ static void *doOpen(const char *filename, int mode)
|
||||
/* O_APPEND doesn't actually behave as we'd like. */
|
||||
mode &= ~O_APPEND;
|
||||
|
||||
- fd = open(filename, mode, S_IRUSR | S_IWUSR);
|
||||
+ do {
|
||||
+ fd = open(filename, mode, S_IRUSR | S_IWUSR);
|
||||
+ } while ((fd < 0) && (errno == EINTR));
|
||||
BAIL_IF(fd < 0, errcodeFromErrno(), NULL);
|
||||
|
||||
if (appending)
|
||||
@@ -219,7 +219,9 @@ PHYSFS_sint64 __PHYSFS_platformRead(void *opaque, void *buffer,
|
||||
if (!__PHYSFS_ui64FitsAddressSpace(len))
|
||||
BAIL(PHYSFS_ERR_INVALID_ARGUMENT, -1);
|
||||
|
||||
- rc = read(fd, buffer, (size_t) len);
|
||||
+ do {
|
||||
+ rc = read(fd, buffer, (size_t) len);
|
||||
+ } while ((rc == -1) && (errno == EINTR));
|
||||
BAIL_IF(rc == -1, errcodeFromErrno(), -1);
|
||||
assert(rc >= 0);
|
||||
assert(rc <= len);
|
||||
@@ -236,7 +238,9 @@ PHYSFS_sint64 __PHYSFS_platformWrite(void *opaque, const void *buffer,
|
||||
if (!__PHYSFS_ui64FitsAddressSpace(len))
|
||||
BAIL(PHYSFS_ERR_INVALID_ARGUMENT, -1);
|
||||
|
||||
- rc = write(fd, (void *) buffer, (size_t) len);
|
||||
+ do {
|
||||
+ rc = write(fd, (void *) buffer, (size_t) len);
|
||||
+ } while ((rc == -1) && (errno == EINTR));
|
||||
BAIL_IF(rc == -1, errcodeFromErrno(), rc);
|
||||
assert(rc >= 0);
|
||||
assert(rc <= len);
|
||||
@@ -275,8 +279,13 @@ PHYSFS_sint64 __PHYSFS_platformFileLength(void *opaque)
|
||||
int __PHYSFS_platformFlush(void *opaque)
|
||||
{
|
||||
const int fd = *((int *) opaque);
|
||||
- if ((fcntl(fd, F_GETFL) & O_ACCMODE) != O_RDONLY)
|
||||
- BAIL_IF(fsync(fd) == -1, errcodeFromErrno(), 0);
|
||||
+ int rc = -1;
|
||||
+ if ((fcntl(fd, F_GETFL) & O_ACCMODE) != O_RDONLY) {
|
||||
+ do {
|
||||
+ rc = fsync(fd);
|
||||
+ } while ((rc == -1) && (errno == EINTR));
|
||||
+ BAIL_IF(rc == -1, errcodeFromErrno(), 0);
|
||||
+ }
|
||||
return 1;
|
||||
} /* __PHYSFS_platformFlush */
|
||||
|
||||
@@ -284,7 +293,10 @@ int __PHYSFS_platformFlush(void *opaque)
|
||||
void __PHYSFS_platformClose(void *opaque)
|
||||
{
|
||||
const int fd = *((int *) opaque);
|
||||
- (void) close(fd); /* we don't check this. You should have used flush! */
|
||||
+ int rc = -1;
|
||||
+ do {
|
||||
+ rc = close(fd); /* we don't check this. You should have used flush! */
|
||||
+ } while ((rc == -1) && (errno == EINTR));
|
||||
allocator.Free(opaque);
|
||||
} /* __PHYSFS_platformClose */
|
||||
|
||||
34
externals/vcpkg/ports/physfs/003-fix-posix-cloexec.patch
vendored
Executable file
34
externals/vcpkg/ports/physfs/003-fix-posix-cloexec.patch
vendored
Executable file
@@ -0,0 +1,34 @@
|
||||
diff --git a/src/physfs_platform_posix.c b/src/physfs_platform_posix.c
|
||||
--- a/src/physfs_platform_posix.c
|
||||
+++ b/src/physfs_platform_posix.c
|
||||
@@ -160,16 +160,30 @@ static void *doOpen(const char *filename, int mode)
|
||||
const int appending = (mode & O_APPEND);
|
||||
int fd;
|
||||
int *retval;
|
||||
+ int flags;
|
||||
+ flags = -1;
|
||||
errno = 0;
|
||||
|
||||
/* O_APPEND doesn't actually behave as we'd like. */
|
||||
mode &= ~O_APPEND;
|
||||
+
|
||||
+#ifdef O_CLOEXEC
|
||||
+ /* Add O_CLOEXEC if defined */
|
||||
+ mode |= O_CLOEXEC;
|
||||
+#endif
|
||||
|
||||
do {
|
||||
fd = open(filename, mode, S_IRUSR | S_IWUSR);
|
||||
} while ((fd < 0) && (errno == EINTR));
|
||||
BAIL_IF(fd < 0, errcodeFromErrno(), NULL);
|
||||
|
||||
+#if !defined(O_CLOEXEC) && defined(FD_CLOEXEC)
|
||||
+ flags = fcntl(fd, F_GETFD);
|
||||
+ if (flags != -1) {
|
||||
+ fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (appending)
|
||||
{
|
||||
if (lseek(fd, 0, SEEK_END) < 0)
|
||||
43
externals/vcpkg/ports/physfs/portfile.cmake
vendored
Executable file
43
externals/vcpkg/ports/physfs/portfile.cmake
vendored
Executable file
@@ -0,0 +1,43 @@
|
||||
set(PHYSFS_VERSION 3.0.2)
|
||||
|
||||
vcpkg_download_distfile(ARCHIVE
|
||||
URLS "https://icculus.org/physfs/downloads/physfs-${PHYSFS_VERSION}.tar.bz2"
|
||||
"https://hg.icculus.org/icculus/physfs/archive/release-${PHYSFS_VERSION}.tar.bz2"
|
||||
FILENAME "physfs-${PHYSFS_VERSION}.tar.bz2"
|
||||
SHA512 4024b6c3348e0b6fc1036aac330192112dfe17de3e3d14773be9f06e9a062df5a1006869f21162b4e0b584989f463788a35e64186b1913225c073fea62754472
|
||||
)
|
||||
|
||||
vcpkg_extract_source_archive_ex(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
ARCHIVE "${ARCHIVE}"
|
||||
REF ${PHYSFS_VERSION}
|
||||
PATCHES
|
||||
"001-fix-lzmasdk-arm64-windows.patch"
|
||||
"002-fix-posix-eintr.patch" # Remove this patch in the next update
|
||||
"003-fix-posix-cloexec.patch" # Remove this patch in the next update
|
||||
)
|
||||
|
||||
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" PHYSFS_STATIC)
|
||||
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" PHYSFS_SHARED)
|
||||
|
||||
if(VCPKG_TARGET_IS_UWP)
|
||||
set(configure_opts WINDOWS_USE_MSBUILD)
|
||||
endif()
|
||||
|
||||
vcpkg_cmake_configure(
|
||||
SOURCE_PATH "${SOURCE_PATH}"
|
||||
${configure_opts}
|
||||
OPTIONS
|
||||
-DPHYSFS_BUILD_STATIC=${PHYSFS_STATIC}
|
||||
-DPHYSFS_BUILD_SHARED=${PHYSFS_SHARED}
|
||||
-DPHYSFS_BUILD_TEST=OFF
|
||||
)
|
||||
|
||||
vcpkg_cmake_install()
|
||||
vcpkg_copy_pdbs()
|
||||
|
||||
vcpkg_fixup_pkgconfig()
|
||||
|
||||
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
|
||||
|
||||
file(INSTALL "${SOURCE_PATH}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
|
||||
14
externals/vcpkg/ports/physfs/vcpkg.json
vendored
Executable file
14
externals/vcpkg/ports/physfs/vcpkg.json
vendored
Executable file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "physfs",
|
||||
"version-semver": "3.0.2",
|
||||
"port-version": 7,
|
||||
"description": "a library to provide abstract access to various archives",
|
||||
"homepage": "https://icculus.org/physfs/",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "vcpkg-cmake",
|
||||
"host": true
|
||||
},
|
||||
"zlib"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user