From 10898d0f8a7ac2bcb1370b85df8362f8ac3ce6a6 Mon Sep 17 00:00:00 2001 From: PhoebeHui <20694052+PhoebeHui@users.noreply.github.com> Date: Thu, 2 Jul 2020 04:24:54 -0700 Subject: [PATCH] [libyuv] Find dependency port libjpeg-turbo --- ports/libyuv/CONTROL | 2 +- ports/libyuv/fix-build-type.patch | 10 +-- ports/libyuv/fix_cmakelists.patch | 122 +++++++++++++++--------------- ports/libyuv/libyuv-config.cmake | 5 ++ ports/libyuv/portfile.cmake | 4 +- 5 files changed, 75 insertions(+), 68 deletions(-) create mode 100644 ports/libyuv/libyuv-config.cmake diff --git a/ports/libyuv/CONTROL b/ports/libyuv/CONTROL index 63dfda401331a3..2b0189798b9469 100644 --- a/ports/libyuv/CONTROL +++ b/ports/libyuv/CONTROL @@ -1,4 +1,4 @@ Source: libyuv -Version: fec9121-1 +Version: fec9121-2 Build-Depends: libjpeg-turbo Description: libyuv is an open source project that includes YUV scaling and conversion functionality. diff --git a/ports/libyuv/fix-build-type.patch b/ports/libyuv/fix-build-type.patch index 984a1253f0b530..cb3ffdec826ca7 100644 --- a/ports/libyuv/fix-build-type.patch +++ b/ports/libyuv/fix-build-type.patch @@ -40,14 +40,14 @@ index 097434b..8f8864f 100644 -INSTALL ( TARGETS yuvconvert DESTINATION bin ) +INSTALL ( TARGETS yuvconvert DESTINATION tools ) INSTALL ( FILES ${ly_include_files} DESTINATION include/libyuv ) --INSTALL ( TARGETS ${ly_lib_static} EXPORT libyuv-export DESTINATION lib INCLUDES DESTINATION include PUBLIC_HEADER DESTINATION include ) --INSTALL ( TARGETS ${ly_lib_shared} EXPORT libyuv-export LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) +-INSTALL ( TARGETS ${ly_lib_static} EXPORT libyuv-targets DESTINATION lib INCLUDES DESTINATION include PUBLIC_HEADER DESTINATION include ) +-INSTALL ( TARGETS ${ly_lib_shared} EXPORT libyuv-targets LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) - +if (NOT BUILD_SHARED_LIBS) -+ INSTALL ( TARGETS ${ly_lib_static} EXPORT libyuv-export DESTINATION lib INCLUDES DESTINATION include PUBLIC_HEADER DESTINATION include ) ++ INSTALL ( TARGETS ${ly_lib_static} EXPORT libyuv-targets DESTINATION lib INCLUDES DESTINATION include PUBLIC_HEADER DESTINATION include ) +else() -+ INSTALL ( TARGETS ${ly_lib_shared} EXPORT libyuv-export LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) ++ INSTALL ( TARGETS ${ly_lib_shared} EXPORT libyuv-targets LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) +endif() - INSTALL( EXPORT libyuv-export FILE libyuv-config.cmake DESTINATION share/cmake/libyuv/ EXPORT_LINK_INTERFACE_LIBRARIES ) + INSTALL( EXPORT libyuv-targets DESTINATION share/cmake/libyuv/ EXPORT_LINK_INTERFACE_LIBRARIES ) # create the .deb and .rpm packages using cpack diff --git a/ports/libyuv/fix_cmakelists.patch b/ports/libyuv/fix_cmakelists.patch index bebfe7155c1b75..00cc50599a32ce 100644 --- a/ports/libyuv/fix_cmakelists.patch +++ b/ports/libyuv/fix_cmakelists.patch @@ -1,61 +1,61 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index ed4948f0..9f48ebde 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -2,10 +2,14 @@ - # Originally created for "roxlu build system" to compile libyuv on windows - # Run with -DTEST=ON to build unit tests - --PROJECT ( YUV C CXX ) # "C" is required even for C++ projects - CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) -+CMAKE_POLICY( SET CMP0022 NEW ) -+ -+PROJECT ( YUV C CXX ) # "C" is required even for C++ projects - OPTION( TEST "Built unit tests" OFF ) - -+SET( CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON ) -+ - SET ( ly_base_dir ${PROJECT_SOURCE_DIR} ) - SET ( ly_src_dir ${ly_base_dir}/source ) - SET ( ly_inc_dir ${ly_base_dir}/include ) -@@ -14,6 +18,7 @@ SET ( ly_lib_name yuv ) - SET ( ly_lib_static ${ly_lib_name} ) - SET ( ly_lib_shared ${ly_lib_name}_shared ) - -+FILE ( GLOB_RECURSE ly_include_files ${ly_inc_dir}/libyuv/*.h ) - FILE ( GLOB_RECURSE ly_source_files ${ly_src_dir}/*.cc ) - LIST ( SORT ly_source_files ) - -@@ -24,6 +29,7 @@ INCLUDE_DIRECTORIES( BEFORE ${ly_inc_dir} ) - - # this creates the static library (.a) - ADD_LIBRARY ( ${ly_lib_static} STATIC ${ly_source_files} ) -+SET_TARGET_PROPERTIES( ${ly_lib_static} PROPERTIES PUBLIC_HEADER include/libyuv.h ) - - # this creates the shared library (.so) - ADD_LIBRARY ( ${ly_lib_shared} SHARED ${ly_source_files} ) -@@ -38,6 +44,7 @@ TARGET_LINK_LIBRARIES ( yuvconvert ${ly_lib_static} ) - INCLUDE ( FindJPEG ) - if (JPEG_FOUND) - include_directories( ${JPEG_INCLUDE_DIR} ) -+ target_link_libraries( ${ly_lib_shared} PUBLIC ${JPEG_LIBRARY} ) - target_link_libraries( yuvconvert ${JPEG_LIBRARY} ) - add_definitions( -DHAVE_JPEG ) - endif() -@@ -81,10 +88,12 @@ endif() - - - # install the conversion tool, .so, .a, and all the header files --INSTALL ( PROGRAMS ${CMAKE_BINARY_DIR}/yuvconvert DESTINATION bin ) --INSTALL ( TARGETS ${ly_lib_static} DESTINATION lib ) --INSTALL ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) --INSTALL ( DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION include ) -+INSTALL ( TARGETS yuvconvert DESTINATION bin ) -+INSTALL ( FILES ${ly_include_files} DESTINATION include/libyuv ) -+INSTALL ( TARGETS ${ly_lib_static} EXPORT libyuv-export DESTINATION lib INCLUDES DESTINATION include PUBLIC_HEADER DESTINATION include ) -+INSTALL ( TARGETS ${ly_lib_shared} EXPORT libyuv-export LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) -+ -+INSTALL( EXPORT libyuv-export FILE libyuv-config.cmake DESTINATION share/cmake/libyuv/ EXPORT_LINK_INTERFACE_LIBRARIES ) - - # create the .deb and .rpm packages using cpack - INCLUDE ( CM_linux_packages.cmake ) +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ed4948f..5b4e112 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -2,10 +2,14 @@ + # Originally created for "roxlu build system" to compile libyuv on windows + # Run with -DTEST=ON to build unit tests + +-PROJECT ( YUV C CXX ) # "C" is required even for C++ projects + CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) ++CMAKE_POLICY( SET CMP0022 NEW ) ++ ++PROJECT ( YUV C CXX ) # "C" is required even for C++ projects + OPTION( TEST "Built unit tests" OFF ) + ++SET( CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON ) ++ + SET ( ly_base_dir ${PROJECT_SOURCE_DIR} ) + SET ( ly_src_dir ${ly_base_dir}/source ) + SET ( ly_inc_dir ${ly_base_dir}/include ) +@@ -14,6 +18,7 @@ SET ( ly_lib_name yuv ) + SET ( ly_lib_static ${ly_lib_name} ) + SET ( ly_lib_shared ${ly_lib_name}_shared ) + ++FILE ( GLOB_RECURSE ly_include_files ${ly_inc_dir}/libyuv/*.h ) + FILE ( GLOB_RECURSE ly_source_files ${ly_src_dir}/*.cc ) + LIST ( SORT ly_source_files ) + +@@ -24,6 +29,7 @@ INCLUDE_DIRECTORIES( BEFORE ${ly_inc_dir} ) + + # this creates the static library (.a) + ADD_LIBRARY ( ${ly_lib_static} STATIC ${ly_source_files} ) ++SET_TARGET_PROPERTIES( ${ly_lib_static} PROPERTIES PUBLIC_HEADER include/libyuv.h ) + + # this creates the shared library (.so) + ADD_LIBRARY ( ${ly_lib_shared} SHARED ${ly_source_files} ) +@@ -38,6 +44,7 @@ TARGET_LINK_LIBRARIES ( yuvconvert ${ly_lib_static} ) + INCLUDE ( FindJPEG ) + if (JPEG_FOUND) + include_directories( ${JPEG_INCLUDE_DIR} ) ++ target_link_libraries( ${ly_lib_shared} PUBLIC ${JPEG_LIBRARY} ) + target_link_libraries( yuvconvert ${JPEG_LIBRARY} ) + add_definitions( -DHAVE_JPEG ) + endif() +@@ -81,10 +88,12 @@ endif() + + + # install the conversion tool, .so, .a, and all the header files +-INSTALL ( PROGRAMS ${CMAKE_BINARY_DIR}/yuvconvert DESTINATION bin ) +-INSTALL ( TARGETS ${ly_lib_static} DESTINATION lib ) +-INSTALL ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) +-INSTALL ( DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION include ) ++INSTALL ( TARGETS yuvconvert DESTINATION bin ) ++INSTALL ( FILES ${ly_include_files} DESTINATION include/libyuv ) ++INSTALL ( TARGETS ${ly_lib_static} EXPORT libyuv-targets DESTINATION lib INCLUDES DESTINATION include PUBLIC_HEADER DESTINATION include ) ++INSTALL ( TARGETS ${ly_lib_shared} EXPORT libyuv-targets LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) ++ ++INSTALL( EXPORT libyuv-targets DESTINATION share/cmake/libyuv/ EXPORT_LINK_INTERFACE_LIBRARIES ) + + # create the .deb and .rpm packages using cpack + INCLUDE ( CM_linux_packages.cmake ) diff --git a/ports/libyuv/libyuv-config.cmake b/ports/libyuv/libyuv-config.cmake new file mode 100644 index 00000000000000..357a95f99e3135 --- /dev/null +++ b/ports/libyuv/libyuv-config.cmake @@ -0,0 +1,5 @@ +include(CMakeFindDependencyMacro) +find_dependency(JPEG REQUIRED) + +set(libyuv_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/../../include") +include("${CMAKE_CURRENT_LIST_DIR}/libyuv-targets.cmake") diff --git a/ports/libyuv/portfile.cmake b/ports/libyuv/portfile.cmake index 1e955c18553644..ad856f9de2058e 100644 --- a/ports/libyuv/portfile.cmake +++ b/ports/libyuv/portfile.cmake @@ -23,5 +23,7 @@ vcpkg_copy_pdbs() vcpkg_fixup_cmake_targets(CONFIG_PATH share/cmake/libyuv) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) -file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/libyuv RENAME copyright) +configure_file(${CMAKE_CURRENT_LIST_DIR}/libyuv-config.cmake ${CURRENT_PACKAGES_DIR}/share/libyuv COPYONLY) +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)