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})
43 get_target_property(ASS_LIBRARY_${_ass_config_UPPER} libass::libass IMPORTED_LOCATION_${_ass_config_UPPER})
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)
55 include(FindPackageHandleStandardArgs)
56 find_package_handle_standard_args(ASS
57 REQUIRED_VARS ASS_LIBRARY ASS_INCLUDE_DIR
58 VERSION_VAR ASS_VERSION)
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)
69 message(FATAL_ERROR "Ass libraries were not found.")