OpenMiInk/third_party/krita-deps-management/ext_mlt/0015-win-Don-t-build-an-own-version-nanosleep-when-not-ne.patch
Hellings b8c8ff98e2 Hi
2026-10-16 09:05:56 -04:00

75 lines
2.6 KiB
Diff

From 9dc0dd454102307935e17d165048e2950a5ce585 Mon Sep 17 00:00:00 2001
From: Dmitry Kazakov <dimula73@gmail.com>
Date: Wed, 10 Jun 2026 15:53:54 +0200
Subject: [PATCH 15/15] [win] Don't build an own version nanosleep() when not
needed
Instead of relying of the includes order we should properly
check if the function is actually provided by our version
of pthread library.
---
src/framework/CMakeLists.txt | 9 +++++++++
src/melt/CMakeLists.txt | 2 +-
src/win32/win32.c | 5 +++--
3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/framework/CMakeLists.txt b/src/framework/CMakeLists.txt
index 4ef43fb..1383657 100644
--- a/src/framework/CMakeLists.txt
+++ b/src/framework/CMakeLists.txt
@@ -110,7 +110,16 @@ if(WIN32)
target_link_options(mlt PRIVATE -Wl,--output-def,${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libmlt-${MLT_VERSION_MAJOR}.def)
install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libmlt-${MLT_VERSION_MAJOR}.def" DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
+
+ include(CheckSymbolExists)
+ set(CMAKE_REQUIRED_LIBRARIES Threads::Threads)
+ check_symbol_exists(nanosleep "pthread.h;pthread_time.h" HAVE_PTHREAD_NANOSLEEP)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+
target_sources(mlt PRIVATE ../win32/win32.c)
+ set_source_files_properties(../win32/win32.c PROPERTIES
+ COMPILE_DEFINITIONS "HAVE_PTHREAD_NANOSLEEP=${HAVE_PTHREAD_NANOSLEEP}")
+
target_link_libraries(mlt PRIVATE Iconv::Iconv)
if(NOT WINDOWS_DEPLOY)
target_compile_definitions(mlt PRIVATE NODEPLOY)
diff --git a/src/melt/CMakeLists.txt b/src/melt/CMakeLists.txt
index 750b025..8a8a84d 100644
--- a/src/melt/CMakeLists.txt
+++ b/src/melt/CMakeLists.txt
@@ -11,7 +11,7 @@ if(SDL2_FOUND AND NOT ANDROID)
target_compile_definitions(melt PRIVATE HAVE_SDL2)
if(MINGW)
target_compile_definitions(melt PRIVATE main=SDL_main)
- target_link_libraries(melt PRIVATE mingw32 SDL2main SDL2)
+ target_link_libraries(melt PRIVATE mingw32 SDL2::SDL2main)
endif()
endif()
diff --git a/src/win32/win32.c b/src/win32/win32.c
index 6c70076..f387161 100644
--- a/src/win32/win32.c
+++ b/src/win32/win32.c
@@ -46,7 +46,7 @@ int usleep(unsigned int useconds)
return 0;
}
-
+#if !HAVE_PTHREAD_NANOSLEEP
int nanosleep( const struct timespec * rqtp, struct timespec * rmtp )
{
if (rqtp->tv_nsec > 999999999) {
@@ -55,7 +55,8 @@ int nanosleep( const struct timespec * rqtp, struct timespec * rmtp )
return -1;
}
return usleep( rqtp->tv_sec * 1000000 + rqtp->tv_nsec / 1000 );
-}
+}
+#endif
int setenv(const char *name, const char *value, int overwrite)
{
--
2.49.0.windows.1