FIND_LIBRARY(PIXMAN pixman-1)
FIND_LIBRARY(EXPAT expat)
FIND_LIBRARY(CURL curl)

link_directories(${WEBKIT_LIBRARIES_DIR})

list(APPEND WebKit_INCLUDE_DIRECTORIES
    "${DERIVED_SOURCES_DIR}"
    "${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}"
    "${DERIVED_SOURCES_WEBCORE_DIR}"
    "${DERIVED_SOURCES_WEBKITLEGACY_DIR}"
    "${JAVASCRIPTCORE_DIR}"
    "${JAVASCRIPTCORE_DIR}/dfg"
    "${WEBCORE_DIR}/accessibility/mac"
    "${WEBCORE_DIR}/bridge"
    "${WEBCORE_DIR}/bridge/jsc"
    "${WEBCORE_DIR}/ForwardingHeaders/inspector"
    "${WEBCORE_DIR}/html/track"
    "${WEBCORE_DIR}/platform"
    "${WEBCORE_DIR}/platform/graphics/freetype"
    "${WEBCORE_DIR}/platform/graphics/harfbuzz"
    "${WEBCORE_DIR}/platform/graphics/opentype"
    "${WEBCORE_DIR}/rendering/shapes"
    "${WTF_DIR}"
    ${CAIRO_INCLUDE_DIRS}
    ${HARFBUZZ_INCLUDE_DIRS}
    ../../WebKitLibraries
)

list(APPEND WebKit_SOURCES
    fuchsia/WebView.cpp
    fuchsia/WebCoreSupport/WebChromeClient.cpp
    fuchsia/WebCoreSupport/WebEditorClient.cpp
    fuchsia/WebCoreSupport/WebFrameLoaderClient.cpp
    fuchsia/WebCoreSupport/WebPlatformStrategies.cpp
)

list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES
    fuchsia
    fuchsia/WebCoreSupport
)
  
set(WebKit_LIBRARY_TYPE SHARED)

set(WebKitLegacy_FORWARDING_HEADERS_DIRECTORIES
)

set(WebKitLegacy_FORWARDING_HEADERS_FILES
    ${DERIVED_SOURCES_WEBCORE_DIR}/DOMRange.h

    ${WEBCORE_DIR}/bindings/objc/DOMCore.h
    ${WEBCORE_DIR}/bindings/objc/DOMExtensions.h

    ${WEBCORE_DIR}/plugins/npfunctions.h
)

WEBKIT_CREATE_FORWARDING_HEADERS(WebKitLegacy DIRECTORIES ${WebKitLegacy_FORWARDING_HEADERS_DIRECTORIES} FILES ${WebKitLegacy_FORWARDING_HEADERS_FILES})
WEBKIT_CREATE_FORWARDING_HEADERS(WebKit DIRECTORIES ${DERIVED_SOURCES_DIR}/ForwardingHeaders/WebKitLegacy)

set(WebKit_OUTPUT_NAME WebKitLegacy)

set(WebKitLegacy_WebCore_FORWARDING_HEADERS
    DOMElement.h
    DOMHTMLFormElement.h
    DOMHTMLInputElement.h
    DOMWheelEvent.h
)

list(APPEND WebKit_LIBRARIES
    PRIVATE WTF${DEBUG_SUFFIX}
    ${CAIRO_LIBRARIES}
    ${ENCHANT_LIBRARIES}
    ${FONTCONFIG_LIBRARIES}
    ${FREETYPE2_LIBRARIES}
    ${HARFBUZZ_LIBRARIES}
    ${LIBXML2_LIBRARIES}
    ${SQLITE_LIBRARIES}
    ${ZLIB_LIBRARIES}
    ${CURL}
    ${PIXMAN}
    ${EXPAT}
)

add_definitions("-include WebKitPrefix.h")

# FIXME: These shouldn't be necessary, but it doesn't compile without them.
foreach (_file ${WebKitLegacy_WebCore_FORWARDING_HEADERS})
    if (NOT EXISTS ${DERIVED_SOURCES_WEBKITLEGACY_DIR}/${_file})
        file(WRITE ${DERIVED_SOURCES_WEBKITLEGACY_DIR}/${_file} "#import <WebCore/${_file}>")
    endif ()
endforeach ()

set(WebKit_LIBRARY_TYPE STATIC)
