mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	build: Add 'auto' to logind-provider combo option
The logind provider defaulted to systemd and in order to use elogind, -Dlogin-provider=elogind was required. This adds 'auto' as a choice for the login-provider option and sets it as default. Using 'auto', the build will check for systemd first and if it's not found, try to find and use elogind automatically.
This commit is contained in:
		
							parent
							
								
									8707a9b7ec
								
							
						
					
					
						commit
						30308e35fa
					
				
					 3 changed files with 41 additions and 10 deletions
				
			
		| 
						 | 
					@ -18,8 +18,8 @@ sources:
 | 
				
			||||||
tasks:
 | 
					tasks:
 | 
				
			||||||
  - setup: |
 | 
					  - setup: |
 | 
				
			||||||
      cd wlroots
 | 
					      cd wlroots
 | 
				
			||||||
      CC=gcc meson build-gcc -Dauto_features=enabled
 | 
					      CC=gcc meson build-gcc -Dauto_features=enabled -Dlogind-provider=systemd
 | 
				
			||||||
      CC=clang meson build-clang -Dauto_features=enabled
 | 
					      CC=clang meson build-clang -Dauto_features=enabled -Dlogind-provider=systemd
 | 
				
			||||||
  - gcc: |
 | 
					  - gcc: |
 | 
				
			||||||
      cd wlroots/build-gcc
 | 
					      cd wlroots/build-gcc
 | 
				
			||||||
      ninja
 | 
					      ninja
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,15 +21,46 @@ if not get_option('logind').disabled()
 | 
				
			||||||
	msg += 'You may need to pass "-Dlogind-provider=elogind" or "-Dlogind-provider=systemd" to ensure the correct library is detected.'
 | 
						msg += 'You may need to pass "-Dlogind-provider=elogind" or "-Dlogind-provider=systemd" to ensure the correct library is detected.'
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					logind_version = '>=237'
 | 
				
			||||||
 | 
					logind_found = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if get_option('logind-provider') == 'auto'
 | 
				
			||||||
 | 
						if not get_option('logind').disabled()
 | 
				
			||||||
 | 
							assert(get_option('auto_features').auto(), '-Dlogind-provider must be set to systemd or elogind since auto_features != auto')
 | 
				
			||||||
 | 
							logind = dependency('libsystemd',
 | 
				
			||||||
 | 
								required: get_option('logind'),
 | 
				
			||||||
 | 
								not_found_message: 'libsystemd not found, trying libelogind\n' + '\n'.join(msg),
 | 
				
			||||||
 | 
								version: logind_version,
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
							if logind.found()
 | 
				
			||||||
 | 
								conf_data.set10('WLR_HAS_SYSTEMD', true)
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								logind = dependency('libelogind',
 | 
				
			||||||
 | 
									required: get_option('logind'),
 | 
				
			||||||
 | 
									not_found_message: 'libelogind not found\n' + '\n'.join(msg),
 | 
				
			||||||
 | 
									version: logind_version,
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
								if logind.found()
 | 
				
			||||||
 | 
									conf_data.set10('WLR_HAS_ELOGIND', true)
 | 
				
			||||||
 | 
								endif
 | 
				
			||||||
 | 
							endif
 | 
				
			||||||
 | 
							logind_found = logind.found()
 | 
				
			||||||
 | 
						endif
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
	logind = dependency('lib' + get_option('logind-provider'),
 | 
						logind = dependency('lib' + get_option('logind-provider'),
 | 
				
			||||||
		required: get_option('logind'),
 | 
							required: get_option('logind'),
 | 
				
			||||||
		not_found_message: '\n'.join(msg).format(get_option('logind-provider')),
 | 
							not_found_message: '\n'.join(msg).format(get_option('logind-provider')),
 | 
				
			||||||
	version: '>=237',
 | 
							version: logind_version,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	if logind.found()
 | 
						if logind.found()
 | 
				
			||||||
 | 
							conf_data.set10('WLR_HAS_' + get_option('logind-provider').to_upper(), true)
 | 
				
			||||||
 | 
							logind_found = true
 | 
				
			||||||
 | 
						endif
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if logind_found
 | 
				
			||||||
	wlr_files += files('logind.c')
 | 
						wlr_files += files('logind.c')
 | 
				
			||||||
	wlr_deps += logind
 | 
						wlr_deps += logind
 | 
				
			||||||
	conf_data.set10('WLR_HAS_' + get_option('logind-provider').to_upper(), true)
 | 
					 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# libcap
 | 
					# libcap
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
option('libcap', type: 'feature', value: 'auto', description: 'Enable support for rootless session via capabilities (cap_sys_admin)')
 | 
					option('libcap', type: 'feature', value: 'auto', description: 'Enable support for rootless session via capabilities (cap_sys_admin)')
 | 
				
			||||||
option('logind', type: 'feature', value: 'auto', description: 'Enable support for rootless session via logind')
 | 
					option('logind', type: 'feature', value: 'auto', description: 'Enable support for rootless session via logind')
 | 
				
			||||||
option('logind-provider', type: 'combo', choices: ['systemd', 'elogind'], value: 'systemd', description: 'Provider of logind support library')
 | 
					option('logind-provider', type: 'combo', choices: ['auto', 'systemd', 'elogind'], value: 'auto', description: 'Provider of logind support library')
 | 
				
			||||||
option('xcb-errors', type: 'feature', value: 'auto', description: 'Use xcb-errors util library')
 | 
					option('xcb-errors', type: 'feature', value: 'auto', description: 'Use xcb-errors util library')
 | 
				
			||||||
option('xcb-icccm', type: 'feature', value: 'auto', description: 'Use xcb-icccm util library')
 | 
					option('xcb-icccm', type: 'feature', value: 'auto', description: 'Use xcb-icccm util library')
 | 
				
			||||||
option('xwayland', type: 'feature', value: 'auto', yield: true, description: 'Enable support for X11 applications')
 | 
					option('xwayland', type: 'feature', value: 'auto', yield: true, description: 'Enable support for X11 applications')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue