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})
13 set(UDFREAD_VERSION ${${MODULE}_VER})
14 set(BUILD_NAME udfread_build)
16 set(CONFIGURE_COMMAND autoreconf -vif &&
20 --prefix=${DEPENDS_PATH})
21 set(BUILD_IN_SOURCE 1)
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})
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)
44 find_package(PkgConfig QUIET)
45 pkg_check_modules(libudfread libudfread IMPORTED_TARGET GLOBAL QUIET)
47 include(cmake/scripts/common/ModuleHelpers.cmake)
49 set(MODULE_LC udfread)
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))
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})
67 find_package_handle_standard_args(Udfread
68 REQUIRED_VARS UDFREAD_LIBRARY UDFREAD_INCLUDE_DIR
69 VERSION_VAR UDFREAD_VERSION)
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)