Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion .github/workflows/MediaInfoLib_Checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,15 @@ jobs:
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt-get update -y
sudo apt-get install -y libxml2-utils zlib1g-dev libcurl4-gnutls-dev libmms-dev ${{ matrix.environement == 'cmake-dll' && 'g++-mingw-w64-x86-64' || '' }}
sudo apt-get install -y libbrotli-dev libxml2-utils zlib1g-dev libcurl4-gnutls-dev libmms-dev ${{ matrix.environement == 'cmake-dll' && 'g++-mingw-w64-x86-64' || '' }}
fi
if [ "$RUNNER_OS" == "macOS" ]; then
brew install libtool automake
fi
- name: brotli
if: ${{ (runner.os == 'Windows') || matrix.environement == 'cmake-dll' }}
run: |
git -C .. clone --depth=1 https://github.com/MediaArea/brotli.git
- name: zlib
if: ${{ (runner.os == 'Windows') || matrix.environement == 'cmake-dll' }}
run: |
Expand Down Expand Up @@ -130,6 +134,12 @@ jobs:
architecture: [ Win32, x64, ARM64 ]
fail-fast: false
steps:
- name: Checkout brotli
uses: actions/checkout@v6
with:
repository: cjee21/brotli #!! TO CHANGE !!
ref: MSVC #!! TO REMOVE !!
path: brotli
- name: Checkout zlib
uses: actions/checkout@v6
with:
Expand Down
25 changes: 24 additions & 1 deletion Project/CMake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@ endif()
set(MediaInfoLib_SOVERSION 0)

if (NOT WIN32)
option(BUILD_BROTLI "Build bundled Brotli" OFF)
option(BUILD_ZLIB "Build bundled zlib" OFF)
option(BUILD_ZENLIB "Build bundled ZenLib" OFF)
else()
option(BUILD_BROTLI "Build bundled Brotli" ON)
option(BUILD_ZLIB "Build bundled zlib" ON)
option(BUILD_ZENLIB "Build bundled ZenLib" ON)
endif()
Expand Down Expand Up @@ -82,6 +84,22 @@ else()
set(ZLIB_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../../zlib ${CMAKE_CURRENT_BINARY_DIR}/zlib)
endif()

if (NOT BUILD_BROTLI)
find_package(Brotli REQUIRED)
else()
set(_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
set(BUILD_SHARED_LIBS OFF)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../../brotli ${CMAKE_CURRENT_BINARY_DIR}/brotli)
set(BUILD_SHARED_LIBS ${_BUILD_SHARED_LIBS})
set(BROTLI_LIBRARIES brotlicommon brotlidec)
unset(_BUILD_SHARED_LIBS)
if(UNIX AND BUILD_SHARED_LIBS)
target_compile_options(brotlicommon PRIVATE -fPIC)
target_compile_options(brotlidec PRIVATE -fPIC)
endif()
set(BROTLI_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../../brotli ${CMAKE_CURRENT_BINARY_DIR}/brotli)
endif()

if(VCPKG_TARGET_TRIPLET)
set(MediaInfoLib_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/mediainfolib")
elseif(MSVC)
Expand Down Expand Up @@ -244,6 +262,7 @@ set(MediaInfoLib_SRCS
${MediaInfoLib_SOURCES_PATH}/MediaInfo/Image/File_Ico.cpp
${MediaInfoLib_SOURCES_PATH}/MediaInfo/Image/File_GainMap.cpp
${MediaInfoLib_SOURCES_PATH}/MediaInfo/Image/File_Jpeg.cpp
${MediaInfoLib_SOURCES_PATH}/MediaInfo/Image/File_JpegXL.cpp
${MediaInfoLib_SOURCES_PATH}/MediaInfo/Image/File_Pcx.cpp
${MediaInfoLib_SOURCES_PATH}/MediaInfo/Image/File_Png.cpp
${MediaInfoLib_SOURCES_PATH}/MediaInfo/Image/File_Psd.cpp
Expand Down Expand Up @@ -448,7 +467,7 @@ if(BUILD_ZENLIB)
target_include_directories(mediainfo PRIVATE ${ZLIB_INCLUDE_DIRS})
endif()

target_link_libraries(mediainfo ${ZenLib_LIBRARY} ${ZLIB_LIBRARIES})
target_link_libraries(mediainfo ${ZenLib_LIBRARY} ${ZLIB_LIBRARIES} ${BROTLI_LIBRARIES})

if(MSVC AND BUILD_SHARED_LIBS)
install(FILES $<TARGET_PDB_FILE:mediainfo> DESTINATION ${BIN_INSTALL_DIR} OPTIONAL)
Expand All @@ -467,6 +486,10 @@ endif()
include(EnableLatestCXX)
enable_latest_cxx(mediainfo)

if (BUILD_BROTLI)
install(TARGETS brotlicommon brotlidec EXPORT mediainfo-export)
endif()

install(TARGETS mediainfo EXPORT mediainfo-export
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
Expand Down
1 change: 1 addition & 0 deletions Project/CMake/MediaInfoSetupOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ set(MEDIAINFO_FEATURE_LIST
IVF
JNI
JPEG
JPEGXL
JSON
KATE
LA
Expand Down
22 changes: 22 additions & 0 deletions Project/CMake/cmake/modules/FindBrotli.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Try to find the Brotli library
# Adapted from https://github.com/curl/curl/blob/master/CMake/FindBrotli.cmake

find_path(BROTLI_INCLUDE_DIR "brotli/decode.h")
find_library(BROTLICOMMON_LIBRARY NAMES "brotlicommon")
find_library(BROTLIDEC_LIBRARY NAMES "brotlidec")

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Brotli
REQUIRED_VARS
BROTLI_INCLUDE_DIR
BROTLIDEC_LIBRARY
BROTLICOMMON_LIBRARY
)

if(BROTLI_FOUND)
set(BROTLI_INCLUDE_DIRS ${BROTLI_INCLUDE_DIR})
set(BROTLI_LIBRARIES ${BROTLIDEC_LIBRARY} ${BROTLICOMMON_LIBRARY})
include_directories(${BROTLI_INCLUDE_DIRS})
endif()

mark_as_advanced(BROTLI_INCLUDE_DIR BROTLIDEC_LIBRARY BROTLICOMMON_LIBRARY)
1 change: 1 addition & 0 deletions Project/GNU/Library/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ lib@MediaInfoLib_LibName@_la_SOURCES = \
../../../Source/MediaInfo/Image/File_Ico.cpp \
../../../Source/MediaInfo/Image/File_GainMap.cpp \
../../../Source/MediaInfo/Image/File_Jpeg.cpp \
../../../Source/MediaInfo/Image/File_JpegXL.cpp \
../../../Source/MediaInfo/Image/File_Pcx.cpp \
../../../Source/MediaInfo/Image/File_Png.cpp \
../../../Source/MediaInfo/Image/File_Psd.cpp \
Expand Down
22 changes: 22 additions & 0 deletions Project/GNU/Library/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ AC_ARG_ENABLE(exr, AC_HELP_STRING([--disable-exr], [Disable Image - EXR]
AC_ARG_ENABLE(gif, AC_HELP_STRING([--disable-gif], [Disable Image - GIF]), MediaInfoGif=$enableval, MediaInfoGif=depend)
AC_ARG_ENABLE(ico, AC_HELP_STRING([--disable-ico], [Disable Image - ICO]), MediaInfoIco=$enableval, MediaInfoIco=depend)
AC_ARG_ENABLE(jpeg, AC_HELP_STRING([--disable-jpeg], [Disable Image - JPEG]), MediaInfoJpeg=$enableval, MediaInfoJpeg=depend)
AC_ARG_ENABLE(jpegxl, AC_HELP_STRING([--disable-jpegxl], [Disable Image - JPEGXL]), MediaInfoJpegXL=$enableval, MediaInfoJpegXL=depend)
AC_ARG_ENABLE(pcx, AC_HELP_STRING([--disable-pcx], [Disable Image - PCX]), MediaInfoPcx=$enableval, MediaInfoPcx=depend)
AC_ARG_ENABLE(png, AC_HELP_STRING([--disable-png], [Disable Image - PNG]), MediaInfoPng=$enableval, MediaInfoPng=depend)
AC_ARG_ENABLE(psd, AC_HELP_STRING([--disable-psd], [Disable Image - PSD]), MediaInfoPsd=$enableval, MediaInfoPsd=depend)
Expand Down Expand Up @@ -309,6 +310,7 @@ if test "$MediaInfoExr" = "no"; then AC_DEFINE(MEDIAINFO_EXR_NO) fi; if
if test "$MediaInfoGif" = "no"; then AC_DEFINE(MEDIAINFO_GIF_NO) fi; if test "$MediaInfoGif" = "yes"; then AC_DEFINE(MEDIAINFO_GIF_YES) fi
if test "$MediaInfoIco" = "no"; then AC_DEFINE(MEDIAINFO_ICO_NO) fi; if test "$MediaInfoIco" = "yes"; then AC_DEFINE(MEDIAINFO_ICO_YES) fi
if test "$MediaInfoJpeg" = "no"; then AC_DEFINE(MEDIAINFO_JPEG_NO) fi; if test "$MediaInfoJpeg" = "yes"; then AC_DEFINE(MEDIAINFO_JPEG_YES) fi
if test "$MediaInfoJpegXL" = "no"; then AC_DEFINE(MEDIAINFO_JPEGXL_NO) fi; if test "$MediaInfoJpegXL" = "yes"; then AC_DEFINE(MEDIAINFO_JPEGXL_YES) fi
if test "$MediaInfoPcx" = "no"; then AC_DEFINE(MEDIAINFO_PCX_NO) fi; if test "$MediaInfoPcx" = "yes"; then AC_DEFINE(MEDIAINFO_PCX_YES) fi
if test "$MediaInfoPng" = "no"; then AC_DEFINE(MEDIAINFO_PNG_NO) fi; if test "$MediaInfoPng" = "yes"; then AC_DEFINE(MEDIAINFO_PNG_YES) fi
if test "$MediaInfoPsd" = "no"; then AC_DEFINE(MEDIAINFO_PSD_NO) fi; if test "$MediaInfoPsd" = "yes"; then AC_DEFINE(MEDIAINFO_PSD_YES) fi
Expand Down Expand Up @@ -421,6 +423,24 @@ dnl #########################################################################
dnl ### Needed libs
dnl #########################################################################

dnl -------------------------------------------------------------------------
dnl brotli
dnl

PKG_CHECK_MODULES([BROTLI], [libbrotlidec libbrotlicommon], [
with_brotli="system"

LIBS="$LIBS $BROTLI_LIBS"
CFLAGS="$CFLAGS $BROTLI_CFLAGS"
CPPFLAGS="$CPPFLAGS $BROTLI_CFLAGS"

MediaInfoLib_LIBS="$MediaInfoLib_LIBS $BROTLI_LIBS"
MediaInfoLib_LIBS_Static="$MediaInfoLib_LIBS_Static $BROTLI_LIBS"
], [
with_brotli="no"
AC_MSG_ERROR([brotli is not found, please install development package of brotli (libbrotli-dev or brotli)])
])

dnl -------------------------------------------------------------------------
dnl zlib
dnl
Expand Down Expand Up @@ -1010,6 +1030,7 @@ echo " Using ZenLib? $with_zenlib"
echo " Using graphviz? $using_graphviz"
echo " Using libcurl? $using_libcurl"
echo " Using libmms? $using_libmms"
echo " Using brotli? $with_brotli"
echo " Using zlib? $with_zlib"
echo " Using aes? $using_libaes"
echo " Using md5? $using_libmd5"
Expand Down Expand Up @@ -1085,6 +1106,7 @@ Mcho "Exr " "$MediaInfoDpx"
Mcho "Gif " "$MediaInfoGif"
Mcho "Ico " "$MediaInfoIco"
Mcho "Jpeg " "$MediaInfoJpeg"
Mcho "JpegXL " "$MediaInfoJpegXL"
Mcho "Pcx " "$MediaInfoPcx"
Mcho "Png " "$MediaInfoPng"
Mcho "Psd " "$MediaInfoPsd"
Expand Down
Loading
Loading