summaryrefslogtreecommitdiff
path: root/Ladybird/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Ladybird/CMakeLists.txt')
-rw-r--r--Ladybird/CMakeLists.txt61
1 files changed, 61 insertions, 0 deletions
diff --git a/Ladybird/CMakeLists.txt b/Ladybird/CMakeLists.txt
new file mode 100644
index 0000000000..e801b2c46b
--- /dev/null
+++ b/Ladybird/CMakeLists.txt
@@ -0,0 +1,61 @@
+cmake_minimum_required(VERSION 3.16...3.22)
+
+project(ladybird
+ VERSION 0.0.1
+ LANGUAGES CXX
+ DESCRIPTION "Ladybird Web Browser"
+)
+
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+set(CMAKE_SKIP_BUILD_RPATH FALSE)
+set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+# See slide 100 of the following ppt :^)
+# https://crascit.com/wp-content/uploads/2019/09/Deep-CMake-For-Library-Authors-Craig-Scott-CppCon-2019.pdf
+if (NOT APPLE)
+ set(CMAKE_INSTALL_RPATH $ORIGIN)
+endif()
+set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+include(cmake/EnableLLD.cmake)
+
+# Lagom
+include(FetchContent)
+include(cmake/FetchLagom.cmake)
+
+# Lagom warnings
+include(${Lagom_SOURCE_DIR}/../CMake/lagom_compile_options.cmake)
+add_compile_options(-Wno-expansion-to-defined)
+
+set(CMAKE_AUTOMOC ON)
+find_package(Qt6 REQUIRED COMPONENTS Core Widgets)
+
+# FIXME: Stop using deprecated declarations from QT :^)
+add_compile_options(-Wno-deprecated-declarations)
+
+set(SOURCES
+ BrowserWindow.cpp
+ main.cpp
+ WebView.cpp
+)
+
+add_executable(ladybird ${SOURCES})
+target_link_libraries(ladybird PRIVATE Qt6::Widgets Lagom::Web Lagom::HTTP Lagom::WebSocket Lagom::Main)
+
+get_filename_component(
+ SERENITY_SOURCE_DIR "${Lagom_SOURCE_DIR}/../.."
+ ABSOLUTE
+)
+
+add_custom_target(run
+ COMMAND "${CMAKE_COMMAND}" -E env "SERENITY_SOURCE_DIR=${SERENITY_SOURCE_DIR}" "$<TARGET_FILE:ladybird>"
+ USES_TERMINAL
+)
+
+add_custom_target(debug
+ COMMAND "${CMAKE_COMMAND}" -E env "SERENITY_SOURCE_DIR=${SERENITY_SOURCE_DIR}" gdb "$<TARGET_FILE:ladybird>"
+ USES_TERMINAL
+)
+