mirror of
https://github.com/webmproject/libwebp.git
synced 2024-12-26 13:48:21 +01:00
Merge "Build libsharpyuv as a full installable library." into main
This commit is contained in:
commit
3fe15b6773
320
CMakeLists.txt
320
CMakeLists.txt
@ -218,159 +218,9 @@ configure_file(${CMAKE_CURRENT_LIST_DIR}/cmake/config.h.in
|
|||||||
${CMAKE_CURRENT_BINARY_DIR}/src/webp/config.h)
|
${CMAKE_CURRENT_BINARY_DIR}/src/webp/config.h)
|
||||||
add_definitions(-DHAVE_CONFIG_H)
|
add_definitions(-DHAVE_CONFIG_H)
|
||||||
|
|
||||||
# ##############################################################################
|
|
||||||
# Build the webpdecoder library.
|
|
||||||
|
|
||||||
# Creates a source file with an unused stub function in $CMAKE_BINARY_DIR and
|
|
||||||
# adds it to the specified target. Currently used only with Xcode.
|
|
||||||
#
|
|
||||||
# See also:
|
|
||||||
# https://cmake.org/cmake/help/v3.18/command/add_library.html#object-libraries
|
|
||||||
# "Some native build systems (such as Xcode) may not like targets that have
|
|
||||||
# only object files, so consider adding at least one real source file to any
|
|
||||||
# target that references $<TARGET_OBJECTS:objlib>."
|
|
||||||
function(libwebp_add_stub_file TARGET)
|
|
||||||
set(stub_source_dir "${CMAKE_BINARY_DIR}")
|
|
||||||
set(stub_source_file
|
|
||||||
"${stub_source_dir}/libwebp_${TARGET}_stub.c")
|
|
||||||
set(stub_source_code
|
|
||||||
"// Generated file. DO NOT EDIT!\n"
|
|
||||||
"// C source file created for target ${TARGET}.\n"
|
|
||||||
"void libwebp_${TARGET}_stub_function(void)\;\n"
|
|
||||||
"void libwebp_${TARGET}_stub_function(void) {}\n")
|
|
||||||
file(WRITE "${stub_source_file}" ${stub_source_code})
|
|
||||||
|
|
||||||
target_sources(${TARGET} PRIVATE ${stub_source_file})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
parse_makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv "WEBP_SHARPYUV_SRCS"
|
|
||||||
"")
|
|
||||||
add_library(sharpyuv OBJECT ${WEBP_SHARPYUV_SRCS})
|
|
||||||
target_include_directories(sharpyuv
|
|
||||||
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR})
|
|
||||||
set_target_properties(
|
|
||||||
sharpyuv
|
|
||||||
PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv/sharpyuv.h;\
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv/sharpyuv_csp.h;\
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h")
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
# avoid security warnings for e.g., fopen() used in the examples.
|
|
||||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
||||||
else()
|
|
||||||
add_definitions(-Wall)
|
|
||||||
endif()
|
|
||||||
include_directories(${WEBP_DEP_INCLUDE_DIRS})
|
|
||||||
add_library(webpdecode OBJECT ${WEBP_DEC_SRCS})
|
|
||||||
target_include_directories(webpdecode
|
|
||||||
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR})
|
|
||||||
add_library(webpdspdecode OBJECT ${WEBP_DSP_COMMON_SRCS} ${WEBP_DSP_DEC_SRCS})
|
|
||||||
target_include_directories(webpdspdecode
|
|
||||||
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR})
|
|
||||||
add_library(webputilsdecode
|
|
||||||
OBJECT
|
|
||||||
${WEBP_UTILS_COMMON_SRCS}
|
|
||||||
${WEBP_UTILS_DEC_SRCS})
|
|
||||||
target_include_directories(webputilsdecode
|
|
||||||
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR})
|
|
||||||
add_library(webpdecoder
|
|
||||||
$<TARGET_OBJECTS:webpdecode>
|
|
||||||
$<TARGET_OBJECTS:webpdspdecode>
|
|
||||||
$<TARGET_OBJECTS:webputilsdecode>)
|
|
||||||
if(XCODE)
|
|
||||||
libwebp_add_stub_file(webpdecoder)
|
|
||||||
endif()
|
|
||||||
target_link_libraries(webpdecoder ${WEBP_DEP_LIBRARIES})
|
|
||||||
target_include_directories(
|
|
||||||
webpdecoder
|
|
||||||
PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
|
||||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
|
||||||
set_target_properties(
|
|
||||||
webpdecoder
|
|
||||||
PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/webp/decode.h;\
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h")
|
|
||||||
|
|
||||||
configure_pkg_config("src/libwebpdecoder.pc")
|
|
||||||
|
|
||||||
# Build the webp library.
|
|
||||||
add_library(webpencode OBJECT ${WEBP_ENC_SRCS})
|
|
||||||
target_include_directories(webpencode
|
|
||||||
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR})
|
|
||||||
add_library(webpdsp
|
|
||||||
OBJECT
|
|
||||||
${WEBP_DSP_COMMON_SRCS}
|
|
||||||
${WEBP_DSP_DEC_SRCS}
|
|
||||||
${WEBP_DSP_ENC_SRCS})
|
|
||||||
target_include_directories(webpdsp
|
|
||||||
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR})
|
|
||||||
add_library(webputils
|
|
||||||
OBJECT
|
|
||||||
${WEBP_UTILS_COMMON_SRCS}
|
|
||||||
${WEBP_UTILS_DEC_SRCS}
|
|
||||||
${WEBP_UTILS_ENC_SRCS})
|
|
||||||
target_include_directories(webputils
|
|
||||||
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR})
|
|
||||||
add_library(webp
|
|
||||||
$<TARGET_OBJECTS:sharpyuv>
|
|
||||||
$<TARGET_OBJECTS:webpdecode>
|
|
||||||
$<TARGET_OBJECTS:webpdsp>
|
|
||||||
$<TARGET_OBJECTS:webpencode>
|
|
||||||
$<TARGET_OBJECTS:webputils>)
|
|
||||||
if(XCODE)
|
|
||||||
libwebp_add_stub_file(webp)
|
|
||||||
endif()
|
|
||||||
target_link_libraries(webp ${WEBP_DEP_LIBRARIES})
|
|
||||||
target_include_directories(
|
|
||||||
webp
|
|
||||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
|
||||||
$<INSTALL_INTERFACE:include>)
|
|
||||||
set_target_properties(
|
|
||||||
webp
|
|
||||||
PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/webp/decode.h;\
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/encode.h;\
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h")
|
|
||||||
|
|
||||||
# Make sure the OBJECT libraries are built with position independent code (it is
|
|
||||||
# not ON by default).
|
|
||||||
set_target_properties(sharpyuv
|
|
||||||
webpdecode
|
|
||||||
webpdspdecode
|
|
||||||
webputilsdecode
|
|
||||||
webpencode
|
|
||||||
webpdsp
|
|
||||||
webputils
|
|
||||||
PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
||||||
configure_pkg_config("src/libwebp.pc")
|
|
||||||
|
|
||||||
# Build the webp demux library.
|
|
||||||
add_library(webpdemux ${WEBP_DEMUX_SRCS})
|
|
||||||
target_link_libraries(webpdemux webp)
|
|
||||||
target_include_directories(webpdemux
|
|
||||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
PUBLIC $<INSTALL_INTERFACE:include>)
|
|
||||||
set_target_properties(
|
|
||||||
webpdemux
|
|
||||||
PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/webp/decode.h;\
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/demux.h;\
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/mux_types.h;\
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h")
|
|
||||||
|
|
||||||
configure_pkg_config("src/demux/libwebpdemux.pc")
|
|
||||||
|
|
||||||
# Set the version numbers.
|
# Set the version numbers.
|
||||||
macro(set_version FILE TARGET_NAME NAME_IN_MAKEFILE)
|
macro(set_version FILE TARGET_NAME NAME_IN_MAKEFILE)
|
||||||
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/src/${FILE} SOURCE_FILE)
|
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/${FILE} SOURCE_FILE)
|
||||||
string(REGEX MATCH
|
string(REGEX MATCH
|
||||||
"${NAME_IN_MAKEFILE}_la_LDFLAGS[^\n]* -version-info [0-9:]+"
|
"${NAME_IN_MAKEFILE}_la_LDFLAGS[^\n]* -version-info [0-9:]+"
|
||||||
TMP
|
TMP
|
||||||
@ -420,9 +270,169 @@ macro(set_version FILE TARGET_NAME NAME_IN_MAKEFILE)
|
|||||||
${LIBWEBP_MACHO_COMPATIBILITY_VERSION}.${LT_REVISION})
|
${LIBWEBP_MACHO_COMPATIBILITY_VERSION}.${LT_REVISION})
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
set_version(Makefile.am webp webp)
|
|
||||||
set_version(Makefile.am webpdecoder webpdecoder)
|
# ##############################################################################
|
||||||
set_version(demux/Makefile.am webpdemux webpdemux)
|
# Build the webpdecoder library.
|
||||||
|
|
||||||
|
# Creates a source file with an unused stub function in $CMAKE_BINARY_DIR and
|
||||||
|
# adds it to the specified target. Currently used only with Xcode.
|
||||||
|
#
|
||||||
|
# See also:
|
||||||
|
# https://cmake.org/cmake/help/v3.18/command/add_library.html#object-libraries
|
||||||
|
# "Some native build systems (such as Xcode) may not like targets that have
|
||||||
|
# only object files, so consider adding at least one real source file to any
|
||||||
|
# target that references $<TARGET_OBJECTS:objlib>."
|
||||||
|
function(libwebp_add_stub_file TARGET)
|
||||||
|
set(stub_source_dir "${CMAKE_BINARY_DIR}")
|
||||||
|
set(stub_source_file
|
||||||
|
"${stub_source_dir}/libwebp_${TARGET}_stub.c")
|
||||||
|
set(stub_source_code
|
||||||
|
"// Generated file. DO NOT EDIT!\n"
|
||||||
|
"// C source file created for target ${TARGET}.\n"
|
||||||
|
"void libwebp_${TARGET}_stub_function(void)\;\n"
|
||||||
|
"void libwebp_${TARGET}_stub_function(void) {}\n")
|
||||||
|
file(WRITE "${stub_source_file}" ${stub_source_code})
|
||||||
|
|
||||||
|
target_sources(${TARGET} PRIVATE ${stub_source_file})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
parse_makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv "WEBP_SHARPYUV_SRCS"
|
||||||
|
"")
|
||||||
|
add_library(sharpyuv ${WEBP_SHARPYUV_SRCS})
|
||||||
|
set_version(sharpyuv/Makefile.am sharpyuv sharpyuv)
|
||||||
|
target_include_directories(sharpyuv
|
||||||
|
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||||
|
set_target_properties(
|
||||||
|
sharpyuv
|
||||||
|
PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv/sharpyuv.h;\
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv/sharpyuv_csp.h")
|
||||||
|
install(TARGETS sharpyuv
|
||||||
|
EXPORT ${PROJECT_NAME}Targets
|
||||||
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/webp/sharpyuv
|
||||||
|
INCLUDES
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ${CMAKE_INSTALL_INCLUDEDIR}/webp
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
# avoid security warnings for e.g., fopen() used in the examples.
|
||||||
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||||
|
else()
|
||||||
|
add_definitions(-Wall)
|
||||||
|
endif()
|
||||||
|
include_directories(${WEBP_DEP_INCLUDE_DIRS})
|
||||||
|
add_library(webpdecode OBJECT ${WEBP_DEC_SRCS})
|
||||||
|
target_include_directories(webpdecode
|
||||||
|
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
add_library(webpdspdecode OBJECT ${WEBP_DSP_COMMON_SRCS} ${WEBP_DSP_DEC_SRCS})
|
||||||
|
target_include_directories(webpdspdecode
|
||||||
|
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
add_library(webputilsdecode
|
||||||
|
OBJECT
|
||||||
|
${WEBP_UTILS_COMMON_SRCS}
|
||||||
|
${WEBP_UTILS_DEC_SRCS})
|
||||||
|
target_include_directories(webputilsdecode
|
||||||
|
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
add_library(webpdecoder
|
||||||
|
$<TARGET_OBJECTS:webpdecode>
|
||||||
|
$<TARGET_OBJECTS:webpdspdecode>
|
||||||
|
$<TARGET_OBJECTS:webputilsdecode>)
|
||||||
|
if(XCODE)
|
||||||
|
libwebp_add_stub_file(webpdecoder)
|
||||||
|
endif()
|
||||||
|
target_link_libraries(webpdecoder ${WEBP_DEP_LIBRARIES})
|
||||||
|
target_include_directories(
|
||||||
|
webpdecoder
|
||||||
|
PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
||||||
|
set_target_properties(
|
||||||
|
webpdecoder
|
||||||
|
PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/webp/decode.h;\
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h")
|
||||||
|
|
||||||
|
configure_pkg_config("src/libwebpdecoder.pc")
|
||||||
|
|
||||||
|
# Build the webp library.
|
||||||
|
add_library(webpencode OBJECT ${WEBP_ENC_SRCS})
|
||||||
|
target_include_directories(webpencode
|
||||||
|
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||||
|
add_library(webpdsp
|
||||||
|
OBJECT
|
||||||
|
${WEBP_DSP_COMMON_SRCS}
|
||||||
|
${WEBP_DSP_DEC_SRCS}
|
||||||
|
${WEBP_DSP_ENC_SRCS})
|
||||||
|
target_include_directories(webpdsp
|
||||||
|
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
add_library(webputils
|
||||||
|
OBJECT
|
||||||
|
${WEBP_UTILS_COMMON_SRCS}
|
||||||
|
${WEBP_UTILS_DEC_SRCS}
|
||||||
|
${WEBP_UTILS_ENC_SRCS})
|
||||||
|
target_include_directories(webputils
|
||||||
|
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
add_library(webp
|
||||||
|
$<TARGET_OBJECTS:webpdecode>
|
||||||
|
$<TARGET_OBJECTS:webpdsp>
|
||||||
|
$<TARGET_OBJECTS:webpencode>
|
||||||
|
$<TARGET_OBJECTS:webputils>)
|
||||||
|
target_link_libraries(webp sharpyuv)
|
||||||
|
if(XCODE)
|
||||||
|
libwebp_add_stub_file(webp)
|
||||||
|
endif()
|
||||||
|
target_link_libraries(webp ${WEBP_DEP_LIBRARIES})
|
||||||
|
target_include_directories(
|
||||||
|
webp
|
||||||
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
||||||
|
$<INSTALL_INTERFACE:include>)
|
||||||
|
set_target_properties(
|
||||||
|
webp
|
||||||
|
PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/webp/decode.h;\
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/encode.h;\
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h")
|
||||||
|
|
||||||
|
# Make sure the OBJECT libraries are built with position independent code (it is
|
||||||
|
# not ON by default).
|
||||||
|
set_target_properties(webpdecode
|
||||||
|
webpdspdecode
|
||||||
|
webputilsdecode
|
||||||
|
webpencode
|
||||||
|
webpdsp
|
||||||
|
webputils
|
||||||
|
PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||||
|
configure_pkg_config("src/libwebp.pc")
|
||||||
|
|
||||||
|
# Build the webp demux library.
|
||||||
|
add_library(webpdemux ${WEBP_DEMUX_SRCS})
|
||||||
|
target_link_libraries(webpdemux webp)
|
||||||
|
target_include_directories(webpdemux
|
||||||
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
PUBLIC $<INSTALL_INTERFACE:include>)
|
||||||
|
set_target_properties(
|
||||||
|
webpdemux
|
||||||
|
PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/webp/decode.h;\
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/demux.h;\
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/mux_types.h;\
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/webp/types.h")
|
||||||
|
|
||||||
|
configure_pkg_config("src/demux/libwebpdemux.pc")
|
||||||
|
|
||||||
|
set_version(src/Makefile.am webp webp)
|
||||||
|
set_version(src/Makefile.am webpdecoder webpdecoder)
|
||||||
|
set_version(src/demux/Makefile.am webpdemux webpdemux)
|
||||||
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/configure.ac CONFIGURE_FILE)
|
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/configure.ac CONFIGURE_FILE)
|
||||||
string(REGEX MATCH
|
string(REGEX MATCH
|
||||||
"AC_INIT\\([^\n]*\\[[0-9\\.]+\\]"
|
"AC_INIT\\([^\n]*\\[[0-9\\.]+\\]"
|
||||||
@ -537,7 +547,7 @@ if(WEBP_BUILD_LIBWEBPMUX)
|
|||||||
target_include_directories(webpmux
|
target_include_directories(webpmux
|
||||||
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
${CMAKE_CURRENT_SOURCE_DIR})
|
${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
set_version(mux/Makefile.am webpmux webpmux)
|
set_version(src/mux/Makefile.am webpmux webpmux)
|
||||||
set_target_properties(webpmux
|
set_target_properties(webpmux
|
||||||
PROPERTIES PUBLIC_HEADER
|
PROPERTIES PUBLIC_HEADER
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/webp/mux.h;\
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/webp/mux.h;\
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
AM_CPPFLAGS += -I$(top_builddir) -I$(top_srcdir)
|
AM_CPPFLAGS += -I$(top_builddir) -I$(top_srcdir)
|
||||||
AM_CPPFLAGS += -I$(top_builddir)/src -I$(top_srcdir)/src
|
AM_CPPFLAGS += -I$(top_builddir)/src -I$(top_srcdir)/src
|
||||||
|
|
||||||
|
lib_LTLIBRARIES = libsharpyuv.la
|
||||||
|
|
||||||
noinst_LTLIBRARIES =
|
noinst_LTLIBRARIES =
|
||||||
noinst_LTLIBRARIES += libsharpyuv.la
|
|
||||||
noinst_LTLIBRARIES += libsharpyuv_sse2.la
|
noinst_LTLIBRARIES += libsharpyuv_sse2.la
|
||||||
noinst_LTLIBRARIES += libsharpyuv_neon.la
|
noinst_LTLIBRARIES += libsharpyuv_neon.la
|
||||||
|
|
||||||
|
libsharpyuvinclude_HEADERS =
|
||||||
|
libsharpyuvinclude_HEADERS += sharpyuv.h
|
||||||
|
libsharpyuvinclude_HEADERS += sharpyuv_csp.h
|
||||||
noinst_HEADERS =
|
noinst_HEADERS =
|
||||||
noinst_HEADERS += ../src/webp/types.h
|
|
||||||
noinst_HEADERS += ../src/dsp/cpu.h
|
noinst_HEADERS += ../src/dsp/cpu.h
|
||||||
|
|
||||||
libsharpyuv_sse2_la_SOURCES =
|
libsharpyuv_sse2_la_SOURCES =
|
||||||
@ -26,9 +30,8 @@ libsharpyuv_la_SOURCES += sharpyuv_gamma.c sharpyuv_gamma.h
|
|||||||
libsharpyuv_la_SOURCES += sharpyuv.c sharpyuv.h
|
libsharpyuv_la_SOURCES += sharpyuv.c sharpyuv.h
|
||||||
|
|
||||||
libsharpyuv_la_CPPFLAGS = $(AM_CPPFLAGS)
|
libsharpyuv_la_CPPFLAGS = $(AM_CPPFLAGS)
|
||||||
libsharpyuv_la_LDFLAGS =
|
libsharpyuv_la_LDFLAGS = -no-undefined -version-info 0:0:0
|
||||||
libsharpyuv_la_LIBADD =
|
libsharpyuv_la_LIBADD =
|
||||||
libsharpyuv_la_LIBADD += libsharpyuv_sse2.la
|
libsharpyuv_la_LIBADD += libsharpyuv_sse2.la
|
||||||
libsharpyuv_la_LIBADD += libsharpyuv_neon.la
|
libsharpyuv_la_LIBADD += libsharpyuv_neon.la
|
||||||
|
libsharpyuvincludedir = $(includedir)/webp/sharpyuv
|
||||||
noinst_PROGRAMS =
|
|
||||||
|
@ -417,7 +417,7 @@ static int DoSharpArgbToYuv(const uint8_t* r_ptr, const uint8_t* g_ptr,
|
|||||||
// Hidden exported init function.
|
// Hidden exported init function.
|
||||||
// By default SharpYuvConvert calls it with NULL. If needed, users can declare
|
// By default SharpYuvConvert calls it with NULL. If needed, users can declare
|
||||||
// it as extern and call it with a VP8CPUInfo function.
|
// it as extern and call it with a VP8CPUInfo function.
|
||||||
extern void SharpYuvInit(VP8CPUInfo cpu_info_func);
|
SHARPYUV_EXTERN void SharpYuvInit(VP8CPUInfo cpu_info_func);
|
||||||
void SharpYuvInit(VP8CPUInfo cpu_info_func) {
|
void SharpYuvInit(VP8CPUInfo cpu_info_func) {
|
||||||
static volatile VP8CPUInfo sharpyuv_last_cpuinfo_used =
|
static volatile VP8CPUInfo sharpyuv_last_cpuinfo_used =
|
||||||
(VP8CPUInfo)&sharpyuv_last_cpuinfo_used;
|
(VP8CPUInfo)&sharpyuv_last_cpuinfo_used;
|
||||||
|
@ -18,6 +18,20 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef SHARPYUV_EXTERN
|
||||||
|
#ifdef WEBP_EXTERN
|
||||||
|
#define SHARPYUV_EXTERN WEBP_EXTERN
|
||||||
|
#else
|
||||||
|
// This explicitly marks library functions and allows for changing the
|
||||||
|
// signature for e.g., Windows DLL builds.
|
||||||
|
#if defined(__GNUC__) && __GNUC__ >= 4
|
||||||
|
#define SHARPYUV_EXTERN extern __attribute__((visibility("default")))
|
||||||
|
#else
|
||||||
|
#define SHARPYUV_EXTERN extern
|
||||||
|
#endif /* __GNUC__ >= 4 */
|
||||||
|
#endif /* WEBP_EXTERN */
|
||||||
|
#endif /* SHARPYUV_EXTERN */
|
||||||
|
|
||||||
// SharpYUV API version following the convention from semver.org
|
// SharpYUV API version following the convention from semver.org
|
||||||
#define SHARPYUV_VERSION_MAJOR 0
|
#define SHARPYUV_VERSION_MAJOR 0
|
||||||
#define SHARPYUV_VERSION_MINOR 1
|
#define SHARPYUV_VERSION_MINOR 1
|
||||||
@ -65,11 +79,13 @@ typedef struct {
|
|||||||
// adjacent pixels on the y, u and v channels. If yuv_bit_depth > 8, they
|
// adjacent pixels on the y, u and v channels. If yuv_bit_depth > 8, they
|
||||||
// should be multiples of 2.
|
// should be multiples of 2.
|
||||||
// width, height: width and height of the image in pixels
|
// width, height: width and height of the image in pixels
|
||||||
int SharpYuvConvert(const void* r_ptr, const void* g_ptr, const void* b_ptr,
|
SHARPYUV_EXTERN int SharpYuvConvert(const void* r_ptr, const void* g_ptr,
|
||||||
int rgb_step, int rgb_stride, int rgb_bit_depth,
|
const void* b_ptr, int rgb_step,
|
||||||
void* y_ptr, int y_stride, void* u_ptr, int u_stride,
|
int rgb_stride, int rgb_bit_depth,
|
||||||
void* v_ptr, int v_stride, int yuv_bit_depth, int width,
|
void* y_ptr, int y_stride, void* u_ptr,
|
||||||
int height, const SharpYuvConversionMatrix* yuv_matrix);
|
int u_stride, void* v_ptr, int v_stride,
|
||||||
|
int yuv_bit_depth, int width, int height,
|
||||||
|
const SharpYuvConversionMatrix* yuv_matrix);
|
||||||
|
|
||||||
// TODO(b/194336375): Add YUV444 to YUV420 conversion. Maybe also add 422
|
// TODO(b/194336375): Add YUV444 to YUV420 conversion. Maybe also add 422
|
||||||
// support (it's rarely used in practice, especially for images).
|
// support (it's rarely used in practice, especially for images).
|
||||||
|
@ -35,8 +35,9 @@ typedef struct {
|
|||||||
} SharpYuvColorSpace;
|
} SharpYuvColorSpace;
|
||||||
|
|
||||||
// Fills in 'matrix' for the given YUVColorSpace.
|
// Fills in 'matrix' for the given YUVColorSpace.
|
||||||
void SharpYuvComputeConversionMatrix(const SharpYuvColorSpace* yuv_color_space,
|
SHARPYUV_EXTERN void SharpYuvComputeConversionMatrix(
|
||||||
SharpYuvConversionMatrix* matrix);
|
const SharpYuvColorSpace* yuv_color_space,
|
||||||
|
SharpYuvConversionMatrix* matrix);
|
||||||
|
|
||||||
// Enums for precomputed conversion matrices.
|
// Enums for precomputed conversion matrices.
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@ -49,7 +50,7 @@ typedef enum {
|
|||||||
} SharpYuvMatrixType;
|
} SharpYuvMatrixType;
|
||||||
|
|
||||||
// Returns a pointer to a matrix for one of the predefined colorspaces.
|
// Returns a pointer to a matrix for one of the predefined colorspaces.
|
||||||
const SharpYuvConversionMatrix* SharpYuvGetConversionMatrix(
|
SHARPYUV_EXTERN const SharpYuvConversionMatrix* SharpYuvGetConversionMatrix(
|
||||||
SharpYuvMatrixType matrix_type);
|
SharpYuvMatrixType matrix_type);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
Loading…
Reference in New Issue
Block a user