From 3513e92bf9d388ac547d0a87c50a135b4eaa634c Mon Sep 17 00:00:00 2001 From: Clinton Ingram Date: Thu, 30 Jul 2020 22:38:32 -0700 Subject: [PATCH] [mozjpeg] fix build (#12118) * fix mozjpeg build * re-disable in CI baseline * fix static install * rename static libs, add pkgconfig fixup * update version string Co-authored-by: Billy Robert O'Neal III Co-authored-by: Robert Schumacher --- ports/mozjpeg/CONTROL | 3 +- ports/mozjpeg/fix-install-error.patch | 117 +++----------------------- ports/mozjpeg/portfile.cmake | 33 +++++--- scripts/ci.baseline.txt | 3 +- 4 files changed, 36 insertions(+), 120 deletions(-) diff --git a/ports/mozjpeg/CONTROL b/ports/mozjpeg/CONTROL index 867ba8bcaebd88..998e5eacfe4b3f 100644 --- a/ports/mozjpeg/CONTROL +++ b/ports/mozjpeg/CONTROL @@ -1,4 +1,5 @@ Source: mozjpeg -Version: 2020-06-02 +Version: 2020-06-02-1 +Build-Depends: libpng Homepage: https://github.com/mozilla/mozjpeg Description: MozJPEG reduces file sizes of JPEG images while retaining quality and compatibility with the vast majority of the world's deployed decoders. It's compatible with libjpeg API and ABI, and can be used as a drop-in replacement for libjpeg. diff --git a/ports/mozjpeg/fix-install-error.patch b/ports/mozjpeg/fix-install-error.patch index b0ba9ac2d7b71b..0d0a283652a6c2 100644 --- a/ports/mozjpeg/fix-install-error.patch +++ b/ports/mozjpeg/fix-install-error.patch @@ -1,126 +1,33 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 51f4714..9ca3463 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -1370,21 +1370,28 @@ endif() +@@ -1369,13 +1369,13 @@ + ############################################################################### set(EXE ${CMAKE_EXECUTABLE_SUFFIX}) -+if(CMAKE_BUILD_TYPE STREQUAL "Debug") -+ set(REAL_BUILDS_PATH "Debug/") -+else() -+ set(REAL_BUILDS_PATH "Release/") -+endif() -+ if(WITH_TURBOJPEG) if(ENABLE_SHARED) - install(TARGETS turbojpeg tjbench -- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} -- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/mozjpeg -+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/mozjpeg -+ RUNTIME DESTINATION tools/mozjpeg) +- install(TARGETS turbojpeg tjbench ++ install(TARGETS turbojpeg #tjbench + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) if(NOT CMAKE_VERSION VERSION_LESS "3.1" AND MSVC AND CMAKE_C_LINKER_SUPPORTS_PDB) install(FILES "$" -- DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL) -+ DESTINATION ${CMAKE_INSTALL_BINDIR}/mozjpeg OPTIONAL) - endif() - endif() - if(ENABLE_STATIC) -- install(TARGETS turbojpeg-static ARCHIVE -- DESTINATION ${CMAKE_INSTALL_LIBDIR}) -+ install(TARGETS turbojpeg-static -+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/mozjpeg -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/mozjpeg) - if(NOT ENABLE_SHARED) - if(MSVC_IDE OR XCODE) - set(DIR "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}") -@@ -1392,15 +1399,15 @@ if(WITH_TURBOJPEG) - set(DIR ${CMAKE_CURRENT_BINARY_DIR}) - endif() - install(PROGRAMS ${DIR}/tjbench-static${EXE} -- DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME tjbench${EXE}) -+ DESTINATION tools/mozjpeg RENAME tjbench${EXE}) - endif() - endif() - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg.h -- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mozjpeg) - endif() - - if(ENABLE_STATIC) -- install(TARGETS jpeg-static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) -+ install(TARGETS jpeg-static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/mozjpeg) - if(NOT ENABLE_SHARED) - if(MSVC_IDE OR XCODE) - set(DIR "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}") -@@ -1408,15 +1415,15 @@ if(ENABLE_STATIC) - set(DIR ${CMAKE_CURRENT_BINARY_DIR}) - endif() - install(PROGRAMS ${DIR}/cjpeg-static${EXE} -- DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME cjpeg${EXE}) -+ DESTINATION tools/mozjpeg RENAME cjpeg${EXE}) - install(PROGRAMS ${DIR}/djpeg-static${EXE} -- DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME djpeg${EXE}) -+ DESTINATION tools/mozjpeg RENAME djpeg${EXE}) +@@ -1413,13 +1413,13 @@ + DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME djpeg${EXE}) install(PROGRAMS ${DIR}/jpegtran-static${EXE} -- DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME jpegtran${EXE}) -+ DESTINATION tools/mozjpeg RENAME jpegtran${EXE}) + DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME jpegtran${EXE}) endif() endif() -install(TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -+install(TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION tools/mozjpeg) ++#install(TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_SOURCE_DIR}/example.txt -@@ -1424,10 +1431,10 @@ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg + ${CMAKE_CURRENT_SOURCE_DIR}/tjexample.c ${CMAKE_CURRENT_SOURCE_DIR}/libjpeg.txt ${CMAKE_CURRENT_SOURCE_DIR}/structure.txt - ${CMAKE_CURRENT_SOURCE_DIR}/usage.txt ${CMAKE_CURRENT_SOURCE_DIR}/wizard.txt -- ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR}) -+ ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md DESTINATION share/mozjpeg) - if(WITH_JAVA) - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/java/TJExample.java -- DESTINATION ${CMAKE_INSTALL_DOCDIR}) -+ DESTINATION share/mozjpeg) - endif() - - if(UNIX OR MINGW) -@@ -1439,12 +1446,12 @@ if(UNIX OR MINGW) - endif() - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libjpeg.pc - ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libturbojpeg.pc -- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/mozjpeg) - - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/jconfig.h - ${CMAKE_CURRENT_SOURCE_DIR}/jerror.h ${CMAKE_CURRENT_SOURCE_DIR}/jmorecfg.h - ${CMAKE_CURRENT_SOURCE_DIR}/jpeglib.h -- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mozjpeg) - - include(cmakescripts/BuildPackages.cmake) - -diff --git a/sharedlib/CMakeLists.txt b/sharedlib/CMakeLists.txt -index f0a7d87..1e82349 100644 ---- a/sharedlib/CMakeLists.txt -+++ b/sharedlib/CMakeLists.txt -@@ -92,11 +92,11 @@ add_executable(jcstest ../jcstest.c) - target_link_libraries(jcstest jpeg) - - install(TARGETS jpeg cjpeg djpeg jpegtran -- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} -- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/mozjpeg -+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/mozjpeg -+ RUNTIME DESTINATION tools/mozjpeg) - if(NOT CMAKE_VERSION VERSION_LESS "3.1" AND MSVC AND - CMAKE_C_LINKER_SUPPORTS_PDB) - install(FILES "$" -- DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL) -+ DESTINATION ${CMAKE_INSTALL_BINDIR}/mozjpeg OPTIONAL) - endif() diff --git a/ports/mozjpeg/portfile.cmake b/ports/mozjpeg/portfile.cmake index 93f9c86e94c8f4..9c756e778d11e8 100644 --- a/ports/mozjpeg/portfile.cmake +++ b/ports/mozjpeg/portfile.cmake @@ -12,34 +12,41 @@ vcpkg_find_acquire_program(NASM) get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY) vcpkg_add_to_path(${NASM_EXE_PATH}) -if(VCPKG_LIBRARY_LINKAGE STREQUAL static) - set(ENABLE_STATIC_BUILD ON) - set(ENABLE_SHARED_BUILD OFF) -else() - set(ENABLE_STATIC_BUILD OFF) - set(ENABLE_SHARED_BUILD ON) -endif() - +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" ENABLE_SHARED) +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" ENABLE_STATIC) string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "dynamic" WITH_CRT_DLL) vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA OPTIONS - -DDENABLE_SHARED=${ENABLE_SHARED_BUILD} - -DENABLE_STATIC=${ENABLE_STATIC_BUILD} + -DENABLE_SHARED=${ENABLE_SHARED} + -DENABLE_STATIC=${ENABLE_STATIC} -DWITH_CRT_DLL=${WITH_CRT_DLL} ) vcpkg_install_cmake() -#remove extra debug files +# Rename libraries for static builds +if(VCPKG_LIBRARY_LINKAGE STREQUAL static) + if(EXISTS "${CURRENT_PACKAGES_DIR}/lib/jpeg-static.lib") + file(RENAME "${CURRENT_PACKAGES_DIR}/lib/jpeg-static.lib" "${CURRENT_PACKAGES_DIR}/lib/jpeg.lib") + file(RENAME "${CURRENT_PACKAGES_DIR}/lib/turbojpeg-static.lib" "${CURRENT_PACKAGES_DIR}/lib/turbojpeg.lib") + endif() + if(EXISTS "${CURRENT_PACKAGES_DIR}/debug/lib/jpeg-static.lib") + file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/jpeg-static.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/jpeg.lib") + file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/turbojpeg-static.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/turbojpeg.lib") + endif() +endif() + +# Remove extra debug files file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) -vcpkg_copy_tools(${CURRENT_PACKAGES_DIR}/tools/mozjpeg) +vcpkg_copy_tools(TOOL_NAMES cjpeg djpeg jpegtran AUTO_CLEAN) +vcpkg_fixup_pkgconfig() -#remove empty folders after static build +# Remove empty folders after static build if (VCPKG_LIBRARY_LINKAGE STREQUAL static) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin) diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 05baa8b33fb5cb..e63835f54654b8 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -1083,6 +1083,7 @@ moos-core:x86-windows=fail moos-essential:arm64-windows=fail moos-essential:x64-windows=fail moos-essential:x86-windows=fail +# Conflicts with libjpeg-turbo mozjpeg:arm64-windows = skip mozjpeg:arm-uwp = skip mozjpeg:x64-linux = skip @@ -1943,4 +1944,4 @@ ctp:x64-windows=skip ctp:x64-windows-static=skip ctp:x86-windows=skip protozero:arm-uwp=fail -protozero:x64-uwp=fail \ No newline at end of file +protozero:x64-uwp=fail