# - Find FLAC # Find the native FLAC includes and libraries # # FLAC_INCLUDE_DIRS - where to find FLAC headers. # FLAC_LIBRARIES - List of libraries when using libFLAC. # FLAC_FOUND - True if libFLAC found. # FLAC_DEFINITIONS - FLAC compile definitons if(FLAC_INCLUDE_DIR) # Already in cache, be silent set(FLAC_FIND_QUIETLY TRUE) endif() find_package(Ogg QUIET) find_package(PkgConfig QUIET) pkg_check_modules(PC_FLAC QUIET flac) set(FLAC_VERSION ${PC_FLAC_VERSION}) find_path(FLAC_INCLUDE_DIR FLAC/stream_decoder.h HINTS ${PC_FLAC_INCLUDEDIR} ${PC_FLAC_INCLUDE_DIRS} ${FLAC_ROOT}) # MSVC built libraries can name them *_static, which is good as it # distinguishes import libraries from static libraries with the same extension. find_library(FLAC_LIBRARY NAMES FLAC libFLAC libFLAC_dynamic libFLAC_static HINTS ${PC_FLAC_LIBDIR} ${PC_FLAC_LIBRARY_DIRS} ${FLAC_ROOT}) # Handle the QUIETLY and REQUIRED arguments and set FLAC_FOUND to TRUE if # all listed variables are TRUE. include(FindPackageHandleStandardArgs) find_package_handle_standard_args(FLAC REQUIRED_VARS FLAC_LIBRARY FLAC_INCLUDE_DIR Ogg_FOUND VERSION_VAR FLAC_VERSION) if(FLAC_FOUND) set(FLAC_INCLUDE_DIRS ${FLAC_INCLUDE_DIR} ${Ogg_INCLUDE_DIRS}) set(FLAC_LIBRARIES ${FLAC_LIBRARY} ${Ogg_LIBRARIES}) if(NOT TARGET FLAC::FLAC) add_library(FLAC::FLAC UNKNOWN IMPORTED) set_target_properties(FLAC::FLAC PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FLAC_INCLUDE_DIR}" IMPORTED_LOCATION "${FLAC_LIBRARY}" INTERFACE_LINK_LIBRARIES Ogg::ogg) endif() endif() mark_as_advanced(FLAC_INCLUDE_DIR FLAC_LIBRARY)