2022-03-16 22:50:55 +03:00
cmake_minimum_required ( VERSION 3.4 )
project ( Hyprland
D E S C R I P T I O N " A M o d e r n C + + W a y l a n d C o m p o s i t o r "
)
set ( CMAKE_MESSAGE_LOG_LEVEL "STATUS" )
2022-10-27 13:26:35 +03:00
message ( STATUS "Gathering git info" )
2022-03-16 22:50:55 +03:00
2022-04-22 19:14:25 +03:00
# Get git info
# hash and branch
execute_process (
C O M M A N D g i t r e v - p a r s e - - a b b r e v - r e f H E A D
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
O U T P U T _ V A R I A B L E G I T _ B R A N C H
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
execute_process (
C O M M A N D g i t r e v - p a r s e H E A D
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
O U T P U T _ V A R I A B L E G I T _ C O M M I T _ H A S H
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
2022-04-22 19:29:32 +03:00
execute_process (
2022-11-13 23:01:30 +03:00
C O M M A N D s h - c " g i t s h o w $ { G I T _ C O M M I T _ H A S H } | h e a d - n 5 | t a i l - n 1 | s e d - s ' s / #|\"//g'"
2022-04-22 19:29:32 +03:00
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
O U T P U T _ V A R I A B L E G I T _ C O M M I T _ M E S S A G E
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
2022-04-22 19:33:30 +03:00
execute_process (
2022-10-22 09:23:52 +03:00
C O M M A N D s h - c " g i t d i f f - i n d e x - - q u i e t H E A D - - | | e c h o \ " d i r t y \ " "
2022-04-22 19:33:30 +03:00
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
O U T P U T _ V A R I A B L E G I T _ D I R T Y
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
2022-04-22 19:14:25 +03:00
#
#
2022-10-27 13:26:35 +03:00
IF ( CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG )
message ( STATUS "Configuring Hyprland in Debug with CMake" )
add_definitions ( -DHYPRLAND_DEBUG )
ELSE ( )
add_compile_options ( -O3 )
message ( STATUS "Configuring Hyprland in Release with CMake" )
ENDIF ( CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG )
2022-06-12 23:57:03 +03:00
include_directories ( . PRIVATE "subprojects/wlroots/include/" )
2022-06-29 14:49:53 +03:00
include_directories ( . PRIVATE "subprojects/wlroots/build/include/" )
2022-07-06 17:55:49 +03:00
add_compile_options ( -std=c++23 -DWLR_USE_UNSTABLE )
2022-03-18 22:07:36 +03:00
add_compile_options ( -Wall -Wextra -Wno-unused-parameter -Wno-unused-value -Wno-missing-field-initializers -Wno-narrowing )
2022-10-27 13:26:35 +03:00
message ( STATUS "Checking deps..." )
2022-03-16 22:50:55 +03:00
find_package ( Threads REQUIRED )
find_package ( PkgConfig REQUIRED )
2022-10-27 13:26:35 +03:00
pkg_check_modules ( deps REQUIRED IMPORTED_TARGET wayland-server wayland-client wayland-cursor wayland-protocols cairo pango pangocairo libdrm egl xkbcommon libinput ) # we do not check for wlroots, as we provide it ourselves
2022-03-16 22:50:55 +03:00
file ( GLOB_RECURSE SRCFILES "src/*.cpp" )
add_executable ( Hyprland ${ SRCFILES } )
2022-04-13 18:34:13 +03:00
IF ( LEGACY_RENDERER MATCHES true )
message ( STATUS "Using the legacy GLES2 renderer!" )
add_definitions ( -DLEGACY_RENDERER )
ENDIF ( LEGACY_RENDERER MATCHES true )
2022-04-20 16:58:02 +03:00
IF ( NO_XWAYLAND MATCHES true )
message ( STATUS "Using the NO_XWAYLAND flag, disabling XWayland!" )
add_definitions ( -DNO_XWAYLAND )
2022-03-16 22:50:55 +03:00
ELSE ( )
2022-10-27 13:26:35 +03:00
message ( STATUS "XWAYLAND Enabled (NO_XWAYLAND not defined) checking deps..." )
pkg_check_modules ( xcbdep REQUIRED xcb )
target_link_libraries ( Hyprland xcb )
ENDIF ( NO_XWAYLAND MATCHES true )
2022-03-16 22:50:55 +03:00
2022-04-22 19:14:25 +03:00
target_compile_definitions ( Hyprland PRIVATE "-DGIT_COMMIT_HASH=\" ${ GIT_COMMIT_HASH } \"")
target_compile_definitions ( Hyprland PRIVATE "-DGIT_BRANCH=\" ${ GIT_BRANCH } \"")
2022-04-22 19:29:32 +03:00
target_compile_definitions ( Hyprland PRIVATE "-DGIT_COMMIT_MESSAGE=\" ${ GIT_COMMIT_MESSAGE } \"")
2022-04-22 19:33:30 +03:00
target_compile_definitions ( Hyprland PRIVATE "-DGIT_DIRTY=\" ${ GIT_DIRTY } \"")
2022-04-22 19:14:25 +03:00
2022-03-16 22:50:55 +03:00
target_link_libraries ( Hyprland rt )
set ( CPACK_PROJECT_NAME ${ PROJECT_NAME } )
set ( CPACK_PROJECT_VERSION ${ PROJECT_VERSION } )
include ( CPack )
2022-10-27 13:26:35 +03:00
message ( STATUS "Setting link libraries" )
2022-03-16 22:50:55 +03:00
target_link_libraries ( Hyprland PkgConfig::deps )
target_link_libraries ( Hyprland
2022-11-13 14:04:28 +03:00
$ { C M A K E _ S O U R C E _ D I R } / s u b p r o j e c t s / w l r o o t s / b u i l d / l i b w l r o o t s . s o . 1 2 0 3 2 # wlroots is provided by us
2022-03-21 18:13:43 +03:00
p i x m a n - 1
2022-03-24 19:17:08 +03:00
O p e n G L
G L E S v 2
p t h r e a d
2022-03-16 22:50:55 +03:00
$ { C M A K E _ T H R E A D _ L I B S _ I N I T }
2022-04-11 20:51:37 +03:00
$ { C M A K E _ S O U R C E _ D I R } / e x t - w o r k s p a c e - u n s t a b l e - v 1 - p r o t o c o l . o
2022-03-16 22:50:55 +03:00
)
IF ( CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG )
2022-10-27 13:26:35 +03:00
message ( STATUS "Setting debug flags" )
2022-03-16 22:50:55 +03:00
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg -no-pie -fno-builtin" )
SET ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg -no-pie -fno-builtin" )
SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg -no-pie -fno-builtin" )
2022-10-22 09:23:52 +03:00
ENDIF ( CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG )