meson - make modules with helper binaries simpelr to build

this makes modules with a binary helper simpler to build using the
parent module build harness as much as possible. i probably could
simplify this down to a single binary only and it is either setuid or
not... define the deps and flags ... it could be a bit simpler. not
much. i also removed the if's in the build for battery and ifdefs in
src handle it instead (imho simpler to maintain in src). sysinfo still
uses the if's there.
This commit is contained in:
Carsten Haitzler 2017-08-11 19:50:48 +09:00
parent fe7c39fa18
commit 16a702ac73
8 changed files with 112 additions and 185 deletions

View File

@ -818,7 +818,7 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
#ifdef HAVE_EEZE #ifdef HAVE_EEZE
_battery_udev_stop(); _battery_udev_stop();
#elif defined __OpenBSD__ || defined __DragonFly__ || defined __FreeBSD__ || defined __NetBSD__ #elif defined (__OpenBSD__) || defined (__DragonFly__) || defined (__FreeBSD__) || defined (__NetBSD__)
_battery_sysctl_stop(); _battery_sysctl_stop();
#else #else
_battery_upower_stop(); _battery_upower_stop();

View File

@ -1,16 +1,13 @@
#include <err.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#if defined(__OpenBSD__) || defined(__NetBSD__)
#include <sys/param.h>
#include <sys/sensors.h>
#endif
#include "e.h" #include "e.h"
#include "e_mod_main.h" #include "e_mod_main.h"
#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
# include <err.h>
# include <sys/types.h>
# include <sys/sysctl.h>
# include <sys/param.h>
# include <sys/sensors.h>
static Eina_Bool _battery_sysctl_battery_update_poll(void *data EINA_UNUSED); static Eina_Bool _battery_sysctl_battery_update_poll(void *data EINA_UNUSED);
static int _battery_sysctl_battery_update(); static int _battery_sysctl_battery_update();
@ -24,16 +21,16 @@ static Battery *bat = NULL;
int int
_battery_sysctl_start(void) _battery_sysctl_start(void)
{ {
#if defined(__OpenBSD__) || defined(__NetBSD__) # if defined(__OpenBSD__) || defined(__NetBSD__)
int mib[] = {CTL_HW, HW_SENSORS, 0, 0, 0}; int mib[] = {CTL_HW, HW_SENSORS, 0, 0, 0};
int devn; int devn;
struct sensordev snsrdev; struct sensordev snsrdev;
size_t sdlen = sizeof(struct sensordev); size_t sdlen = sizeof(struct sensordev);
#elif defined(__FreeBSD__) || defined(__DragonFly__) # elif defined(__FreeBSD__) || defined(__DragonFly__)
size_t len; size_t len;
#endif # endif
#if defined(__OpenBSD__) || defined(__NetBSD__) # if defined(__OpenBSD__) || defined(__NetBSD__)
for (devn = 0;; devn++) { for (devn = 0;; devn++) {
mib[2] = devn; mib[2] = devn;
if (sysctl(mib, 3, &snsrdev, &sdlen, NULL, 0) == -1) if (sysctl(mib, 3, &snsrdev, &sdlen, NULL, 0) == -1)
@ -75,12 +72,12 @@ _battery_sysctl_start(void)
device_ac_adapters = eina_list_append(device_ac_adapters, ac); device_ac_adapters = eina_list_append(device_ac_adapters, ac);
} }
} }
#elif defined(__FreeBSD__) || defined(__DragonFly__) # elif defined(__FreeBSD__) || defined(__DragonFly__)
if ((sysctlbyname("hw.acpi.battery.life", NULL, &len, NULL, 0)) != -1) if ((sysctlbyname("hw.acpi.battery.life", NULL, &len, NULL, 0)) != -1)
{ {
if (!(bat = E_NEW(Battery, 1))) if (!(bat = E_NEW(Battery, 1)))
return 0; return 0;
bat->mib = malloc(sizeof(int) * 4); bat->mib = malloc(sizeof(int) * 4);
if (!bat->mib) return 0; if (!bat->mib) return 0;
sysctlnametomib("hw.acpi.battery.life", bat->mib, &len); sysctlnametomib("hw.acpi.battery.life", bat->mib, &len);
@ -103,7 +100,7 @@ _battery_sysctl_start(void)
bat->vendor = eina_stringshare_add("Unknown"); bat->vendor = eina_stringshare_add("Unknown");
bat->poll = ecore_poller_add(ECORE_POLLER_CORE, bat->poll = ecore_poller_add(ECORE_POLLER_CORE,
battery_config->poll_interval, battery_config->poll_interval,
_battery_sysctl_battery_update_poll, NULL); _battery_sysctl_battery_update_poll, NULL);
device_batteries = eina_list_append(device_batteries, bat); device_batteries = eina_list_append(device_batteries, bat);
@ -123,7 +120,7 @@ _battery_sysctl_start(void)
device_ac_adapters = eina_list_append(device_ac_adapters, ac); device_ac_adapters = eina_list_append(device_ac_adapters, ac);
} }
#endif # endif
_battery_sysctl_battery_update(); _battery_sysctl_battery_update();
bat->last_update = ecore_time_get(); bat->last_update = ecore_time_get();
@ -148,11 +145,11 @@ _battery_sysctl_stop(void)
eina_stringshare_del(bat->model); eina_stringshare_del(bat->model);
eina_stringshare_del(bat->vendor); eina_stringshare_del(bat->vendor);
ecore_poller_del(bat->poll); ecore_poller_del(bat->poll);
#if defined(__FreeBSD__) || defined(__DragonFly__) # if defined(__FreeBSD__) || defined(__DragonFly__)
E_FREE(bat->mib_state); E_FREE(bat->mib_state);
E_FREE(bat->mib_time); E_FREE(bat->mib_time);
E_FREE(bat->mib_units); E_FREE(bat->mib_units);
#endif # endif
E_FREE(bat->mib); E_FREE(bat->mib);
E_FREE(bat); E_FREE(bat);
} }
@ -169,21 +166,21 @@ static int
_battery_sysctl_battery_update() _battery_sysctl_battery_update()
{ {
double _time; double _time;
#if defined(__OpenBSD__) || defined(__NetBSD__) # if defined(__OpenBSD__) || defined(__NetBSD__)
double charge; double charge;
struct sensor s; struct sensor s;
size_t slen = sizeof(struct sensor); size_t slen = sizeof(struct sensor);
#elif defined(__FreeBSD__) || defined(__DragonFly__) # elif defined(__FreeBSD__) || defined(__DragonFly__)
int value; int value;
size_t len; size_t len;
#endif # endif
if (bat) if (bat)
{ {
/* update the poller interval */ /* update the poller interval */
ecore_poller_poller_interval_set(bat->poll, ecore_poller_poller_interval_set(bat->poll,
battery_config->poll_interval); battery_config->poll_interval);
#if defined(__OpenBSD__) || defined(__NetBSD__) # if defined(__OpenBSD__) || defined(__NetBSD__)
/* last full capacity */ /* last full capacity */
bat->mib[3] = 7; bat->mib[3] = 7;
bat->mib[4] = 0; bat->mib[4] = 0;
@ -191,7 +188,7 @@ _battery_sysctl_battery_update()
{ {
bat->last_full_charge = (double)s.value; bat->last_full_charge = (double)s.value;
} }
/* remaining capacity */ /* remaining capacity */
bat->mib[3] = 7; bat->mib[3] = 7;
bat->mib[4] = 3; bat->mib[4] = 3;
@ -199,7 +196,7 @@ _battery_sysctl_battery_update()
{ {
charge = (double)s.value; charge = (double)s.value;
} }
/* This is a workaround because there's an ACPI bug */ /* This is a workaround because there's an ACPI bug */
if ((EINA_FLT_EQ(charge, 0.0)) || (EINA_FLT_EQ(bat->last_full_charge, 0.0))) if ((EINA_FLT_EQ(charge, 0.0)) || (EINA_FLT_EQ(bat->last_full_charge, 0.0)))
{ {
@ -221,7 +218,7 @@ _battery_sysctl_battery_update()
} }
bat->got_prop = 1; bat->got_prop = 1;
_time = ecore_time_get(); _time = ecore_time_get();
if ((bat->got_prop) && (!EINA_FLT_EQ(charge, bat->current_charge))) if ((bat->got_prop) && (!EINA_FLT_EQ(charge, bat->current_charge)))
bat->charge_rate = ((charge - bat->current_charge) / (_time - bat->last_update)); bat->charge_rate = ((charge - bat->current_charge) / (_time - bat->last_update));
@ -255,7 +252,7 @@ _battery_sysctl_battery_update()
bat->time_full = -1; bat->time_full = -1;
bat->time_left = -1; bat->time_left = -1;
} }
/* battery state 1: discharge, 2: charge */ /* battery state 1: discharge, 2: charge */
bat->mib[3] = 10; bat->mib[3] = 10;
bat->mib[4] = 0; bat->mib[4] = 0;
@ -267,13 +264,13 @@ _battery_sysctl_battery_update()
bat->charging = 0; bat->charging = 0;
} }
#elif defined(__FreeBSD__) || defined(__DragonFly__) # elif defined(__FreeBSD__) || defined(__DragonFly__)
len = sizeof(value); len = sizeof(value);
if ((sysctl(bat->mib, 4, &value, &len, NULL, 0)) == -1) if ((sysctl(bat->mib, 4, &value, &len, NULL, 0)) == -1)
{ {
return 0; return 0;
} }
bat->percent = value; bat->percent = value;
_time = ecore_time_get(); _time = ecore_time_get();
@ -305,12 +302,12 @@ _battery_sysctl_battery_update()
if (bat->time_min >= 0) bat->time_left = bat->time_min * 60; if (bat->time_min >= 0) bat->time_left = bat->time_min * 60;
if (bat->batteries == 1) bat->time_left = -1; if (bat->batteries == 1) bat->time_left = -1;
#endif # endif
} }
if (ac) if (ac)
{ {
#if defined(__OpenBSD__) || defined(__NetBSD__) # if defined(__OpenBSD__) || defined(__NetBSD__)
/* AC State */ /* AC State */
ac->mib[3] = 9; ac->mib[3] = 9;
ac->mib[4] = 0; ac->mib[4] = 0;
@ -321,14 +318,14 @@ _battery_sysctl_battery_update()
else else
ac->present = 0; ac->present = 0;
} }
#elif defined(__FreeBSD__) || defined(__DragonFly__) # elif defined(__FreeBSD__) || defined(__DragonFly__)
len = sizeof(value); len = sizeof(value);
if ((sysctl(ac->mib, 3, &value, &len, NULL, 0)) != -1) if ((sysctl(ac->mib, 3, &value, &len, NULL, 0)) != -1)
{ {
ac->present = value; ac->present = value;
} }
#endif # endif
} }
if (bat) if (bat)
{ {
@ -336,8 +333,9 @@ _battery_sysctl_battery_update()
_battery_device_update(); _battery_device_update();
bat->got_prop = 1; bat->got_prop = 1;
} }
return 1; return 1;
} }
#endif

View File

@ -1,6 +1,8 @@
#include "e.h" #include "e.h"
#include "e_mod_main.h" #include "e_mod_main.h"
#ifdef HAVE_EEZE
static void _battery_udev_event_battery(const char *syspath, Eeze_Udev_Event event, void *data, Eeze_Udev_Watch *watch); static void _battery_udev_event_battery(const char *syspath, Eeze_Udev_Event event, void *data, Eeze_Udev_Watch *watch);
static void _battery_udev_event_ac(const char *syspath, Eeze_Udev_Event event, void *data, Eeze_Udev_Watch *watch); static void _battery_udev_event_ac(const char *syspath, Eeze_Udev_Event event, void *data, Eeze_Udev_Watch *watch);
static void _battery_udev_battery_add(const char *syspath); static void _battery_udev_battery_add(const char *syspath);
@ -110,8 +112,8 @@ _battery_udev_battery_add(const char *syspath)
bat->last_update = ecore_time_get(); bat->last_update = ecore_time_get();
bat->udi = eina_stringshare_add(syspath); bat->udi = eina_stringshare_add(syspath);
bat->poll = ecore_poller_add(ECORE_POLLER_CORE, bat->poll = ecore_poller_add(ECORE_POLLER_CORE,
battery_config->poll_interval, battery_config->poll_interval,
_battery_udev_battery_update_poll, bat); _battery_udev_battery_update_poll, bat);
device_batteries = eina_list_append(device_batteries, bat); device_batteries = eina_list_append(device_batteries, bat);
_battery_udev_battery_update(syspath, bat); _battery_udev_battery_update(syspath, bat);
} }
@ -184,7 +186,7 @@ _battery_udev_battery_update_poll(void *data)
return EINA_TRUE; return EINA_TRUE;
} }
#define GET_NUM(TYPE, VALUE, PROP) \ # define GET_NUM(TYPE, VALUE, PROP) \
do \ do \
{ \ { \
test = eeze_udev_syspath_get_property(TYPE->udi, #PROP); \ test = eeze_udev_syspath_get_property(TYPE->udi, #PROP); \
@ -196,7 +198,7 @@ _battery_udev_battery_update_poll(void *data)
} \ } \
while (0) while (0)
#define GET_STR(TYPE, VALUE, PROP) TYPE->VALUE = eeze_udev_syspath_get_property(TYPE->udi, #PROP) # define GET_STR(TYPE, VALUE, PROP) TYPE->VALUE = eeze_udev_syspath_get_property(TYPE->udi, #PROP)
static void static void
_battery_udev_battery_update(const char *syspath, Battery *bat) _battery_udev_battery_update(const char *syspath, Battery *bat)
@ -219,7 +221,7 @@ _battery_udev_battery_update(const char *syspath, Battery *bat)
if (!bat->got_prop) /* only need to get these once */ if (!bat->got_prop) /* only need to get these once */
{ {
GET_STR(bat, technology, POWER_SUPPLY_TECHNOLOGY); GET_STR(bat, technology, POWER_SUPPLY_TECHNOLOGY);
GET_STR(bat, model, POWER_SUPPLY_MODEL_NAME); GET_STR(bat, model, POWER_SUPPLY_MODEL_NAME);
GET_STR(bat, vendor, POWER_SUPPLY_MANUFACTURER); GET_STR(bat, vendor, POWER_SUPPLY_MANUFACTURER);
GET_NUM(bat, design_charge, POWER_SUPPLY_ENERGY_FULL_DESIGN); GET_NUM(bat, design_charge, POWER_SUPPLY_ENERGY_FULL_DESIGN);
if (eina_dbl_exact(bat->design_charge, 0)) if (eina_dbl_exact(bat->design_charge, 0))
@ -310,4 +312,4 @@ _battery_udev_ac_update(const char *syspath, Ac_Adapter *ac)
_battery_device_update(); _battery_device_update();
} }
#endif

View File

@ -1,9 +1,11 @@
#include "e.h" #include "e.h"
#include "e_mod_main.h" #include "e_mod_main.h"
#define BUS "org.freedesktop.UPower" #if !(defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__))
#define PATH "/org/freedesktop/UPower"
#define IFACE "org.freedesktop.UPower" # define BUS "org.freedesktop.UPower"
# define PATH "/org/freedesktop/UPower"
# define IFACE "org.freedesktop.UPower"
extern Eina_List *device_batteries; extern Eina_List *device_batteries;
extern Eina_List *device_ac_adapters; extern Eina_List *device_ac_adapters;
@ -348,3 +350,4 @@ _battery_upower_stop(void)
eldbus_object_unref(obj); eldbus_object_unref(obj);
eldbus_connection_unref(conn); eldbus_connection_unref(conn);
} }
#endif

View File

@ -1,45 +1,18 @@
battery_dist = [ src = files(
'e-module-battery.edj', 'e_mod_main.c',
'module.desktop', 'e_mod_config.c',
] 'e_mod_sysctl.c',
'e_mod_udev.c',
'e_mod_upower.c',
'e_mod_main.h'
)
battery_src = [ if get_option(m) == true
'e_mod_config.c', executable('batget',
'e_mod_main.c', 'batget.c',
'e_mod_main.h', include_directories: include_directories(module_includes),
] dependencies : [ dep_eina, dep_ecore, dep_ecore_con, dep_ecore_file ],
install_dir : _dir_bin,
if config_h.has('HAVE_EEZE') == true install : true
battery_src += 'e_mod_udev.c' )
elif host_machine.system().contains('bsd') == true
battery_src += 'e_mod_sysctl.c'
else
battery_src += 'e_mod_upower.c'
endif
battery_dir = join_paths(dir_module_e, 'battery', module_arch)
if get_option('battery') == true
config_h.set('USE_MODULE_BATTERY', '1')
install_data(battery_dist,
install_dir: join_paths(dir_module_e, 'battery')
)
module_files += join_paths(battery_dir, 'battery.so')
shared_module('battery',
battery_src,
include_directories: include_directories(module_includes),
name_prefix: '',
dependencies: module_deps,
install_dir: battery_dir,
install: true
)
executable('batget',
'batget.c',
include_directories: include_directories(module_includes),
dependencies: [dep_eina, dep_ecore, dep_ecore_con, dep_ecore_file],
install_dir: battery_dir,
install: true
)
endif endif

View File

@ -1,40 +1,17 @@
cpufreq_dist = [ src = files(
'e-module-cpufreq.edj', 'e_mod_main.c',
'module.desktop', 'e_mod_config.c',
] 'e_mod_main.h'
)
cpufreq_src = [ if get_option(m) == true
'e_mod_config.c', executable('freqset',
'e_mod_main.c', 'freqset.c',
'freqset.c', c_args : suid_cflags,
'e_mod_main.h', link_args : suid_ldflags,
] install_dir: _dir_bin,
install : true
cpufreq_dir = join_paths(dir_module_e, 'cpufreq', module_arch) )
if get_option('cpufreq') == true suid_exes += join_paths(_dir_bin, 'freqset')
config_h.set('USE_MODULE_CPUFREQ', '1')
install_data(cpufreq_dist,
install_dir: join_paths(dir_module_e, 'cpufreq')
)
module_files += join_paths(cpufreq_dir, 'cpufreq.so')
shared_module('cpufreq',
cpufreq_src,
include_directories: include_directories(module_includes),
name_prefix: '',
dependencies: module_deps,
install_dir: cpufreq_dir,
install: true
)
executable('freqset',
'freqset.c',
c_args: suid_cflags,
link_args: suid_ldflags,
install_dir: cpufreq_dir,
install: true
)
suid_exes += join_paths(cpufreq_dir, 'freqset')
endif endif

View File

@ -4,8 +4,6 @@ module_includes = [ '../../..', '../../bin', '../../bin/efx' ]
module_includes2 = [ '../..' , '../bin' , '../bin/efx' ] module_includes2 = [ '../..' , '../bin' , '../bin/efx' ]
module_deps = [ deps_e, dep_dl ] module_deps = [ deps_e, dep_dl ]
subdir('battery')
subdir('cpufreq')
subdir('wizard') subdir('wizard')
subdir('mixer') subdir('mixer')
subdir('everything') subdir('everything')
@ -13,14 +11,16 @@ subdir('teamwork')
subdir('wl_desktop_shell') subdir('wl_desktop_shell')
subdir('wl_text_input') subdir('wl_text_input')
subdir('wl_weekeyboard') subdir('wl_weekeyboard')
subdir('sysinfo')
# disabled for now # disabled for now
####subdir('wl_fb') ####subdir('wl_fb')
mods = [ mods = [
# standard run of the mill modules with cion and desktop # standard run of the mill modules with cion and desktop
'battery',
'cpufreq',
'clock', 'clock',
'sysinfo',
'ibar', 'ibar',
'pager', 'pager',
'pager_plain', 'pager_plain',
@ -80,7 +80,9 @@ foreach m: mods
no_icon = false no_icon = false
disable = false disable = false
cargs = '' cargs = ''
_dir = join_paths(dir_module_e, m)
_dir_bin = join_paths(_dir, module_arch)
_inc = include_directories(module_includes2, join_paths('.', m))
subdir(m) subdir(m)
opt = '-'.join(m.split('_')) opt = '-'.join(m.split('_'))
@ -88,9 +90,6 @@ foreach m: mods
if get_option(opt) == true and disable == false if get_option(opt) == true and disable == false
_conf = 'USE_MODULE_' + m.underscorify().to_upper() _conf = 'USE_MODULE_' + m.underscorify().to_upper()
_dir = join_paths(dir_module_e, m)
_dir_bin = join_paths(_dir, module_arch)
_inc = include_directories(module_includes2, join_paths('.', m))
module_files += join_paths(_dir_bin, m + '.so') module_files += join_paths(_dir_bin, m + '.so')
if desktop_only == true if desktop_only == true

View File

@ -1,8 +1,4 @@
module = 'sysinfo' src = files(
opt = 'sysinfo'
conf = 'USE_MODULE_SYSINFO'
src = [
'mod.c', 'mod.c',
'sysinfo.c', 'sysinfo.c',
'sysinfo.h', 'sysinfo.h',
@ -29,55 +25,34 @@ src = [
'netstatus/netstatus.c', 'netstatus/netstatus.c',
'netstatus/netstatus_config.c', 'netstatus/netstatus_config.c',
'netstatus/netstatus_proc.c' 'netstatus/netstatus_proc.c'
] )
if config_h.has('HAVE_EEZE') == true if config_h.has('HAVE_EEZE') == true
src += [ src += files(
'batman/batman_udev.c', 'batman/batman_udev.c',
'thermal/thermal_udev.c' 'thermal/thermal_udev.c')
]
elif host_machine.system().contains('bsd') == true elif host_machine.system().contains('bsd') == true
src += ['batman/batman_sysctl.c', src += files(
'thermal/thermal_sysctl.c', 'batman/batman_sysctl.c',
'cpuclock/cpuclock_sysctl.c', 'thermal/thermal_sysctl.c',
'netstatus/netstatus_sysctl.c', 'cpuclock/cpuclock_sysctl.c',
'cpumonitor/cpumonitor_sysctl.c', 'netstatus/netstatus_sysctl.c',
'memusage/memusage_sysctl.c' 'cpumonitor/cpumonitor_sysctl.c',
] 'memusage/memusage_sysctl.c')
else else
src += ['batman/batman_upower.c', src += files(
'thermal/thermal_sysctl.c', 'batman/batman_upower.c',
'cpuclock/cpuclock_sysctl.c' 'thermal/thermal_sysctl.c',
] 'cpuclock/cpuclock_sysctl.c')
endif endif
icon = [ if get_option(m) == true
'e-module-' + module + '.edj', executable('cpuclock_sysfs',
'module.desktop' 'cpuclock/cpuclock_sysfs.c',
] dependencies: dep_crypt,
c_args : suid_cflags,
dir_mod = join_paths(dir_module_e, module) link_args : suid_ldflags,
dir_mod_bin = join_paths(dir_mod, module_arch) install_dir : _dir_bin,
install : true
if get_option(opt) == true )
config_h.set(conf, '1') suid_exes += join_paths(_dir_bin, 'cpuclock_sysfs')
module_files += join_paths(dir_mod_bin, module + '.so')
install_data(icon, install_dir: dir_mod)
shared_module(module, src,
include_directories: include_directories(module_includes),
name_prefix : '',
dependencies : module_deps,
install_dir : dir_mod_bin,
install : true
)
executable('cpuclock_sysfs',
'cpuclock/cpuclock_sysfs.c',
dependencies: dep_crypt,
c_args : suid_cflags,
link_args : suid_ldflags,
install_dir : dir_mod_bin,
install : true
)
suid_exes += join_paths(dir_mod_bin, 'cpuclock_sysfs')
endif endif