123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557 |
- import("//Ladybird/compile_qt_resource_file.gni")
- import("//Ladybird/enable_appkit.gni")
- import("//Ladybird/enable_qt.gni")
- import("//Ladybird/link_qt.gni")
- import("//Ladybird/moc_qt_objects.gni")
- group("Ladybird") {
- if (current_os == "mac") {
- deps = [ ":Ladybird.app" ]
- } else {
- deps = [ ":ladybird_executable" ]
- }
- }
- moc_qt_objects("generate_moc") {
- sources = [
- "Qt/Application.h",
- "Qt/AutoComplete.h",
- "Qt/BrowserWindow.h",
- "Qt/EventLoopImplementationQtEventTarget.h",
- "Qt/FindInPageWidget.h",
- "Qt/InspectorWidget.h",
- "Qt/LocationEdit.h",
- "Qt/Settings.h",
- "Qt/SettingsDialog.h",
- "Qt/Tab.h",
- "Qt/TabBar.h",
- "Qt/TaskManagerWindow.h",
- "Qt/WebContentView.h",
- ]
- }
- compile_qt_resource_file("compile_resource_file") {
- sources = [ "Qt/ladybird.qrc" ]
- }
- link_qt("ladybird_qt_components") {
- qt_components = [
- "Core",
- "Gui",
- "Widgets",
- "Network",
- ]
- }
- config("ladybird_config") {
- include_dirs = [
- "//Userland",
- "//Userland/Applications",
- "//Userland/Services",
- ]
- }
- ladybird_helper_processes = [
- "ImageDecoder",
- "RequestServer",
- "WebContent",
- "WebWorker",
- ]
- executable("ladybird_executable") {
- configs += [ ":ladybird_config" ]
- data_deps = ladybird_helper_processes
- deps = [
- "//AK",
- "//Userland/Libraries/LibCore",
- "//Userland/Libraries/LibFileSystem",
- "//Userland/Libraries/LibGfx",
- "//Userland/Libraries/LibIPC",
- "//Userland/Libraries/LibImageDecoderClient",
- "//Userland/Libraries/LibJS",
- "//Userland/Libraries/LibMain",
- "//Userland/Libraries/LibRequests",
- "//Userland/Libraries/LibURL",
- "//Userland/Libraries/LibWeb",
- "//Userland/Libraries/LibWebView",
- ]
- sources = [
- "HelperProcess.cpp",
- "Utilities.cpp",
- ]
- if (enable_qt) {
- configs += [ ":ladybird_qt_components" ]
- sources += [
- "Qt/Application.cpp",
- "Qt/AutoComplete.cpp",
- "Qt/BrowserWindow.cpp",
- "Qt/EventLoopImplementationQt.cpp",
- "Qt/EventLoopImplementationQtEventTarget.cpp",
- "Qt/FindInPageWidget.cpp",
- "Qt/Icon.cpp",
- "Qt/InspectorWidget.cpp",
- "Qt/LocationEdit.cpp",
- "Qt/Settings.cpp",
- "Qt/SettingsDialog.cpp",
- "Qt/StringUtils.cpp",
- "Qt/TVGIconEngine.cpp",
- "Qt/Tab.cpp",
- "Qt/TabBar.cpp",
- "Qt/TaskManagerWindow.cpp",
- "Qt/WebContentView.cpp",
- "Qt/main.cpp",
- ]
- sources += get_target_outputs(":generate_moc") +
- get_target_outputs(":compile_resource_file")
- deps += [
- ":compile_resource_file",
- ":generate_moc",
- ]
- } else if (enable_appkit) {
- sources += [
- "AppKit/Application/Application.mm",
- "AppKit/Application/ApplicationDelegate.mm",
- "AppKit/Application/EventLoopImplementation.mm",
- "AppKit/UI/Event.mm",
- "AppKit/UI/Inspector.mm",
- "AppKit/UI/InspectorController.mm",
- "AppKit/UI/LadybirdWebView.mm",
- "AppKit/UI/LadybirdWebViewBridge.cpp",
- "AppKit/UI/Palette.mm",
- "AppKit/UI/SearchPanel.mm",
- "AppKit/UI/Tab.mm",
- "AppKit/UI/TabController.mm",
- "AppKit/UI/TaskManager.mm",
- "AppKit/UI/TaskManagerController.mm",
- "AppKit/Utilities/Conversions.mm",
- "AppKit/main.mm",
- ]
- deps += [ "//Userland/Libraries/LibUnicode" ]
- cflags_objcc = [
- "-fobjc-arc",
- "-Wno-deprecated-anon-enum-enum-conversion", # Required for CGImageCreate
- ]
- include_dirs = [
- "AppKit",
- "//Userland",
- ]
- frameworks = [
- "Cocoa.framework",
- "UniformTypeIdentifiers.framework",
- ]
- }
- if (current_os == "mac") {
- sources += [ "MachPortServer.cpp" ]
- deps += [ "//Userland/Libraries/LibThreading" ]
- } else {
- data_deps += [
- ":ladybird_copy_cacert",
- ":ladybird_copy_config_resources",
- ":ladybird_copy_fonts",
- ":ladybird_copy_icons_128x128",
- ":ladybird_copy_icons_16x16",
- ":ladybird_copy_icons_32x32",
- ":ladybird_copy_icons_48x48",
- ":ladybird_copy_icons_browser",
- ":ladybird_copy_themes",
- ":ladybird_copy_web_resources",
- ":ladybird_copy_web_templates",
- ]
- }
- output_name = "Ladybird"
- }
- executable("headless-browser") {
- include_dirs = [ "//Userland/Services" ]
- configs += [ ":ladybird_config" ]
- deps = [
- "//AK",
- "//Userland/Libraries/LibCore",
- "//Userland/Libraries/LibCrypto",
- "//Userland/Libraries/LibDiff",
- "//Userland/Libraries/LibFileSystem",
- "//Userland/Libraries/LibGfx",
- "//Userland/Libraries/LibHTTP",
- "//Userland/Libraries/LibIPC",
- "//Userland/Libraries/LibImageDecoderClient",
- "//Userland/Libraries/LibJS",
- "//Userland/Libraries/LibMain",
- "//Userland/Libraries/LibRequests",
- "//Userland/Libraries/LibTLS",
- "//Userland/Libraries/LibURL",
- "//Userland/Libraries/LibWeb",
- "//Userland/Libraries/LibWebSocket",
- "//Userland/Libraries/LibWebView",
- ]
- data_deps = ladybird_helper_processes
- sources = [
- "//Userland/Utilities/headless-browser.cpp",
- "HelperProcess.cpp",
- "Utilities.cpp",
- ]
- }
- fonts = [
- "//Base/res/fonts/SerenitySans-Regular.ttf",
- "//Base/res/fonts/NotoEmoji.ttf",
- ]
- icons_16x16 = [
- "//Base/res/icons/16x16/app-system-monitor.png",
- "//Base/res/icons/16x16/audio-volume-high.png",
- "//Base/res/icons/16x16/audio-volume-muted.png",
- "//Base/res/icons/16x16/close-tab.png",
- "//Base/res/icons/16x16/edit-copy.png",
- "//Base/res/icons/16x16/filetype-css.png",
- "//Base/res/icons/16x16/filetype-folder-open.png",
- "//Base/res/icons/16x16/filetype-html.png",
- "//Base/res/icons/16x16/filetype-image.png",
- "//Base/res/icons/16x16/filetype-sound.png",
- "//Base/res/icons/16x16/filetype-video.png",
- "//Base/res/icons/16x16/find.png",
- "//Base/res/icons/16x16/go-forward.png",
- "//Base/res/icons/16x16/history.png",
- "//Base/res/icons/16x16/layers.png",
- "//Base/res/icons/16x16/layout.png",
- "//Base/res/icons/16x16/network.png",
- "//Base/res/icons/16x16/new-tab.png",
- "//Base/res/icons/16x16/open-parent-directory.png",
- "//Base/res/icons/16x16/paste.png",
- "//Base/res/icons/16x16/pause.png",
- "//Base/res/icons/16x16/play.png",
- "//Base/res/icons/16x16/select-all.png",
- "//Base/res/icons/16x16/settings.png",
- "//Base/res/icons/16x16/spoof.png",
- "//Base/res/icons/16x16/trash-can.png",
- "//Base/res/icons/16x16/zoom-in.png",
- "//Base/res/icons/16x16/zoom-out.png",
- "//Base/res/icons/16x16/zoom-reset.png",
- ]
- icons_32x32 = [
- "//Base/res/icons/32x32/app-system-monitor.png",
- "//Base/res/icons/32x32/filetype-folder.png",
- "//Base/res/icons/32x32/filetype-unknown.png",
- "//Base/res/icons/32x32/msgbox-warning.png",
- ]
- icons_48x48 = [ "//Base/res/icons/48x48/app-browser.png" ]
- icons_128x128 = [
- "//Base/res/icons/128x128/app-browser.png",
- "//Base/res/icons/128x128/app-browser-dark.png",
- ]
- icons_browser = [
- "//Base/res/icons/browser/clear-cache.png",
- "//Base/res/icons/browser/cookie.png",
- "//Base/res/icons/browser/dom-tree.png",
- "//Base/res/icons/browser/local-storage.png",
- ]
- themes = [
- "//Base/res/themes/Default.ini",
- "//Base/res/themes/Dark.ini",
- ]
- web_resources = [
- "//Base/res/ladybird/about.html",
- "//Base/res/ladybird/inspector.css",
- "//Base/res/ladybird/inspector.html",
- "//Base/res/ladybird/inspector.js",
- "//Base/res/ladybird/newtab.html",
- ]
- web_templates = [
- "//Base/res/ladybird/templates/directory.html",
- "//Base/res/ladybird/templates/error.html",
- "//Base/res/ladybird/templates/version.html",
- ]
- cacert = [ "$root_build_dir/cacert.pem" ]
- config_resources = [
- "//Base/res/ladybird/default-config/BrowserAutoplayAllowlist.txt",
- "//Base/res/ladybird/default-config/BrowserContentFilters.txt",
- "//Base/res/ladybird/default-config/bookmarks.json",
- ]
- if (current_os != "mac") {
- copy("ladybird_copy_fonts") {
- sources = fonts
- outputs = [ "$root_out_dir/share/Lagom/fonts/{{source_file_part}}" ]
- }
- copy("ladybird_copy_icons_16x16") {
- sources = icons_16x16
- outputs = [ "$root_out_dir/share/Lagom/icons/16x16/{{source_file_part}}" ]
- }
- copy("ladybird_copy_icons_32x32") {
- sources = icons_32x32
- outputs = [ "$root_out_dir/share/Lagom/icons/32x32/{{source_file_part}}" ]
- }
- copy("ladybird_copy_icons_48x48") {
- sources = icons_48x48
- outputs = [ "$root_out_dir/share/Lagom/icons/48x48/{{source_file_part}}" ]
- }
- copy("ladybird_copy_icons_128x128") {
- sources = icons_128x128
- outputs = [ "$root_out_dir/share/Lagom/icons/128x128/{{source_file_part}}" ]
- }
- copy("ladybird_copy_icons_browser") {
- sources = icons_browser
- outputs = [ "$root_out_dir/share/Lagom/icons/browser/{{source_file_part}}" ]
- }
- copy("ladybird_copy_themes") {
- sources = themes
- outputs = [ "$root_out_dir/share/Lagom/themes/{{source_file_part}}" ]
- }
- copy("ladybird_copy_web_resources") {
- sources = web_resources
- outputs = [ "$root_out_dir/share/Lagom/ladybird/{{source_file_part}}" ]
- }
- copy("ladybird_copy_web_templates") {
- sources = web_templates
- outputs =
- [ "$root_out_dir/share/Lagom/ladybird/templates/{{source_file_part}}" ]
- }
- copy("ladybird_copy_cacert") {
- public_deps = [ "//Userland/Libraries/LibTLS:ca_certificates_download" ]
- sources = cacert
- outputs = [ "$root_out_dir/share/Lagom/ladybird/{{source_file_part}}" ]
- }
- copy("ladybird_copy_config_resources") {
- sources = config_resources
- outputs = [
- "$root_out_dir/share/Lagom/ladybird/default-config/{{source_file_part}}",
- ]
- }
- } else {
- # macOS bundle steps
- bundle_data("ladybird_bundle_info_plist") {
- sources = [ "Info.plist" ]
- outputs = [ "{{bundle_contents_dir}}/Info.plist" ]
- }
- bundle_data("ladybird_bundle_executables") {
- public_deps = [
- ":headless-browser",
- ":ladybird_executable",
- "ImageDecoder",
- "RequestServer",
- "WebContent",
- "WebDriver",
- "WebWorker",
- ]
- sources = [
- "$root_out_dir/bin/Ladybird",
- "$root_out_dir/bin/WebDriver",
- "$root_out_dir/bin/headless-browser",
- "$root_out_dir/libexec/ImageDecoder",
- "$root_out_dir/libexec/RequestServer",
- "$root_out_dir/libexec/WebContent",
- "$root_out_dir/libexec/WebWorker",
- ]
- outputs = [ "{{bundle_executable_dir}}/{{source_file_part}}" ]
- }
- bundle_data("ladybird_bundle_libs") {
- public_deps = [
- "//AK",
- "//Userland/Libraries/LibCompress",
- "//Userland/Libraries/LibCore",
- "//Userland/Libraries/LibCrypto",
- "//Userland/Libraries/LibDiff",
- "//Userland/Libraries/LibFileSystem",
- "//Userland/Libraries/LibGfx",
- "//Userland/Libraries/LibHTTP",
- "//Userland/Libraries/LibIDL",
- "//Userland/Libraries/LibIPC",
- "//Userland/Libraries/LibImageDecoderClient",
- "//Userland/Libraries/LibJS",
- "//Userland/Libraries/LibLine",
- "//Userland/Libraries/LibMedia",
- "//Userland/Libraries/LibRIFF",
- "//Userland/Libraries/LibRegex",
- "//Userland/Libraries/LibRequests",
- "//Userland/Libraries/LibSyntax",
- "//Userland/Libraries/LibTLS",
- "//Userland/Libraries/LibTextCodec",
- "//Userland/Libraries/LibThreading",
- "//Userland/Libraries/LibURL",
- "//Userland/Libraries/LibWasm",
- "//Userland/Libraries/LibWeb",
- "//Userland/Libraries/LibWebSocket",
- "//Userland/Libraries/LibWebView",
- "//Userland/Libraries/LibXML",
- ]
- sources = [
- "$root_out_dir/lib/liblagom-ak.dylib",
- "$root_out_dir/lib/liblagom-compress.dylib",
- "$root_out_dir/lib/liblagom-core-minimal.dylib",
- "$root_out_dir/lib/liblagom-core.dylib",
- "$root_out_dir/lib/liblagom-crypto.dylib",
- "$root_out_dir/lib/liblagom-diff.dylib",
- "$root_out_dir/lib/liblagom-filesystem.dylib",
- "$root_out_dir/lib/liblagom-gfx.dylib",
- "$root_out_dir/lib/liblagom-http.dylib",
- "$root_out_dir/lib/liblagom-idl.dylib",
- "$root_out_dir/lib/liblagom-imagedecoderclient.dylib",
- "$root_out_dir/lib/liblagom-ipc.dylib",
- "$root_out_dir/lib/liblagom-js.dylib",
- "$root_out_dir/lib/liblagom-line.dylib",
- "$root_out_dir/lib/liblagom-media.dylib",
- "$root_out_dir/lib/liblagom-regex.dylib",
- "$root_out_dir/lib/liblagom-requests.dylib",
- "$root_out_dir/lib/liblagom-riff.dylib",
- "$root_out_dir/lib/liblagom-syntax.dylib",
- "$root_out_dir/lib/liblagom-textcodec.dylib",
- "$root_out_dir/lib/liblagom-threading.dylib",
- "$root_out_dir/lib/liblagom-tls.dylib",
- "$root_out_dir/lib/liblagom-url.dylib",
- "$root_out_dir/lib/liblagom-wasm.dylib",
- "$root_out_dir/lib/liblagom-web.dylib",
- "$root_out_dir/lib/liblagom-websocket.dylib",
- "$root_out_dir/lib/liblagom-webview.dylib",
- "$root_out_dir/lib/liblagom-xml.dylib",
- ]
- outputs = [ "{{bundle_contents_dir}}/lib/{{source_file_part}}" ]
- }
- bundle_data("ladybird_fonts") {
- sources = fonts
- outputs = [ "{{bundle_resources_dir}}/fonts/{{source_file_part}}" ]
- }
- bundle_data("ladybird_icons_16x16") {
- sources = icons_16x16
- outputs = [ "{{bundle_resources_dir}}/icons/16x16/{{source_file_part}}" ]
- }
- bundle_data("ladybird_icons_32x32") {
- sources = icons_32x32
- outputs = [ "{{bundle_resources_dir}}/icons/32x32/{{source_file_part}}" ]
- }
- bundle_data("ladybird_icons_48x48") {
- sources = icons_48x48
- outputs = [ "{{bundle_resources_dir}}/icons/48x48/{{source_file_part}}" ]
- }
- bundle_data("ladybird_icons_128x128") {
- sources = icons_128x128
- outputs = [ "{{bundle_resources_dir}}/icons/128x128/{{source_file_part}}" ]
- }
- bundle_data("ladybird_icons_browser") {
- sources = icons_browser
- outputs = [ "{{bundle_resources_dir}}/icons/browser/{{source_file_part}}" ]
- }
- bundle_data("ladybird_themes") {
- sources = themes
- outputs = [ "{{bundle_resources_dir}}/themes/{{source_file_part}}" ]
- }
- bundle_data("ladybird_web_resources") {
- sources = web_resources
- outputs = [ "{{bundle_resources_dir}}/ladybird/{{source_file_part}}" ]
- }
- bundle_data("ladybird_web_templates") {
- sources = web_templates
- outputs =
- [ "{{bundle_resources_dir}}/ladybird/templates/{{source_file_part}}" ]
- }
- bundle_data("ladybird_cacert") {
- public_deps = [ "//Userland/Libraries/LibTLS:ca_certificates_download" ]
- sources = cacert
- outputs = [ "{{bundle_resources_dir}}/ladybird/{{source_file_part}}" ]
- }
- bundle_data("ladybird_config_resources") {
- sources = config_resources
- outputs = [
- "{{bundle_resources_dir}}/ladybird/default-config/{{source_file_part}}",
- ]
- }
- action("ladybird_create_icon") {
- script = "//Meta/gn/build/invoke_process_with_args.py"
- icon_path = "//Ladybird/Icons/macos/app_icon.iconset"
- sources = [
- "$icon_path/icon_128x128.png",
- "$icon_path/icon_128x128@2x.png",
- "$icon_path/icon_16x16.png",
- "$icon_path/icon_16x16@2x.png",
- "$icon_path/icon_256x256.png",
- "$icon_path/icon_256x256@2x.png",
- "$icon_path/icon_32x32.png",
- "$icon_path/icon_32x32@2x.png",
- "$icon_path/icon_512x512.png",
- "$icon_path/icon_512x512@2x.png",
- ]
- outputs = [ "$target_gen_dir/app_icon.icns" ]
- args = [
- "iconutil",
- "--convert",
- "icns",
- rebase_path(icon_path, root_build_dir),
- "--output",
- rebase_path(outputs[0], root_build_dir),
- ]
- }
- bundle_data("ladybird_icon") {
- public_deps = [ ":ladybird_create_icon" ]
- sources = get_target_outputs(public_deps[0])
- outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
- }
- create_bundle("Ladybird.app") {
- product_type = "com.apple.product-type.application"
- bundle_root_dir = "$root_build_dir/$target_name"
- bundle_contents_dir = "$bundle_root_dir/Contents"
- bundle_resources_dir = "$bundle_contents_dir/Resources"
- bundle_executable_dir = "$bundle_contents_dir/MacOS"
- deps = [
- ":ladybird_bundle_executables",
- ":ladybird_bundle_info_plist",
- ":ladybird_bundle_libs",
- ":ladybird_cacert",
- ":ladybird_config_resources",
- ":ladybird_fonts",
- ":ladybird_icon",
- ":ladybird_icons_128x128",
- ":ladybird_icons_16x16",
- ":ladybird_icons_32x32",
- ":ladybird_icons_48x48",
- ":ladybird_icons_browser",
- ":ladybird_themes",
- ":ladybird_web_resources",
- ":ladybird_web_templates",
- ]
- }
- }
|