mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 05:42:43 +00:00 
			
		
		
		
	 a6d52e0c97
			
		
	
	
		a6d52e0c97
		
	
	
	
	
		
			
			This patch adds a global (per-process) filter list to LibWeb that is
used to filter all outgoing resource load requests.
Basically we check the URL against a list of filter patterns and if
it's a match for any one of them, we immediately fail the load.
The filter list is a simple text file:
    ~/.config/BrowserContentFilters.txt
It's one filter per line and they are simple glob filters for now,
with implicit asterisks (*) at the start and end of the line.
		
	
			
		
			
				
	
	
		
			399 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			399 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| set(SOURCES
 | |
|     Bindings/EventListenerWrapper.cpp
 | |
|     Bindings/EventWrapperFactory.cpp
 | |
|     Bindings/EventTargetWrapperFactory.cpp
 | |
|     Bindings/LocationObject.cpp
 | |
|     Bindings/NavigatorObject.cpp
 | |
|     Bindings/NodeWrapperFactory.cpp
 | |
|     Bindings/ScriptExecutionContext.cpp
 | |
|     Bindings/WindowObject.cpp
 | |
|     Bindings/Wrappable.cpp
 | |
|     Bindings/XMLHttpRequestConstructor.cpp
 | |
|     Bindings/XMLHttpRequestPrototype.cpp
 | |
|     Bindings/XMLHttpRequestWrapper.cpp
 | |
|     Bindings/RangeConstructor.cpp
 | |
|     Bindings/RangePrototype.cpp
 | |
|     Bindings/RangeWrapper.cpp
 | |
|     CSS/DefaultStyleSheetSource.cpp
 | |
|     CSS/Length.cpp
 | |
|     CSS/Parser/CSSParser.cpp
 | |
|     CSS/PropertyID.cpp
 | |
|     CSS/PropertyID.h
 | |
|     CSS/QuirksModeStyleSheetSource.cpp
 | |
|     CSS/Selector.cpp
 | |
|     CSS/SelectorEngine.cpp
 | |
|     CSS/StyleDeclaration.cpp
 | |
|     CSS/StyleInvalidator.cpp
 | |
|     CSS/StyleProperties.cpp
 | |
|     CSS/StyleResolver.cpp
 | |
|     CSS/StyleRule.cpp
 | |
|     CSS/StyleSheet.cpp
 | |
|     CSS/StyleSheetList.cpp
 | |
|     CSS/StyleValue.cpp
 | |
|     CSS/ValueID.cpp
 | |
|     CSS/ValueID.h
 | |
|     DOM/CharacterData.cpp
 | |
|     DOM/CharacterData.idl
 | |
|     DOM/Comment.cpp
 | |
|     DOM/Document.cpp
 | |
|     DOM/DocumentFragment.cpp
 | |
|     DOM/DocumentType.cpp
 | |
|     DOM/DOMImplementation.cpp
 | |
|     DOM/Element.cpp
 | |
|     DOM/ElementFactory.cpp
 | |
|     DOM/Event.cpp
 | |
|     DOM/Range.cpp
 | |
|     DOM/EventDispatcher.cpp
 | |
|     DOM/EventListener.cpp
 | |
|     DOM/EventTarget.cpp
 | |
|     DOM/Node.cpp
 | |
|     DOM/ParentNode.cpp
 | |
|     DOM/Position.cpp
 | |
|     DOM/ShadowRoot.cpp
 | |
|     DOM/Text.cpp
 | |
|     DOM/Text.idl
 | |
|     DOM/Timer.cpp
 | |
|     DOM/Window.cpp
 | |
|     DOM/XMLHttpRequest.cpp
 | |
|     DOMTreeModel.cpp
 | |
|     Dump.cpp
 | |
|     FontCache.cpp
 | |
|     HTML/AttributeNames.cpp
 | |
|     HTML/CanvasRenderingContext2D.cpp
 | |
|     HTML/EventNames.cpp
 | |
|     HTML/HTMLAnchorElement.cpp
 | |
|     HTML/HTMLAreaElement.cpp
 | |
|     HTML/HTMLAudioElement.cpp
 | |
|     HTML/HTMLBRElement.cpp
 | |
|     HTML/HTMLBaseElement.cpp
 | |
|     HTML/HTMLBlinkElement.cpp
 | |
|     HTML/HTMLBodyElement.cpp
 | |
|     HTML/HTMLButtonElement.cpp
 | |
|     HTML/HTMLCanvasElement.cpp
 | |
|     HTML/HTMLDListElement.cpp
 | |
|     HTML/HTMLDataElement.cpp
 | |
|     HTML/HTMLDataListElement.cpp
 | |
|     HTML/HTMLDetailsElement.cpp
 | |
|     HTML/HTMLDialogElement.cpp
 | |
|     HTML/HTMLDirectoryElement.cpp
 | |
|     HTML/HTMLDivElement.cpp
 | |
|     HTML/HTMLElement.cpp
 | |
|     HTML/HTMLEmbedElement.cpp
 | |
|     HTML/HTMLFieldSetElement.cpp
 | |
|     HTML/HTMLFontElement.cpp
 | |
|     HTML/HTMLFormElement.cpp
 | |
|     HTML/HTMLFrameElement.cpp
 | |
|     HTML/HTMLFrameSetElement.cpp
 | |
|     HTML/HTMLHRElement.cpp
 | |
|     HTML/HTMLHeadElement.cpp
 | |
|     HTML/HTMLHeadingElement.cpp
 | |
|     HTML/HTMLHtmlElement.cpp
 | |
|     HTML/HTMLIFrameElement.cpp
 | |
|     HTML/HTMLImageElement.cpp
 | |
|     HTML/HTMLInputElement.cpp
 | |
|     HTML/HTMLLIElement.cpp
 | |
|     HTML/HTMLLabelElement.cpp
 | |
|     HTML/HTMLLegendElement.cpp
 | |
|     HTML/HTMLLinkElement.cpp
 | |
|     HTML/HTMLMapElement.cpp
 | |
|     HTML/HTMLMarqueeElement.cpp
 | |
|     HTML/HTMLMediaElement.cpp
 | |
|     HTML/HTMLMenuElement.cpp
 | |
|     HTML/HTMLMetaElement.cpp
 | |
|     HTML/HTMLMeterElement.cpp
 | |
|     HTML/HTMLModElement.cpp
 | |
|     HTML/HTMLOListElement.cpp
 | |
|     HTML/HTMLObjectElement.cpp
 | |
|     HTML/HTMLOptGroupElement.cpp
 | |
|     HTML/HTMLOptionElement.cpp
 | |
|     HTML/HTMLOutputElement.cpp
 | |
|     HTML/HTMLParagraphElement.cpp
 | |
|     HTML/HTMLParamElement.cpp
 | |
|     HTML/HTMLPictureElement.cpp
 | |
|     HTML/HTMLPreElement.cpp
 | |
|     HTML/HTMLProgressElement.cpp
 | |
|     HTML/HTMLQuoteElement.cpp
 | |
|     HTML/HTMLScriptElement.cpp
 | |
|     HTML/HTMLSelectElement.cpp
 | |
|     HTML/HTMLSlotElement.cpp
 | |
|     HTML/HTMLSourceElement.cpp
 | |
|     HTML/HTMLSpanElement.cpp
 | |
|     HTML/HTMLStyleElement.cpp
 | |
|     HTML/HTMLTableCaptionElement.cpp
 | |
|     HTML/HTMLTableCellElement.cpp
 | |
|     HTML/HTMLTableColElement.cpp
 | |
|     HTML/HTMLTableElement.cpp
 | |
|     HTML/HTMLTableRowElement.cpp
 | |
|     HTML/HTMLTableSectionElement.cpp
 | |
|     HTML/HTMLTemplateElement.cpp
 | |
|     HTML/HTMLTextAreaElement.cpp
 | |
|     HTML/HTMLTimeElement.cpp
 | |
|     HTML/HTMLTitleElement.cpp
 | |
|     HTML/HTMLTrackElement.cpp
 | |
|     HTML/HTMLUListElement.cpp
 | |
|     HTML/HTMLUnknownElement.cpp
 | |
|     HTML/HTMLVideoElement.cpp
 | |
|     HTML/ImageData.cpp
 | |
|     HTML/Parser/Entities.cpp
 | |
|     HTML/Parser/HTMLDocumentParser.cpp
 | |
|     HTML/Parser/HTMLToken.cpp
 | |
|     HTML/Parser/HTMLTokenizer.cpp
 | |
|     HTML/Parser/ListOfActiveFormattingElements.cpp
 | |
|     HTML/Parser/StackOfOpenElements.cpp
 | |
|     HTML/TagNames.cpp
 | |
|     HighResolutionTime/Performance.cpp
 | |
|     InProcessWebView.cpp
 | |
|     Layout/BlockBox.cpp
 | |
|     Layout/BlockFormattingContext.cpp
 | |
|     Layout/Box.cpp
 | |
|     Layout/BoxModelMetrics.cpp
 | |
|     Layout/BreakNode.cpp
 | |
|     Layout/ButtonBox.cpp
 | |
|     Layout/CanvasBox.cpp
 | |
|     Layout/CheckBox.cpp
 | |
|     Layout/FormattingContext.cpp
 | |
|     Layout/FrameBox.cpp
 | |
|     Layout/ImageBox.cpp
 | |
|     Layout/InitialContainingBlockBox.cpp
 | |
|     Layout/InlineFormattingContext.cpp
 | |
|     Layout/InlineNode.cpp
 | |
|     Layout/LayoutPosition.cpp
 | |
|     Layout/LineBox.cpp
 | |
|     Layout/LineBoxFragment.cpp
 | |
|     Layout/ListItemBox.cpp
 | |
|     Layout/ListItemMarkerBox.cpp
 | |
|     Layout/Node.cpp
 | |
|     Layout/ReplacedBox.cpp
 | |
|     Layout/SVGBox.cpp
 | |
|     Layout/SVGGraphicsBox.cpp
 | |
|     Layout/SVGPathBox.cpp
 | |
|     Layout/SVGSVGBox.cpp
 | |
|     Layout/TableBox.cpp
 | |
|     Layout/TableCellBox.cpp
 | |
|     Layout/TableFormattingContext.cpp
 | |
|     Layout/TableRowBox.cpp
 | |
|     Layout/TableRowGroupBox.cpp
 | |
|     Layout/TextNode.cpp
 | |
|     Layout/TreeBuilder.cpp
 | |
|     Layout/WidgetBox.cpp
 | |
|     LayoutTreeModel.cpp
 | |
|     Loader/ContentFilter.cpp
 | |
|     Loader/FrameLoader.cpp
 | |
|     Loader/ImageLoader.cpp
 | |
|     Loader/ImageResource.cpp
 | |
|     Loader/Resource.cpp
 | |
|     Loader/ResourceLoader.cpp
 | |
|     Namespace.cpp
 | |
|     OutOfProcessWebView.cpp
 | |
|     Page/EventHandler.cpp
 | |
|     Page/EditEventHandler.cpp
 | |
|     Page/Frame.cpp
 | |
|     Page/Page.cpp
 | |
|     Painting/BorderPainting.cpp
 | |
|     Painting/StackingContext.cpp
 | |
|     SVG/SVGElement.cpp
 | |
|     SVG/SVGGeometryElement.cpp
 | |
|     SVG/SVGGraphicsElement.cpp
 | |
|     SVG/SVGPathElement.cpp
 | |
|     SVG/SVGSVGElement.cpp
 | |
|     SVG/TagNames.cpp
 | |
|     StylePropertiesModel.cpp
 | |
|     UIEvents/EventNames.cpp
 | |
|     UIEvents/MouseEvent.cpp
 | |
|     URLEncoder.cpp
 | |
|     WebContentClient.cpp
 | |
| )
 | |
| 
 | |
| set(GENERATED_SOURCES
 | |
|     ../../Services/ProtocolServer/ProtocolClientEndpoint.h
 | |
|     ../../Services/ProtocolServer/ProtocolServerEndpoint.h
 | |
|     ../../Services/WebContent/WebContentClientEndpoint.h
 | |
|     ../../Services/WebContent/WebContentServerEndpoint.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)
 | |
|     get_filename_component(basename ${class} NAME)
 | |
|     add_wrapper_sources(Bindings/${basename}Wrapper.cpp Bindings/${basename}Wrapper.h)
 | |
|     add_custom_command(
 | |
|         OUTPUT Bindings/${basename}Wrapper.h
 | |
|         COMMAND ${write_if_different} Bindings/${basename}Wrapper.h CodeGenerators/WrapperGenerator --header ${CMAKE_CURRENT_SOURCE_DIR}/${class}.idl
 | |
|         VERBATIM
 | |
|         DEPENDS WrapperGenerator
 | |
|         MAIN_DEPENDENCY ${class}.idl
 | |
|     )
 | |
|     add_custom_command(
 | |
|         OUTPUT Bindings/${basename}Wrapper.cpp
 | |
|         COMMAND ${write_if_different} Bindings/${basename}Wrapper.cpp CodeGenerators/WrapperGenerator --implementation ${CMAKE_CURRENT_SOURCE_DIR}/${class}.idl
 | |
|         VERBATIM
 | |
|         DEPENDS WrapperGenerator
 | |
|         MAIN_DEPENDENCY ${class}.idl
 | |
|     )
 | |
|     add_custom_target(generate_${basename}Wrapper.h DEPENDS Bindings/${class}Wrapper.h)
 | |
|     add_custom_target(generate_${basename}Wrapper.cpp DEPENDS Bindings/${class}Wrapper.cpp)
 | |
| endfunction()
 | |
| 
 | |
| libweb_js_wrapper(DOM/CharacterData)
 | |
| libweb_js_wrapper(DOM/Comment)
 | |
| libweb_js_wrapper(DOM/Document)
 | |
| libweb_js_wrapper(DOM/DocumentFragment)
 | |
| libweb_js_wrapper(DOM/DocumentType)
 | |
| libweb_js_wrapper(DOM/DOMImplementation)
 | |
| libweb_js_wrapper(DOM/Element)
 | |
| libweb_js_wrapper(DOM/Event)
 | |
| libweb_js_wrapper(DOM/EventTarget)
 | |
| libweb_js_wrapper(DOM/ShadowRoot)
 | |
| libweb_js_wrapper(DOM/Node)
 | |
| libweb_js_wrapper(DOM/Text)
 | |
| libweb_js_wrapper(HTML/CanvasRenderingContext2D)
 | |
| libweb_js_wrapper(HTML/HTMLAnchorElement)
 | |
| libweb_js_wrapper(HTML/HTMLAreaElement)
 | |
| libweb_js_wrapper(HTML/HTMLAudioElement)
 | |
| libweb_js_wrapper(HTML/HTMLBaseElement)
 | |
| libweb_js_wrapper(HTML/HTMLBodyElement)
 | |
| libweb_js_wrapper(HTML/HTMLBRElement)
 | |
| libweb_js_wrapper(HTML/HTMLButtonElement)
 | |
| libweb_js_wrapper(HTML/HTMLCanvasElement)
 | |
| libweb_js_wrapper(HTML/HTMLDataElement)
 | |
| libweb_js_wrapper(HTML/HTMLDataListElement)
 | |
| libweb_js_wrapper(HTML/HTMLDetailsElement)
 | |
| libweb_js_wrapper(HTML/HTMLDialogElement)
 | |
| libweb_js_wrapper(HTML/HTMLDirectoryElement)
 | |
| libweb_js_wrapper(HTML/HTMLDivElement)
 | |
| libweb_js_wrapper(HTML/HTMLDListElement)
 | |
| libweb_js_wrapper(HTML/HTMLElement)
 | |
| libweb_js_wrapper(HTML/HTMLEmbedElement)
 | |
| libweb_js_wrapper(HTML/HTMLFieldSetElement)
 | |
| libweb_js_wrapper(HTML/HTMLFontElement)
 | |
| libweb_js_wrapper(HTML/HTMLFormElement)
 | |
| libweb_js_wrapper(HTML/HTMLFrameElement)
 | |
| libweb_js_wrapper(HTML/HTMLFrameSetElement)
 | |
| libweb_js_wrapper(HTML/HTMLHeadElement)
 | |
| libweb_js_wrapper(HTML/HTMLHeadingElement)
 | |
| libweb_js_wrapper(HTML/HTMLHRElement)
 | |
| libweb_js_wrapper(HTML/HTMLHtmlElement)
 | |
| libweb_js_wrapper(HTML/HTMLIFrameElement)
 | |
| libweb_js_wrapper(HTML/HTMLImageElement)
 | |
| libweb_js_wrapper(HTML/HTMLInputElement)
 | |
| libweb_js_wrapper(HTML/HTMLLabelElement)
 | |
| libweb_js_wrapper(HTML/HTMLLegendElement)
 | |
| libweb_js_wrapper(HTML/HTMLLIElement)
 | |
| libweb_js_wrapper(HTML/HTMLLinkElement)
 | |
| libweb_js_wrapper(HTML/HTMLMapElement)
 | |
| libweb_js_wrapper(HTML/HTMLMarqueeElement)
 | |
| libweb_js_wrapper(HTML/HTMLMediaElement)
 | |
| libweb_js_wrapper(HTML/HTMLMenuElement)
 | |
| libweb_js_wrapper(HTML/HTMLMetaElement)
 | |
| libweb_js_wrapper(HTML/HTMLMeterElement)
 | |
| libweb_js_wrapper(HTML/HTMLModElement)
 | |
| libweb_js_wrapper(HTML/HTMLObjectElement)
 | |
| libweb_js_wrapper(HTML/HTMLOListElement)
 | |
| libweb_js_wrapper(HTML/HTMLOptGroupElement)
 | |
| libweb_js_wrapper(HTML/HTMLOptionElement)
 | |
| libweb_js_wrapper(HTML/HTMLOutputElement)
 | |
| libweb_js_wrapper(HTML/HTMLParagraphElement)
 | |
| libweb_js_wrapper(HTML/HTMLParamElement)
 | |
| libweb_js_wrapper(HTML/HTMLPictureElement)
 | |
| libweb_js_wrapper(HTML/HTMLPreElement)
 | |
| libweb_js_wrapper(HTML/HTMLProgressElement)
 | |
| libweb_js_wrapper(HTML/HTMLQuoteElement)
 | |
| libweb_js_wrapper(HTML/HTMLScriptElement)
 | |
| libweb_js_wrapper(HTML/HTMLSelectElement)
 | |
| libweb_js_wrapper(HTML/HTMLSlotElement)
 | |
| libweb_js_wrapper(HTML/HTMLSourceElement)
 | |
| libweb_js_wrapper(HTML/HTMLSpanElement)
 | |
| libweb_js_wrapper(HTML/HTMLStyleElement)
 | |
| libweb_js_wrapper(HTML/HTMLTableCaptionElement)
 | |
| libweb_js_wrapper(HTML/HTMLTableCellElement)
 | |
| libweb_js_wrapper(HTML/HTMLTableColElement)
 | |
| libweb_js_wrapper(HTML/HTMLTableElement)
 | |
| libweb_js_wrapper(HTML/HTMLTableRowElement)
 | |
| libweb_js_wrapper(HTML/HTMLTableSectionElement)
 | |
| libweb_js_wrapper(HTML/HTMLTemplateElement)
 | |
| libweb_js_wrapper(HTML/HTMLTextAreaElement)
 | |
| libweb_js_wrapper(HTML/HTMLTimeElement)
 | |
| libweb_js_wrapper(HTML/HTMLTitleElement)
 | |
| libweb_js_wrapper(HTML/HTMLTrackElement)
 | |
| libweb_js_wrapper(HTML/HTMLUListElement)
 | |
| libweb_js_wrapper(HTML/HTMLUnknownElement)
 | |
| libweb_js_wrapper(HTML/HTMLVideoElement)
 | |
| libweb_js_wrapper(HTML/ImageData)
 | |
| libweb_js_wrapper(HTML/SubmitEvent)
 | |
| libweb_js_wrapper(HighResolutionTime/Performance)
 | |
| libweb_js_wrapper(SVG/SVGElement)
 | |
| libweb_js_wrapper(SVG/SVGGeometryElement)
 | |
| libweb_js_wrapper(SVG/SVGGraphicsElement)
 | |
| libweb_js_wrapper(SVG/SVGPathElement)
 | |
| libweb_js_wrapper(SVG/SVGSVGElement)
 | |
| libweb_js_wrapper(UIEvents/MouseEvent)
 | |
| libweb_js_wrapper(UIEvents/UIEvent)
 | |
| 
 | |
| get_property(WRAPPER_SOURCES GLOBAL PROPERTY wrapper_sources)
 | |
| set(SOURCES ${SOURCES} ${WRAPPER_SOURCES})
 | |
| 
 | |
| add_custom_command(
 | |
|     OUTPUT CSS/PropertyID.h
 | |
|     COMMAND ${write_if_different} CSS/PropertyID.h CodeGenerators/Generate_CSS_PropertyID_h ${CMAKE_CURRENT_SOURCE_DIR}/CSS/Properties.json
 | |
|     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 ${write_if_different} CSS/PropertyID.cpp CodeGenerators/Generate_CSS_PropertyID_cpp ${CMAKE_CURRENT_SOURCE_DIR}/CSS/Properties.json
 | |
|     VERBATIM
 | |
|     DEPENDS Generate_CSS_PropertyID_cpp
 | |
|     MAIN_DEPENDENCY CSS/Properties.json
 | |
| )
 | |
| 
 | |
| add_custom_command(
 | |
|     OUTPUT CSS/ValueID.h
 | |
|     COMMAND ${write_if_different} CSS/ValueID.h CodeGenerators/Generate_CSS_ValueID_h ${CMAKE_CURRENT_SOURCE_DIR}/CSS/Identifiers.json
 | |
|     VERBATIM
 | |
|     DEPENDS Generate_CSS_ValueID_h
 | |
|     MAIN_DEPENDENCY CSS/Identifiers.json
 | |
| )
 | |
| add_custom_target(generate_ValueID.h DEPENDS CSS/ValueID.h)
 | |
| 
 | |
| add_custom_command(
 | |
|     OUTPUT CSS/ValueID.cpp
 | |
|     COMMAND /bin/mkdir -p CSS
 | |
|     COMMAND ${write_if_different} CSS/ValueID.cpp CodeGenerators/Generate_CSS_ValueID_cpp ${CMAKE_CURRENT_SOURCE_DIR}/CSS/Identifiers.json
 | |
|     VERBATIM
 | |
|     DEPENDS Generate_CSS_ValueID_cpp
 | |
|     MAIN_DEPENDENCY CSS/Identifiers.json
 | |
| )
 | |
| 
 | |
| add_custom_command(
 | |
|     OUTPUT CSS/DefaultStyleSheetSource.cpp
 | |
|     COMMAND ${write_if_different} CSS/DefaultStyleSheetSource.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Scripts/GenerateStyleSheetSource.sh default_stylesheet_source ${CMAKE_CURRENT_SOURCE_DIR}/CSS/Default.css
 | |
|     VERBATIM
 | |
|     DEPENDS Scripts/GenerateStyleSheetSource.sh
 | |
|     MAIN_DEPENDENCY CSS/Default.css
 | |
| )
 | |
| 
 | |
| add_custom_command(
 | |
|     OUTPUT CSS/QuirksModeStyleSheetSource.cpp
 | |
|     COMMAND ${write_if_different} CSS/QuirksModeStyleSheetSource.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Scripts/GenerateStyleSheetSource.sh quirks_mode_stylesheet_source ${CMAKE_CURRENT_SOURCE_DIR}/CSS/QuirksMode.css
 | |
|     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)
 | |
| 
 | |
| add_subdirectory(DumpLayoutTree)
 |