diff --git a/ports/libraw/fix-install.patch b/ports/libraw/fix-install.patch new file mode 100644 index 00000000000000..9c10ae4cacccf4 --- /dev/null +++ b/ports/libraw/fix-install.patch @@ -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@ diff --git a/ports/libraw/portfile.cmake b/ports/libraw/portfile.cmake index ffedcf0d21dabb..ea5df3b855a139 100644 --- a/ports/libraw/portfile.cmake +++ b/ports/libraw/portfile.cmake @@ -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() +vcpkg_cmake_install() -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) +vcpkg_copy_pdbs() -# 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) +vcpkg_fixup_pkgconfig() if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/libraw) + 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() -vcpkg_copy_pdbs() +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share") -file(INSTALL ${SOURCE_PATH}/COPYRIGHT DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) +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) diff --git a/ports/libraw/usage b/ports/libraw/usage new file mode 100644 index 00000000000000..6c68aadf3e745f --- /dev/null +++ b/ports/libraw/usage @@ -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}) diff --git a/ports/libraw/vcpkg-cmake-wrapper.cmake b/ports/libraw/vcpkg-cmake-wrapper.cmake index c0ecc48f0b115e..5a9a047c38ed3e 100644 --- a/ports/libraw/vcpkg-cmake-wrapper.cmake +++ b/ports/libraw/vcpkg-cmake-wrapper.cmake @@ -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() diff --git a/ports/libraw/vcpkg.json b/ports/libraw/vcpkg.json index 01b3babe00ead0..552b4d82e55b05 100644 --- a/ports/libraw/vcpkg.json +++ b/ports/libraw/vcpkg.json @@ -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 + } ] } diff --git a/versions/baseline.json b/versions/baseline.json index 780884083f52f8..35b11317b0770f 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -3722,7 +3722,7 @@ }, "libraw": { "baseline": "201903", - "port-version": 4 + "port-version": 5 }, "librdkafka": { "baseline": "1.7.0", diff --git a/versions/l-/libraw.json b/versions/l-/libraw.json index aeddb40b290af6..9e4216a52f3fcd 100644 --- a/versions/l-/libraw.json +++ b/versions/l-/libraw.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "fa490349ec4e8e8d8854c18725068a8a8474b3ac", + "version-string": "201903", + "port-version": 5 + }, { "git-tree": "80a0638bcb03f5e4c53f4b35562da7b8485fda11", "version-string": "201903",