这是indexloc提供的服务,不要输入任何密码
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
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ Galaxy4594 <164440799+Galaxy4594@users.noreply.github.com>
Gerhard Huber <support@pl32.com>
gi-man
Gilles Devillers (GilDev) <gildev@gmail.com>
Go Kudo <zeriyoshi@gmail.com>
Heiko Becker <heirecka@exherbo.org>
Ivan Kokorev
Ivan Siutsou (Melirius) <melirius@gmail.com>
Expand Down
21 changes: 21 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,17 @@ else()
message(STATUS "libjpeg-turbo submodule is absent; not enabling jpegli")
endif()

set(JPEGXL_PLATFORM_IOS OFF)
if(APPLE)
if(DEFINED IOS AND IOS)
set(JPEGXL_PLATFORM_IOS ON)
elseif(CMAKE_SYSTEM_NAME MATCHES "iOS|tvOS|watchOS")
set(JPEGXL_PLATFORM_IOS ON)
elseif(DEFINED CMAKE_OSX_SYSROOT AND CMAKE_OSX_SYSROOT MATCHES "(iphone|appletv|watch).*os")
set(JPEGXL_PLATFORM_IOS ON)
endif()
endif()

include(TestBigEndian)
test_big_endian(ARCH_IS_BIG_ENDIAN)
if(ARCH_IS_BIG_ENDIAN)
Expand Down Expand Up @@ -152,6 +163,16 @@ set(JPEGXL_ENABLE_JPEGLI ${ENABLE_JPEGLI_DEFAULT} CACHE BOOL
"Build jpegli library.")
set(JPEGXL_ENABLE_JPEGLI_LIBJPEG true CACHE BOOL
"Build libjpeg.so shared library based on jpegli.")
set(_jpegli_libjpeg_only_obj_default OFF)
if(EMSCRIPTEN OR JPEGXL_PLATFORM_IOS)
set(_jpegli_libjpeg_only_obj_default ON)
endif()
if(NOT DEFINED JPEGXL_ENABLE_JPEGLI_LIBJPEG_ONLY_OBJ)
set(JPEGXL_ENABLE_JPEGLI_LIBJPEG_ONLY_OBJ ${_jpegli_libjpeg_only_obj_default})
endif()
set(JPEGXL_ENABLE_JPEGLI_LIBJPEG_ONLY_OBJ "${JPEGXL_ENABLE_JPEGLI_LIBJPEG_ONLY_OBJ}" CACHE BOOL
"Build libjpeg compatible library based on jpegli, but only as an object." FORCE)
unset(_jpegli_libjpeg_only_obj_default)
set(JPEGXL_INSTALL_JPEGLI_LIBJPEG false CACHE BOOL
"Install jpegli version of libjpeg.so system-wide.")
set(JPEGLI_LIBJPEG_LIBRARY_VERSION "62.3.0" CACHE STRING
Expand Down
50 changes: 30 additions & 20 deletions lib/jpegli.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,19 @@ configure_file(
configure_file(
../third_party/libjpeg-turbo/jmorecfg.h include/jpegli/jmorecfg.h COPYONLY)

add_library(jpegli-static STATIC EXCLUDE_FROM_ALL "${JPEGXL_INTERNAL_JPEGLI_SOURCES}")
target_compile_options(jpegli-static PRIVATE "${JPEGXL_INTERNAL_FLAGS}")
target_compile_options(jpegli-static PUBLIC ${JPEGXL_COVERAGE_FLAGS})
set_property(TARGET jpegli-static PROPERTY POSITION_INDEPENDENT_CODE ON)
target_include_directories(jpegli-static PRIVATE
"$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>"
"${JXL_HWY_INCLUDE_DIRS}"
)
target_include_directories(jpegli-static PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include/jpegli>"
)
target_link_libraries(jpegli-static PUBLIC ${JPEGLI_INTERNAL_LIBS})
add_library(jpegli-static-obj OBJECT "${JPEGXL_INTERNAL_JPEGLI_SOURCES}")
set_property(TARGET jpegli-static-obj PROPERTY POSITION_INDEPENDENT_CODE ON)
target_compile_options(jpegli-static-obj PRIVATE "${JPEGXL_INTERNAL_FLAGS}")
target_compile_options(jpegli-static-obj PUBLIC ${JPEGXL_COVERAGE_FLAGS})
target_include_directories(jpegli-static-obj
PRIVATE "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>" "${JXL_HWY_INCLUDE_DIRS}"
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include/jpegli>")
target_link_libraries(jpegli-static-obj PUBLIC ${JPEGLI_INTERNAL_LIBS})

add_library(jpegli-static STATIC EXCLUDE_FROM_ALL $<TARGET_OBJECTS:jpegli-static-obj>)
target_link_libraries(jpegli-static PUBLIC jpegli-static-obj)

#
# Tests for jpegli-static
Expand Down Expand Up @@ -107,20 +106,22 @@ endif()
# Build libjpeg.so that links to libjpeg-static
#

if (JPEGXL_ENABLE_JPEGLI_LIBJPEG AND NOT APPLE AND NOT WIN32 AND NOT EMSCRIPTEN)
if (JPEGXL_ENABLE_JPEGLI_LIBJPEG AND NOT WIN32)
add_library(jpegli-libjpeg-obj OBJECT "${JPEGXL_INTERNAL_JPEGLI_WRAPPER_SOURCES}")
target_compile_options(jpegli-libjpeg-obj PRIVATE ${JPEGXL_INTERNAL_FLAGS})
target_compile_options(jpegli-libjpeg-obj PUBLIC ${JPEGXL_COVERAGE_FLAGS})
set_property(TARGET jpegli-libjpeg-obj PROPERTY POSITION_INDEPENDENT_CODE ON)
target_include_directories(jpegli-libjpeg-obj PRIVATE
"$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include/jpegli>"
)
target_compile_definitions(jpegli-libjpeg-obj PUBLIC
${JPEGLI_LIBJPEG_OBJ_COMPILE_DEFINITIONS}
)
set(JPEGLI_LIBJPEG_INTERNAL_OBJECTS $<TARGET_OBJECTS:jpegli-libjpeg-obj>)

if(NOT JPEGXL_ENABLE_JPEGLI_LIBJPEG_ONLY_OBJ)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/jpegli)
add_library(jpeg SHARED ${JPEGLI_LIBJPEG_INTERNAL_OBJECTS})
target_link_libraries(jpeg PUBLIC ${JPEGXL_COVERAGE_FLAGS})
Expand All @@ -131,12 +132,19 @@ set_target_properties(jpeg PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/jpegli"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/jpegli")

# Add a jpeg.version file as a version script to tag symbols with the
# Add a jpeg.version or jpeg.list file as a version script to tag symbols with the
# appropriate version number.
set_target_properties(jpeg PROPERTIES
LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/jpegli/jpeg.version.${JPEGLI_LIBJPEG_LIBRARY_SOVERSION})
set_property(TARGET jpeg APPEND_STRING PROPERTY
LINK_FLAGS " -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/jpegli/jpeg.version.${JPEGLI_LIBJPEG_LIBRARY_SOVERSION}")
if (LINUX)
set_target_properties(jpeg PROPERTIES
LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/jpegli/jpeg.version.${JPEGLI_LIBJPEG_LIBRARY_SOVERSION})
set_property(TARGET jpeg APPEND_STRING PROPERTY
LINK_FLAGS " -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/jpegli/jpeg.version.${JPEGLI_LIBJPEG_LIBRARY_SOVERSION}")
elseif(APPLE)
set_target_properties(jpeg PROPERTIES
LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/jpegli/jpeg.list.${JPEGLI_LIBJPEG_LIBRARY_SOVERSION})
set_property(TARGET jpeg APPEND_STRING PROPERTY
LINK_FLAGS " -Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/jpegli/jpeg.list.${JPEGLI_LIBJPEG_LIBRARY_SOVERSION}")
endif()

if (JPEGXL_INSTALL_JPEGLI_LIBJPEG)
install(TARGETS jpeg
Expand All @@ -155,4 +163,6 @@ if(LINKER_SUPPORT_EXCLUDE_LIBS)
set_property(TARGET jpeg APPEND_STRING PROPERTY
LINK_FLAGS " ${LINKER_EXCLUDE_LIBS_FLAG}")
endif()

endif()
endif()
4 changes: 4 additions & 0 deletions lib/jpegli/jpeg.list.62
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
_jpeg*
_tj*
_jpeg_mem_src*
_jpeg_mem_dest*
2 changes: 2 additions & 0 deletions lib/jpegli/jpeg.list.8
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
_jpeg*
_tj*