Skip to content

Commit 6b4bb11

Browse files
committed
Make libheif an optional dependency for ext_gd
1 parent fb09ef6 commit 6b4bb11

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

CMake/HHVMExtensionConfig.cmake

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -781,15 +781,13 @@ function (HHVM_EXTENSION_INTERNAL_HANDLE_LIBRARY_DEPENDENCY extensionID dependen
781781
HHVM_EXTENSION_INTERNAL_ADD_DEFINES("-DHAVE_LIBGMP")
782782
endif()
783783
elseif (${libraryName} STREQUAL "heif")
784-
find_package(Libheif ${requiredVersion} REQUIRED)
785-
if (NOT LIBHEIF_INCLUDE_DIR OR NOT LIBHEIF_LIBRARY)
786-
HHVM_EXTENSION_INTERNAL_SET_FAILED_DEPENDENCY(${extensionID} ${dependencyName})
787-
return()
788-
endif()
784+
find_package(libheif 1.19.8 CONFIG)
789785

790-
if (${addPaths})
791-
HHVM_EXTENSION_INTERNAL_ADD_INCLUDE_DIRS(${LIBHEIF_INCLUDE_DIR})
792-
HHVM_EXTENSION_INTERNAL_ADD_LINK_LIBRARIES(${LIBHEIF_LIBRARY})
786+
if (libheif_FOUND AND ${addPaths})
787+
get_target_property(DEPENDENCY_TARGET_INCLUDE_DIR heif INTERFACE_INCLUDE_DIRECTORIES)
788+
HHVM_EXTENSION_INTERNAL_ADD_INCLUDE_DIRS("${DEPENDENCY_TARGET_INCLUDE_DIR}")
789+
HHVM_EXTENSION_INTERNAL_ADD_LINK_LIBRARIES(heif)
790+
HHVM_EXTENSION_INTERNAL_ADD_DEFINES("-DHAVE_LIBHEIF")
793791
endif()
794792
elseif (${libraryName} STREQUAL "iconv")
795793
find_package(Libiconv ${requiredVersion})

ci/ubuntu-24.04-noble/debian/control

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ Build-Depends:
3636
libgmp3-dev,
3737
libgoogle-glog-dev,
3838
libgoogle-perftools-dev,
39-
libheif-dev,
4039
libiberty-dev,
4140
libiconv-hook-dev,
4241
libicu-dev,

hphp/runtime/ext/gd/ext_gd.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@
4242
#include <folly/ScopeGuard.h>
4343
#include <folly/portability/Stdlib.h>
4444
#include <folly/portability/Unistd.h>
45+
#ifdef HAVE_LIBHEIF
4546
#include <libheif/heif.h>
47+
#endif
4648

4749
/* Section Filters Declarations */
4850
/* IMPORTANT NOTE FOR NEW FILTER
@@ -1509,6 +1511,7 @@ static struct gfxinfo *php_handle_webp(const req::ptr<File>& stream) {
15091511
return result;
15101512
}
15111513

1514+
#ifdef HAVE_LIBHEIF
15121515
static int64_t heif_get_position(void* userdata) {
15131516
auto stream = static_cast<File*>(userdata);
15141517
return stream->tell();
@@ -1633,6 +1636,7 @@ static heif_brand2 php_get_heif(const req::ptr<File>& stream) {
16331636
return heif_read_main_brand(reinterpret_cast<const uint8_t*>(
16341637
fileType.c_str()), 12);
16351638
}
1639+
#endif
16361640

16371641
/* Convert internal image_type to mime type */
16381642
static const char *php_image_type_to_mime_type(int image_type) {
@@ -1756,13 +1760,16 @@ static int php_getimagetype(const req::ptr<File>& file) {
17561760
return IMAGE_FILETYPE_JP2;
17571761
}
17581762

1763+
#ifdef HAVE_LIBHEIF
17591764
/* AFTER ALL ABOVE FAILED */
17601765
auto heifBrand = php_get_heif(file);
17611766
if (heifBrand == heif_brand2_heic || heifBrand == heif_brand2_heix) {
17621767
return IMAGE_FILETYPE_HEIC;
17631768
} else if (heifBrand == heif_brand2_avif) {
17641769
return IMAGE_FILETYPE_AVIF;
17651770
}
1771+
#endif
1772+
17661773
if (php_get_wbmp(file, nullptr, 1)) {
17671774
return IMAGE_FILETYPE_WBMP;
17681775
}
@@ -1930,12 +1937,14 @@ Variant getImageSize(const req::ptr<File>& stream, Array& imageinfo) {
19301937
case IMAGE_FILETYPE_WEBP:
19311938
result = php_handle_webp(stream);
19321939
break;
1940+
#ifdef HAVE_LIBHEIF
19331941
case IMAGE_FILETYPE_AVIF:
19341942
result = php_handle_heif(stream);
19351943
break;
19361944
case IMAGE_FILETYPE_HEIC:
19371945
result = php_handle_heif(stream);
19381946
break;
1947+
#endif
19391948
default:
19401949
case IMAGE_FILETYPE_UNKNOWN:
19411950
break;

0 commit comments

Comments
 (0)