set(MINIBROWSER_DIR "${TOOLS_DIR}/MiniBrowser/fuchsia")

FIND_LIBRARY(PIXMAN pixman-1)
FIND_LIBRARY(EXPAT expat)
FIND_LIBRARY(CURL curl)
FIND_LIBRARY(CRYPTO crypto)
FIND_LIBRARY(SSL ssl)
FIND_LIBRARY(XML xml2)
FIND_LIBRARY(ZLIB libz.so.1)

set(MiniBrowser_SOURCES
    ${MINIBROWSER_DIR}/main.cpp
    ${MINIBROWSER_DIR}/FuchsiaCursor.cpp
    ${MINIBROWSER_DIR}/FuchsiaInputHandler.cpp
)

set(MiniBrowser_INCLUDE_DIRECTORIES
    ${CMAKE_BINARY_DIR}
    ${CMAKE_SOURCE_DIR}/Source
    "${WEBCORE_DIR}/platform/graphics/freetype"
    "${WEBCORE_DIR}/platform/graphics/harfbuzz"
    "${WEBCORE_DIR}/platform/graphics/opentype"
    ${DERIVED_SOURCES_DIR}
    ${DERIVED_SOURCES_DIR}/WebCore
    ${DERIVED_SOURCES_DIR}/ForwardingHeaders
    ${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore
    ${DERIVED_SOURCES_DIR}/ForwardingHeaders/WebCore
    ${DERIVED_SOURCES_DIR}/ForwardingHeaders/WebKit
    ${WTF_DIR}
    ${WEBCORE_DIR}
    ${JAVASCRIPTCORE_DIR}
    ${FORWARDING_HEADERS_DIR}
    ${MINIBROWSER_DIR}
    ${CAIRO_INCLUDE_DIRS}
    ${FREETYPE2_HEADER_DIR}
    ${HARFBUZZ_INCLUDE_DIRS}
)

link_directories("lib")

set(MiniBrowser_LIBRARIES
    JavaScriptCore
    WebCore
    hid
    ${CMAKE_BINARY_DIR}/lib/libWebKitLegacy.a
    ${PIXMAN}
    ${CAIRO_LIBRARIES}
    ${ENCHANT_LIBRARIES}
    ${FREETYPE2_LIBRARIES}
    ${HARFBUZZ_LIBRARIES}
    ${LIBXML2_LIBRARIES}
    ${SQLITE_LIBRARIES}
    ${ZLIB_LIBRARIES}
    ${CURL}
    ${EXPAT}
)

set(EXECUTABLE_NAME MiniBrowser)
set(PRODUCT_NAME MiniBrowser)

include_directories(${MiniBrowser_INCLUDE_DIRECTORIES})
add_executable(MiniBrowser ${MiniBrowser_SOURCES})
target_link_libraries(MiniBrowser ${MiniBrowser_LIBRARIES})
