pkg_check_modules(GTK4 REQUIRED IMPORTED_TARGET gtk4) pkg_check_modules(LIBADWAITA REQUIRED IMPORTED_TARGET libadwaita-1>=1.4) add_executable(ladybird main.cpp) find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED) set(GTK_UI_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/Resources/browser-window.ui" "${CMAKE_CURRENT_SOURCE_DIR}/Resources/list-popover.ui" "${CMAKE_CURRENT_SOURCE_DIR}/Resources/location-entry.ui" ) set(GTK_GRESOURCE_XML "${CMAKE_CURRENT_SOURCE_DIR}/Resources/resources.gresource.xml") set(GTK_GRESOURCE_SOURCE "${CMAKE_CURRENT_BINARY_DIR}/gtk-ui-resources.cpp") add_custom_command( OUTPUT "${GTK_GRESOURCE_SOURCE}" DEPENDS "${GTK_GRESOURCE_XML}" ${GTK_UI_RESOURCES} COMMAND "${GLIB_COMPILE_RESOURCES}" "${GTK_GRESOURCE_XML}" --sourcedir "${CMAKE_CURRENT_SOURCE_DIR}/Resources" --target "${GTK_GRESOURCE_SOURCE}" --generate-source VERBATIM ) add_custom_target(gtk_ui_resources DEPENDS "${GTK_GRESOURCE_SOURCE}") target_sources(ladybird PRIVATE Application.cpp BrowserWindow.cpp Dialogs.cpp Events.cpp EventLoopImplementationGtk.cpp Menu.cpp Tab.cpp WebContentView.cpp Widgets/LadybirdBrowserWindow.cpp Widgets/LadybirdLocationEntry.cpp Widgets/LadybirdWebView.cpp "${GTK_GRESOURCE_SOURCE}" ) target_link_libraries(ladybird PRIVATE PkgConfig::GTK4 PkgConfig::LIBADWAITA) add_dependencies(ladybird gtk_ui_resources) create_ladybird_bundle(ladybird)