include(libweb_generators)

set(SOURCES
    Bindings/AudioConstructor.cpp
    Bindings/CSSNamespace.cpp
    Bindings/FetchMethod.cpp
    Bindings/HostDefined.cpp
    Bindings/ImageConstructor.cpp
    Bindings/Intrinsics.cpp
    Bindings/LegacyPlatformObject.cpp
    Bindings/LocationConstructor.cpp
    Bindings/LocationObject.cpp
    Bindings/MainThreadVM.cpp
    Bindings/OptionConstructor.cpp
    Bindings/PlatformObject.cpp
    Bindings/WindowConstructor.cpp
    Crypto/Crypto.cpp
    Crypto/SubtleCrypto.cpp
    CSS/Angle.cpp
    CSS/Clip.cpp
    CSS/CSSConditionRule.cpp
    CSS/CSSGroupingRule.cpp
    CSS/CSSImportRule.cpp
    CSS/CSSFontFaceRule.cpp
    CSS/CSSMediaRule.cpp
    CSS/CSSRule.cpp
    CSS/CSSRuleList.cpp
    CSS/CSSStyleDeclaration.cpp
    CSS/CSSStyleRule.cpp
    CSS/CSSStyleSheet.cpp
    CSS/CSSSupportsRule.cpp
    CSS/Display.cpp
    CSS/FontFace.cpp
    CSS/Frequency.cpp
    CSS/GridTrackPlacement.cpp
    CSS/GridTrackSize.cpp
    CSS/Length.cpp
    CSS/LengthBox.cpp
    CSS/MediaList.cpp
    CSS/MediaQuery.cpp
    CSS/MediaQueryList.cpp
    CSS/MediaQueryListEvent.cpp
    CSS/Parser/Block.cpp
    CSS/Parser/ComponentValue.cpp
    CSS/Parser/Declaration.cpp
    CSS/Parser/DeclarationOrAtRule.cpp
    CSS/Parser/Function.cpp
    CSS/Parser/Parser.cpp
    CSS/Parser/Rule.cpp
    CSS/Parser/Token.cpp
    CSS/Parser/Tokenizer.cpp
    CSS/Percentage.cpp
    CSS/PreferredColorScheme.cpp
    CSS/Ratio.cpp
    CSS/Resolution.cpp
    CSS/ResolvedCSSStyleDeclaration.cpp
    CSS/Screen.cpp
    CSS/Selector.cpp
    CSS/SelectorEngine.cpp
    CSS/Serialize.cpp
    CSS/Size.cpp
    CSS/StyleComputer.cpp
    CSS/StyleProperties.cpp
    CSS/StyleSheet.cpp
    CSS/StyleSheetList.cpp
    CSS/StyleValue.cpp
    CSS/Supports.cpp
    CSS/SyntaxHighlighter/SyntaxHighlighter.cpp
    CSS/Time.cpp
    Cookie/Cookie.cpp
    Cookie/ParsedCookie.cpp
    DOM/AbortController.cpp
    DOM/AbortSignal.cpp
    DOM/AbstractRange.cpp
    DOM/Attr.cpp
    DOM/Attr.idl
    DOM/CDATASection.cpp
    DOM/CharacterData.cpp
    DOM/CharacterData.idl
    DOM/Comment.cpp
    DOM/CustomEvent.cpp
    DOM/DOMEventListener.cpp
    DOM/DOMImplementation.cpp
    DOM/DOMTokenList.cpp
    DOM/DOMTokenList.idl
    DOM/Document.cpp
    DOM/DocumentFragment.cpp
    DOM/DocumentLoadEventDelayer.cpp
    DOM/DocumentType.cpp
    DOM/Element.cpp
    DOM/ElementFactory.cpp
    DOM/Event.cpp
    DOM/EventDispatcher.cpp
    DOM/EventTarget.cpp
    DOM/HTMLCollection.cpp
    DOM/IDLEventListener.cpp
    DOM/LiveNodeList.cpp
    DOM/MutationObserver.cpp
    DOM/MutationRecord.cpp
    DOM/MutationType.cpp
    DOM/NamedNodeMap.cpp
    DOM/Node.cpp
    DOM/NodeFilter.cpp
    DOM/NodeIterator.cpp
    DOM/NodeList.cpp
    DOM/NodeOperations.cpp
    DOM/ParentNode.cpp
    DOM/Position.cpp
    DOM/ProcessingInstruction.cpp
    DOM/QualifiedName.cpp
    DOM/Range.cpp
    DOM/ShadowRoot.cpp
    DOM/StaticNodeList.cpp
    DOM/StaticRange.cpp
    DOM/Text.cpp
    DOM/Text.idl
    DOM/TreeWalker.cpp
    DOMParsing/InnerHTML.cpp
    DOMParsing/XMLSerializer.cpp
    Dump.cpp
    Encoding/TextDecoder.cpp
    Encoding/TextEncoder.cpp
    Fetch/Body.cpp
    Fetch/BodyInit.cpp
    Fetch/Enums.cpp
    Fetch/Fetching/Checks.cpp
    Fetch/Fetching/Fetching.cpp
    Fetch/Fetching/PendingResponse.cpp
    Fetch/Fetching/RefCountedFlag.cpp
    Fetch/FetchMethod.cpp
    Fetch/Headers.cpp
    Fetch/HeadersIterator.cpp
    Fetch/Infrastructure/ConnectionTimingInfo.cpp
    Fetch/Infrastructure/FetchAlgorithms.cpp
    Fetch/Infrastructure/FetchController.cpp
    Fetch/Infrastructure/FetchParams.cpp
    Fetch/Infrastructure/FetchTimingInfo.cpp
    Fetch/Infrastructure/HTTP.cpp
    Fetch/Infrastructure/HTTP/Bodies.cpp
    Fetch/Infrastructure/HTTP/Headers.cpp
    Fetch/Infrastructure/HTTP/Methods.cpp
    Fetch/Infrastructure/HTTP/Requests.cpp
    Fetch/Infrastructure/HTTP/Responses.cpp
    Fetch/Infrastructure/HTTP/Statuses.cpp
    Fetch/Infrastructure/MimeTypeBlocking.cpp
    Fetch/Infrastructure/NoSniffBlocking.cpp
    Fetch/Infrastructure/PortBlocking.cpp
    Fetch/Infrastructure/Task.cpp
    Fetch/Infrastructure/URL.cpp
    Fetch/Request.cpp
    Fetch/Response.cpp
    FileAPI/Blob.cpp
    FileAPI/File.cpp
    FileAPI/FileList.cpp
    FontCache.cpp
    Geometry/DOMPoint.cpp
    Geometry/DOMPointReadOnly.cpp
    Geometry/DOMRect.cpp
    Geometry/DOMRectList.cpp
    Geometry/DOMRectReadOnly.cpp
    HTML/AttributeNames.cpp
    HTML/BrowsingContext.cpp
    HTML/BrowsingContextContainer.cpp
    HTML/BrowsingContextGroup.cpp
    HTML/Canvas/CanvasDrawImage.cpp
    HTML/Canvas/CanvasPath.cpp
    HTML/Canvas/CanvasState.cpp
    HTML/CanvasGradient.cpp
    HTML/CanvasRenderingContext2D.cpp
    HTML/CloseEvent.cpp
    HTML/CrossOrigin/AbstractOperations.cpp
    HTML/CrossOrigin/Reporting.cpp
    HTML/DOMParser.cpp
    HTML/DOMStringMap.cpp
    HTML/ErrorEvent.cpp
    HTML/EventHandler.cpp
    HTML/EventLoop/EventLoop.cpp
    HTML/EventLoop/Task.cpp
    HTML/EventLoop/TaskQueue.cpp
    HTML/EventNames.cpp
    HTML/Focus.cpp
    HTML/FormAssociatedElement.cpp
    HTML/GlobalEventHandlers.cpp
    HTML/History.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/HTMLHyperlinkElementUtils.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/HTMLOptionsCollection.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/MessageChannel.cpp
    HTML/MessageEvent.cpp
    HTML/MessagePort.cpp
    HTML/Navigator.cpp
    HTML/NavigatorID.cpp
    HTML/PageTransitionEvent.cpp
    HTML/Parser/Entities.cpp
    HTML/Parser/HTMLEncodingDetection.cpp
    HTML/Parser/HTMLParser.cpp
    HTML/Parser/HTMLToken.cpp
    HTML/Parser/HTMLTokenizer.cpp
    HTML/Parser/ListOfActiveFormattingElements.cpp
    HTML/Parser/StackOfOpenElements.cpp
    HTML/Path2D.cpp
    HTML/PromiseRejectionEvent.cpp
    HTML/Scripting/ClassicScript.cpp
    HTML/Scripting/Environments.cpp
    HTML/Scripting/ExceptionReporter.cpp
    HTML/Scripting/Fetching.cpp
    HTML/Scripting/ModuleMap.cpp
    HTML/Scripting/ModuleScript.cpp
    HTML/Scripting/Script.cpp
    HTML/Scripting/WindowEnvironmentSettingsObject.cpp
    HTML/Storage.cpp
    HTML/SubmitEvent.cpp
    HTML/SyntaxHighlighter/SyntaxHighlighter.cpp
    HTML/TagNames.cpp
    HTML/TextMetrics.cpp
    HTML/Timer.cpp
    HTML/Window.cpp
    HTML/WindowEventHandlers.cpp
    HTML/WindowProxy.cpp
    HTML/Worker.cpp
    HTML/WorkerDebugConsoleClient.cpp
    HTML/WorkerGlobalScope.cpp
    HTML/WorkerLocation.cpp
    HTML/WorkerNavigator.cpp
    HighResolutionTime/Performance.cpp
    HighResolutionTime/TimeOrigin.cpp
    Infra/ByteSequences.cpp
    Infra/JSON.cpp
    Infra/Strings.cpp
    IntersectionObserver/IntersectionObserver.cpp
    Layout/AvailableSpace.cpp
    Layout/BlockContainer.cpp
    Layout/BlockFormattingContext.cpp
    Layout/Box.cpp
    Layout/BoxModelMetrics.cpp
    Layout/BreakNode.cpp
    Layout/ButtonBox.cpp
    Layout/CanvasBox.cpp
    Layout/CheckBox.cpp
    Layout/FlexFormattingContext.cpp
    Layout/FormattingContext.cpp
    Layout/FrameBox.cpp
    Layout/GridFormattingContext.cpp
    Layout/ImageBox.cpp
    Layout/InitialContainingBlock.cpp
    Layout/InlineFormattingContext.cpp
    Layout/InlineLevelIterator.cpp
    Layout/InlineNode.cpp
    Layout/Label.cpp
    Layout/LabelableNode.cpp
    Layout/LayoutPosition.cpp
    Layout/LayoutState.cpp
    Layout/LineBox.cpp
    Layout/LineBoxFragment.cpp
    Layout/LineBuilder.cpp
    Layout/ListItemBox.cpp
    Layout/ListItemMarkerBox.cpp
    Layout/Node.cpp
    Layout/Progress.cpp
    Layout/RadioButton.cpp
    Layout/ReplacedBox.cpp
    Layout/SVGBox.cpp
    Layout/SVGFormattingContext.cpp
    Layout/SVGGeometryBox.cpp
    Layout/SVGGraphicsBox.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
    Loader/ContentFilter.cpp
    Loader/FileRequest.cpp
    Loader/FrameLoader.cpp
    Loader/ImageLoader.cpp
    Loader/ImageResource.cpp
    Loader/LoadRequest.cpp
    Loader/ProxyMappings.cpp
    Loader/Resource.cpp
    Loader/ResourceLoader.cpp
    MimeSniff/MimeType.cpp
    Namespace.cpp
    NavigationTiming/PerformanceTiming.cpp
    Page/EditEventHandler.cpp
    Page/EventHandler.cpp
    Page/Page.cpp
    Painting/BackgroundPainting.cpp
    Painting/BorderPainting.cpp
    Painting/BorderRadiusCornerClipper.cpp
    Painting/ButtonPaintable.cpp
    Painting/CanvasPaintable.cpp
    Painting/CheckBoxPaintable.cpp
    Painting/GradientPainting.cpp
    Painting/FilterPainting.cpp
    Painting/ImagePaintable.cpp
    Painting/InlinePaintable.cpp
    Painting/LabelablePaintable.cpp
    Painting/MarkerPaintable.cpp
    Painting/NestedBrowsingContextPaintable.cpp
    Painting/PaintContext.cpp
    Painting/Paintable.cpp
    Painting/PaintableBox.cpp
    Painting/ProgressPaintable.cpp
    Painting/RadioButtonPaintable.cpp
    Painting/SVGGeometryPaintable.cpp
    Painting/SVGGraphicsPaintable.cpp
    Painting/SVGPaintable.cpp
    Painting/SVGSVGPaintable.cpp
    Painting/ShadowPainting.cpp
    Painting/StackingContext.cpp
    Painting/TextPaintable.cpp
    Platform/EventLoopPlugin.cpp
    Platform/EventLoopPluginSerenity.cpp
    Platform/FontPlugin.cpp
    Platform/FontPluginSerenity.cpp
    Platform/ImageCodecPlugin.cpp
    Platform/Timer.cpp
    Platform/TimerSerenity.cpp
    ReferrerPolicy/AbstractOperations.cpp
    RequestIdleCallback/IdleDeadline.cpp
    ResizeObserver/ResizeObserver.cpp
    SecureContexts/AbstractOperations.cpp
    Streams/AbstractOperations.cpp
    Streams/ReadableStream.cpp
    SVG/AttributeNames.cpp
    SVG/AttributeParser.cpp
    SVG/SVGAnimatedLength.cpp
    SVG/SVGClipPathElement.cpp
    SVG/SVGDefsElement.cpp
    SVG/SVGElement.cpp
    SVG/SVGGElement.cpp
    SVG/SVGGeometryElement.cpp
    SVG/SVGGraphicsElement.cpp
    SVG/SVGPathElement.cpp
    SVG/SVGCircleElement.cpp
    SVG/SVGEllipseElement.cpp
    SVG/SVGForeignObjectElement.cpp
    SVG/SVGLength.cpp
    SVG/SVGLineElement.cpp
    SVG/SVGPolygonElement.cpp
    SVG/SVGPolylineElement.cpp
    SVG/SVGRectElement.cpp
    SVG/SVGSVGElement.cpp
    SVG/SVGTextContentElement.cpp
    SVG/TagNames.cpp
    SVG/ViewBox.cpp
    Selection/Selection.cpp
    UIEvents/EventNames.cpp
    UIEvents/FocusEvent.cpp
    UIEvents/KeyboardEvent.cpp
    UIEvents/MouseEvent.cpp
    UIEvents/UIEvent.cpp
    UIEvents/WheelEvent.cpp
    URL/URL.cpp
    URL/URLSearchParams.cpp
    URL/URLSearchParamsIterator.cpp
    WebAssembly/WebAssemblyInstanceConstructor.cpp
    WebAssembly/WebAssemblyInstanceObject.cpp
    WebAssembly/WebAssemblyInstanceObjectPrototype.cpp
    WebAssembly/WebAssemblyMemoryConstructor.cpp
    WebAssembly/WebAssemblyMemoryPrototype.cpp
    WebAssembly/WebAssemblyModuleConstructor.cpp
    WebAssembly/WebAssemblyModuleObject.cpp
    WebAssembly/WebAssemblyObject.cpp
    WebAssembly/WebAssemblyTableConstructor.cpp
    WebAssembly/WebAssemblyTableObject.cpp
    WebAssembly/WebAssemblyTablePrototype.cpp
    WebDriver/Client.cpp
    WebDriver/ElementLocationStrategies.cpp
    WebDriver/Error.cpp
    WebDriver/ExecuteScript.cpp
    WebDriver/Response.cpp
    WebDriver/Screenshot.cpp
    WebDriver/TimeoutsConfiguration.cpp
    WebGL/WebGLContextAttributes.cpp
    WebGL/WebGLContextEvent.cpp
    WebGL/WebGLRenderingContext.cpp
    WebGL/WebGLRenderingContextBase.cpp
    WebIDL/AbstractOperations.cpp
    WebIDL/CallbackType.cpp
    WebIDL/DOMException.cpp
    WebIDL/OverloadResolution.cpp
    WebIDL/Promise.cpp
    WebSockets/WebSocket.cpp
    XHR/EventNames.cpp
    XHR/ProgressEvent.cpp
    XHR/XMLHttpRequest.cpp
    XHR/XMLHttpRequestEventTarget.cpp
    XML/XMLDocumentBuilder.cpp
)

generate_css_implementation()

set(GENERATED_SOURCES
    CSS/DefaultStyleSheetSource.cpp
    CSS/Enums.cpp
    CSS/MediaFeatureID.cpp
    CSS/PropertyID.cpp
    CSS/QuirksModeStyleSheetSource.cpp
    CSS/TransformFunctions.cpp
    CSS/ValueID.cpp
)

serenity_lib(LibWeb web)

# NOTE: We link with LibSoftGPU here instead of lazy loading it via dlopen() so that we do not have to unveil the library and pledge prot_exec.
target_link_libraries(LibWeb PRIVATE LibCore LibCrypto LibJS LibMarkdown LibHTTP LibGemini LibGL LibGUI LibGfx LibIPC LibLocale LibRegex LibSoftGPU LibSyntax LibTextCodec LibUnicode LibWasm LibXML LibIDL)
link_with_locale_data(LibWeb)

generate_js_bindings(LibWeb)

# Note: If you're looking for the calls to "libweb_js_bindings()",
# they have been moved to "idl_files.cmake"
