ladybird/Libraries/LibWeb/CMakeLists.txt
Andreas Kling 10255bc5c6 LibWeb+Browser: Decode non-animated images out-of-process :^)
We now use the ImageDecoder service in LibWeb for everything except
GIF images (we'll have to deal with them later, ofc.)

This has a little bit of overhead but we should be able to optimize
it until it becomes negligible.
2020-06-22 21:47:01 +02:00

197 lines
5.9 KiB
CMake

set(SOURCES
Bindings/EventListenerWrapper.cpp
Bindings/EventWrapperFactory.cpp
Bindings/LocationObject.cpp
Bindings/NavigatorObject.cpp
Bindings/NodeWrapperFactory.cpp
Bindings/WindowObject.cpp
Bindings/Wrappable.cpp
Bindings/XMLHttpRequestConstructor.cpp
Bindings/XMLHttpRequestPrototype.cpp
Bindings/XMLHttpRequestWrapper.cpp
CSS/Length.cpp
CSS/Selector.cpp
CSS/SelectorEngine.cpp
CSS/StyleDeclaration.cpp
CSS/StyleProperties.cpp
CSS/StyleResolver.cpp
CSS/StyleRule.cpp
CSS/StyleSheet.cpp
CSS/StyleSheetList.cpp
CSS/StyleValue.cpp
DOM/AttributeNames.cpp
DOM/CanvasRenderingContext2D.cpp
DOM/CharacterData.cpp
DOM/Comment.cpp
DOM/Document.cpp
DOM/DocumentType.cpp
DOM/Element.cpp
DOM/ElementFactory.cpp
DOM/EventListener.cpp
DOM/EventTarget.cpp
DOM/HTMLAnchorElement.cpp
DOM/HTMLBlinkElement.cpp
DOM/HTMLBodyElement.cpp
DOM/HTMLBRElement.cpp
DOM/HTMLCanvasElement.cpp
DOM/HTMLElement.cpp
DOM/HTMLFontElement.cpp
DOM/HTMLFormElement.cpp
DOM/HTMLHeadElement.cpp
DOM/HTMLHeadingElement.cpp
DOM/HTMLHRElement.cpp
DOM/HTMLHtmlElement.cpp
DOM/HTMLIFrameElement.cpp
DOM/HTMLImageElement.cpp
DOM/HTMLInputElement.cpp
DOM/HTMLObjectElement.cpp
DOM/HTMLLinkElement.cpp
DOM/HTMLScriptElement.cpp
DOM/HTMLStyleElement.cpp
DOM/HTMLTableElement.cpp
DOM/HTMLTableCellElement.cpp
DOM/HTMLTableRowElement.cpp
DOM/HTMLTitleElement.cpp
DOM/ImageData.cpp
DOM/Node.cpp
DOM/ParentNode.cpp
DOM/TagNames.cpp
DOM/Text.cpp
DOM/Window.cpp
DOM/XMLHttpRequest.cpp
DOMTreeModel.cpp
Dump.cpp
FontCache.cpp
Frame/EventHandler.cpp
Frame/Frame.cpp
Layout/BoxModelMetrics.cpp
Layout/LayoutBlock.cpp
Layout/LayoutBox.cpp
Layout/LayoutBreak.cpp
Layout/LayoutCanvas.cpp
Layout/LayoutDocument.cpp
Layout/LayoutFrame.cpp
Layout/LayoutImage.cpp
Layout/LayoutInline.cpp
Layout/LayoutListItem.cpp
Layout/LayoutListItemMarker.cpp
Layout/LayoutNode.cpp
Layout/LayoutReplaced.cpp
Layout/LayoutTable.cpp
Layout/LayoutTableCell.cpp
Layout/LayoutTableRow.cpp
Layout/LayoutTableRowGroup.cpp
Layout/LayoutText.cpp
Layout/LayoutTreeBuilder.cpp
Layout/LayoutWidget.cpp
Layout/LineBox.cpp
Layout/LineBoxFragment.cpp
LayoutTreeModel.cpp
Loader/FrameLoader.cpp
Loader/ImageLoader.cpp
Loader/ImageResource.cpp
Loader/Resource.cpp
Loader/ResourceLoader.cpp
Page.cpp
PageView.cpp
Painting/StackingContext.cpp
Parser/CSSParser.cpp
Parser/Entities.cpp
Parser/HTMLDocumentParser.cpp
Parser/HTMLParser.cpp
Parser/HTMLToken.cpp
Parser/HTMLTokenizer.cpp
Parser/ListOfActiveFormattingElements.cpp
Parser/StackOfOpenElements.cpp
StylePropertiesModel.cpp
URLEncoder.cpp
CSS/PropertyID.h
CSS/PropertyID.cpp
CSS/DefaultStyleSheetSource.cpp
)
set(GENERATED_SOURCES
../../Services/ProtocolServer/ProtocolClientEndpoint.h
../../Services/ProtocolServer/ProtocolServerEndpoint.h
)
set_property(GLOBAL PROPERTY wrapper_sources)
function(add_wrapper_sources)
get_property(tmp GLOBAL PROPERTY wrapper_sources)
foreach(arg ${ARGV})
set(tmp ${tmp}
${arg}
)
endforeach()
set_property(GLOBAL PROPERTY wrapper_sources "${tmp}")
endfunction(add_wrapper_sources)
function(libweb_js_wrapper class)
add_wrapper_sources(Bindings/${class}Wrapper.cpp Bindings/${class}Wrapper.h)
add_custom_command(
OUTPUT Bindings/${class}Wrapper.h
COMMAND /bin/mkdir -p Bindings
COMMAND WrapperGenerator --header ${CMAKE_CURRENT_SOURCE_DIR}/DOM/${class}.idl > Bindings/${class}Wrapper.h
VERBATIM
DEPENDS WrapperGenerator
MAIN_DEPENDENCY DOM/${class}.idl
)
add_custom_command(
OUTPUT Bindings/${class}Wrapper.cpp
COMMAND /bin/mkdir -p Bindings
COMMAND WrapperGenerator --implementation ${CMAKE_CURRENT_SOURCE_DIR}/DOM/${class}.idl > Bindings/${class}Wrapper.cpp
VERBATIM
DEPENDS WrapperGenerator
MAIN_DEPENDENCY DOM/${class}.idl
)
add_custom_target(generate_${class}Wrapper.h DEPENDS Bindings/${class}Wrapper.h)
add_custom_target(generate_${class}Wrapper.cpp DEPENDS Bindings/${class}Wrapper.cpp)
endfunction()
libweb_js_wrapper(EventTarget)
libweb_js_wrapper(Node)
libweb_js_wrapper(Document)
libweb_js_wrapper(Element)
libweb_js_wrapper(HTMLElement)
libweb_js_wrapper(HTMLImageElement)
libweb_js_wrapper(HTMLCanvasElement)
libweb_js_wrapper(ImageData)
libweb_js_wrapper(Event)
libweb_js_wrapper(MouseEvent)
libweb_js_wrapper(CanvasRenderingContext2D)
get_property(WRAPPER_SOURCES GLOBAL PROPERTY wrapper_sources)
set(SOURCES ${SOURCES} ${WRAPPER_SOURCES})
add_custom_command(
OUTPUT CSS/PropertyID.h
COMMAND /bin/mkdir -p CSS
COMMAND Generate_CSS_PropertyID_h ${CMAKE_CURRENT_SOURCE_DIR}/CSS/Properties.json > CSS/PropertyID.h
VERBATIM
DEPENDS Generate_CSS_PropertyID_h
MAIN_DEPENDENCY CSS/Properties.json
)
add_custom_target(generate_PropertyID.h DEPENDS CSS/PropertyID.h)
add_custom_command(
OUTPUT CSS/PropertyID.cpp
COMMAND /bin/mkdir -p CSS
COMMAND Generate_CSS_PropertyID_cpp ${CMAKE_CURRENT_SOURCE_DIR}/CSS/Properties.json > CSS/PropertyID.cpp
VERBATIM
DEPENDS Generate_CSS_PropertyID_cpp
MAIN_DEPENDENCY CSS/Properties.json
)
add_custom_command(
OUTPUT CSS/DefaultStyleSheetSource.cpp
COMMAND /bin/mkdir -p CSS
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/Scripts/GenerateStyleSheetSource.sh default_stylesheet_source
${CMAKE_CURRENT_SOURCE_DIR}/CSS/Default.css > CSS/DefaultStyleSheetSource.cpp
VERBATIM
DEPENDS Scripts/GenerateStyleSheetSource.sh
MAIN_DEPENDENCY CSS/Default.css
)
serenity_lib(LibWeb web)
target_link_libraries(LibWeb LibCore LibJS LibMarkdown LibGemini LibGUI LibGfx LibTextCodec LibProtocol LibImageDecoderClient)