eiwd/meson.build
Pierre-Olivier Mercier 8cefafafb8 feat: Phase 1 & 2 - Build system and D-Bus layer
Phase 1: Build System & Module Skeleton
- Set up Meson build system with EFL dependencies
- Created module entry point with e_modapi_init/shutdown/save
- Implemented configuration system using EET
- Added module.desktop metadata file
- Configured proper installation paths

Phase 2: D-Bus Layer (iwd Backend)
- Implemented D-Bus connection management to net.connman.iwd
- Created device abstraction layer (iwd_device.c) for Wi-Fi interfaces
- Created network abstraction layer (iwd_network.c) for access points
- Implemented D-Bus agent for passphrase requests (iwd_agent.c)
- Added ObjectManager support for device/network discovery
- Implemented daemon restart detection and reconnection
- Property change signal handling for devices and networks

Features:
- Connects to system D-Bus and iwd daemon
- Discovers wireless devices and networks via ObjectManager
- Monitors iwd daemon availability (handles restart)
- Agent registered for WPA/WPA2/WPA3 authentication
- Signal-driven updates (no polling)

Files created: 16 source/header files
Build status: Compiles successfully with gcc 15.2.1

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 18:31:33 +07:00

61 lines
1.4 KiB
Meson

project('e-iwd', 'c',
version: '0.1.0',
default_options: ['c_std=c11', 'warning_level=2'],
meson_version: '>= 0.56.0'
)
# Dependencies
enlightenment = dependency('enlightenment')
eldbus = dependency('eldbus')
elementary = dependency('elementary')
ecore = dependency('ecore')
evas = dependency('evas')
edje = dependency('edje')
eina = dependency('eina')
# Get Enlightenment module API version
e_version = enlightenment.version().split('.')
e_major = e_version[0]
e_minor = e_version[1]
# Installation paths
module_name = 'iwd'
module_arch = '@0@-@1@-@2@.@3@'.format(
host_machine.system(),
host_machine.cpu_family(),
e_major,
e_minor
)
dir_module = join_paths(get_option('libdir'), 'enlightenment', 'modules', module_name)
dir_module_arch = join_paths(dir_module, module_arch)
# Configuration
conf_data = configuration_data()
conf_data.set_quoted('PACKAGE', meson.project_name())
conf_data.set_quoted('VERSION', meson.project_version())
conf_data.set_quoted('MODULE_ARCH', module_arch)
configure_file(
output: 'config.h',
configuration: conf_data
)
# Add configuration include and feature test macros
add_project_arguments(
'-include', 'config.h',
'-D_GNU_SOURCE',
language: 'c'
)
# Subdirectories
subdir('src')
subdir('data')
# Summary
summary({
'Module name': module_name,
'Module architecture': module_arch,
'Installation path': dir_module_arch,
'Enlightenment version': enlightenment.version(),
}, section: 'Configuration')