Commit aa183b6c for libheif
commit aa183b6cb2a7543e75e9b78aa7093930359f2653
Author: Mgen <m@mgenware.com>
Date: Fri Jan 23 20:42:09 2026 +0800
Support unicode paths on windows (#1358)
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 2a7dde0f..f6e76805 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -14,6 +14,13 @@ add_executable(heif-info ${getopt_sources}
heif_info.cc
common.cc
common.h)
+if(WIN32)
+ if(MSVC)
+ target_sources(heif-info PRIVATE utf8.manifest)
+ elseif(MINGW)
+ target_sources(heif-info PRIVATE utf8.rc)
+ endif()
+endif()
target_link_libraries(heif-info heif)
install(TARGETS heif-info RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES heif-info.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
@@ -23,6 +30,13 @@ add_executable(heif-dec ${getopt_sources}
heif_dec.cc
common.cc
common.h)
+if(WIN32)
+ if(MSVC)
+ target_sources(heif-dec PRIVATE utf8.manifest)
+ elseif(MINGW)
+ target_sources(heif-dec PRIVATE utf8.rc)
+ endif()
+endif()
target_link_libraries(heif-dec PRIVATE heif heifio)
target_include_directories(heif-dec PRIVATE ${libheif_SOURCE_DIR})
install(TARGETS heif-dec RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
@@ -44,6 +58,13 @@ add_executable(heif-enc ${getopt_sources}
common.h
SAI_datafile.cc
SAI_datafile.h)
+if(WIN32)
+ if(MSVC)
+ target_sources(heif-enc PRIVATE utf8.manifest)
+ elseif(MINGW)
+ target_sources(heif-enc PRIVATE utf8.rc)
+ endif()
+endif()
target_link_libraries(heif-enc PRIVATE heif heifio)
target_include_directories(heif-enc PRIVATE ${libheif_SOURCE_DIR})
install(TARGETS heif-enc RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
@@ -59,6 +80,13 @@ if (WITH_EXAMPLE_HEIF_THUMB AND PNG_FOUND)
heif_thumbnailer.cc
common.cc
common.h)
+ if(WIN32)
+ if(MSVC)
+ target_sources(heif-thumbnailer PRIVATE utf8.manifest)
+ elseif(MINGW)
+ target_sources(heif-thumbnailer PRIVATE utf8.rc)
+ endif()
+ endif()
target_link_libraries(heif-thumbnailer heif heifio)
target_include_directories(heif-thumbnailer PRIVATE ${libheif_SOURCE_DIR})
@@ -78,6 +106,13 @@ if (WITH_EXAMPLE_HEIF_VIEW)
sdl.hh
common.cc
common.h)
+ if(WIN32)
+ if(MSVC)
+ target_sources(heif-view PRIVATE utf8.manifest)
+ elseif(MINGW)
+ target_sources(heif-view PRIVATE utf8.rc)
+ endif()
+ endif()
target_link_libraries(heif-view PRIVATE heif SDL2::SDL2main SDL2::SDL2)
install(TARGETS heif-view RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif ()
@@ -88,4 +123,11 @@ add_executable(heif-test ${getopt_sources}
heif_test.cc
common.cc
common.h)
+if(WIN32)
+ if(MSVC)
+ target_sources(heif-test PRIVATE utf8.manifest)
+ elseif(MINGW)
+ target_sources(heif-test PRIVATE utf8.rc)
+ endif()
+endif()
target_link_libraries(heif-test heif)
diff --git a/examples/utf8.manifest b/examples/utf8.manifest
new file mode 100644
index 00000000..dab929e1
--- /dev/null
+++ b/examples/utf8.manifest
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
+ <application>
+ <windowsSettings>
+ <activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
+ </windowsSettings>
+ </application>
+</assembly>
diff --git a/examples/utf8.rc b/examples/utf8.rc
new file mode 100644
index 00000000..62bdbdc3
--- /dev/null
+++ b/examples/utf8.rc
@@ -0,0 +1,3 @@
+#include <winuser.h>
+
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "utf8.manifest"