build: Remove the need to modify sources for new drivers
Instead of having to modify both fp_internal.h to list each driver definition structure, and core.c to add those drivers to arrays we can loop over, generate both of those using meson.
This commit is contained in:
parent
ff09456cf5
commit
fc92f62136
5 changed files with 35 additions and 128 deletions
|
@ -123,73 +123,7 @@ static void register_driver(struct fp_driver *drv)
|
||||||
fp_dbg("registered driver %s", drv->name);
|
fp_dbg("registered driver %s", drv->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct fp_driver * const primitive_drivers[] = {
|
#include "drivers_arrays.h"
|
||||||
#ifdef ENABLE_UPEKTS
|
|
||||||
&upekts_driver,
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct fp_img_driver * const img_drivers[] = {
|
|
||||||
#ifdef ENABLE_AES3500
|
|
||||||
&aes3500_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES4000
|
|
||||||
&aes4000_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES2501
|
|
||||||
&aes2501_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES2550
|
|
||||||
&aes2550_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_URU4000
|
|
||||||
&uru4000_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_VCOM5S
|
|
||||||
&vcom5s_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_UPEKSONLY
|
|
||||||
&upeksonly_driver,
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_AES1610
|
|
||||||
&aes1610_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES1660
|
|
||||||
&aes1660_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES2660
|
|
||||||
&aes2660_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_VFS101
|
|
||||||
&vfs101_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_VFS301
|
|
||||||
&vfs301_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_VFS5011
|
|
||||||
&vfs5011_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_UPEKTC
|
|
||||||
&upektc_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_UPEKTC_IMG
|
|
||||||
&upektc_img_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_ETES603
|
|
||||||
&etes603_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_VFS0050
|
|
||||||
&vfs0050_driver,
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_ELAN
|
|
||||||
&elan_driver,
|
|
||||||
#endif
|
|
||||||
/*#ifdef ENABLE_FDU2000
|
|
||||||
&fdu2000_driver,
|
|
||||||
#endif
|
|
||||||
*/
|
|
||||||
};
|
|
||||||
|
|
||||||
static void register_drivers(void)
|
static void register_drivers(void)
|
||||||
{
|
{
|
||||||
|
|
1
libfprint/empty_file
Normal file
1
libfprint/empty_file
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
|
@ -222,66 +222,7 @@ struct fp_img_driver {
|
||||||
void (*deactivate)(struct fp_img_dev *dev);
|
void (*deactivate)(struct fp_img_dev *dev);
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef ENABLE_UPEKTS
|
#include "drivers_definitions.h"
|
||||||
extern struct fp_driver upekts_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_UPEKTC
|
|
||||||
extern struct fp_img_driver upektc_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_UPEKSONLY
|
|
||||||
extern struct fp_img_driver upeksonly_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_URU4000
|
|
||||||
extern struct fp_img_driver uru4000_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES1610
|
|
||||||
extern struct fp_img_driver aes1610_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES1660
|
|
||||||
extern struct fp_img_driver aes1660_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES2501
|
|
||||||
extern struct fp_img_driver aes2501_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES2550
|
|
||||||
extern struct fp_img_driver aes2550_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES2660
|
|
||||||
extern struct fp_img_driver aes2660_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES3500
|
|
||||||
extern struct fp_img_driver aes3500_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_AES4000
|
|
||||||
extern struct fp_img_driver aes4000_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_FDU2000
|
|
||||||
extern struct fp_img_driver fdu2000_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_VCOM5S
|
|
||||||
extern struct fp_img_driver vcom5s_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_VFS101
|
|
||||||
extern struct fp_img_driver vfs101_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_VFS301
|
|
||||||
extern struct fp_img_driver vfs301_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_VFS5011
|
|
||||||
extern struct fp_img_driver vfs5011_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_UPEKTC_IMG
|
|
||||||
extern struct fp_img_driver upektc_img_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_ETES603
|
|
||||||
extern struct fp_img_driver etes603_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_VFS0050
|
|
||||||
extern struct fp_img_driver vfs0050_driver;
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_ELAN
|
|
||||||
extern struct fp_img_driver elan_driver;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern libusb_context *fpi_usb_ctx;
|
extern libusb_context *fpi_usb_ctx;
|
||||||
extern GSList *opened_devices;
|
extern GSList *opened_devices;
|
||||||
|
|
|
@ -128,7 +128,6 @@ foreach driver: drivers
|
||||||
if driver == 'elan'
|
if driver == 'elan'
|
||||||
drivers_sources += [ 'drivers/elan.c', 'drivers/elan.h' ]
|
drivers_sources += [ 'drivers/elan.c', 'drivers/elan.h' ]
|
||||||
endif
|
endif
|
||||||
drivers_cflags += [ '-DENABLE_' + driver.to_upper() + '=1' ]
|
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
if aeslib
|
if aeslib
|
||||||
|
@ -146,6 +145,22 @@ if imaging_dep.found()
|
||||||
other_sources += [ 'pixman.c' ]
|
other_sources += [ 'pixman.c' ]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
libfprint_sources += configure_file(input: 'empty_file',
|
||||||
|
output: 'drivers_definitions.h',
|
||||||
|
capture: true,
|
||||||
|
command: [
|
||||||
|
'/bin/echo',
|
||||||
|
drivers_struct_list
|
||||||
|
])
|
||||||
|
|
||||||
|
libfprint_sources += configure_file(input: 'empty_file',
|
||||||
|
output: 'drivers_arrays.h',
|
||||||
|
capture: true,
|
||||||
|
command: [
|
||||||
|
'/bin/echo',
|
||||||
|
drivers_primitive_array + '\n\n' + drivers_img_array
|
||||||
|
])
|
||||||
|
|
||||||
deps = [ mathlib_dep, glib_dep, libusb_dep, nss_dep, imaging_dep ]
|
deps = [ mathlib_dep, glib_dep, libusb_dep, nss_dep, imaging_dep ]
|
||||||
libfprint = library('fprint',
|
libfprint = library('fprint',
|
||||||
libfprint_sources + drivers_sources + nbis_sources + other_sources,
|
libfprint_sources + drivers_sources + nbis_sources + other_sources,
|
||||||
|
|
16
meson.build
16
meson.build
|
@ -46,6 +46,7 @@ mathlib_dep = cc.find_library('m', required: false)
|
||||||
# Drivers
|
# Drivers
|
||||||
drivers = get_option('drivers').split(',')
|
drivers = get_option('drivers').split(',')
|
||||||
all_drivers = [ 'upekts', 'upektc', 'upeksonly', 'vcom5s', 'uru4000', 'aes1610', 'aes1660', 'aes2501', 'aes2550', 'aes2660', 'aes3500', 'aes4000', 'vfs101', 'vfs301', 'vfs5011', 'upektc_img', 'etes603', 'vfs0050', 'elan' ]
|
all_drivers = [ 'upekts', 'upektc', 'upeksonly', 'vcom5s', 'uru4000', 'aes1610', 'aes1660', 'aes2501', 'aes2550', 'aes2660', 'aes3500', 'aes4000', 'vfs101', 'vfs301', 'vfs5011', 'upektc_img', 'etes603', 'vfs0050', 'elan' ]
|
||||||
|
primitive_drivers = [ 'upekts' ]
|
||||||
|
|
||||||
if drivers == [ 'all' ]
|
if drivers == [ 'all' ]
|
||||||
drivers = all_drivers
|
drivers = all_drivers
|
||||||
|
@ -71,6 +72,21 @@ foreach driver: drivers
|
||||||
endif
|
endif
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
# Export the drivers' structures to the core code
|
||||||
|
drivers_struct_list = ''
|
||||||
|
drivers_img_array = 'static struct fp_img_driver * const img_drivers[] = {\n'
|
||||||
|
drivers_primitive_array = 'static struct fp_driver * const primitive_drivers[] = {\n'
|
||||||
|
foreach driver: drivers
|
||||||
|
if primitive_drivers.contains(driver)
|
||||||
|
drivers_struct_list += 'extern struct fp_driver ' + driver + '_driver;\n'
|
||||||
|
drivers_primitive_array += ' &' + driver + '_driver,\n'
|
||||||
|
else
|
||||||
|
drivers_struct_list += 'extern struct fp_img_driver ' + driver + '_driver;\n'
|
||||||
|
drivers_img_array += ' &' + driver + '_driver,\n'
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
drivers_img_array += '};'
|
||||||
|
drivers_primitive_array += '};'
|
||||||
|
|
||||||
root_inc = include_directories('.')
|
root_inc = include_directories('.')
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue