find_path ( YAJL_INCLUDE_DIR NAMES yajl/yajl_parse.h yajl/yajl_version.h DOC "Path to YAJL header files." )
mark_as_advanced ( YAJL_INCLUDE_DIR )

find_library ( YAJL_LIB NAMES yajl DOC "Location of YAJL library." )
mark_as_advanced ( YAJL_LIB )

if ( YAJL_INCLUDE_DIR )
    file ( READ "${YAJL_INCLUDE_DIR}/yajl/yajl_version.h" ver )

    string ( REGEX MATCH "YAJL_MAJOR ([0-9]*)" _ ${ver} )
    set ( ver_major ${CMAKE_MATCH_1} )

    string ( REGEX MATCH "YAJL_MINOR ([0-9]*)" _ ${ver} )
    set ( ver_minor ${CMAKE_MATCH_1} )

    string ( REGEX MATCH "YAJL_MICRO ([0-9]*)" _ ${ver} )
    set ( ver_micro ${CMAKE_MATCH_1} )

    set ( YAJL_VERSION "${ver_major}.${ver_minor}.${ver_micro}" )

    unset ( ver )
    unset ( ver_major )
    unset ( ver_minor )
    unset ( ver_micro )
endif ( YAJL_INCLUDE_DIR )

include ( FindPackageHandleStandardArgs )
find_package_handle_standard_args ( YAJL
                                    REQUIRED_VARS YAJL_LIB YAJL_INCLUDE_DIR
                                    VERSION_VAR YAJL_VERSION )

# Create the imported target
if ( YAJL_FOUND )
    set ( YAJL_INCLUDE_DIRS ${YAJL_INCLUDE_DIR} )
    set ( YAJL_LIBRARIES ${YAJL_LIB} )
    if ( NOT TARGET YAJL::YAJL )
        add_library ( YAJL::YAJL UNKNOWN IMPORTED )
        set_target_properties ( YAJL::YAJL PROPERTIES
                                IMPORTED_LOCATION "${YAJL_LIB}"
                                INTERFACE_INCLUDE_DIRECTORIES "${YAJL_INCLUDE_DIR}" )
    endif ( NOT TARGET YAJL::YAJL )
endif ( YAJL_FOUND )