[FileItem] Fix mimetype content lookup
[xbmc.git] / cmake / modules / FindASS.cmake
blob9420dd8f7959103244e7317abe361d19241442fa
1 #.rst:
2 # FindASS
3 # -------
4 # Finds the ASS library
6 # This will define the following target:
8 #   ${APP_NAME_LC}::ASS   - The ASS library
11 if(NOT TARGET ${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME})
13   find_package(PkgConfig)
14   # Do not use pkgconfig on windows
15   if(PKG_CONFIG_FOUND AND NOT (WIN32 OR WINDOWS_STORE))
16     pkg_check_modules(PC_ASS libass QUIET IMPORTED_TARGET)
18     # INTERFACE_LINK_OPTIONS is incorrectly populated when cmake generation is executed
19     # when an existing build generation is already done. Just set this to blank
20     set_target_properties(PkgConfig::PC_ASS PROPERTIES INTERFACE_LINK_OPTIONS "")
22     # First item is the full path of the library file found
23     # pkg_check_modules does not populate a variable of the found library explicitly
24     list(GET PC_ASS_LINK_LIBRARIES 0 ASS_LIBRARY)
25     set(ASS_INCLUDE_DIR ${PC_ASS_INCLUDEDIR})
26     set(ASS_VERSION ${PC_ASS_VERSION})
27   elseif(WIN32 OR WINDOWS_STORE)
28     find_package(libass CONFIG QUIET REQUIRED
29                         HINTS ${DEPENDS_PATH}/lib/cmake
30                         ${${CORE_PLATFORM_NAME_LC}_SEARCH_CONFIG})
32     # we only do this because we use find_package_handle_standard_args for config time output
33     # and it isnt capable of handling TARGETS, so we have to extract the info
34     get_target_property(_ASS_CONFIGURATIONS libass::libass IMPORTED_CONFIGURATIONS)
35     foreach(_ass_config IN LISTS _ASS_CONFIGURATIONS)
36       # Some non standard config (eg None on Debian)
37       # Just set to RELEASE var so select_library_configurations can continue to work its magic
38       string(TOUPPER ${_ass_config} _ass_config_UPPER)
39       if((NOT ${_ass_config_UPPER} STREQUAL "RELEASE") AND
40          (NOT ${_ass_config_UPPER} STREQUAL "DEBUG"))
41         get_target_property(ASS_LIBRARY_RELEASE libass::libass IMPORTED_LOCATION_${_ass_config_UPPER})
42       else()
43         get_target_property(ASS_LIBRARY_${_ass_config_UPPER} libass::libass IMPORTED_LOCATION_${_ass_config_UPPER})
44       endif()
45     endforeach()
47     get_target_property(ASS_INCLUDE_DIR libass::libass INTERFACE_INCLUDE_DIRECTORIES)
48     set(ASS_VERSION ${libass_VERSION})
50     include(SelectLibraryConfigurations)
51     select_library_configurations(ASS)
52     unset(ASS_LIBRARIES)
53   endif()
55   include(FindPackageHandleStandardArgs)
56   find_package_handle_standard_args(ASS
57                                     REQUIRED_VARS ASS_LIBRARY ASS_INCLUDE_DIR
58                                     VERSION_VAR ASS_VERSION)
60   if(ASS_FOUND)
61     if(TARGET PkgConfig::PC_ASS)
62       add_library(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} ALIAS PkgConfig::PC_ASS)
63     elseif(TARGET libass::libass)
64       # Kodi custom libass target used for windows platforms
65       add_library(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} ALIAS libass::libass)
66     endif()
67   else()
68     if(ASS_FIND_REQUIRED)
69       message(FATAL_ERROR "Ass libraries were not found.")
70     endif()
71   endif()
72 endif()