Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build jpeg for ios #100

Merged
merged 6 commits into from
Aug 24, 2023
Merged
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
10 changes: 8 additions & 2 deletions vcpkg-overlay/ports/gdal/portfile.cmake
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO OSGeo/gdal
REF "v${VERSION}"
REF "v${VERSION}" # keep up to date with vcpkg-overlay/libjpeg-turbo version
SHA512 dfc7ccf5c1a3184fa93be762a880b7631faa4cd178cd72df8f5fd8a6296edafc56de2594617bebcb75ddf19ed4471dafcb574b22d7e9217dedfd7ea72c9247f2
HEAD_REF master
PATCHES
Expand All @@ -13,7 +13,6 @@ vcpkg_from_github(
# `vcpkg clean` stumbles over one subdir
file(REMOVE_RECURSE "${SOURCE_PATH}/autotest")

list(APPEND FEATURE_OPTIONS -DGDAL_USE_JPEG_INTERNAL=ON)
list(APPEND FEATURE_OPTIONS -DGDAL_USE_PNG_INTERNAL=ON)
list(APPEND FEATURE_OPTIONS -DGDAL_USE_JSONC_INTERNAL=ON)

Expand All @@ -33,6 +32,7 @@ list(APPEND FEATURE_OPTIONS -DGDAL_USE_SPATIALITE=ON)
list(APPEND FEATURE_OPTIONS -DGDAL_USE_EXPAT=ON)
list(APPEND FEATURE_OPTIONS -DGDAL_USE_ZLIB=ON)
list(APPEND FEATURE_OPTIONS -DGDAL_USE_FREEXL=ON)
list(APPEND FEATURE_OPTIONS -DGDAL_USE_JPEG=ON)

list(APPEND FEATURE_OPTIONS -DGDAL_USE_POSTGRESQL=OFF)
list(APPEND FEATURE_OPTIONS -DGDAL_USE_PCRE2=OFF)
Expand Down Expand Up @@ -61,6 +61,12 @@ endif()

string(REPLACE "dynamic" "" qhull_target "Qhull::qhull${VCPKG_LIBRARY_LINKAGE}_r")

# PCIDSK does not add compile interface defininions!
# do this instead of patching for now
# https://github.com/OSGeo/gdal/blob/af5b75ecc6b8d3cef36f2b6fecf085319d39a546/frmts/pcidsk/sdk/CMakeLists.txt#L84
set(VCPKG_C_FLAGS "${VCPKG_C_FLAGS} -DRENAME_INTERNAL_LIBJPEG_SYMBOLS")
set(VCPKG_CXX_FLAGS "${VCPKG_CXX_FLAGS} -DRENAME_INTERNAL_LIBJPEG_SYMBOLS")

vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
Expand Down
1 change: 1 addition & 0 deletions vcpkg-overlay/ports/gdal/vcpkg.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"libxml2",
"libgeotiff",
"expat",
"libjpeg-turbo",
{
"name": "vcpkg-cmake",
"host": true
Expand Down
82 changes: 82 additions & 0 deletions vcpkg-overlay/ports/libjpeg-turbo/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# see https://github.com/OSGeo/gdal/blob/master/frmts/jpeg/libjpeg/CMakeLists.txt
cmake_minimum_required(VERSION 3.6)
project(JPEG)

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

add_library(
jpeg ${JPEG_BUILD_TYPE}
jcapimin.c
jchuff.h
jconfig.h
jdapimin.c
jdct.h
jdmarker.c
jdtrans.c
jidctflt.c
jmemmgr.c
jquant2.c
jcapistd.c
jcinit.c
jcparam.c
jdapistd.c
jddctmgr.c
jdmaster.c
jerror.c
jidctfst.c
jmemsys.h
jutils.c
jccoefct.c
jcmainct.c
jcphuff.c
jdatadst.c
jdhuff.c
jdmerge.c
jerror.h
jidctint.c
jmorecfg.h
jversion.h
jccolor.c
jcmarker.c
jcprepct.c
jdatasrc.c
jdhuff.h
jdphuff.c
jfdctflt.c
jidctred.c
jpegint.h
jcdctmgr.c
jcmaster.c
jcsample.c
jdcoefct.c
jdinput.c
jdpostct.c
jfdctfst.c
jinclude.h
jpeglib.h
jchuff.c
jcomapi.c
jctrans.c
jdcolor.c
jdmainct.c
jdsample.c
jfdctint.c
jmemnobs.c
jquant1.c)

target_include_directories(jpeg PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/..)
# target_compile_options(libjpeg PRIVATE ${GDAL_C_WARNING_FLAGS} ${GDAL_SOFTWARNFLAGS})

target_compile_definitions(jpeg PRIVATE -DDEFAULT_MAX_MEM=500000000L)
target_compile_definitions(jpeg PUBLIC -DRENAME_INTERNAL_LIBJPEG_SYMBOLS)

# produce position independent code, default is on when building a shared library
# option(GDAL_OBJECT_LIBRARIES_POSITION_INDEPENDENT_CODE "Set ON to produce -fPIC code" ${BUILD_SHARED_LIBS})
# set_property(TARGET jpeg PROPERTY POSITION_INDEPENDENT_CODE ${GDAL_OBJECT_LIBRARIES_POSITION_INDEPENDENT_CODE})
# target_sources(${GDAL_LIB_TARGET_NAME} PRIVATE $<TARGET_OBJECTS:libjpeg>)

configure_file(libjpeg.pc.in libjpeg.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjpeg.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)

INSTALL(TARGETS jpeg)
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ DESTINATION include FILES_MATCHING PATTERN "*.h")
13 changes: 13 additions & 0 deletions vcpkg-overlay/ports/libjpeg-turbo/cpl_port.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef CPL_BASE_H_INCLUDED_TWEAKED
#define CPL_BASE_H_INCLUDED_TWEAKED

#if defined(__GNUC__) && __GNUC__ >= 4
/** Qualifier for an argument that is unused */
# define CPL_UNUSED __attribute((__unused__))
#else
/* TODO: add cases for other compilers */
/** Qualifier for an argument that is unused */
# define CPL_UNUSED
#endif

#endif /* ndef CPL_BASE_H_INCLUDED_TWEAKED */
8 changes: 8 additions & 0 deletions vcpkg-overlay/ports/libjpeg-turbo/libjpeg.pc.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
prefix=@CMAKE_INSTALL_PREFIX@

Name: libjpeg
Version: 6b
Description: jpeg with renamed symbols
URL: https://gdal.org
Libs: -L${prefix}/lib -ljpeg
Cflags: -I${prefix}/include -DRENAME_INTERNAL_JPEG_SYMBOLS
34 changes: 34 additions & 0 deletions vcpkg-overlay/ports/libjpeg-turbo/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO OSGeo/gdal
REF "v${VERSION}" # keep up to date with vcpkg-overlay/gdal version
SHA512 dfc7ccf5c1a3184fa93be762a880b7631faa4cd178cd72df8f5fd8a6296edafc56de2594617bebcb75ddf19ed4471dafcb574b22d7e9217dedfd7ea72c9247f2
HEAD_REF master
)

# `vcpkg clean` stumbles over one subdir
file(REMOVE_RECURSE "${SOURCE_PATH}/autotest")

file(REMOVE "${SOURCE_PATH}/frmts/jpeg/libjpeg/CMakeLists.txt")
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}/frmts/jpeg/libjpeg/)
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/cpl_port.h DESTINATION ${SOURCE_PATH}/frmts/jpeg/)
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/libjpeg.pc.in DESTINATION ${SOURCE_PATH}/frmts/jpeg/libjpeg/)

if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
list(APPEND LINK_OPTIONS -DJPEG_BUILD_TYPE="STATIC")
else()
list(APPEND LINK_OPTIONS -DJPEG_BUILD_TYPE="SHARED")
endif()

vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}/frmts/jpeg/libjpeg"
OPTIONS
${LINK_OPTIONS}
)

vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_fixup_pkgconfig()

file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/jpeg")
file(INSTALL "${SOURCE_PATH}/LICENSE.TXT" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
19 changes: 19 additions & 0 deletions vcpkg-overlay/ports/libjpeg-turbo/vcpkg-cmake-wrapper.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
find_path(JPEG_INCLUDE_DIRS NAMES jpeglib.h PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include" NO_DEFAULT_PATH)
find_library(JPEG_LIBRARY NAMES jpeg PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
JPEG
REQUIRED_VARS JPEG_LIBRARY JPEG_INCLUDE_DIRS
)

if(JPEG_FOUND AND NOT TARGET JPEG::JPEG)
add_library(JPEG::JPEG UNKNOWN IMPORTED)
set_target_properties(JPEG::JPEG PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${JPEG_INCLUDE_DIRS}")
set_target_properties(JPEG::JPEG PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${JPEG_LIBRARY}")

set_target_properties(JPEG::JPEG PROPERTIES INTERFACE_COMPILE_OPTIONS "-DRENAME_INTERNAL_LIBJPEG_SYMBOLS")
endif()
22 changes: 22 additions & 0 deletions vcpkg-overlay/ports/libjpeg-turbo/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "libjpeg-turbo",
"version-semver": "3.7.0",
"description": "JPEG image codec; taken from GDAL so on iOS it has renamed symbols and does not clash with Qt JPEG; this is NOT jpeg-turbo - name used so we do not need to patch all other libraries that uses JPEG",
"homepage": "https://gdal.org",
"license": null,
"supports": "!uwp",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
},
{
"name": "vcpkg-pkgconfig-get-modules",
"host": true
}
]
}
Loading