[libraw] Re-fix non-thread-safe library installation, always export pkgconfig files, add usage (#19593)

* [libraw] Re-fix non-thread-safe library installation, always export pkgconfig files, add usage

* format manifest and version

* Update ports/libraw/portfile.cmake

* Update ports/libraw/portfile.cmake

* Update ports/libraw/portfile.cmake

* update version

* version

* Fix wrapper and usage

* version

* apply suggestions

* version

* Fix cmake install path

* version

* Fix usage

* version
This commit is contained in:
Jack·Boos·Yu 2021-10-19 05:22:23 +08:00 committed by GitHub
parent 3422caf654
commit 657d66a6cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 96 additions and 60 deletions

View File

@ -0,0 +1,36 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 47f3869..136549b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -544,7 +544,7 @@ SET_TARGET_PROPERTIES(raw_r PROPERTIES OUTPUT_NAME "raw_r")
# -- Files to install -------------------------------------------------------------------------------------
# Configure and install data file for packaging.
-IF(NOT WIN32)
+IF(1)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/data/libraw.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libraw.pc @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libraw.pc DESTINATION lib${LIB_SUFFIX}/pkgconfig)
@@ -570,8 +570,8 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/libraw/libraw.h
# Install Shared binary files.
INSTALL(TARGETS raw
RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX}
+ LIBRARY DESTINATION lib${LIB_SUFFIX}/manual-link
+ ARCHIVE DESTINATION lib${LIB_SUFFIX}/manual-link
)
INSTALL(TARGETS raw_r
diff --git a/cmake/data/libraw.pc.cmake b/cmake/data/libraw.pc.cmake
index aede5f2..ffeefc2 100644
--- a/cmake/data/libraw.pc.cmake
+++ b/cmake/data/libraw.pc.cmake
@@ -1,6 +1,6 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}
-libdir=${prefix}/lib@LIB_SUFFIX@
+libdir=${prefix}/lib@LIB_SUFFIX@/manual-link
includedir=${prefix}/include/libraw
Name: @PROJECT_NAME@

View File

@ -15,66 +15,41 @@ vcpkg_from_github(
PATCHES
findlibraw_debug_fix.patch
lcms2_debug_fix.patch
# Move the non-thread-safe library to manual-link. This is unfortunately needed
# because otherwise libraries that build on top of libraw have to choose.
fix-install.patch
)
file(COPY ${LIBRAW_CMAKE_SOURCE_PATH}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
file(COPY ${LIBRAW_CMAKE_SOURCE_PATH}/cmake DESTINATION ${SOURCE_PATH})
file(COPY "${LIBRAW_CMAKE_SOURCE_PATH}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
file(COPY "${LIBRAW_CMAKE_SOURCE_PATH}/cmake" DESTINATION "${SOURCE_PATH}")
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DINSTALL_CMAKE_MODULE_PATH=${CURRENT_PACKAGES_DIR}/share/libraw
-DINSTALL_CMAKE_MODULE_PATH=share/${PORT}
-DENABLE_EXAMPLES=OFF
-DCMAKE_DEBUG_POSTFIX=d
)
vcpkg_install_cmake()
file(READ ${CURRENT_PACKAGES_DIR}/include/libraw/libraw_types.h LIBRAW_H)
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
string(REPLACE "#ifdef LIBRAW_NODLL" "#if 1" LIBRAW_H "${LIBRAW_H}")
else()
string(REPLACE "#ifdef LIBRAW_NODLL" "#if 0" LIBRAW_H "${LIBRAW_H}")
endif()
file(WRITE ${CURRENT_PACKAGES_DIR}/include/libraw/libraw_types.h "${LIBRAW_H}")
if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
# Rename thread-safe version to be "raw.lib". This is unfortunately needed
# because otherwise libraries that build on top of libraw have to choose.
file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/raw.lib ${CURRENT_PACKAGES_DIR}/debug/lib/rawd.lib)
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/raw_r.lib ${CURRENT_PACKAGES_DIR}/lib/raw.lib)
if(NOT VCPKG_BUILD_TYPE STREQUAL "release")
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/raw_rd.lib ${CURRENT_PACKAGES_DIR}/debug/lib/rawd.lib)
endif()
# Cleanup
file(GLOB RELEASE_EXECUTABLES ${CURRENT_PACKAGES_DIR}/bin/*.exe)
file(REMOVE ${RELEASE_EXECUTABLES})
if(NOT VCPKG_BUILD_TYPE STREQUAL "release")
file(GLOB DEBUG_EXECUTABLES ${CURRENT_PACKAGES_DIR}/debug/bin/*.exe)
file(REMOVE ${DEBUG_EXECUTABLES})
endif()
endif()
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
else()
if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/raw.dll ${CURRENT_PACKAGES_DIR}/debug/bin/rawd.dll)
endif()
endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
# Rename cmake module into a config in order to allow more flexible lookup rules
file(RENAME ${CURRENT_PACKAGES_DIR}/share/libraw/FindLibRaw.cmake ${CURRENT_PACKAGES_DIR}/share/libraw/libraw-config.cmake)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/libraw)
endif()
vcpkg_cmake_install()
vcpkg_copy_pdbs()
file(INSTALL ${SOURCE_PATH}/COPYRIGHT DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
vcpkg_fixup_pkgconfig()
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/libraw/libraw_types.h"
"#ifdef LIBRAW_NODLL" "#if 1"
)
else()
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/libraw/libraw_types.h"
"#ifdef LIBRAW_NODLL" "#if 0"
)
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share")
configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY)
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
file(INSTALL "${SOURCE_PATH}/COPYRIGHT" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)

11
ports/libraw/usage Normal file
View File

@ -0,0 +1,11 @@
The package libraw is compatible with built-in CMake targets:
find_package(LibRaw REQUIRED)
# For non-thread-safe version
target_compile_definitions(main PRIVATE ${LibRaw_DEFINITIONS})
target_include_directories(main PRIVATE ${LibRaw_INCLUDE_DIR})
target_link_libraries(main PRIVATE ${LibRaw_LIBRARIES})
# For thread-safe version
target_compile_definitions(main PRIVATE ${LibRaw_r_DEFINITIONS})
target_include_directories(main PRIVATE ${LibRaw_INCLUDE_DIR})
target_link_libraries(main PRIVATE ${LibRaw_r_LIBRARIES})

View File

@ -1,7 +1,12 @@
set(LIBRAW_PREV_MODULE_PATH ${CMAKE_MODULE_PATH})
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
_find_package(${ARGS})
find_package(Jasper REQUIRED)
if (Jasper_FOUND)
list(APPEND LibRaw_LIBRARIES ${JASPER_LIBRARIES})
list(APPEND LibRaw_r_LIBRARIES ${JASPER_LIBRARIES})
endif ()
set(CMAKE_MODULE_PATH ${LIBRAW_PREV_MODULE_PATH})
if (@VCPKG_LIBRARY_LINKAGE@ STREQUAL "static")
find_package(Jasper REQUIRED)
if (Jasper_FOUND)
list(APPEND LibRaw_LIBRARIES ${JASPER_LIBRARIES})
list(APPEND LibRaw_r_LIBRARIES ${JASPER_LIBRARIES})
endif ()
endif()

View File

@ -1,11 +1,15 @@
{
"name": "libraw",
"version-string": "201903",
"port-version": 4,
"port-version": 5,
"description": "raw image decoder library",
"homepage": "https://www.libraw.org",
"dependencies": [
"jasper",
"lcms"
"lcms",
{
"name": "vcpkg-cmake",
"host": true
}
]
}

View File

@ -3742,7 +3742,7 @@
},
"libraw": {
"baseline": "201903",
"port-version": 4
"port-version": 5
},
"librdkafka": {
"baseline": "1.7.0",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "fa490349ec4e8e8d8854c18725068a8a8474b3ac",
"version-string": "201903",
"port-version": 5
},
{
"git-tree": "80a0638bcb03f5e4c53f4b35562da7b8485fda11",
"version-string": "201903",