project('gBar', ['c', 'cpp'], version: '0.0.1', license: 'MIT', meson_version: '>=0.53.0', default_options: ['cpp_std=c++17', 'warning_level=3', 'default_library=static', 'buildtype=release'], ) # Wayland protocols wayland_client = dependency('wayland-client') wayland_scanner = find_program('wayland-scanner') ext_workspace_src = custom_target('generate-ext-workspace-src', input: ['protocols/ext-workspace-unstable-v1.xml'], output: ['ext-workspace-unstable-v1.c'], command: [wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@']) ext_workspace_header = custom_target('generate-ext-workspace-header', input: ['protocols/ext-workspace-unstable-v1.xml'], output: ['ext-workspace-unstable-v1.h'], command: [wayland_scanner, 'client-header', '@INPUT@', '@OUTPUT@']) wlr_foreign_toplevel_src = custom_target('generate-wlr-foreign-toplevel-src', input: ['protocols/wlr-foreign-toplevel-management-unstable-v1.xml'], output: ['wlr-foreign-toplevel-management-unstable-v1.c'], command: [wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@']) wlr_foreign_toplevel_header = custom_target('generate-wlr-foreign-toplevel-header', input: ['protocols/wlr-foreign-toplevel-management-unstable-v1.xml'], output: ['wlr-foreign-toplevel-management-unstable-v1.h'], command: [wayland_scanner, 'client-header', '@INPUT@', '@OUTPUT@']) gtk = dependency('gtk+-3.0') gtk_layer_shell = dependency('gtk-layer-shell-0') pulse = dependency('libpulse') headers = [ 'src/Common.h', 'src/Log.h', 'src/System.h', 'src/PulseAudio.h', 'src/Widget.h', 'src/Window.h', 'src/Wayland.h', 'src/Config.h', 'src/CSS.h' ] sources = [ ext_workspace_src, ext_workspace_header, wlr_foreign_toplevel_src, wlr_foreign_toplevel_header, 'src/Window.cpp', 'src/Widget.cpp', 'src/Wayland.cpp', 'src/System.cpp', 'src/Bar.cpp', 'src/Workspaces.cpp', 'src/AudioFlyin.cpp', 'src/BluetoothDevices.cpp', 'src/Plugin.cpp', 'src/Config.cpp', 'src/CSS.cpp', 'src/Log.cpp', 'src/SNI.cpp', ] dependencies = [gtk, gtk_layer_shell, pulse, wayland_client] if get_option('WithHyprland') add_global_arguments('-DWITH_HYPRLAND', language: 'cpp') headers += 'src/Workspaces.h' endif if get_option('WithWorkspaces') add_global_arguments('-DWITH_WORKSPACES', language: 'cpp') headers += 'src/Workspaces.h' endif if get_option('WithLibSass') add_global_arguments('-DWITH_LIBSASS', language: 'cpp') dependencies += dependency('libsass') endif if get_option('WithNvidia') add_global_arguments('-DWITH_NVIDIA', language: 'cpp') headers += 'src/NvidiaGPU.h' endif if get_option('WithAMD') add_global_arguments('-DWITH_AMD', language: 'cpp') headers += 'src/AMDGPU.h' endif if get_option('WithBlueZ') add_global_arguments('-DWITH_BLUEZ', language: 'cpp') endif if get_option('WithSNI') add_global_arguments('-DWITH_SNI', language: 'cpp') # DBus protocols dbus_gen = find_program('gdbus-codegen') sni_item_src = custom_target('generate-sni-item-src', input: ['protocols/sni-item.xml'], output: ['sni-item.c'], command: [dbus_gen, '--c-namespace', 'sni', '--body', '--output', '@OUTPUT@', '@INPUT@']) sni_item_header = custom_target('generate-sni-item-header', input: ['protocols/sni-item.xml'], output: ['sni-item.h'], command: [dbus_gen, '--c-namespace', 'sni', '--header', '--output', '@OUTPUT@', '@INPUT@']) sni_watcher_src = custom_target('generate-sni-watcher-src', input: ['protocols/sni-watcher.xml'], output: ['sni-watcher.c'], command: [dbus_gen, '--c-namespace', 'sni', '--body', '--output', '@OUTPUT@', '@INPUT@']) sni_watcher_header = custom_target('generate-sni-watcher-header', input: ['protocols/sni-watcher.xml'], output: ['sni-watcher.h'], command: [dbus_gen, '--c-namespace', 'sni', '--header', '--output', '@OUTPUT@', '@INPUT@']) libdbusmenu = dependency('dbusmenu-gtk3-0.4') sources += sni_item_src sources += sni_item_header sources += sni_watcher_src sources += sni_watcher_header dependencies += libdbusmenu endif add_global_arguments('-DUSE_LOGFILE', language: 'cpp') libgBar = library('gBar', sources, dependencies: dependencies, install: true) pkg = import('pkgconfig') pkg.generate(libgBar) executable( 'gBar', ['src/gBar.cpp'], dependencies: [gtk], link_with: libgBar, install_rpath: '$ORIGIN/', install: true ) install_headers( headers, subdir: 'gBar' ) install_data( ['css/style.css', 'css/style.scss'], install_dir: get_option('datadir') / 'gBar' )