mono: introduce friend assembly

Summary:
Friend assemblies can access efl_mono assembly's internal types and members.
If `build-tests` option is true, `efl-mono-suite.exe` and `efl_mono_test.dll`
will become friend assemblies.

Test Plan: meson setup -Dbindings=mono,cxx -Dmono-beta=true

Reviewers: lauromoura, segfaultxavi, Jaehyun_Cho

Reviewed By: lauromoura

Subscribers: felipealmeida, cedric, #reviewers, woohyun, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10337
This commit is contained in:
Yeongjong Lee 2019-10-28 17:10:48 -03:00 committed by Lauro Moura
parent 36c14a2a05
commit 460daee7a8
3 changed files with 28 additions and 0 deletions

View File

@ -373,3 +373,9 @@ option('install-eo-files',
value: false,
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.'
)

View File

@ -0,0 +1,3 @@
using System.Runtime.CompilerServices;
@MONO_FRIEND_ASSEMBLIES@

View File

@ -34,6 +34,25 @@ efl_src = configure_file(
configuration: efl_libs
)
friend_assemblies = ''
mono_friend_assemblies = get_option('mono-friend-assemblies')
if get_option('build-tests')
mono_friend_assemblies += 'efl-mono-suite'
mono_friend_assemblies += 'efl_mono_test'
endif
foreach f : mono_friend_assemblies
friend_assemblies += '[assembly: InternalsVisibleTo("@0@")]\n'.format(f)
endforeach
friend_assembly_data = configuration_data()
friend_assembly_data.set('MONO_FRIEND_ASSEMBLIES', friend_assemblies)
mono_files += configure_file(
input: 'AssemblyInfo.cs.in',
output: 'AssemblyInfo.cs',
configuration: friend_assembly_data
)
mono_eo_files = [
'efl_mono_model_internal.eo',
'efl_mono_model_internal_child.eo'