mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-01-14 13:40:47 +08:00
[sdl2-image] Features must use sdl2[x11] on Linux (#23725)
* Fix shared libs suffix * Remove version-string * version * Use cmake version of shared lib suffix * version * Remove old feature processing * version * Real fix * [sdl2] Fix x11 feature * format * version * Fix suffix again * version * Fix external dependencies * version * Fix WebP linkage * version * Fix PNG linkage * version * Mark everything as default feature for testing * version * Trigger rebuild of sdl2pp * version * congig file * Fix flags * version * Fix flags * version * Disable UWP warnings for TIFF * version * Fix CXX * version * revert cmake version * version * Fix config * version * Revert sdl2pp * Fix config * version * Create config.cmake.in file * version
This commit is contained in:
parent
94c2aed904
commit
05bcc5fca4
@ -3,27 +3,14 @@ project(SDL2_image C)
|
||||
|
||||
### configuration ###
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CURRENT_INSTALLED_DIR}/share/libwebp")
|
||||
# enable all file formats which are supported natively
|
||||
set(SUPPORTED_FORMATS BMP GIF LBM PCX PNM TGA XPM XCF XV SVG)
|
||||
|
||||
# enable all file formats which are supported through external dependencies
|
||||
# first try to load them statically (lib file in vcpkg installation)
|
||||
# if this fails try to make them a dynamic dependency (dll will be loaded at runtime) if possible. vcpkg cannot resolve these dependencies!
|
||||
# else do not support this file format at all
|
||||
|
||||
# Can be explicitly enabled or disabled via USE_XYZ
|
||||
set(DEPENDENCIES PNG JPEG TIFF WEBP)
|
||||
|
||||
# patch library names for preprocessor flags
|
||||
set(JPEG_FLAG JPG)
|
||||
set(TIFF_FLAG TIF)
|
||||
|
||||
# names of potentially dynamically loaded libraries
|
||||
set(JPEG_DYNAMIC \"libjpeg-9.dll\")
|
||||
set(PNG_DYNAMIC \"libpng16-16.dll\")
|
||||
set(TIFF_DYNAMIC \"libtiff-5.dll\")
|
||||
set(WEBP_DYNAMIC \"libwebp-4.dll\")
|
||||
option(USE_WEBP "Enable support for WebP format" OFF)
|
||||
option(USE_PNG "Enable support for PNG format" OFF)
|
||||
option(USE_JPEG "Enable support for JPEG format" OFF)
|
||||
option(USE_TIFF "Enable support for TIFF format" OFF)
|
||||
|
||||
### implementation ###
|
||||
|
||||
@ -74,33 +61,34 @@ include_directories(${CMAKE_SOURCE_DIR})
|
||||
target_link_libraries(SDL2_image SDL2::SDL2)
|
||||
|
||||
# external dependencies
|
||||
foreach(DEPENDENCY IN LISTS DEPENDENCIES)
|
||||
if(NOT USE_${DEPENDENCY})
|
||||
continue()
|
||||
endif()
|
||||
find_package(${DEPENDENCY})
|
||||
|
||||
if(NOT DEFINED ${DEPENDENCY}_FLAG)
|
||||
set(${DEPENDENCY}_FLAG ${DEPENDENCY})
|
||||
endif()
|
||||
|
||||
add_definitions(-DLOAD_${${DEPENDENCY}_FLAG})
|
||||
if(${DEPENDENCY}_FOUND)
|
||||
message(STATUS " --> linking statically.")
|
||||
target_link_libraries(SDL2_image ${${DEPENDENCY}_LIBRARIES})
|
||||
elseif(DEFINED ${DEPENDENCY}_DYNAMIC)
|
||||
message(STATUS " --> linking dynamically.")
|
||||
add_definitions(-DLOAD_${${DEPENDENCY}_FLAG}_DYNAMIC=${${DEPENDENCY}_DYNAMIC})
|
||||
set(RUNTIME_DEPENDENCIES ON)
|
||||
else()
|
||||
message(STATUS " --> skipping.")
|
||||
endif()
|
||||
endforeach(DEPENDENCY)
|
||||
|
||||
if(DEFINED RUNTIME_DEPENDENCIES)
|
||||
include_directories(VisualC/external/include)
|
||||
if(USE_WEBP)
|
||||
find_package(WebP CONFIG REQUIRED)
|
||||
add_definitions(-DLOAD_WEBP)
|
||||
target_link_libraries(SDL2_image PRIVATE WebP::webp)
|
||||
endif()
|
||||
|
||||
if(USE_PNG)
|
||||
find_package(libpng REQUIRED)
|
||||
add_definitions(-DLOAD_PNG)
|
||||
target_link_libraries(SDL2_image PRIVATE png)
|
||||
endif()
|
||||
|
||||
if(USE_JPEG)
|
||||
find_package(JPEG REQUIRED)
|
||||
add_definitions(-DLOAD_JPG)
|
||||
target_link_libraries(SDL2_image PRIVATE ${JPEG_LIBRARIES})
|
||||
endif()
|
||||
|
||||
if(USE_TIFF)
|
||||
find_package(TIFF REQUIRED)
|
||||
add_definitions(-DLOAD_TIF)
|
||||
target_link_libraries(SDL2_image PRIVATE TIFF::TIFF)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
install(TARGETS SDL2_image
|
||||
EXPORT SDL2_image
|
||||
@ -110,11 +98,10 @@ install(TARGETS SDL2_image
|
||||
|
||||
install(FILES SDL_image.h DESTINATION include/SDL2 CONFIGURATIONS Release)
|
||||
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/sdl2-image-config.cmake"
|
||||
[[include(CMakeFindDependencyMacro)
|
||||
find_dependency(SDL2 CONFIG)
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/sdl2-image-targets.cmake")
|
||||
]])
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/sdl2-image-config.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/sdl2-image-config.cmake" @ONLY
|
||||
INSTALL_DESTINATION "share/sdl2-image")
|
||||
|
||||
set(prefix "")
|
||||
set(exec_prefix [[${prefix}]])
|
||||
set(libdir [[${prefix}/lib]])
|
||||
@ -141,20 +128,3 @@ install(EXPORT SDL2_image
|
||||
FILE sdl2-image-targets.cmake
|
||||
NAMESPACE SDL2::
|
||||
)
|
||||
|
||||
message(STATUS "Link-time dependencies:")
|
||||
message(STATUS " " SDL2::SDL2)
|
||||
foreach(DEPENDENCY ${DEPENDENCIES})
|
||||
if(${DEPENDENCY}_FOUND)
|
||||
message(STATUS " " ${DEPENDENCY})
|
||||
endif()
|
||||
endforeach(DEPENDENCY)
|
||||
|
||||
if(DEFINED RUNTIME_DEPENDENCIES)
|
||||
message(STATUS "Run-time dependencies:")
|
||||
foreach(DEPENDENCY ${DEPENDENCIES})
|
||||
if(NOT ${DEPENDENCY}_FOUND AND DEFINED ${DEPENDENCY}_DYNAMIC)
|
||||
message(STATUS " " ${${DEPENDENCY}_DYNAMIC})
|
||||
endif()
|
||||
endforeach(DEPENDENCY)
|
||||
endif()
|
||||
|
@ -15,30 +15,20 @@ vcpkg_extract_source_archive_ex(
|
||||
)
|
||||
|
||||
file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
|
||||
file(COPY "${CMAKE_CURRENT_LIST_DIR}/sdl2-image-config.cmake.in" DESTINATION "${SOURCE_PATH}")
|
||||
|
||||
set(USE_JPEG OFF)
|
||||
if("libjpeg-turbo" IN_LIST FEATURES)
|
||||
set(USE_JPEG ON)
|
||||
endif()
|
||||
|
||||
set(USE_TIFF OFF)
|
||||
if("tiff" IN_LIST FEATURES)
|
||||
set(USE_TIFF ON)
|
||||
endif()
|
||||
|
||||
set(USE_WEBP OFF)
|
||||
if("libwebp" IN_LIST FEATURES)
|
||||
set(USE_WEBP ON)
|
||||
endif()
|
||||
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
|
||||
FEATURES
|
||||
libjpeg-turbo USE_JPEG
|
||||
tiff USE_TIFF
|
||||
libwebp USE_WEBP
|
||||
)
|
||||
|
||||
vcpkg_cmake_configure(
|
||||
SOURCE_PATH "${SOURCE_PATH}"
|
||||
OPTIONS
|
||||
"-DCURRENT_INSTALLED_DIR=${CURRENT_INSTALLED_DIR}"
|
||||
-DUSE_PNG=ON
|
||||
-DUSE_JPEG=${USE_JPEG}
|
||||
-DUSE_TIFF=${USE_TIFF}
|
||||
-DUSE_WEBP=${USE_WEBP}
|
||||
${FEATURE_OPTIONS}
|
||||
)
|
||||
|
||||
vcpkg_cmake_install()
|
||||
|
6
ports/sdl2-image/sdl2-image-config.cmake.in
Normal file
6
ports/sdl2-image/sdl2-image-config.cmake.in
Normal file
@ -0,0 +1,6 @@
|
||||
include(CMakeFindDependencyMacro)
|
||||
find_dependency(SDL2 CONFIG)
|
||||
if(@USE_WEBP@)
|
||||
find_dependency(WebP CONFIG)
|
||||
endif()
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/sdl2-image-targets.cmake")
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "sdl2-image",
|
||||
"version-string": "2.0.5",
|
||||
"port-version": 4,
|
||||
"version": "2.0.5",
|
||||
"port-version": 5,
|
||||
"description": "SDL_image is an image file loading library. It loads images as SDL surfaces and textures, and supports the following formats: BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, WEBP, XCF, XPM, XV",
|
||||
"homepage": "https://www.libsdl.org/projects/SDL_image",
|
||||
"dependencies": [
|
||||
@ -20,18 +20,39 @@
|
||||
"libjpeg-turbo": {
|
||||
"description": "Support for JPEG image format",
|
||||
"dependencies": [
|
||||
"libjpeg-turbo"
|
||||
"libjpeg-turbo",
|
||||
{
|
||||
"name": "sdl2",
|
||||
"features": [
|
||||
"x11"
|
||||
],
|
||||
"platform": "!windows"
|
||||
}
|
||||
]
|
||||
},
|
||||
"libwebp": {
|
||||
"description": "Support for WEBP image format.",
|
||||
"dependencies": [
|
||||
"libwebp"
|
||||
"libwebp",
|
||||
{
|
||||
"name": "sdl2",
|
||||
"features": [
|
||||
"x11"
|
||||
],
|
||||
"platform": "!windows"
|
||||
}
|
||||
]
|
||||
},
|
||||
"tiff": {
|
||||
"description": "Support for TIFF image format",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "sdl2",
|
||||
"features": [
|
||||
"x11"
|
||||
],
|
||||
"platform": "!windows"
|
||||
},
|
||||
"tiff"
|
||||
]
|
||||
}
|
||||
|
@ -26,9 +26,6 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
|
||||
)
|
||||
|
||||
if ("x11" IN_LIST FEATURES)
|
||||
if (VCPKG_TARGET_IS_WINDOWS)
|
||||
message(FATAL_ERROR "Feature x11 only support UNIX.")
|
||||
endif()
|
||||
message(WARNING "You will need to install Xorg dependencies to use feature x11:\nsudo apt install libx11-dev libxft-dev libxext-dev\n")
|
||||
endif()
|
||||
|
||||
@ -84,7 +81,6 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_UWP AND NOT VCPKG_TARGET_IS_M
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
configure_file("${SOURCE_PATH}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" COPYONLY)
|
||||
vcpkg_copy_pdbs()
|
||||
|
||||
set(DYLIB_COMPATIBILITY_VERSION_REGEX "set\\(DYLIB_COMPATIBILITY_VERSION (.+)\\)")
|
||||
@ -100,3 +96,5 @@ if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
endif()
|
||||
|
||||
vcpkg_fixup_pkgconfig()
|
||||
|
||||
file(INSTALL "${SOURCE_PATH}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "sdl2",
|
||||
"version": "2.0.20",
|
||||
"port-version": 1,
|
||||
"port-version": 2,
|
||||
"description": "Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.",
|
||||
"homepage": "https://www.libsdl.org/download-2.0.php",
|
||||
"dependencies": [
|
||||
@ -19,7 +19,8 @@
|
||||
"description": "Vulkan functionality for SDL"
|
||||
},
|
||||
"x11": {
|
||||
"description": "Dynamically load X11 support"
|
||||
"description": "Dynamically load X11 support",
|
||||
"supports": "!windows"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6370,7 +6370,7 @@
|
||||
},
|
||||
"sdl2": {
|
||||
"baseline": "2.0.20",
|
||||
"port-version": 1
|
||||
"port-version": 2
|
||||
},
|
||||
"sdl2-gfx": {
|
||||
"baseline": "1.0.4",
|
||||
@ -6378,7 +6378,7 @@
|
||||
},
|
||||
"sdl2-image": {
|
||||
"baseline": "2.0.5",
|
||||
"port-version": 4
|
||||
"port-version": 5
|
||||
},
|
||||
"sdl2-mixer": {
|
||||
"baseline": "2.0.4",
|
||||
|
@ -1,5 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "623548e8c929f2160320bf9644e2cd5a75d4a608",
|
||||
"version": "2.0.5",
|
||||
"port-version": 5
|
||||
},
|
||||
{
|
||||
"git-tree": "9042c449fc4c728c5b428332e09bc6d21a2acf34",
|
||||
"version-string": "2.0.5",
|
||||
|
@ -1,5 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "abf71c19917402dddef261e80d55c8ec04e9bf54",
|
||||
"version": "2.0.20",
|
||||
"port-version": 2
|
||||
},
|
||||
{
|
||||
"git-tree": "9900463f2847ed86e25bac1688c527ae3486a024",
|
||||
"version": "2.0.20",
|
||||
|
Loading…
x
Reference in New Issue
Block a user