bu5hm4n pushed a commit to branch feature/meson. http://git.enlightenment.org/core/efl.git/commit/?id=29b455518531086c551af3d5161b909946d6ba24
commit 29b455518531086c551af3d5161b909946d6ba24 Author: Marcel Hollerbach <[email protected]> Date: Fri Dec 29 08:50:15 2017 +0000 meson: here comes the monster, the beast, the orge! EVAS! --- meson.build | 17 +- meson/evas_loader_conf.sh | 16 ++ meson_options.txt | 39 ++++ src/generic/evas/common/meson.build | 6 + src/generic/evas/gst/meson.build | 14 ++ src/generic/evas/meson.build | 42 ++++ src/generic/evas/pdf/meson.build | 14 ++ src/generic/evas/ps/meson.build | 5 + src/generic/evas/raw/meson.build | 6 + src/generic/evas/svg/meson.build | 6 + src/generic/evas/xcf/meson.build | 8 + src/lib/ecore_wl2/meson.build | 1 + src/lib/evas/cache/meson.build | 6 + src/lib/evas/canvas/meson.build | 217 +++++++++++++++++++++ src/lib/evas/common/language/meson.build | 7 + src/lib/evas/common/meson.build | 87 +++++++++ src/lib/evas/common3d/meson.build | 2 + src/lib/evas/common3d/primitives/meson.build | 5 + .../primitives/solids_of_revolution/meson.build | 6 + .../evas/common3d/primitives/surfaces/meson.build | 4 + .../primitives/tabulated_primitives/meson.build | 4 + src/lib/evas/common3d/save_load/meson.build | 6 + src/lib/evas/file/meson.build | 6 + src/lib/evas/filters/lua/meson.build | 3 + src/lib/evas/filters/meson.build | 19 ++ src/lib/evas/gesture/meson.build | 65 ++++++ src/lib/evas/include/meson.build | 20 ++ src/lib/evas/meson.build | 159 +++++++++++++++ src/lib/evas/vg/meson.build | 1 + src/lib/evas_goal/empty.c | 0 src/lib/evas_goal/meson.build | 19 ++ src/modules/evas/engines/buffer/meson.build | 14 ++ src/modules/evas/engines/drm/meson.build | 8 + src/modules/evas/engines/fb/meson.build | 10 + src/modules/evas/engines/gl_cocoa/meson.build | 8 + src/modules/evas/engines/gl_common/meson.build | 34 ++++ src/modules/evas/engines/gl_drm/meson.build | 8 + src/modules/evas/engines/gl_generic/meson.build | 35 ++++ src/modules/evas/engines/gl_x11/meson.build | 8 + .../evas/engines/software_ddraw/meson.build | 10 + src/modules/evas/engines/software_gdi/meson.build | 10 + .../engines/software_generic/filters/meson.build | 13 ++ .../evas/engines/software_generic/meson.build | 31 +++ src/modules/evas/engines/software_x11/meson.build | 28 +++ src/modules/evas/engines/wayland_egl/meson.build | 9 + src/modules/evas/engines/wayland_shm/meson.build | 9 + src/modules/evas/image_loaders/meson.build | 42 ++++ src/modules/evas/image_savers/meson.build | 32 +++ src/modules/evas/meson.build | 104 ++++++++++ src/modules/evas/model_loaders/meson.build | 16 ++ src/modules/evas/model_savers/meson.build | 16 ++ src/modules/evas/vg_loaders/meson.build | 13 ++ src/modules/evas/vg_savers/meson.build | 14 ++ src/static_libs/libunibreak/meson.build | 29 +++ src/static_libs/vg_common/meson.build | 8 + src/tests/evas/meson.build | 30 +++ src/wayland_protocol/meson.build | 7 +- 57 files changed, 1351 insertions(+), 5 deletions(-) diff --git a/meson.build b/meson.build index d3f48ae1df..114103f97c 100644 --- a/meson.build +++ b/meson.build @@ -36,6 +36,7 @@ endif module_arch = '@0@-@1@-@2@'.format(host_os, host_machine.cpu_family(), meson.project_version()) module_files = [] +evas_loader_map = [] #install paths dir_prefix = get_option('prefix') @@ -114,9 +115,10 @@ subprojects = [ ['elput' , false, true, false, false, true, false, []], ['ecore_drm2' , false, true, false, false, false, false, []], ['ecore_cocoa' , false, true, false, false, false, false, []], +['evas' , true, true, false, false, true, false, ['vg_common', 'libunibreak']], +['evas_goal' , false, true, false, false, false, false, []], ] - # We generate Efl_Config.h and config.h later, they will be available here config_dir += include_directories('.') @@ -159,17 +161,19 @@ foreach package : subprojects if (package[6]) example_dirs += [package_name] endif - + set_variable('build_'+package_name, true) else set_variable('build_'+package_name, false) - + message(package_name+' disabled!') endif endforeach +subdir(join_paths('src', 'generic', 'evas')) + if get_option('build-tests') check = dependency('check') foreach test : test_dirs @@ -187,6 +191,13 @@ subdir(join_paths(local_scripts)) meson.add_install_script('meson/meson_modules.sh', module_files) +foreach evas_loader_map_inst : evas_loader_map + evas_loader_original = evas_loader_map_inst[0] + evas_loader_link_types = evas_loader_map_inst[1] + + meson.add_install_script('meson/evas_loader_conf.sh', evas_loader_original, evas_loader_link_types) +endforeach + # # Configure files # diff --git a/meson/evas_loader_conf.sh b/meson/evas_loader_conf.sh new file mode 100755 index 0000000000..d51f016b71 --- /dev/null +++ b/meson/evas_loader_conf.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +original_loader=$1 +original_name="$(basename $original_loader .so)" +loader_dir="$(dirname $original_loader)" +loader="$(basename $original_loader)" +loader_name="$(echo $original_name | cut -f 1 -d '.')" + +if [ ${original_loader: -3} == ".so" ] + then + mv "$DESTDIR"/"$original_loader" "$DESTDIR"/"$loader_dir"/"$original_name" +fi + +for x in "${@:2}"; do + ln -sf "$DESTDIR"/"$loader_dir"/"$original_name" "$DESTDIR"/"$loader_dir"/"$loader_name"."$x" +done \ No newline at end of file diff --git a/meson_options.txt b/meson_options.txt index d739a5cbb9..c0efa9e95b 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -136,6 +136,25 @@ option('ecore_cocoa', description : 'build ecore_cocoa' ) +option('evas_goal', + type : 'boolean', + value : true, + description : 'build evas' +) + +option('evas', + type : 'boolean', + value : true, + description : 'build evas' +) + +option('opengl', + type : 'combo', + choices : ['full', 'es-egl', 'none'], + value : 'none', + description : 'build evas' +) + option('build-id', type : 'string', value : 'none', @@ -266,4 +285,24 @@ option('unmount-path', type : 'string', value : 'detect', description : 'path to use as eject binary, if "detect" internal eeze bins are used' +) + +option('evas-modules', + type : 'combo', + choices : ['shared', 'static'], + value : 'shared', + description : 'how to build the evas modules' +) + +option('evas-loaders-disabler', + type : 'array', + description : 'add names here to disable the loaders', + choices : ['gst', 'pdf', 'ps', 'raw', 'svg', 'xcf', 'bmp', 'dds', 'eet', 'generic', 'gif', 'ico', 'jp2k', 'jpeg', 'pmaps', 'png', 'psd', 'tga', 'tgv', 'tiff', 'wbmp', 'webp', 'xpm'], + value : [] +) + +option('harfbuzz', + type : 'boolean', + value : false, + description : 'harfbuzz support' ) \ No newline at end of file diff --git a/src/generic/evas/common/meson.build b/src/generic/evas/common/meson.build new file mode 100644 index 0000000000..b90705e4c3 --- /dev/null +++ b/src/generic/evas/common/meson.build @@ -0,0 +1,6 @@ +generic_src = files([ + 'shmfile.c', + 'shmfile.h', + 'timeout.c', + 'timeout.h', +]) diff --git a/src/generic/evas/gst/meson.build b/src/generic/evas/gst/meson.build new file mode 100644 index 0000000000..9689aee80a --- /dev/null +++ b/src/generic/evas/gst/meson.build @@ -0,0 +1,14 @@ + +# gstreamer 0.1 support +#generic_deps = [dependency('gstreamer')] +#generic_src = files([ +# 'main_0_10.c' +#]) + + +generic_src = files([ + 'main.c' +]) + +generic_deps = [dependency('gstreamer-1.0')] +generic_support = ['264','3g2','3gp','3gp2','3gpp','3gpp2','3p2','asf','avi','bdm','bdmv','clpi','cpi','dv','fla','flv','m1v','m2t','m2v','m4v','mkv','mov','mp2','mp2ts','mp4','mpe','mpeg','mpg','mpl','mpls','mts','mxf','nut','nuv','ogg','ogm','ogv','qt','rm','rmj','rmm','rms','rmx','rmvb','rv','swf','ts','webm','weba','wmv'] \ No newline at end of file diff --git a/src/generic/evas/meson.build b/src/generic/evas/meson.build new file mode 100644 index 0000000000..e36b57805f --- /dev/null +++ b/src/generic/evas/meson.build @@ -0,0 +1,42 @@ +generic_loaders = ['gst', 'pdf', +'ps', +'raw', +'svg', +'xcf'] + +generic_src = [] +generic_deps = [] + +subdir('common') + +common = static_library('evas_loader_common', + generic_src, + include_directories : config_dir, + dependencies: [generic_deps, rt], +) + +foreach loader : generic_loaders + generic_src = [] + generic_deps = [] + generic_support = [] + + if get_option('evas-loaders-disabler').contains(loader) == false + subdir(loader) + + tmp = shared_module('image_loader.'+loader, + generic_src, + include_directories : config_dir + [include_directories('common')], + link_with : common, + dependencies: [eina, generic_deps], + name_prefix : 'evas_', + install_dir : join_paths(dir_lib, 'evas', 'utils'), + install : true, + ) + + set_variable(loader, tmp) + mod = join_paths(dir_lib, 'evas', 'utils', 'evas_image_loader.'+loader+'.so') + evas_loader_map += [[mod, generic_support]] + else + message('Image loader '+loader+' disabled') + endif +endforeach diff --git a/src/generic/evas/pdf/meson.build b/src/generic/evas/pdf/meson.build new file mode 100644 index 0000000000..941918104b --- /dev/null +++ b/src/generic/evas/pdf/meson.build @@ -0,0 +1,14 @@ +generic_src = files([ + 'main.cpp' +]) + +generic_deps = [dependency('poppler-cpp')] +generic_support = ['ppt','pptx','odp','xls','xlsx','ods','doc','docx','odt','rtf'] + +install_data('evas_generic_pdf_loader.libreoffice', + install_dir : join_paths(dir_lib, 'evas', 'utils') +) + +generic_pdf_loader_types = ['ppt','pptx','odp','xls','xlsx','ods','doc','docx','odt','rtf'] + +meson.add_install_script( join_paths('..','..','..','..','meson','evas_loader_conf.sh'), join_paths(dir_lib, 'evas', 'utils', 'evas_generic_pdf_loader.libreoffice'), generic_pdf_loader_types) \ No newline at end of file diff --git a/src/generic/evas/ps/meson.build b/src/generic/evas/ps/meson.build new file mode 100644 index 0000000000..ca52781307 --- /dev/null +++ b/src/generic/evas/ps/meson.build @@ -0,0 +1,5 @@ +generic_src = files([ + 'main.c' +]) + +generic_deps = [dependency('libspectre')] diff --git a/src/generic/evas/raw/meson.build b/src/generic/evas/raw/meson.build new file mode 100644 index 0000000000..6843d01e90 --- /dev/null +++ b/src/generic/evas/raw/meson.build @@ -0,0 +1,6 @@ +generic_src = files([ + 'main.c' +]) + +generic_deps = [dependency('libraw')] +generic_support = ['arw','cr2','crw','dcr','dng','k25','kdc','erf','mrw','nef','nrf','nrw','orf','rw2','pef','raf','sr2','srf','x3f'] \ No newline at end of file diff --git a/src/generic/evas/svg/meson.build b/src/generic/evas/svg/meson.build new file mode 100644 index 0000000000..efda548da3 --- /dev/null +++ b/src/generic/evas/svg/meson.build @@ -0,0 +1,6 @@ +generic_src = files([ + 'main.c' +]) + +generic_deps = [dependency('librsvg-2.0')] +generic_support = ['svgz', 'svg.gz'] \ No newline at end of file diff --git a/src/generic/evas/xcf/meson.build b/src/generic/evas/xcf/meson.build new file mode 100644 index 0000000000..0f5fb208c5 --- /dev/null +++ b/src/generic/evas/xcf/meson.build @@ -0,0 +1,8 @@ +generic_src = files([ + 'common.h', + 'main.c', + 'pixelfuncs.c' +]) + +generic_deps = [dependency('zlib')] +generic_support = ['xcf.gz'] \ No newline at end of file diff --git a/src/lib/ecore_wl2/meson.build b/src/lib/ecore_wl2/meson.build index 052f4375a9..3e9055b075 100644 --- a/src/lib/ecore_wl2/meson.build +++ b/src/lib/ecore_wl2/meson.build @@ -21,6 +21,7 @@ ecore_wl2_deps += dependency('wayland-client') ecore_wl2_deps += dependency('wayland-server') ecore_wl2_deps += dependency('xkbcommon') ecore_wl2_deps += wayland_protocol +ecore_wl2_deps += dependency('wayland-client') ecore_wl2_lib = library('ecore_wl2', ecore_wl2_src, pub_eo_file_target, diff --git a/src/lib/evas/cache/meson.build b/src/lib/evas/cache/meson.build new file mode 100644 index 0000000000..fa276ecad6 --- /dev/null +++ b/src/lib/evas/cache/meson.build @@ -0,0 +1,6 @@ +evas_src += files([ + 'evas_cache.h', + 'evas_cache_engine_image.c', + 'evas_cache_image.c', + 'evas_preload.c', +]) \ No newline at end of file diff --git a/src/lib/evas/canvas/meson.build b/src/lib/evas/canvas/meson.build new file mode 100644 index 0000000000..7d52a77b3d --- /dev/null +++ b/src/lib/evas/canvas/meson.build @@ -0,0 +1,217 @@ + +pub_legacy_eo_files = [ + 'efl_canvas_vg.eo', + 'efl_canvas_rectangle.eo', + 'efl_canvas_object.eo', + 'evas_canvas.eo', + 'evas_line.eo', + 'evas_table.eo', + 'evas_grid.eo', + 'evas_box.eo', + 'evas_text.eo', + 'evas_textgrid.eo', + 'evas_image.eo', + 'efl_vg.eo', + 'efl_vg_container.eo', + 'efl_vg_shape.eo', + 'efl_vg_gradient.eo', + 'efl_vg_gradient_radial.eo', + 'efl_vg_gradient_linear.eo', + 'efl_canvas_group.eo', + 'efl_gfx_map.eo', + 'efl_canvas_object_event_grabber.eo', + 'efl_canvas_text.eo', +] + +foreach eo_file : pub_legacy_eo_files + pub_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h', eo_file + '.legacy.h',], + install : true, + install_dir : join_paths(dir_package_include, 'canvas'), + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-o', 'l:' + join_paths(meson.current_build_dir(), eo_file + '.legacy.h'), + '-gchl', '@INPUT@']) + +endforeach + +pub_eo_files = [ + 'efl_canvas_polygon.eo', + 'efl_canvas_image_internal.eo', + 'evas_canvas3d_camera.eo', + 'evas_canvas3d_texture.eo', + 'evas_canvas3d_material.eo', + 'evas_canvas3d_light.eo', + 'evas_canvas3d_mesh.eo', + 'evas_canvas3d_primitive.eo', + 'evas_canvas3d_node.eo', + 'evas_canvas3d_scene.eo', + 'evas_canvas3d_object.eo', + 'efl_canvas_image.eo', + 'efl_canvas_snapshot.eo', + 'efl_canvas_proxy.eo', + 'efl_canvas_scene3d.eo', + 'efl_canvas_surface.eo', + 'efl_canvas_surface_tbm.eo', + 'efl_canvas_surface_x11.eo', + 'efl_canvas_surface_wayland.eo', + 'efl_canvas_filter_internal.eo', + 'efl_input_state.eo', + 'efl_input_interface.eo', + 'efl_input_event.eo', + 'efl_input_key.eo', + 'efl_input_pointer.eo', + 'efl_input_hold.eo', + 'efl_input_focus.eo', + 'efl_animation.eo', + 'efl_animation_alpha.eo', + 'efl_animation_rotate.eo', + 'efl_animation_scale.eo', + 'efl_animation_translate.eo', + 'efl_animation_group.eo', + 'efl_animation_group_parallel.eo', + 'efl_animation_group_sequential.eo', + 'efl_animation_object.eo', + 'efl_animation_object_alpha.eo', + 'efl_animation_object_rotate.eo', + 'efl_animation_object_scale.eo', + 'efl_animation_object_translate.eo', + 'efl_animation_object_group.eo', + 'efl_animation_object_group_parallel.eo', + 'efl_animation_object_group_sequential.eo', +] + +foreach eo_file : pub_eo_files + pub_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + install : true, + install_dir : join_paths(dir_package_include, 'canvas'), + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-o', 'l:' + join_paths(meson.current_build_dir(), eo_file + '.legacy.h'), + '-gchl', '@INPUT@']) +endforeach + + +pub_eo_types_files = [ + 'evas_canvas3d_types.eot', + 'efl_animation_types.eot' +] + +foreach eo_file : pub_eo_types_files + pub_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + install : true, + install_dir : join_paths(dir_package_include, 'canvas'), + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-gh', '@INPUT@']) +endforeach + +evas_src += files([ + 'evas_callbacks.c', + 'evas_clip.c', + 'evas_data.c', + 'evas_device.c', + 'evas_events.c', + 'evas_events_legacy.c', + 'evas_focus.c', + 'evas_key.c', + 'evas_key_grab.c', + 'evas_layer.c', + 'evas_main.c', + 'evas_name.c', + 'evas_image_legacy.c', + 'evas_object_image.c', + 'evas_object_main.c', + 'evas_object_inform.c', + 'evas_object_intercept.c', + 'evas_object_line.c', + 'evas_object_polygon.c', + 'evas_object_rectangle.c', + 'evas_object_smart.c', + 'evas_object_smart_clipped.c', + 'evas_object_box.c', + 'evas_object_table.c', + 'evas_object_text.c', + 'evas_object_textblock.c', + 'evas_object_textgrid.c', + 'evas_object_grid.c', + 'evas_font_dir.c', + 'evas_rectangle.c', + 'evas_render.c', + 'render2/evas_render2.c', + 'render2/evas_render2.h', + 'evas_smart.c', + 'evas_stack.c', + 'evas_async_events.c', + 'evas_stats.c', + 'evas_touch_point.c', + 'evas_map.c', + 'evas_map.h', + 'evas_gl.c', + 'evas_out.c', + 'efl_canvas_image.c', + 'efl_canvas_object_event_grabber.c', + 'efl_canvas_proxy.c', + 'efl_canvas_snapshot.c', + 'efl_canvas_scene3d.c', + 'efl_canvas_surface.c', + 'efl_canvas_surface_tbm.c', + 'efl_canvas_surface_x11.c', + 'efl_canvas_surface_wayland.c', + 'efl_gfx_map.c', + 'efl_input_event.c', + 'efl_input_key.c', + 'efl_input_pointer.c', + 'efl_input_hold.c', + 'efl_input_focus.c', + 'efl_animation.c', + 'efl_animation_alpha.c', + 'efl_animation_rotate.c', + 'efl_animation_scale.c', + 'efl_animation_translate.c', + 'efl_animation_group.c', + 'efl_animation_group_parallel.c', + 'efl_animation_group_sequential.c', + 'efl_animation_object.c', + 'efl_animation_object_alpha.c', + 'efl_animation_object_rotate.c', + 'efl_animation_object_scale.c', + 'efl_animation_object_translate.c', + 'efl_animation_object_group.c', + 'efl_animation_object_group_parallel.c', + 'efl_animation_object_group_sequential.c', + 'efl_canvas_vg.c', + 'evas_vg_node.c', + 'evas_vg_container.c', + 'evas_vg_gradient.c', + 'evas_vg_gradient_linear.c', + 'evas_vg_gradient_radial.c', + 'evas_vg_utils.c', + 'evas_vg_shape.c', + 'evas_filter_mixin.c', + 'evas_canvas3d_object.c', + 'evas_canvas3d_scene.c', + 'evas_canvas3d_node.c', + 'evas_canvas3d_camera.c', + 'evas_canvas3d_light.c', + 'evas_canvas3d_mesh.c', + 'evas_canvas3d_texture.c', + 'evas_canvas3d_material.c', + 'evas_canvas3d_primitive.c', + 'evas_canvas3d_node_callback.h', + 'evas_canvas3d_eet.c', + ]) + +evas_include_directories += include_directories('render2') +evas_include_directories += include_directories('.') + +install_headers('evas_textblock_legacy.h', + install_dir : join_paths(dir_package_include, 'canvas'), +) \ No newline at end of file diff --git a/src/lib/evas/common/language/meson.build b/src/lib/evas/common/language/meson.build new file mode 100644 index 0000000000..dd725a92bc --- /dev/null +++ b/src/lib/evas/common/language/meson.build @@ -0,0 +1,7 @@ +evas_src += files([ + 'evas_bidi_utils.c', + 'evas_language_utils.c', + 'evas_bidi_utils.h', + 'evas_language_utils.h', + 'evas_script_table.h', +]) \ No newline at end of file diff --git a/src/lib/evas/common/meson.build b/src/lib/evas/common/meson.build new file mode 100644 index 0000000000..6f3cca1eec --- /dev/null +++ b/src/lib/evas/common/meson.build @@ -0,0 +1,87 @@ +evas_include_directories += include_directories('.') + +evas_src += files([ +'evas_op_copy_main_.c', +'evas_op_blend_main_.c', +'evas_op_add_main_.c', +'evas_op_sub_main_.c', +'evas_op_mask_main_.c', +'evas_op_mul_main_.c', +'evas_blend_main.c', +'evas_blit_main.c', +'evas_convert_color.c', +'evas_convert_colorspace.c', +'evas_convert_gry_1.c', +'evas_convert_gry_8.c', +'evas_convert_main.c', +'evas_convert_rgb_16.c', +'evas_convert_rgb_24.c', +'evas_convert_rgb_8.c', +'evas_convert_grypal_6.c', +'evas_convert_yuv.c', +'evas_cpu.c', +'evas_draw_main.c', +'evas_font_draw.c', +'evas_font_load.c', +'evas_font_main.c', +'evas_font_query.c', +'evas_font_compress.c', +'evas_image_load.c', +'evas_image_save.c', +'evas_image_main.c', +'evas_image_data.c', +'evas_image_scalecache.c', +'evas_line_main.c', +'evas_polygon_main.c', +'evas_rectangle_main.c', +'evas_scale_main.c', +'evas_scale_sample.c', +'evas_scale_smooth.c', +'evas_scale_span.c', +'evas_thread_render.c', +'evas_tiler.c', +'evas_pipe.c', +'language/evas_bidi_utils.c', +'language/evas_language_utils.c', +'evas_text_utils.c', +'evas_font_ot.c', +'evas_map_image.c', +'evas_map_image.h', +'evas_blend.h', +'evas_blend_private.h', +'evas_convert_color.h', +'evas_convert_colorspace.h', +'evas_convert_gry_1.h', +'evas_convert_gry_8.h', +'evas_convert_grypal_6.h', +'evas_convert_main.h', +'evas_convert_rgb_16.h', +'evas_convert_rgb_24.h', +'evas_convert_rgb_32.h', +'evas_convert_rgb_32.c', +'evas_convert_rgb_8.h', +'evas_convert_yuv.h', +'evas_draw.h', +'evas_font.h', +'evas_font_private.h', +'evas_image.h', +'evas_image_private.h', +'evas_line.h', +'evas_polygon.h', +'evas_rectangle.h', +'evas_scale_main.h', +'evas_scale_smooth.h', +'evas_scale_span.h', +'evas_pipe.h', +'language/evas_bidi_utils.h', +'language/evas_language_utils.h', +'language/evas_script_table.h', +'evas_text_utils.h', +'evas_font_ot.h', +'evas_font_draw.h', +'evas_common_generic_cache.c' +]) + +#subdir('evas_op_blend') +#subdir('evas_op_sub') +subdir('language') \ No newline at end of file diff --git a/src/lib/evas/common3d/meson.build b/src/lib/evas/common3d/meson.build new file mode 100644 index 0000000000..22341b4a84 --- /dev/null +++ b/src/lib/evas/common3d/meson.build @@ -0,0 +1,2 @@ +subdir('primitives') +subdir('save_load') \ No newline at end of file diff --git a/src/lib/evas/common3d/primitives/meson.build b/src/lib/evas/common3d/primitives/meson.build new file mode 100644 index 0000000000..2888869bf8 --- /dev/null +++ b/src/lib/evas/common3d/primitives/meson.build @@ -0,0 +1,5 @@ +subdir('solids_of_revolution') +subdir('surfaces') +subdir('tabulated_primitives') + +evas_src += files(['primitive_common.c']) \ No newline at end of file diff --git a/src/lib/evas/common3d/primitives/solids_of_revolution/meson.build b/src/lib/evas/common3d/primitives/solids_of_revolution/meson.build new file mode 100644 index 0000000000..ac35b05093 --- /dev/null +++ b/src/lib/evas/common3d/primitives/solids_of_revolution/meson.build @@ -0,0 +1,6 @@ +evas_src += files([ + 'cone.c', + 'cylinder.c', + 'sphere.c', + 'torus.c' +]) \ No newline at end of file diff --git a/src/lib/evas/common3d/primitives/surfaces/meson.build b/src/lib/evas/common3d/primitives/surfaces/meson.build new file mode 100644 index 0000000000..398996f148 --- /dev/null +++ b/src/lib/evas/common3d/primitives/surfaces/meson.build @@ -0,0 +1,4 @@ +evas_src += files([ + 'surface.c', + 'terrain.c' +]) \ No newline at end of file diff --git a/src/lib/evas/common3d/primitives/tabulated_primitives/meson.build b/src/lib/evas/common3d/primitives/tabulated_primitives/meson.build new file mode 100644 index 0000000000..a24df304d1 --- /dev/null +++ b/src/lib/evas/common3d/primitives/tabulated_primitives/meson.build @@ -0,0 +1,4 @@ +evas_src += files([ + 'cube.c', + 'square.c' +]) \ No newline at end of file diff --git a/src/lib/evas/common3d/save_load/meson.build b/src/lib/evas/common3d/save_load/meson.build new file mode 100644 index 0000000000..72f430d31e --- /dev/null +++ b/src/lib/evas/common3d/save_load/meson.build @@ -0,0 +1,6 @@ +evas_src += files([ + 'evas_model_load.c', + 'evas_model_load_save_common.c', + 'evas_model_load_save_common.h', + 'evas_model_save.c', +]) \ No newline at end of file diff --git a/src/lib/evas/file/meson.build b/src/lib/evas/file/meson.build new file mode 100644 index 0000000000..3fb4c754a9 --- /dev/null +++ b/src/lib/evas/file/meson.build @@ -0,0 +1,6 @@ +evas_src += files([ + 'evas_module.c', + 'evas_module.h', + 'evas_path.c', + 'evas_path.h', +]) diff --git a/src/lib/evas/filters/lua/meson.build b/src/lib/evas/filters/lua/meson.build new file mode 100644 index 0000000000..26658feae7 --- /dev/null +++ b/src/lib/evas/filters/lua/meson.build @@ -0,0 +1,3 @@ +install_data('color.lua', + install_dir : join_paths(dir_data, 'evas', 'filters', 'lua') +) \ No newline at end of file diff --git a/src/lib/evas/filters/meson.build b/src/lib/evas/filters/meson.build new file mode 100644 index 0000000000..c15c7671a2 --- /dev/null +++ b/src/lib/evas/filters/meson.build @@ -0,0 +1,19 @@ +subdir('lua') + +evas_src += files([ + 'evas_filter.c', + 'evas_filter_parser.c', + 'evas_filter_private.h', + 'evas_filter_utils.c', +]) + +luajit = dependency('luajit') +if target_machine.system() == 'darwin' +# luajit on macos is broken, this means we need to generate our own dependency with our arguments, a library later still needs to link to luajit for the pagesize argument thingy + luajit = declare_dependency( + include_directories: include_directories(luajit.get_pkgconfig_variable('includedir')), + link_args: ['-L'+luajit.get_pkgconfig_variable('libdir'), '-l'+luajit.get_pkgconfig_variable('libname')] + ) +endif + +evas_deps += luajit \ No newline at end of file diff --git a/src/lib/evas/gesture/meson.build b/src/lib/evas/gesture/meson.build new file mode 100644 index 0000000000..d7728a7b04 --- /dev/null +++ b/src/lib/evas/gesture/meson.build @@ -0,0 +1,65 @@ +pub_eo_files = [ + 'efl_gesture_touch.eo', + 'efl_gesture.eo', + 'efl_gesture_tap.eo', + 'efl_gesture_long_tap.eo', + 'efl_gesture_recognizer.eo', + 'efl_gesture_manager.eo' +] + +foreach eo_file : pub_eo_files + pub_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + install : true, + install_dir : dir_package_include, + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-o', 'l:' + join_paths(meson.current_build_dir(), eo_file + '.legacy.h'), + '-gchl', '@INPUT@']) +endforeach + +pub_eo_files = [ + 'efl_gesture_recognizer_tap.eo', + 'efl_gesture_recognizer_long_tap.eo' +] + +foreach eo_file : pub_eo_files + pub_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + install : false, + install_dir : dir_package_include, + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-o', 'l:' + join_paths(meson.current_build_dir(), eo_file + '.legacy.h'), + '-gchl', '@INPUT@']) +endforeach + +pub_eo_types_files = [ + 'efl_gesture_types.eot', +] + +foreach eo_file : pub_eo_types_files + pub_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + install : true, + install_dir : dir_package_include, + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-gh', '@INPUT@']) +endforeach + +evas_src += files([ + 'efl_gesture_touch.c', + 'efl_gesture.c', + 'efl_gesture_tap.c', + 'efl_gesture_long_tap.c', + 'efl_gesture_recognizer.c', + 'efl_gesture_recognizer_tap.c', + 'efl_gesture_recognizer_long_tap.c', + 'efl_gesture_manager.c', +]) \ No newline at end of file diff --git a/src/lib/evas/include/meson.build b/src/lib/evas/include/meson.build new file mode 100644 index 0000000000..42aa2e47bd --- /dev/null +++ b/src/lib/evas/include/meson.build @@ -0,0 +1,20 @@ +evas_include_directories += [include_directories('.')] + + +pub_eo_files = [ + 'evas_ector_buffer.eo' +] + +foreach eo_file : pub_eo_files + pub_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + install : true, + install_dir : dir_package_include, + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-gch', '@INPUT@']) +endforeach + +eolian_include_directories += ['-I', meson.current_source_dir()] diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build new file mode 100644 index 0000000000..0d81d536d8 --- /dev/null +++ b/src/lib/evas/meson.build @@ -0,0 +1,159 @@ +# README +# +# Evas build is a bit more complex. +# the final shared library is build in src/lib/evas_goal/meson.build. +# +# The content of lib/evas is build as static_library as +# are all the engines loaders and savers. +# +# All those stages are defining dependencies with theire source code +# as 'source :', later everything is build as libevas.so. +# +# For now loaders and savers are ALWAYS build statically. +# + +evas_deps = [eo, eet, eina, efl, emile, ector, ecore] +pub_eo_file_target = [] + +pub_legacy_eo_files = [ + +] + +foreach eo_file : pub_legacy_eo_files + pub_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h', eo_file + '.legacy.h',], + install : true, + install_dir : dir_package_include, + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-o', 'l:' + join_paths(meson.current_build_dir(), eo_file + '.legacy.h'), + '-gchl', '@INPUT@']) + +endforeach + +pub_eo_files = [ + +] + +foreach eo_file : pub_eo_files + pub_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + install : true, + install_dir : dir_package_include, + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-gch', '@INPUT@']) +endforeach + + +pub_eo_types_files = [ + +] + +foreach eo_file : pub_eo_types_files + pub_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + install : true, + install_dir : dir_package_include, + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-gh', '@INPUT@']) +endforeach + +eolian_include_directories += ['-I', meson.current_source_dir()] + +evas_header_src = [ + 'Evas.h', + 'Evas_Common.h', + 'Evas_Eo.h', + 'Evas_GL.h', + 'Evas_Internal.h', + 'Evas_Legacy.h', + 'Evas_Loader.h', +] + +evas_include_directories = [ + include_directories('.'), + include_directories('common'), + include_directories('common3d'), + include_directories(join_paths('common3d', 'save_load')), + include_directories('include'), + include_directories('filters'), + vg_common_inc_dir +] + +evas_src = [ + 'main.c' +] + +evas_src += vg_common_src + +evas_deps += dependency('freetype2') + +font_config = dependency('fontconfig') +if (font_config.found()) + config_h.set('HAVE_FONTCONFIG', '1') + evas_deps += font_config +endif + +fribidi = dependency('fribidi') +if (fribidi.found()) + config_h.set('HAVE_FRIBIDI', '1') + evas_deps += fribidi +endif + +subdir('include') +subdir('common') +subdir('canvas') +subdir('gesture') +subdir('filters') +subdir('cache') +subdir('common3d') +subdir('file') +subdir('vg') + +gl_deps = [] + +if get_option('harfbuzz') + evas_deps += dependency('harfbuzz') + config_h.set('HAVE_HARFBUZZ', '1') +endif + +if get_option('ecore_wl2') or get_option('ecore_buffer') + evas_deps += wayland_protocol +endif + + +if get_option('opengl') != 'none' + gl_deps += dependency('gl') +endif + +if get_option('opengl') == 'es-egl' + config_h.set('GL_GLES', '1') + gl_deps += dependency('egl') +endif + +evas_pre = declare_dependency( + include_directories: evas_include_directories + [vg_common_inc_dir], + sources : pub_eo_file_target, + dependencies: [eina, eo, ector, emile, evas_deps], +) + +evas_pre_lib_dep = declare_dependency( + include_directories: evas_include_directories + [vg_common_inc_dir], + sources : [evas_src, pub_eo_file_target], + dependencies: [evas_deps, m, draw, valgrind, libunibreak] +) + +#install_data(pub_eo_files, +# install_dir: join_paths(eolian_include_dir, package_version_name) +#) + +install_headers(evas_header_src, + install_dir : dir_package_include, +) \ No newline at end of file diff --git a/src/lib/evas/vg/meson.build b/src/lib/evas/vg/meson.build new file mode 100644 index 0000000000..2f9622312d --- /dev/null +++ b/src/lib/evas/vg/meson.build @@ -0,0 +1 @@ +evas_src += files(['evas_vg_cache.c']) \ No newline at end of file diff --git a/src/lib/evas_goal/empty.c b/src/lib/evas_goal/empty.c new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/lib/evas_goal/meson.build b/src/lib/evas_goal/meson.build new file mode 100644 index 0000000000..097708571d --- /dev/null +++ b/src/lib/evas_goal/meson.build @@ -0,0 +1,19 @@ +evas_lib = library('evas', + 'empty.c', + #all the source code is coming from evas_pre_lib_dep + dependencies: [evas_pre_lib_dep, evas_static_list], + install: true, + c_args : '-DPACKAGE_DATA_DIR="'+join_paths(dir_data, 'evas')+'"', +) + +evas = declare_dependency( + link_with : [evas_lib], + dependencies : [eina, ecore, ector, emile, evas_pre], + include_directories : evas_include_directories +) + +evas_bin = declare_dependency( + link_with : [evas_lib], + dependencies : [eina, ecore, ector, emile, dependency('luajit')], + include_directories : evas_include_directories +) \ No newline at end of file diff --git a/src/modules/evas/engines/buffer/meson.build b/src/modules/evas/engines/buffer/meson.build new file mode 100644 index 0000000000..3373b7d5ea --- /dev/null +++ b/src/modules/evas/engines/buffer/meson.build @@ -0,0 +1,14 @@ +engine_src = files([ + 'Evas_Engine_Buffer.h', + 'evas_engine.c', + 'evas_engine.h', + 'evas_outbuf.c' +]) + +engine_deps = [] + +evas_include_directories += include_directories('.') + +install_headers('Evas_Engine_Buffer.h', + install_dir : dir_package_include, +) \ No newline at end of file diff --git a/src/modules/evas/engines/drm/meson.build b/src/modules/evas/engines/drm/meson.build new file mode 100644 index 0000000000..4d30f61349 --- /dev/null +++ b/src/modules/evas/engines/drm/meson.build @@ -0,0 +1,8 @@ +engine_src = files([ + 'Evas_Engine_Drm.h', + 'evas_engine.c', + 'evas_engine.h', + 'evas_outbuf.c' +]) + +engine_deps = [ecore_drm2, libdrm] \ No newline at end of file diff --git a/src/modules/evas/engines/fb/meson.build b/src/modules/evas/engines/fb/meson.build new file mode 100644 index 0000000000..c59910fda3 --- /dev/null +++ b/src/modules/evas/engines/fb/meson.build @@ -0,0 +1,10 @@ +engine_src = files([ + 'Evas_Engine_FB.h', + 'evas_engine.c', + 'evas_engine.h', + 'evas_outbuf.c', + 'evas_fb.h', + 'evas_fb_main.c', +]) + +engine_deps = [ecore_fb] diff --git a/src/modules/evas/engines/gl_cocoa/meson.build b/src/modules/evas/engines/gl_cocoa/meson.build new file mode 100644 index 0000000000..71e1649594 --- /dev/null +++ b/src/modules/evas/engines/gl_cocoa/meson.build @@ -0,0 +1,8 @@ +engine_src = files([ + 'Evas_Engine_GL_Cocoa.h', + 'evas_engine.c', + 'evas_engine.h', + 'evas_outbuf.m', +]) + +engine_deps = [ecore_cocoa] diff --git a/src/modules/evas/engines/gl_common/meson.build b/src/modules/evas/engines/gl_common/meson.build new file mode 100644 index 0000000000..cbfe8ce0de --- /dev/null +++ b/src/modules/evas/engines/gl_common/meson.build @@ -0,0 +1,34 @@ +engine_src = files([ + 'evas_gl_private.h', + 'evas_gl_common.h', + 'evas_gl_define.h', + 'evas_gl_context.c', + 'evas_gl_file_cache.c', + 'evas_gl_shader.c', + 'evas_gl_rectangle.c', + 'evas_gl_texture.c', + 'evas_gl_preload.c', + 'evas_gl_image.c', + 'evas_gl_font.c', + 'evas_gl_polygon.c', + 'evas_gl_line.c', + 'evas_gl_core.c', + 'evas_gl_api_ext.h', + 'evas_gl_api_ext_def.h', + 'evas_gl_core.h', + 'evas_gl_core_private.h', + 'evas_gl_api.c', + 'evas_gl_api_def.h', + 'evas_gl_api_gles1.c', + 'evas_gl_api_gles3_def.h', + 'evas_gl_api_ext.c', + 'evas_gl_3d_common.h', + 'evas_gl_3d_private.h', + 'evas_gl_3d.c', + 'evas_gl_3d_renderer.c', + 'evas_gl_3d_shader.c', + #join_paths('shader_3d', 'evas_gl_3d_shaders.x'), + #join_paths('shader','evas_gl_shaders.x'), +]) + +engine_deps = [gl_deps] diff --git a/src/modules/evas/engines/gl_drm/meson.build b/src/modules/evas/engines/gl_drm/meson.build new file mode 100644 index 0000000000..5115cfb0b1 --- /dev/null +++ b/src/modules/evas/engines/gl_drm/meson.build @@ -0,0 +1,8 @@ +engine_src = files([ + 'Evas_Engine_GL_Drm.h', + 'evas_engine.c', + 'evas_engine.h', + 'evas_outbuf.c', +]) + +engine_deps = [ecore_drm2, libdrm] diff --git a/src/modules/evas/engines/gl_generic/meson.build b/src/modules/evas/engines/gl_generic/meson.build new file mode 100644 index 0000000000..76d456f963 --- /dev/null +++ b/src/modules/evas/engines/gl_generic/meson.build @@ -0,0 +1,35 @@ +engine_src = files([ + 'evas_engine.c', + 'Evas_Engine_GL_Generic.h', + 'Evas_Engine_GL_Shared.h', + 'evas_ector_gl.h', + 'evas_ector_gl_buffer.c', + 'evas_ector_gl_image_buffer.c', + join_paths('filters','gl_engine_filter.h'), + join_paths('filters','gl_filter_blend.c'), + join_paths('filters','gl_filter_blur.c'), + join_paths('filters','gl_filter_curve.c'), + join_paths('filters','gl_filter_displace.c'), + join_paths('filters','gl_filter_fill.c'), + join_paths('filters','gl_filter_mask.c'), +]) + + +pub_eo_files = [ + 'evas_ector_gl_buffer.eo', + 'evas_ector_gl_image_buffer.eo' +] + +foreach eo_file : pub_eo_files + engine_src += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + install : true, + install_dir : dir_package_include, + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-gch', '@INPUT@']) +endforeach + +engine_deps = [gl_common] diff --git a/src/modules/evas/engines/gl_x11/meson.build b/src/modules/evas/engines/gl_x11/meson.build new file mode 100644 index 0000000000..bb5e87aa91 --- /dev/null +++ b/src/modules/evas/engines/gl_x11/meson.build @@ -0,0 +1,8 @@ +engine_src = files([ + 'Evas_Engine_GL_X11.h', + 'evas_engine.c', + 'evas_engine.h', + 'evas_x_main.c', +]) + +engine_deps = [ecore_x_deps, gl_deps, ] \ No newline at end of file diff --git a/src/modules/evas/engines/software_ddraw/meson.build b/src/modules/evas/engines/software_ddraw/meson.build new file mode 100644 index 0000000000..8c0c482fb4 --- /dev/null +++ b/src/modules/evas/engines/software_ddraw/meson.build @@ -0,0 +1,10 @@ +engine_src = files([ + 'Evas_Engine_Software_DDraw.h', + 'evas_engine.c', + 'evas_engine.h', + 'evas_outbuf.c', + 'evas_ddraw_buffer.c', + 'evas_ddraw_main.c', +]) + +engine_deps = [] diff --git a/src/modules/evas/engines/software_gdi/meson.build b/src/modules/evas/engines/software_gdi/meson.build new file mode 100644 index 0000000000..76f35b06c8 --- /dev/null +++ b/src/modules/evas/engines/software_gdi/meson.build @@ -0,0 +1,10 @@ +engine_src = files([ + 'Evas_Engine_Software_Gdi.h', + 'evas_engine.c', + 'evas_engine.h', + 'evas_outbuf.c', + 'evas_gdi_buffer.c', + 'evas_gdi_main.c', +]) + +engine_deps = [] diff --git a/src/modules/evas/engines/software_generic/filters/meson.build b/src/modules/evas/engines/software_generic/filters/meson.build new file mode 100644 index 0000000000..6ccd5f59a1 --- /dev/null +++ b/src/modules/evas/engines/software_generic/filters/meson.build @@ -0,0 +1,13 @@ +engine_include_dir += include_directories('.') + +engine_src += files([ + 'evas_engine_filter.h', + 'evas_filter_blend.c', + 'evas_filter_blur.c', + 'evas_filter_bump.c', + 'evas_filter_curve.c', + 'evas_filter_displace.c', + 'evas_filter_fill.c', + 'evas_filter_mask.c', + 'evas_filter_transform.c', +]) \ No newline at end of file diff --git a/src/modules/evas/engines/software_generic/meson.build b/src/modules/evas/engines/software_generic/meson.build new file mode 100644 index 0000000000..626796ebc1 --- /dev/null +++ b/src/modules/evas/engines/software_generic/meson.build @@ -0,0 +1,31 @@ +engine_src = files([ + 'evas_engine.c', + 'Evas_Engine_Software_Generic.h', + 'Evas_Engine_Software_Shared.h', + 'evas_native_tbm.c', + 'evas_native_dmabuf.c', + 'evas_ector_software_buffer.c', + 'evas_native_common.h', + 'evas_ector_software.h', +]) + + +pub_eo_files = [ + 'evas_ector_software_buffer.eo' +] + +subdir('filters') + +foreach eo_file : pub_eo_files + engine_src += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + install : true, + install_dir : dir_package_include, + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-gch', '@INPUT@']) +endforeach + +engine_deps = [draw, dl] diff --git a/src/modules/evas/engines/software_x11/meson.build b/src/modules/evas/engines/software_x11/meson.build new file mode 100644 index 0000000000..c326b39cdf --- /dev/null +++ b/src/modules/evas/engines/software_x11/meson.build @@ -0,0 +1,28 @@ +engine_src = files([ + 'evas_engine.c', + 'evas_engine.h', + 'evas_x_egl.c', + 'evas_x_egl.h', + 'Evas_Engine_Software_X11.h', + 'evas_xlib_swapbuf.c', + 'evas_xlib_outbuf.c', + 'evas_xlib_buffer.c', + 'evas_xlib_color.c', + 'evas_xlib_main.c', + 'evas_xlib_swapper.c', + 'evas_xlib_image.c', + 'evas_xlib_dri_image.c', + 'evas_xlib_outbuf.h', + 'evas_xlib_swapbuf.h', + 'evas_xlib_buffer.h', + 'evas_xlib_color.h', + 'evas_xlib_swapper.h', + 'evas_xlib_image.h', + 'evas_xlib_dri_image.h' +]) + +#xcb is DEAD ... we only use xlib +config_h.set('BUILD_ENGINE_SOFTWARE_XLIB', '1') + +#ecore_x_deps carries all the extensions etc. so we dont have to search them twice +engine_deps = [x11, ecore_x, ecore_x_deps] diff --git a/src/modules/evas/engines/wayland_egl/meson.build b/src/modules/evas/engines/wayland_egl/meson.build new file mode 100644 index 0000000000..114edaed12 --- /dev/null +++ b/src/modules/evas/engines/wayland_egl/meson.build @@ -0,0 +1,9 @@ +engine_src = files([ + 'evas_engine.c', + 'evas_engine.h', + 'evas_wl_main.c' +]) + +engine_deps = [ecore_wl2, dependency('wayland-egl')] + +engine_include_dir = include_directories(join_paths('..','wayland_common')) \ No newline at end of file diff --git a/src/modules/evas/engines/wayland_shm/meson.build b/src/modules/evas/engines/wayland_shm/meson.build new file mode 100644 index 0000000000..2cc5a5fbc6 --- /dev/null +++ b/src/modules/evas/engines/wayland_shm/meson.build @@ -0,0 +1,9 @@ +engine_src = files([ + 'evas_engine.c', + 'evas_engine.h', + 'evas_outbuf.c' +]) + +engine_deps = [ecore_wl2] + +engine_include_dir = include_directories(join_paths('..','wayland_common')) \ No newline at end of file diff --git a/src/modules/evas/image_loaders/meson.build b/src/modules/evas/image_loaders/meson.build new file mode 100644 index 0000000000..df0d8968ac --- /dev/null +++ b/src/modules/evas/image_loaders/meson.build @@ -0,0 +1,42 @@ +evas_image_loaders_file = [ + ['bmp', []], + ['eet', [eet]], + ['generic', [rt]], + ['gif', [giflib]], + ['ico', []], + ['jpeg', [jpeg]], + ['pmaps', []], + ['png', [png]], + ['psd', []], + ['tga', []], + ['tgv', [rg_etc, lz4]], + ['tiff', [tiff]], + ['wbmp', []], + ['webp', [webp]], + ['xpm', []], +] + +foreach loader_inst : evas_image_loaders_file + loader = loader_inst[0] + loader_deps = loader_inst[1] + + + if get_option('evas-loaders-disabler').contains(loader) == false + file = join_paths(loader, 'evas_image_load_'+loader+'.c') + + tmp = static_library('image_loader_'+loader, file, + include_directories : config_dir, + dependencies : [evas_pre] + loader_deps + ) + + evas_static_list += [declare_dependency( + sources: file, + dependencies: loader_deps, + )] + + config_h.set('EVAS_STATIC_BUILD_'+loader.to_upper(), '1') + config_h.set('BUILD_LOADER_'+loader.to_upper(), '1') + else + message('Image loader '+loader+' disabled') + endif +endforeach \ No newline at end of file diff --git a/src/modules/evas/image_savers/meson.build b/src/modules/evas/image_savers/meson.build new file mode 100644 index 0000000000..81bdbd9f55 --- /dev/null +++ b/src/modules/evas/image_savers/meson.build @@ -0,0 +1,32 @@ + +evas_image_savers_file = [ +['eet', [eet]], +['jpeg', [jpeg]], +['png', [png]], +['tgv', [rg_etc, lz4]], +['tiff', [tiff]], +['webp', []] +] + +foreach loader_inst : evas_image_savers_file + loader = loader_inst[0] + loader_deps = loader_inst[1] + + if get_option('evas-loaders-disabler').contains(loader) == false + file = join_paths(loader, 'evas_image_save_'+loader+'.c') + + tmp = static_library('image_saver_'+loader, file, + include_directories : config_dir, + dependencies : [evas_pre] + loader_deps + ) + + evas_static_list += [declare_dependency( + sources: file, + dependencies: loader_deps, + )] + + config_h.set('EVAS_STATIC_BUILD_'+loader.to_upper(), '1') + else + message('Image saver '+loader+' disabled') + endif +endforeach diff --git a/src/modules/evas/meson.build b/src/modules/evas/meson.build new file mode 100644 index 0000000000..748a931c47 --- /dev/null +++ b/src/modules/evas/meson.build @@ -0,0 +1,104 @@ +engines = [ + ['buffer', []], + ['software_generic', []], + ['fb', ['ecore_fb']], + ['drm', ['ecore_drm2']], + ['software_x11', ['ecore_x']], + ['wayland_shm', ['ecore_wl2']], +] + +if get_option('opengl') != 'none' + engines += [ + ['gl_common', []], + ['gl_generic', []], + ['gl_x11', ['ecore_x']], + ['gl_drm', ['ecore_drm2']], + ['gl_cocoa', ['ecore_cocoa']], + ] +endif + +if get_option('opengl') == 'es-egl' + engines += [['wayland_egl', ['ecore_wl2']]] +endif + +#there are a few modules that should NEVER be build as a module but rather be build as static lib and linked in later +evas_force_static = ['software_generic', 'gl_common'] +evas_static_list = [] + +#fixed dependencies by efl +png = dependency('libpng') +tiff = dependency('libtiff-4') +giflib = cc.find_library('gif') + +#we need to make this a optional +webp = dependency('libwebp') + +subdir('image_loaders') +subdir('image_savers') +subdir('model_savers') +subdir('model_loaders') +subdir('vg_savers') +subdir('vg_loaders') + +foreach engine_conf : engines + engine = engine_conf[0] + build = true + if engine_conf[1].length() > 0 + build = get_option(engine_conf[1][0]) + endif + if build + engine_include_dir = [] + engine_src = [] + engine_deps = [] + engine_dep = declare_dependency( + include_directories: include_directories(join_paths('engines', engine)), + ) + + subdir(join_paths('engines', engine)) + + var_name = 'engine_'+engine + set_variable(var_name, engine_dep) + + mod_full_name = 'evas_engine_'+engine + mod_install_dir = join_paths(dir_package_modules, 'engines', engine, module_arch) + + if get_option('evas-modules') == 'static' or evas_force_static.contains(engine) + tmp = static_library(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas_pre] + engine_deps, + ) + + if engine == 'gl_common' + #gl_common will only be used by gl_generic, NOT by libevas.so, so we work arround the static list + gl_common = declare_dependency( + include_directories : include_directories(join_paths('engines', 'gl_common')), + link_with: tmp, + ) + else + evas_static_list += declare_dependency( + include_directories: [include_directories('.')] + config_dir + [engine_include_dir], + link_with: tmp, + sources : engine_src, + dependencies: [evas_pre], + ) + if engine == 'gl_generic' + #special case, see evas_module.c + config_h.set('EVAS_STATIC_BUILD_GL_COMMON', value) + else + config_h.set('EVAS_STATIC_BUILD_'+engine.to_upper(), '1') + endif + + endif + + else + shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas_pre] + engine_deps, + install : true, + install_dir : mod_install_dir + ) + module_files += join_paths(mod_install_dir, 'lib'+mod_full_name+'.so') + endif + config_h.set('BUILD_ENGINE_'+engine.to_upper(), '1') + endif +endforeach \ No newline at end of file diff --git a/src/modules/evas/model_loaders/meson.build b/src/modules/evas/model_loaders/meson.build new file mode 100644 index 0000000000..7aae3611cc --- /dev/null +++ b/src/modules/evas/model_loaders/meson.build @@ -0,0 +1,16 @@ +evas_model_loaders_file = ['eet', 'md2', 'obj', 'ply'] + +foreach loader : evas_model_loaders_file + file = join_paths(loader, 'evas_model_load_'+loader+'.c') + + tmp = static_library('model_loader_'+loader, file, + include_directories : config_dir, + dependencies : [evas_pre] + ) + + evas_static_list += [declare_dependency( + include_directories: include_directories('.'), + sources: file, + dependencies: evas_pre, + )] +endforeach diff --git a/src/modules/evas/model_savers/meson.build b/src/modules/evas/model_savers/meson.build new file mode 100644 index 0000000000..bb0dca2e3a --- /dev/null +++ b/src/modules/evas/model_savers/meson.build @@ -0,0 +1,16 @@ +evas_model_savers_file = ['eet', 'obj', 'ply'] + +foreach loader : evas_model_savers_file + file = join_paths(loader, 'evas_model_save_'+loader+'.c') + + tmp = static_library('model_saver_'+loader, file, + include_directories : config_dir, + dependencies : evas_pre + ) + + evas_static_list += [declare_dependency( + include_directories: include_directories('.'), + sources: file, + dependencies: evas_pre, + )] +endforeach diff --git a/src/modules/evas/vg_loaders/meson.build b/src/modules/evas/vg_loaders/meson.build new file mode 100644 index 0000000000..584501a825 --- /dev/null +++ b/src/modules/evas/vg_loaders/meson.build @@ -0,0 +1,13 @@ +evas_vg_loaders_file = ['eet', 'svg'] + +foreach loader : evas_vg_loaders_file + file = join_paths(loader, 'evas_vg_load_'+loader+'.c') + static_library('vg_loader_'+loader, file, + include_directories : config_dir, + dependencies : evas_pre + ) + evas_static_list += [declare_dependency( + sources: file, + )] + config_h.set('EVAS_STATIC_BUILD_VG_'+loader.to_upper(), '1') +endforeach diff --git a/src/modules/evas/vg_savers/meson.build b/src/modules/evas/vg_savers/meson.build new file mode 100644 index 0000000000..414a695c27 --- /dev/null +++ b/src/modules/evas/vg_savers/meson.build @@ -0,0 +1,14 @@ +evas_vg_savers_file = ['eet', 'svg'] + +foreach loader : evas_vg_savers_file + file = join_paths(loader, 'evas_vg_save_'+loader+'.c') + tmp = static_library('vg_saver_'+loader, file, + include_directories : config_dir, + dependencies: [eo, ector, emile, freetype, eet, evas_pre], + ) + evas_static_list += [declare_dependency( + sources: file, + dependencies: [eo, ector, emile, freetype, eet, evas_pre], + )] + config_h.set('EVAS_STATIC_BUILD_VG_'+loader.to_upper(), '1') +endforeach \ No newline at end of file diff --git a/src/static_libs/libunibreak/meson.build b/src/static_libs/libunibreak/meson.build new file mode 100644 index 0000000000..7ac5e73859 --- /dev/null +++ b/src/static_libs/libunibreak/meson.build @@ -0,0 +1,29 @@ + +libunibreak_src = [ + 'unibreakbase.h', + 'unibreakdef.h', + 'linebreak.h', + 'linebreakdef.h', + 'wordbreakdef.h', + 'wordbreak.h', + 'wordbreakdata.c', + 'unibreakbase.c', + 'unibreakdef.c', + 'linebreak.c', + 'linebreakdata.c', + 'linebreakdef.c', + 'wordbreak.c' +] + + +libunibreak_lib = static_library('libunibreak', + libunibreak_src, + include_directories : config_dir, + install: false, +) + +libunibreak = declare_dependency( + include_directories: [include_directories('.')], + link_with: libunibreak_lib, + dependencies: [eina], +) diff --git a/src/static_libs/vg_common/meson.build b/src/static_libs/vg_common/meson.build new file mode 100644 index 0000000000..f222429f02 --- /dev/null +++ b/src/static_libs/vg_common/meson.build @@ -0,0 +1,8 @@ +#vg common is not really a static lib, is required by evas and requires evas ... so only collecting src here and compile them into evas ... ... + +vg_common_src = files([ + 'vg_common.c', + 'vg_common.h', +]) + +vg_common_inc_dir = include_directories('.') \ No newline at end of file diff --git a/src/tests/evas/meson.build b/src/tests/evas/meson.build new file mode 100644 index 0000000000..52fd5b6997 --- /dev/null +++ b/src/tests/evas/meson.build @@ -0,0 +1,30 @@ +evas_suite_src = [ + 'evas_suite.c', + 'evas_test_init.c', + 'evas_test_object.c', + 'evas_test_object_smart.c', + 'evas_test_textblock.c', + 'evas_test_text.c', + 'evas_test_callbacks.c', + 'evas_test_render_engines.c', + 'evas_test_filters.c', + 'evas_test_image.c', + 'evas_test_mesh.c', + 'evas_test_mask.c', + 'evas_test_evasgl.c', + 'evas_test_matrix.c', + 'evas_tests_helpers.h', + 'evas_suite.h' +] + +evas_suite = executable('evas_suite', + evas_suite_src, + dependencies: [evas_bin, evas_pre, ecore_evas, dl, check], + c_args : [ + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] +) + +test('evas-suite', evas_suite, + is_parallel: true, +) \ No newline at end of file diff --git a/src/wayland_protocol/meson.build b/src/wayland_protocol/meson.build index 3433cd8a9f..6dbcbc4ad2 100644 --- a/src/wayland_protocol/meson.build +++ b/src/wayland_protocol/meson.build @@ -1,6 +1,8 @@ wayland_scanner_bin = find_program('wayland-scanner') -wayland_protocols = dependency('wayland-protocols') +#make it typo proof +_wayland_protocols = dependency('wayland-protocols') +wayland_client = dependency('wayland-client') wl_protocol_local = [ 'efl-aux-hints.xml', @@ -17,7 +19,7 @@ wl_protocol_sys = [ foreach sys_protocol : wl_protocol_sys wl_protocol_local += [ - join_paths(wayland_protocols.get_pkgconfig_variable('pkgdatadir'), 'unstable', + join_paths(_wayland_protocols.get_pkgconfig_variable('pkgdatadir'), 'unstable', sys_protocol)] endforeach @@ -50,4 +52,5 @@ wayland_protocol = declare_dependency( include_directories: include_directories('.'), link_with: wayland_protocol_lib, sources: gen_obj, + dependencies : [wayland_client] ) \ No newline at end of file --
