Merge pull request #25883 from CrystalP/fix-slowscan
[xbmc.git] / cmake / modules / FindUdfread.cmake
blobff88b31b5cf2d89a01748eee09be82598f220c70
1 #.rst:
2 # FindUdfread
3 # --------
4 # Finds the udfread library
6 # This will define the following target:
8 #   ${APP_NAME_LC}::Udfread - The libudfread library
10 if(NOT TARGET ${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME})
12   macro(buildudfread)
13     set(UDFREAD_VERSION ${${MODULE}_VER})
14     set(BUILD_NAME udfread_build)
16     set(CONFIGURE_COMMAND autoreconf -vif &&
17                           ./configure
18                           --enable-static
19                           --disable-shared
20                           --prefix=${DEPENDS_PATH})
21     set(BUILD_IN_SOURCE 1)
23     BUILD_DEP_TARGET()
24   endmacro()
26   if(WIN32 OR WINDOWS_STORE)
27     include(FindPackageMessage)
29     find_package(libudfread CONFIG QUIET
30                             HINTS ${DEPENDS_PATH}/lib/cmake
31                             ${${CORE_PLATFORM_NAME_LC}_SEARCH_CONFIG})
33     if(libudfread_FOUND)
34       # Specifically tailored to kodi windows cmake config - Debug and RelWithDebInfo available
35       get_target_property(UDFREAD_LIBRARY_RELEASE libudfread::libudfread IMPORTED_LOCATION_RELWITHDEBINFO)
36       get_target_property(UDFREAD_LIBRARY_DEBUG libudfread::libudfread IMPORTED_LOCATION_DEBUG)
37       get_target_property(UDFREAD_INCLUDE_DIR libudfread::libudfread INTERFACE_INCLUDE_DIRECTORIES)
39       include(SelectLibraryConfigurations)
40       select_library_configurations(UDFREAD)
41       unset(UDFREAD_LIBRARIES)
42     endif()
43   else()
44     find_package(PkgConfig)
45     pkg_check_modules(libudfread libudfread IMPORTED_TARGET GLOBAL QUIET)
47     include(cmake/scripts/common/ModuleHelpers.cmake)
49     set(MODULE_LC udfread)
50     SETUP_BUILD_VARS()
52     # Check for existing UDFREAD. If version >= UDFREAD-VERSION file version, dont build
53     # A corner case, but if a linux/freebsd user WANTS to build internal udfread, build anyway
54     if((libudfread_VERSION VERSION_LESS ${${MODULE}_VER} AND ENABLE_INTERNAL_UDFREAD) OR
55        ((CORE_SYSTEM_NAME STREQUAL linux OR CORE_SYSTEM_NAME STREQUAL freebsd) AND ENABLE_INTERNAL_UDFREAD))
56       buildudfread()
57   
58     else()
59       if(TARGET PkgConfig::libudfread)
60         get_target_property(UDFREAD_LIBRARY PkgConfig::libudfread INTERFACE_LINK_LIBRARIES)
61         get_target_property(UDFREAD_INCLUDE_DIR PkgConfig::libudfread INTERFACE_INCLUDE_DIRECTORIES)
62         set(UDFREAD_VERSION ${libudfread_VERSION})
63       endif()
64     endif()
65   endif()
67   find_package_handle_standard_args(Udfread
68                                     REQUIRED_VARS UDFREAD_LIBRARY UDFREAD_INCLUDE_DIR
69                                     VERSION_VAR UDFREAD_VERSION)
71   if(UDFREAD_FOUND)
72     # pkgconfig populate target that is sufficient version
73     if(TARGET PkgConfig::libudfread AND NOT TARGET udfread_build)
74       add_library(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} ALIAS PkgConfig::libudfread)
75       set_target_properties(PkgConfig::libudfread PROPERTIES
76                                                   INTERFACE_COMPILE_DEFINITIONS HAS_UDFREAD)
77     # windows cmake config populated target
78     elseif(TARGET libudfread::libudfread)
79       add_library(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} ALIAS libudfread::libudfread)
80       set_target_properties(libudfread::libudfread PROPERTIES
81                                                    INTERFACE_COMPILE_DEFINITIONS HAS_UDFREAD)
82     # otherwise we are building
83     elseif(TARGET udfread_build)
84       add_library(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} UNKNOWN IMPORTED)
85       set_target_properties(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} PROPERTIES
86                                                                        IMPORTED_LOCATION "${UDFREAD_LIBRARY}"
87                                                                        INTERFACE_INCLUDE_DIRECTORIES "${UDFREAD_INCLUDE_DIR}"
88                                                                        INTERFACE_COMPILE_DEFINITIONS HAS_UDFREAD)
89       add_dependencies(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} udfread_build)
90     endif()
91   endif()
92 endif()