forked from enlightenment/efl
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
5.5 KiB
178 lines
5.5 KiB
add_languages('cs') |
|
|
|
|
|
runtime_assemblies = [] |
|
|
|
# Check if we should use dotnet options |
|
cs_is_dotnet = meson.get_compiler('cs').get_id().contains('dotnet') |
|
|
|
if (cs_is_dotnet) |
|
|
|
warning('Dotnet support is still not upstream in meson.') |
|
|
|
runtime_assemblies += [ |
|
'-r:System.Console.dll', |
|
'-r:Microsoft.CSharp.dll', |
|
'-r:System.Collections.dll', |
|
'-r:System.Collections.Concurrent.dll', |
|
'-r:System.ComponentModel.Primitives.dll', |
|
'-r:System.ComponentModel.Primitives.dll', |
|
'-r:System.Diagnostics.Debug.dll', |
|
'-r:System.Diagnostics.TraceSource.dll', |
|
'-r:System.Dynamic.Runtime.dll', |
|
'-r:System.Linq.dll', |
|
'-r:System.Runtime.dll', |
|
'-r:System.Runtime.Extensions.dll', |
|
'-r:System.Security.dll', |
|
] |
|
|
|
endif |
|
|
|
mono_sublibs = [ |
|
['Eina', true, ], # |
|
['Eolian', true, ], # |
|
['Eo', true, ], # |
|
['Ecore', false, ], # |
|
['Efl', true, ], # |
|
['Evas', false, ], # |
|
['Edje', false, ], # |
|
['Eldbus', true, ], # |
|
['Elementary', false, ] # |
|
] |
|
|
|
blacklisted_files = [ |
|
'efl_class.eo', |
|
'efl_canvas_scene3d.eo', |
|
'evas_canvas3d_camera.eo', |
|
'evas_canvas3d_light.eo', |
|
'evas_canvas3d_material.eo', |
|
'evas_canvas3d_mesh.eo', |
|
'evas_canvas3d_node.eo', |
|
'evas_canvas3d_object.eo', |
|
'evas_canvas3d_primitive.eo', |
|
'evas_canvas3d_scene.eo', |
|
'evas_canvas3d_texture.eo', |
|
'efl_io_buffer.eo', |
|
'efl_io_queue.eo', |
|
'efl_io_sizer.eo', |
|
'efl_io_closer_fd.eo', |
|
'efl_io_buffered_stream.eo', |
|
'efl_io_positioner_fd.eo', |
|
'efl_io_reader_fd.eo', |
|
'efl_io_writer_fd.eo', |
|
'efl_io_copier_fd.eo', |
|
'efl_io_sizer_fd.eo', |
|
'efl_io_stdin.eo', |
|
'efl_io_stdout.eo', |
|
'efl_io_stderr.eo', |
|
'efl_io_file.eo', |
|
'efl_io_copier.eo', |
|
'efl_object_override.eo', |
|
'elm_web.eo', |
|
'elm_map.eo', |
|
'elm_list.eo', |
|
'elm_genlist.eo', |
|
'elm_view_list.eo', |
|
'elm_genlist_item.eo', |
|
'elm_gengrid.eo', |
|
'elm_glview_eo.cs', |
|
'elm_code_widget.eo', |
|
'elm_multibuttonentry_part.eo', |
|
'elm_atspi_bridge.eo', |
|
'elm_atspi_app_object.eo', |
|
'elm_interface_scrollable.eo', |
|
'evas_canvas3d_types.eot', |
|
] |
|
|
|
manual_inheritance_files = [ |
|
'efl_object.eo' |
|
] |
|
|
|
beta_option = [] |
|
if (get_option('mono-beta')) |
|
beta_option = '-b' |
|
endif |
|
|
|
mono_generator_target = [] |
|
mono_files = [] |
|
foreach lib : mono_sublibs |
|
package_name = lib[0].to_lower() |
|
eo_file_subdirs = get_variable(package_name + '_eo_subdirs') |
|
file_location = join_paths('..', '..', 'lib', package_name) |
|
|
|
if (package_name != 'eldbus') |
|
foreach eo_file_subdir : eo_file_subdirs |
|
if eo_file_subdir != '' |
|
mono_pub_eo_files = get_variable(package_name + '_' + eo_file_subdir +'_eo_files') + get_variable(package_name + '_' + eo_file_subdir + '_eot_files') |
|
else |
|
mono_pub_eo_files = get_variable(package_name +'_eo_files') + get_variable(package_name + '_eot_files') |
|
endif |
|
|
|
subdir_file_location = join_paths(file_location, eo_file_subdir) |
|
foreach mono_gen_file : mono_pub_eo_files |
|
if not blacklisted_files.contains(mono_gen_file) |
|
partial = [] |
|
if manual_inheritance_files.contains(mono_gen_file) |
|
partial = '-p' |
|
endif |
|
mono_generator_target += custom_target('eolian_mono_gen_'+mono_gen_file.underscorify()+'', |
|
input : join_paths(subdir_file_location, mono_gen_file), |
|
output : [mono_gen_file + '.cs'], |
|
command : [eolian_mono_gen, beta_option, '-I', meson.current_source_dir(), eolian_include_directories, |
|
'--dllimport', package_name, |
|
'-o', join_paths(meson.current_build_dir(), mono_gen_file + '.cs'), |
|
'-e', get_option('mono-examples-dir'), partial, |
|
'@INPUT@']) |
|
endif |
|
endforeach |
|
endforeach |
|
endif |
|
if lib[1] |
|
subdir(package_name + '_mono') |
|
endif |
|
endforeach |
|
|
|
efl_mono_conf_data = configuration_data() |
|
efl_mono_conf_data.set('EINA', eina_lib.full_path()) |
|
efl_mono_conf_data.set('EFL', efl_lib.full_path()) |
|
efl_mono_conf_data.set('ECORE', ecore_lib.full_path()) |
|
efl_mono_conf_data.set('EO', eo_lib.full_path()) |
|
efl_mono_conf_data.set('EVAS', evas_lib.full_path()) |
|
efl_mono_conf_data.set('ELDBUS', eldbus_lib.full_path()) |
|
efl_mono_conf_data.set('ELEMENTARY', elementary_lib.full_path()) |
|
|
|
efl_mono_dll_config = configure_file(input : 'efl_mono.dll.config.in', |
|
output : 'efl_mono.dll.config', |
|
configuration : efl_mono_conf_data) |
|
|
|
extra_cs_args = runtime_assemblies |
|
|
|
if get_option('mono-beta') |
|
extra_cs_args += '-d:EFL_BETA' |
|
endif |
|
|
|
efl_mono_install_dir = join_paths(dir_lib, 'efl-mono-'+version_major) |
|
efl_mono_xml_doc = join_paths(meson.current_build_dir(), 'efl_mono.xml') |
|
|
|
efl_mono = library('efl_mono', |
|
mono_generator_target + mono_files + [efl_src], |
|
install : true, |
|
install_dir : efl_mono_install_dir, |
|
cs_args : extra_cs_args + ['-doc:' + efl_mono_xml_doc, '-warnaserror+'] |
|
) |
|
|
|
meson.add_install_script(join_paths(meson.source_root(), 'meson', 'meson_csharp_docs.sh'), |
|
efl_mono_xml_doc, |
|
efl_mono_install_dir) |
|
|
|
efl_mono_test_suite_path=join_paths(meson.current_build_dir()) |
|
|
|
pkgconfig.generate( |
|
name : 'efl-mono', |
|
description : 'Efl C# bindings', |
|
version : version_major + '.' + version_minor + '.' + version_micro, |
|
libraries : ['-r:${assemblies_dir}/efl_mono.dll'], |
|
variables : ['assemblies_dir='+join_paths(dir_lib, 'efl-mono-'+version_major), |
|
'mono_libs=-r:${assemblies_dir}/efl_mono.dll'] |
|
) |
|
test_dirs += 'efl_mono'
|
|
|