efl/meson_options.txt

373 lines
7.8 KiB
Meson
Raw Normal View History

option('audio',
type : 'boolean',
value : true,
description : 'Audio support in efl'
)
option('avahi',
type : 'boolean',
value : false,
description : 'Avahi (zeroconf) support in efl'
)
option('x11',
type : 'boolean',
value : true,
description : 'X11 support in efl'
)
option('fb',
type : 'boolean',
value : false,
description : 'Framebuffer (/dev/fb / fbocon) support in efl'
)
option('sdl',
type : 'boolean',
value : false,
description : 'SDL support in efl'
)
option('wl',
type : 'boolean',
value : false,
description : 'Wayland client support in efl'
)
option('buffer',
type : 'boolean',
value : false,
description : 'Generic graphics buffer API support in efl'
)
option('drm',
type : 'boolean',
value : false,
description : 'DRM/KMS advanced framebuffer/console support in efl'
)
option('cocoa',
type : 'boolean',
value : false,
description : 'Apple MacOS cocoa support in efl'
)
option('physics',
type : 'boolean',
value : false,
description : 'Physics engine (bullet) in efl'
)
option('eeze',
type : 'boolean',
value : true,
description : 'Device abstraction (udev wrapper) in efl'
)
option('opengl',
type : 'combo',
choices : ['full', 'es-egl', 'none'],
value : 'es-egl',
description : 'Type of OpenGL support in efl'
)
option('build-id',
type : 'string',
value : 'none',
description : 'The build id string for efl set as the EFL_BUILD_ID define')
option('eina-magic-debug',
type : 'boolean',
value : true,
description : 'Magic number checking of eina structures in efl'
)
option('debug-threads',
type : 'boolean',
value : false,
description : 'Thread debugging in efl'
)
option('build-examples',
type : 'boolean',
value : true,
description : 'Compile examples'
)
option('build-tests',
type : 'boolean',
value : true,
description : 'Compile tests'
)
option('crypto',
type : 'combo',
choices : ['gnutls', 'openssl'],
value : 'openssl',
description : 'Which SSL Crypto library used in efl'
)
option('glib',
type : 'boolean',
value : false,
description : 'Main loop integration for glib in efl'
)
option('g-mainloop',
type : 'boolean',
value : false,
description : 'Use glib to run the main loop in efl'
)
option('gstreamer',
type : 'boolean',
value : true,
description : 'GStreamer support in efl'
)
option('systemd',
type : 'boolean',
value : true,
description : 'Systemd and Elogind support at runtime in efl'
)
option('pulseaudio',
type : 'boolean',
value : true,
description : 'Pulseaudio support for audio API'
)
option('network-backend',
type : 'combo',
choices : ['connman', 'none'],
value : 'none',
description : 'Connman support in efl'
)
option('xpresent',
type : 'boolean',
value : false,
description : 'X11 XPresent extension support in efl'
)
option('xinput2',
type : 'boolean',
value : true,
description : 'X11 XInput 2.0+ support in efl'
)
option('xinput22',
type : 'boolean',
value : true,
description : 'X11 XInput 2.2+ support in efl'
)
option('tslib',
type : 'boolean',
value : false,
description : 'Framebuffer (/dev/fb / fbcon) touchscreen tslib support in efl'
)
option('eject-path',
type : 'string',
value : 'detect',
description : 'Path to the eject binary, if "detect" internal eeze bins are used'
)
option('mount-path',
type : 'string',
value : 'detect',
description : 'Path to the mount binary, if "detect" internal eeze bins are used'
)
option('unmount-path',
type : 'string',
value : 'detect',
description : 'Path to the unmount binary, if "detect" internal eeze bins are used'
)
option('evas-loaders-disabler',
type : 'array',
description : 'List of modular image/vector loaders to disable in efl',
Evas: add avif evas loader and saver Summary: Add AV1 image file loader and saver to Evas The loader can be tested with this code : ``` #include <stdlib.h> #include <stdio.h> #include <Eina.h> #include <Ecore.h> #include <Evas.h> #include <Ecore_Evas.h> static int i = 0; static unsigned char _timer(void *data) { Evas_Object *o = (Evas_Object *)data; if (i < evas_object_image_animated_frame_count_get(o)) { evas_object_image_animated_frame_set(o, i); i++; return ECORE_CALLBACK_RENEW; } return ECORE_CALLBACK_DONE; } static void _quit(Ecore_Evas *ee) { ecore_main_loop_quit(); (void)ee; } int main(int argc, char *argv[]) { Ecore_Evas *ee; Evas *evas; Evas_Object *o; int w,h; Evas_Load_Error err; if (argc < 2) { printf("usage : %s file\n", argv[0]); return 1; } ecore_evas_init(); ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); if (!ee) { printf("no ee\n"); return 0; } evas = ecore_evas_get(ee); ecore_evas_title_set(ee, "avif test"); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_file_set(o, argv[1], NULL); err = evas_object_image_load_error_get(o); if (err != EVAS_LOAD_ERROR_NONE) { fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n", argv[1], evas_load_error_str(err)); return 1; } evas_object_image_size_get(o, &w, &h); evas_object_image_fill_set(o, 0, 0, w, h); evas_object_move(o, 0, 0); evas_object_resize(o, w, h); evas_object_show(o); printf("animated : %s\n", evas_object_image_animated_get(o) ? "yes" : "no"); fflush(stdout); if (evas_object_image_animated_get(o)) { Ecore_Timer *timer; printf("frame count : %d\n", evas_object_image_animated_frame_count_get(o)); printf("duration : %f\n", evas_object_image_animated_frame_duration_get(o,1,0)); printf("loop count : %d\n", evas_object_image_animated_loop_count_get(o)); fflush(stdout); timer = ecore_timer_add(evas_object_image_animated_frame_duration_get(o,1,0), _timer, o); } ecore_evas_resize(ee, w, h); ecore_evas_show(ee); ecore_main_loop_begin(); ecore_evas_shutdown(); return 0; } ``` non animated files : https://github.com/AOMediaCodec/libavif/tree/master/tests/data/originals animated files : https://github.com/AOMediaCodec/av1-avif/tree/master/testFiles/Netflix/avifs to test the saver : ``` #include <stdlib.h> #include <stdio.h> #include <math.h> #include <Eina.h> #include <Ecore.h> #include <Evas.h> #include <Ecore_Evas.h> void _quit(Ecore_Evas *ee) { ecore_main_loop_quit(); (void)ee; } static Evas_Object * display_data(int w, int h, const char *title, unsigned int *data) { Ecore_Evas *ee; Evas *evas; Evas_Object *o; unsigned int *d; ee = ecore_evas_new(NULL, 0, 0, w, h, NULL); if (!ee) return NULL; evas = ecore_evas_get(ee); ecore_evas_title_set(ee, title); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_fill_set(o, 0, 0, w, h); evas_object_image_size_set(o, w, h); d = evas_object_image_data_get(o, 1); for (int i = 0; i < w*h; i++) d[i] = data[i]; evas_object_image_data_set(o, d); evas_object_image_data_update_add(o, 0, 0, w, h); evas_object_move(o, 0, 0); evas_object_resize(o, w, h); evas_object_show(o); ecore_evas_show(ee); return o; } static unsigned int * display_file(const char *title, const char *filename, int *w, int *h) { Ecore_Evas *ee; Evas *evas; Evas_Object *o; Evas_Load_Error err; unsigned int *data; ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); if (!ee) return NULL; evas = ecore_evas_get(ee); ecore_evas_title_set(ee, title); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_file_set(o, filename, NULL); err = evas_object_image_load_error_get(o); if (err != EVAS_LOAD_ERROR_NONE) { fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n", filename, evas_load_error_str(err)); fflush(stderr); return NULL; } evas_object_image_size_get(o, w, h); evas_object_image_fill_set(o, 0, 0, *w, *h); evas_object_image_size_set(o, *w, *h); evas_object_move(o, 0, 0); evas_object_resize(o, *w, *h); evas_object_show(o); ecore_evas_resize(ee, *w, *h); ecore_evas_show(ee); data = evas_object_image_data_get(o, 1); return data; } double psnr(int w, int h, unsigned int *data_orig, unsigned int *data) { unsigned char *iter_orig; unsigned char *iter; double psnr; psnr = 0.0; iter_orig = (unsigned char *)data_orig; iter = (unsigned char *)data; for (int i = 0; i < 4 * w * h; i++, iter_orig++, iter++) psnr += (*iter_orig - *iter) * (*iter_orig - *iter); psnr /= 4 * w * h; psnr = 10 * log10(255.0 * 255.0 / psnr); return psnr; } void compare(int quality, int w, int h, unsigned int *data_orig) { char title[1024]; char filename[1024]; unsigned char *data; unsigned int *data_jpeg; unsigned int *data_avif; unsigned char *iter_orig; unsigned char *iter_jpeg; unsigned char *iter_avif; double psnr_jpeg; double psnr_avif; Eina_File *f_jpeg; Eina_File *f_avif; size_t size_jpeg; size_t size_avif; /* jpeg */ snprintf(title, sizeof(title), "jpeg test quality %d", quality); snprintf(filename, sizeof(filename), "test_%d.jpg", quality); data_jpeg = display_file(title, filename, &w, &h); if (!data_jpeg) return; f_jpeg = eina_file_open(filename, EINA_FALSE); size_jpeg = eina_file_size_get(f_jpeg); eina_file_close(f_jpeg); fprintf(stderr, "size : %u\n", (unsigned int)size_jpeg); fflush(stderr); /* avif */ snprintf(title, sizeof(title), "avif test quality %d", quality); snprintf(filename, sizeof(filename), "test_%d.avif", quality); data_avif = display_file(title, filename, &w, &h); if (!data_avif) return; f_avif = eina_file_open(filename, EINA_FALSE); size_avif = eina_file_size_get(f_avif); eina_file_close(f_avif); fprintf(stderr, "size : %u\n", (unsigned int)size_avif); fflush(stderr); psnr_jpeg = psnr(w, h, data_orig, data_jpeg); fprintf(stderr, "psnr jpeg : %f\n", psnr_jpeg); fflush(stderr); snprintf(title, sizeof(title), "jpeg vs orig (psnr: %.2f, size: %u b)", psnr_jpeg, (unsigned int)size_jpeg); iter_orig = (unsigned char *)data_orig; iter_jpeg = (unsigned char *)data_jpeg; data = malloc(4*w*h); for (int i = 0; i < 4*w*h; i++, iter_orig++, iter_jpeg++) data[i] = abs(*iter_jpeg - *iter_orig); display_data(w, h, title, (unsigned int *)data); psnr_avif = psnr(w, h, data_orig, data_avif); fprintf(stderr, "psnr avif : %f\n", psnr_avif); fflush(stderr); snprintf(title, sizeof(title), "avif vs orig (psnr: %.2f, size: %u b)", psnr_avif, (unsigned int)size_avif); iter_orig = (unsigned char *)data_orig; iter_avif = (unsigned char *)data_avif; data = malloc(4*w*h); for (int i = 0; i < 4*w*h; i++, iter_orig++, iter_avif++) data[i] = abs(*iter_avif - *iter_orig); display_data(w, h, title, (unsigned int *)data); } int main() { Ecore_Evas *ee; Evas *evas; Evas_Object *o; Evas_Load_Error err; unsigned int *data; int w,h; ecore_evas_init(); ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); if (!ee) return 1; evas = ecore_evas_get(ee); ecore_evas_title_set(ee, "original"); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_file_set(o, "x1d-II-sample-02.fff", NULL); err = evas_object_image_load_error_get(o); if (err != EVAS_LOAD_ERROR_NONE) { fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n", "x1d-II-sample-02.fff", evas_load_error_str(err)); fflush(stderr); return 1; } evas_object_image_size_get(o, &w, &h); evas_object_image_fill_set(o, 0, 0, w, h); evas_object_image_size_set(o, w, h); evas_object_move(o, 0, 0); evas_object_resize(o, w, h); evas_object_show(o); data = evas_object_image_data_get(o, 1); ecore_evas_resize(ee, w, h); ecore_evas_show(ee); /* evas_object_image_save(o, "test_100.jpg", NULL, "quality=100"); */ evas_object_image_save(o, "test_90.jpg", NULL, "quality=90"); /* evas_object_image_save(o, "test_70.jpg", NULL, "quality=70"); */ /* evas_object_image_save(o, "test_50.jpg", NULL, "quality=50"); */ /* evas_object_image_save(o, "test_100.avif", NULL, "quality=100"); */ evas_object_image_save(o, "test_90.avif", NULL, "quality=90"); /* evas_object_image_save(o, "test_70.avif", NULL, "quality=70"); */ /* evas_object_image_save(o, "test_50.avif", NULL, "quality=50"); */ compare(90, w, h, data); ecore_main_loop_begin(); ecore_evas_shutdown(); return 0; } ``` the raw file canbe found here : https://www.hasselblad.com/learn/sample-images/ Test Plan: test executable with avif files found in libavif project Reviewers: raster, q66 Reviewed By: q66 Subscribers: q66, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12051
2020-07-15 10:51:27 -07:00
choices : ['gst', 'pdf', 'ps', 'raw', 'svg', 'rsvg', 'xcf', 'bmp', 'dds', 'eet', 'generic', 'gif', 'ico', 'jp2k', 'jpeg', 'pmaps', 'png', 'psd', 'tga', 'tgv', 'tiff', 'wbmp', 'webp', 'xpm', 'json', 'avif'],
value : ['json', 'avif']
)
option('ecore-imf-loaders-disabler',
type : 'array',
description : 'List of input methods to disable in efl',
choices : ['xim', 'ibus', 'scim'],
value : ['ibus']
)
option('harfbuzz',
type : 'boolean',
value : true,
description : 'Harfbuzz (complex text layout library) support in efl'
)
option('fribidi',
type : 'boolean',
value : true,
description : 'Fribidi (right to left text layout library) support in efl'
)
option('fontconfig',
type : 'boolean',
value : true,
description : 'Fontconfig (system font database) support in efl'
)
option('edje-sound-and-video',
type : 'boolean',
value : true,
description : 'disable sound and video for edje'
)
option('pixman',
type : 'boolean',
value : false,
description : 'Pixman software renderer support in efl'
)
option('hyphen',
type : 'boolean',
value : false,
description : 'Hyphen text layout support in efl'
)
option('embedded-lz4',
type : 'boolean',
value : true,
description : 'Use the embedded in-tree zlib r131 release instead of system zlib'
)
option('libmount',
type : 'boolean',
value : true,
description : 'Libmount support for device mounting in efl'
)
option('vnc-server',
type : 'boolean',
value : false,
description : 'VNC server support in efl for multiseat testing'
)
option('v4l2',
type : 'boolean',
value : true,
description : 'Video v4l2 support'
)
option('elua',
type : 'boolean',
value : false,
description : 'Lua launcher binary support in efl'
)
option('wl-deprecated',
type : 'boolean',
value : false,
description : 'Deprecated wayland support in efl'
)
option('drm-deprecated',
type : 'boolean',
value : false,
description : 'Deprecated DRM/KMS support in efl'
)
option('nls',
type: 'boolean',
value: true,
description: 'Localization'
)
option('bindings',
type : 'array',
2020-05-29 08:06:22 -07:00
choices : ['lua', 'cxx', 'mono'],
value : ['cxx'],
description : 'Which auto-generated language bindings for efl to enable',
)
option('mono-beta',
type: 'boolean',
value: false,
description: 'Mono/C# @beta Eo methods enabled in the efl'
)
option('dotnet-stylecop',
type: 'string',
description: 'Dotnet StyleCop checks. Use * for all, or use comma listed: -Ddotnet-stylecop=ca1062,CA1032, sa0001, SA0002, cA2225'
)
option('dotnet-stylecop-severity',
type: 'combo',
choices: ['Warning', 'Error'],
value: 'Warning',
description: 'Dotnet StyleCop checks cause compilation errors or just warnings'
)
mono-docs: Allow embedding external examples Summary: New option added to eolian_gen: -e <dir> This specifies a directory to search for examples. If a file is found with the same name as an EFL C# class (e.g. Efl.Ui.Button.cs) or as an EFL C# method or property (e.g. Efl.IText.Text.cs, Efl.IText.SetText.cs) its full contents will be embedded in the documentation for that class or method within <example> and <code> tags. This is, in turn, is parsed by DocFX and shown in Example boxes in the generated pages. If an example file is not found, no examples are embedded for that object. If -e is not used, no examples are embedded for any object. New option added to meson: mono-examples-dir to point to the examples directory. This directory is then passed to eolian_mono through -e. Do not use it (or define it to nothing) to disable example embedding. No performance drop has been observed because of these extra tests. Right now examples can only be given for base classes, not for derived ones (i.e. Efl.IText.Text but not Efl.Ui.Button.Text). This will be addressed in a later commit. Feature Depends on D8587 Test Plan: Create an examples folder and put some files in it: ``` mkdir /tmp/examples echo 'var button = new Efl.Ui.Button();' > /tmp/examples/Efl.Ui.Button.cs echo 'button.AutoRepeatEnabled = true;' > /tmp/examples/Efl.Ui.IAutorepeat.AutorepeatEnabled.cs echo 'button.SetAutoRepeatEnabled(true);' > /tmp/examples/Efl.Ui.IAutorepeat.SetAutorepeatEnabled.cs ``` Configure meson to embed examples and build: ``` meson configure -Dmono-examples-dir=/tmp/examples ninja ``` Examine the generated efl_ui_button.eo.cs file to see embedded <example> tags, or run DocFX and bask in the glory of documentation pages with examples: ``` cd doc/docfx ./gendoc.sh ``` Reviewers: lauromoura, felipealmeida, vitor.sousa, zmike, bu5hm4n Reviewed By: vitor.sousa Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8592
2019-04-11 01:38:40 -07:00
option('mono-examples-dir',
type: 'string',
value: '',
description: 'Where eolian_mono will search for examples to embed into the documentation'
mono-docs: Allow embedding external examples Summary: New option added to eolian_gen: -e <dir> This specifies a directory to search for examples. If a file is found with the same name as an EFL C# class (e.g. Efl.Ui.Button.cs) or as an EFL C# method or property (e.g. Efl.IText.Text.cs, Efl.IText.SetText.cs) its full contents will be embedded in the documentation for that class or method within <example> and <code> tags. This is, in turn, is parsed by DocFX and shown in Example boxes in the generated pages. If an example file is not found, no examples are embedded for that object. If -e is not used, no examples are embedded for any object. New option added to meson: mono-examples-dir to point to the examples directory. This directory is then passed to eolian_mono through -e. Do not use it (or define it to nothing) to disable example embedding. No performance drop has been observed because of these extra tests. Right now examples can only be given for base classes, not for derived ones (i.e. Efl.IText.Text but not Efl.Ui.Button.Text). This will be addressed in a later commit. Feature Depends on D8587 Test Plan: Create an examples folder and put some files in it: ``` mkdir /tmp/examples echo 'var button = new Efl.Ui.Button();' > /tmp/examples/Efl.Ui.Button.cs echo 'button.AutoRepeatEnabled = true;' > /tmp/examples/Efl.Ui.IAutorepeat.AutorepeatEnabled.cs echo 'button.SetAutoRepeatEnabled(true);' > /tmp/examples/Efl.Ui.IAutorepeat.SetAutorepeatEnabled.cs ``` Configure meson to embed examples and build: ``` meson configure -Dmono-examples-dir=/tmp/examples ninja ``` Examine the generated efl_ui_button.eo.cs file to see embedded <example> tags, or run DocFX and bask in the glory of documentation pages with examples: ``` cd doc/docfx ./gendoc.sh ``` Reviewers: lauromoura, felipealmeida, vitor.sousa, zmike, bu5hm4n Reviewed By: vitor.sousa Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8592
2019-04-11 01:38:40 -07:00
)
option('dotnet',
type: 'boolean',
value: false,
description: 'Enable building C# bindings with dotnet instead of mono'
)
option('lua-interpreter',
type: 'combo',
choices: ['luajit', 'lua'],
value: 'luajit',
description: 'Which Lua back-end library to use in efl'
)
option('native-arch-optimization',
type: 'boolean',
value: true,
description: 'Enable architecture native optimizations in efl'
)
2018-11-29 04:11:57 -08:00
option('windows-version',
type : 'combo',
choices : ['vista', 'win7', 'win8', 'win81', 'win10'],
value : 'win7',
description : 'When on Windows, compile efl with the specified Windows version'
)
option('dictionaries-hyphen-dir',
type : 'string',
value : '/usr/share/hyphen/',
description : 'The path to the hyphen dictionaries directory'
)
option('elementary-base-dir',
type : 'string',
value : '.elementary',
description : 'The name of the directory for user supplied elementary data files like themes, config files'
)
option('install-eo-files',
type: 'boolean',
value: true,
description : 'Install any eo file'
)
option('mono-friend-assemblies',
type : 'array',
value : [],
description : 'List of friend assemblies that can access efl_mono assembly\'s internal types and members.'
)
option('efl-one',
type: 'boolean',
value : false,
description : 'Build special set of .so´s as a single .so'
)