aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am5
-rw-r--r--src/Makefile_Efl_Mono.am365
-rw-r--r--src/Makefile_Efl_Mono_MSBuild_Gen_Helper.am17
-rw-r--r--src/Makefile_Eolian_Mono_Helper.am17
-rw-r--r--src/examples/eina/Makefile.am56
-rw-r--r--src/examples/elementary/Makefile.am24
-rw-r--r--src/examples/evas/Makefile.am55
7 files changed, 539 insertions, 0 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 74ec6cdb2b..dffa069ab3 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -77,6 +77,7 @@ include Makefile_efl_wl.am
include Makefile_Cxx.am
include Makefile_Eolian_Cxx.am
+include Makefile_Efl_Mono.am
include Makefile_Elua.am
@@ -140,6 +141,10 @@ if HAVE_CXX11
EXAMPLES_SUBDIRS += $(EXAMPLES_CXX)
endif
+if HAVE_CSHARP
+EXAMPLES_SUBDIRS += examples/efl_mono
+endif
+
if ALWAYS_BUILD_EXAMPLES
SUBDIRS += . $(EXAMPLES_SUBDIRS)
endif
diff --git a/src/Makefile_Efl_Mono.am b/src/Makefile_Efl_Mono.am
new file mode 100644
index 0000000000..3101be5ca8
--- /dev/null
+++ b/src/Makefile_Efl_Mono.am
@@ -0,0 +1,365 @@
+if HAVE_CSHARP
+
+bin_PROGRAMS += bin/eolian_mono/eolian_mono
+
+bin_eolian_mono_eolian_mono_SOURCES = \
+ bin/eolian_mono/eolian_mono.cc
+bin_eolian_mono_eolian_mono_CXXFLAGS = -I$(top_builddir)/src/lib/efl \
+-I$(top_srcdir)/src/lib/eolian_cxx/ \
+-I$(top_srcdir)/src/bin/eolian_mono/ \
+@CHECK_CFLAGS@ @EINA_CFLAGS@ @EINA_CXX_CFLAGS@ @EO_CXX_CFLAGS@ @ECORE_CXX_CFLAGS@ @EO_CFLAGS@ \
+-I$(top_srcdir)/src/bindings/cxx/eina_cxx \
+@EOLIAN_CXX_CFLAGS@ @EOLIAN_CFLAGS@
+
+bin_eolian_mono_eolian_mono_LDADD = @CHECK_LIBS@ @USE_EOLIAN_LIBS@
+
+bin_eolian_mono_eolian_mono_DEPENDENCIES = @USE_EOLIAN_INTERNAL_LIBS@
+
+# Helper for other modules using Eolian_Mono, include only after Makefile_Eolian_Helper.am
+include Makefile_Eolian_Mono_Helper.am
+
+### Efl C Sharp Binding
+
+evas_eolian_blacklisted_files = \
+lib/evas/canvas/efl_canvas_text.eo.cs \
+lib/evas/canvas/efl_canvas_scene3d.eo.cs \
+lib/evas/canvas/evas_canvas3d_camera.eo.cs \
+lib/evas/canvas/evas_canvas3d_light.eo.cs \
+lib/evas/canvas/evas_canvas3d_material.eo.cs \
+lib/evas/canvas/evas_canvas3d_mesh.eo.cs \
+lib/evas/canvas/evas_canvas3d_node.eo.cs \
+lib/evas/canvas/evas_canvas3d_object.eo.cs \
+lib/evas/canvas/evas_canvas3d_primitive.eo.cs \
+lib/evas/canvas/evas_canvas3d_scene.eo.cs \
+lib/evas/canvas/evas_canvas3d_texture.eo.cs \
+lib/evas/canvas/efl_canvas_vg.eo.cs \
+lib/evas/canvas/efl_vg.eo.cs \
+lib/evas/canvas/efl_vg_container.eo.cs \
+lib/evas/canvas/efl_vg_gradient.eo.cs \
+lib/evas/canvas/efl_vg_gradient_radial.eo.cs \
+lib/evas/canvas/efl_vg_gradient_linear.eo.cs \
+lib/evas/canvas/efl_vg_root_node.eo.cs \
+lib/evas/canvas/efl_vg_shape.eo.cs
+
+efl_eolian_blacklisted_files = \
+lib/efl/interfaces/efl_io_buffer.eo.cs \
+lib/efl/interfaces/efl_io_closer.eo.cs \
+lib/efl/interfaces/efl_io_positioner.eo.cs \
+lib/efl/interfaces/efl_io_queue.eo.cs \
+lib/efl/interfaces/efl_io_reader.eo.cs \
+lib/efl/interfaces/efl_io_sizer.eo.cs \
+lib/efl/interfaces/efl_io_writer.eo.cs \
+lib/efl/interfaces/efl_text_properties.eo.cs \
+lib/efl/interfaces/efl_gfx_buffer.eo.cs \
+lib/efl/interfaces/efl_gfx_shape.eo.cs \
+lib/efl/interfaces/efl_gfx_gradient.eo.cs \
+lib/efl/interfaces/efl_gfx_gradient_linear.eo.cs \
+lib/efl/interfaces/efl_gfx_gradient_radial.eo.cs
+
+ecore_eolian_blacklisted_files = \
+lib/ecore/efl_io_closer_fd.eo.cs \
+lib/ecore/efl_io_buffered_stream.eo.cs \
+lib/ecore/efl_io_positioner_fd.eo.cs \
+lib/ecore/efl_io_reader_fd.eo.cs \
+lib/ecore/efl_io_writer_fd.eo.cs \
+lib/ecore/efl_io_copier_fd.eo.cs \
+lib/ecore/efl_io_sizer_fd.eo.cs \
+lib/ecore/efl_io_stdin.eo.cs \
+lib/ecore/efl_io_stdout.eo.cs \
+lib/ecore/efl_io_stderr.eo.cs \
+lib/ecore/efl_io_file.eo.cs \
+lib/ecore/efl_io_copier.eo.cs
+
+eo_eolian_blacklisted_files = \
+lib/eo/efl_object_override.eo.cs
+
+elementary_eolian_blacklisted_files = \
+lib/elementary/elm_web.eo.cs \
+lib/elementary/elm_map.eo.cs \
+lib/elementary/elm_combobox.eo.cs \
+lib/elementary/elm_list.eo.cs \
+lib/elementary/elm_genlist.eo.cs \
+lib/elementary/elm_view_list.eo.cs \
+lib/elementary/elm_genlist_item.eo.cs \
+lib/elementary/elm_gengrid.eo.cs \
+lib/elementary/elm_glview.eo.cs
+
+efl_eolian_mono_files = \
+$(filter-out $(eo_eolian_blacklisted_files),$(eo_eolian_files:%.eo=%.eo.cs)) \
+$(filter-out $(ecore_eolian_blacklisted_files),$(ecore_eolian_files_public:%.eo=%.eo.cs)) \
+$(ecore_eolian_type_files:%.eot=%.eot.cs) \
+$(filter-out $(efl_eolian_blacklisted_files),$(efl_eolian_files:%.eo=%.eo.cs)) \
+$(filter-out $(edje_eolian_blacklisted_files),$(edje_eolian_files:%.eo=%.eo.cs)) \
+$(filter-out $(elementary_eolian_blacklisted_files),$(elm_public_eolian_files:%.eo=%.eo.cs)) \
+$(efl_eolian_type_files:%.eot=%.eot.cs) \
+$(edje_eolian_type_files:%.eot=%.eot.cs) \
+$(elm_eolian_type_files:%.eot=%.eot.cs) \
+$(filter-out $(evas_eolian_blacklisted_files),$(evas_canvas_eolian_pub_files:%.eo=%.eo.cs)) \
+lib/evas/canvas/evas_box.eo.cs \
+lib/evas/canvas/evas_image.eo.cs \
+lib/evas/canvas/efl_canvas_image.eo.cs \
+lib/evas/canvas/evas_table.eo.cs \
+lib/evas/canvas/evas_text.eo.cs \
+lib/efl/interfaces/efl_text_properties.eo.cs \
+$(evas_canvas_eolian_type_files:%.eot=%.eot.cs) \
+lib/eo/eina_types.eot.cs
+
+installed_eflmonomainheadersdir = $(includedir)/efl-mono-@VMAJ@/
+nodist_installed_eflmonomainheaders_DATA = $(efl_eolian_files:%.eo=%.eo.cs)
+
+CLEANFILES += $(efl_eolian_mono_files)
+
+if HAVE_WIN32
+
+MCS_FLAGS := $(MCS_FLAGS)
+MCS_FLAGS += -define:WIN32
+
+endif
+
+# Efl Custom Exports Mono auxiliary library
+efl_custom_exports_mono_files = \
+ lib/efl_mono/efl_custom_exports_mono.c
+
+lib_LTLIBRARIES += \
+lib/efl_mono/libeflcustomexportsmono.la
+
+lib_efl_mono_libeflcustomexportsmono_la_SOURCES = \
+ $(efl_custom_exports_mono_files)
+
+lib_efl_mono_libeflcustomexportsmono_la_CPPFLAGS = \
+-DEFL_BETA_API_SUPPORT \
+-I$(top_builddir)/src/lib/efl \
+@EFL_CUSTOM_EXPORTS_MONO_CFLAGS@
+lib_efl_mono_libeflcustomexportsmono_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
+lib_efl_mono_libeflcustomexportsmono_la_LIBADD = @EFL_CUSTOM_EXPORTS_MONO_LIBS@
+lib_efl_mono_libeflcustomexportsmono_la_DEPENDENCIES = @EFL_CUSTOM_EXPORTS_MONO_INTERNAL_LIBS@
+
+#Efl Mono - C Sharp binding library
+bin_PROGRAMS += lib/efl_mono/libefl_mono.dll
+
+efl_eo_mono_files = \
+ bindings/mono/eo_mono/object.cs \
+ bindings/mono/eo_mono/iwrapper.cs \
+ bindings/mono/eo_mono/workaround.cs
+
+efl_eina_mono_files = \
+ bindings/mono/eina_mono/eina_config.cs \
+ bindings/mono/eina_mono/eina_array.cs \
+ bindings/mono/eina_mono/eina_hash.cs \
+ bindings/mono/eina_mono/eina_list.cs \
+ bindings/mono/eina_mono/eina_inarray.cs \
+ bindings/mono/eina_mono/eina_inlist.cs \
+ bindings/mono/eina_mono/eina_iterator.cs \
+ bindings/mono/eina_mono/eina_container_common.cs \
+ bindings/mono/eina_mono/eina_common.cs \
+ bindings/mono/eina_mono/eina_log.cs \
+ bindings/mono/eina_mono/eina_binbuf.cs \
+ bindings/mono/eina_mono/eina_slice.cs \
+ bindings/mono/eina_mono/eina_stringshare.cs \
+ bindings/mono/eina_mono/eina_error.cs \
+ bindings/mono/eina_mono/eina_value.cs
+
+efl_eldbus_mono_files = \
+ bindings/mono/eldbus_mono/eldbus_common.cs \
+ bindings/mono/eldbus_mono/eldbus_config.cs \
+ bindings/mono/eldbus_mono/eldbus_connection.cs \
+ bindings/mono/eldbus_mono/eldbus_message.cs \
+ bindings/mono/eldbus_mono/eldbus_object.cs \
+ bindings/mono/eldbus_mono/eldbus_pending.cs \
+ bindings/mono/eldbus_mono/eldbus_proxy.cs \
+ bindings/mono/eldbus_mono/eldbus_service.cs
+
+efl_ecore_evas_mono_files = \
+ bindings/mono/ecore_evas_mono/ecore_evas.cs
+
+lib_efl_mono_libefl_mono_dll_SOURCES = \
+ $(builddir)/bindings/mono/efl_mono/efl_all.cs \
+ bindings/mono/efl_mono/efl_libs.cs \
+ $(efl_eo_mono_files) \
+ $(efl_eina_mono_files) \
+ $(efl_eldbus_mono_files) \
+ $(efl_ecore_evas_mono_files)
+
+lib/efl_mono/libefl_mono.dll$(EXEEXT): $(lib_efl_mono_libefl_mono_dll_SOURCES) lib/efl_mono/$(am__dirstamp) $(efl_eolian_mono_files)
+ @rm -f lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -out:$@ -t:library $(filter %.cs, $(^))
+
+### MSBuild
+
+bin_PROGRAMS += bin/efl_mono_msbuild_gen/efl_mono_msbuild_gen
+
+bin_efl_mono_msbuild_gen_efl_mono_msbuild_gen_SOURCES = \
+ bin/efl_mono_msbuild_gen/main.cc
+
+bin_efl_mono_msbuild_gen_efl_mono_msbuild_gen_CXXFLAGS = \
+ -I$(top_srcdir)/src/lib/efl \
+ -I$(top_builddir)/src/lib/efl \
+ -I$(top_srcdir)/src/lib/eolian_cxx/ \
+ -I$(top_srcdir)/src/bindings/cxx/eina_cxx \
+ @EINA_CFLAGS@ @EINA_CXX_CFLAGS@ @EO_CXX_CFLAGS@ \
+ @ECORE_CXX_CFLAGS@ @EO_CFLAGS@ @EOLIAN_CXX_CFLAGS@ @EOLIAN_CFLAGS@
+
+bin_efl_mono_msbuild_gen_efl_mono_msbuild_gen_LDADD = @CHECK_LIBS@ @USE_EOLIAN_LIBS@
+
+bin_efl_mono_msbuild_gen_efl_mono_msbuild_gen_DEPENDENCIES = @USE_EOLIAN_INTERNAL_LIBS@
+
+# Helper for other modules using Efl_Mono_MSBuild_Gen
+include Makefile_Efl_Mono_MSBuild_Gen_Helper.am
+
+# Efl Mono DLL for MSBuild
+../libefl_mono.csproj: $(lib_efl_mono_libefl_mono_dll_SOURCES) lib/efl_mono/$(am__dirstamp) $(efl_eolian_mono_files) $(_EFL_MONO_MSBUILD_GEN_DEP)
+ @rm -f $@
+ $(EFL_MONO_MSBUILD_GEN) $(MSBUILD_GEN_FLAGS) -o $@ -a libefl_mono.dll -t library $(patsubst %.cs,src/%.cs,$(filter %.cs, $(^)))
+
+CSPROJS_SUBDIRS = \
+examples/eina \
+examples/efl_mono
+
+msbuildcsprojs: ../libefl_mono.csproj
+ @for d in $(CSPROJS_SUBDIRS); do \
+ echo "Making MSBuild C Sharp projects in $$d"; \
+ $(MAKE) $(AM_MAKEFLAGS) -C $$d msbuildcsprojs || exit 1; \
+ done
+
+### Some hard-coded runtime dependencies for tests and examples
+TEST_PATHS = $(abs_top_builddir)/src/lib/efl_mono:$(abs_top_builddir)/src/lib/efl_mono/.libs:$(abs_top_builddir)/src/lib/eina/.libs:$(abs_top_builddir)/src/lib/ecore/.libs:$(abs_top_builddir)/src/lib/ecore_evas/.libs:$(abs_top_builddir)/src/lib/eo/.libs:$(abs_top_builddir)/src/lib/evas/.libs:$(abs_top_builddir)/src/lib/emile/.libs:$(abs_top_builddir)/src/lib/eet/.libs:$(abs_top_builddir)/src/lib/efl/.libs:$(abs_top_builddir)/src/ecore-file/.libs:$(abs_top_builddir)/src/lib/efl-input/.libs:$(abs_top_builddir)/src/lib/edje/.libs:$(abs_top_builddir)/src/lib/ethumb/.libs:$(abs_top_builddir)/src/lib/ethumb-client/.libs:$(abs_top_builddir)/src/lib/emotion/.libs:$(abs_top_builddir)/src/lib/ecore-imf/.libs:$(abs_top_builddir)/src/lib/ecore-con/.libs:$(abs_top_builddir)/src/lib/eldbus/.libs:$(abs_top_builddir)/src/lib/efreet/.libs:$(abs_top_builddir)/src/lib/efreet-mime/.libs:$(abs_top_builddir)/src/lib/efreet-trash/.libs:$(abs_top_builddir)/src/lib/eio/.libs:$(abs_top_builddir)/src/lib/elocation/.libs:$(abs_top_builddir)/src/lib/elementary/.libs
+
+WIN_ADD_TEST_PATHS = $(abs_top_builddir)/src/lib/evil/.libs:$(abs_top_builddir)/src/lib/ecore_win32/.libs:$(abs_top_builddir)/src/lib/ector/.libs:$(abs_top_builddir)/src/lib/ecore_con/.libs:$(abs_top_builddir)/src/lib/ecore_imf/.libs:$(abs_top_builddir)/src/lib/ecore_file/.libs:$(abs_top_builddir)/src/lib/ecore_input/.libs:$(abs_top_builddir)/src/ethumb_client/.libs:$(abs_top_builddir)/src/tests/efl_mono/.libs
+
+
+### Rules for generating the .cs files
+
+if HAVE_WIN32
+ALL_EO_REFS = -r $(top_builddir)/src/bindings/mono/efl_mono/efl_libs.csv
+else
+ALL_EO_REFS=
+endif
+
+lib/eo/%.eo.cs: lib/eo/%.eo $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport eo -o $@ $(ALL_EO_REFS) $<
+
+lib/ecore/%.eo.cs: lib/ecore/%.eo $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport ecore -o $@ $(ALL_EO_REFS) $<
+
+lib/evas/%.eo.cs: lib/evas/%.eo $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport evas -o $@ $(ALL_EO_REFS) $<
+
+lib/efl/%.eo.cs: lib/efl/%.eo $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport efl -o $@ $(ALL_EO_REFS) $<
+
+lib/edje/%.eo.cs: lib/edje/%.eo $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport edje -o $@ $(ALL_EO_REFS) $<
+
+lib/elementary/%.eo.cs: lib/elementary/%.eo $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport elementary -o $@ $(ALL_EO_REFS) $<
+
+lib/ecore/%.eot.cs: lib/ecore/%.eot $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport ecore -o $@ $(ALL_EO_REFS) $<
+
+lib/eo/%.eot.cs: lib/eo/%.eot $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport eo -o $@ $(ALL_EO_REFS) $<
+
+lib/evas/%.eot.cs: lib/evas/%.eot $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport evas -o $@ $(ALL_EO_REFS) $<
+
+lib/efl/%.eot.cs: lib/efl/%.eot $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport efl -o $@ $(ALL_EO_REFS) $<
+
+lib/edje/%.eot.cs: lib/edje/%.eot $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport edje -o $@ $(ALL_EO_REFS) $<
+
+lib/elementary/%.eot.cs: lib/elementary/%.eot $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport elementary -o $@ $(ALL_EO_REFS) $<
+
+
+### Tests
+
+if EFL_ENABLE_TESTS
+
+# Intermediate C test native library
+check_LTLIBRARIES += tests/efl_mono/libefl_mono_native_test.la
+
+tests_efl_mono_libefl_mono_native_test_la_SOURCES = tests/efl_mono/libefl_mono_native_test.c
+tests_efl_mono_libefl_mono_native_test_la_CPPFLAGS = \
+-I$(builddir)/tests/efl_mono \
+@CHECK_CFLAGS@ @EINA_CFLAGS@ @EO_CFLAGS@ @ECORE_CFLAGS@ @ELDBUS_CFLAGS@
+tests_efl_mono_libefl_mono_native_test_la_LIBADD = \
+@CHECK_LIBS@ @USE_EINA_LIBS@ @USE_EO_LIBS@ @USE_ECORE_LIBS@ @USE_ELDBUS_LIBS@
+tests_efl_mono_libefl_mono_native_test_la_LDFLAGS = -rpath $(abs_top_builddir)/tests/efl_mono @EFL_LTLIBRARY_FLAGS@
+tests_efl_mono_libefl_mono_native_test_la_DEPENDENCIES = @USE_EINA_INTERNAL_LIBS@ @USE_EO_INTERNAL_LIBS@ @USE_ECORE_INTERNAL_LIBS@ @USE_ELDBUS_INTERNAL_LIBS@
+tests_efl_mono_libefl_mono_native_test_la_LIBTOOLFLAGS = --tag=disable-static
+
+tests/efl_mono/libefl_mono_native_test.c: tests/efl_mono/test_testing.eo.h tests/efl_mono/test_testing.eo.c tests/efl_mono/test_numberwrapper.eo.h tests/efl_mono/test_numberwrapper.eo.c
+
+# Intermediate C Sharp test DLL
+efl_mono_test_eolian_mono_files = tests/efl_mono/test_testing.eo.cs \
+tests/efl_mono/test_numberwrapper.eo.cs
+
+tests/efl_mono/libefl_mono_test.dll$(EXEEXT): $(efl_mono_test_eolian_mono_files) tests/efl_mono/$(am__dirstamp) lib/efl_mono/libefl_mono.dll$(EXEEXT) tests/efl_mono/libefl_mono_native_test.la
+ @rm -f tests/efl_mono/libefl_mono_test.dll$(EXEEXT)
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_builddir)/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ -t:library $(filter %.cs, $(^))
+
+# C Sharp test executable
+AM_TESTS_ENVIRONMENT += MONO='mono'; export MONO;
+AM_TESTS_ENVIRONMENT += MONO_BUILDPATH='$(abs_top_builddir)'; export MONO_BUILDPATH;
+AM_TESTS_ENVIRONMENT += MONO_PATH='$(TEST_PATHS)'; export MONO_PATH;
+if HAVE_WIN32
+AM_TESTS_ENVIRONMENT += PATH='$(PATH):$(TEST_PATHS):$(WIN_ADD_TEST_PATHS)'; export PATH;
+else
+AM_TESTS_ENVIRONMENT += LD_LIBRARY_PATH='$(LD_LIBRARY_PATH):$(TEST_PATHS)'; export LD_LIBRARY_PATH;
+endif
+AM_TESTS_ENVIRONMENT += EXEEXT='$(EXEEXT)'; export EXEEXT;
+
+check_PROGRAMS += tests/efl_mono/efl_mono.exe
+TESTS += tests/efl_mono/mono_test_driver.sh
+
+tests_efl_mono_efl_mono_exe_SOURCES = \
+ tests/efl_mono/Main.cs \
+ tests/efl_mono/Eina.cs \
+ tests/efl_mono/Eldbus.cs \
+ tests/efl_mono/Eo.cs \
+ tests/efl_mono/Errors.cs \
+ tests/efl_mono/Evas.cs \
+ tests/efl_mono/Events.cs \
+ tests/efl_mono/FunctionPointers.cs \
+ tests/efl_mono/Strings.cs \
+ tests/efl_mono/TestUtils.cs \
+ tests/efl_mono/Value.cs \
+ tests/efl_mono/ValueEolian.cs
+
+tests/efl_mono/efl_mono.exe$(EXEEXT): $(tests_efl_mono_efl_mono_exe_SOURCES) tests/efl_mono/$(am__dirstamp) lib/efl_mono/libefl_mono.dll$(EXEEXT) tests/efl_mono/libefl_mono_test.dll$(EXEEXT)
+ @rm -f tests/efl_mono/efl_mono_exe$(EXEEXT)
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -r:$(abs_top_builddir)/src/tests/efl_mono/libefl_mono_test.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+# Rule for generating the .cs files
+tests/efl_mono/%.eo.cs: tests/efl_mono/%.eo $(_EOLIAN_MONO_DEP)
+ $(AM_V_EOLMONO) \
+ $(MKDIR_P) $(dir $@); \
+ $(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport "@DLIB_PREFIX_MONO@efl_mono_native_test@DLIB_SUFFIX_MONO@" -o $@ $(ALL_EO_REFS) $<
+
+endif
+endif
diff --git a/src/Makefile_Efl_Mono_MSBuild_Gen_Helper.am b/src/Makefile_Efl_Mono_MSBuild_Gen_Helper.am
new file mode 100644
index 0000000000..9f750f5fd8
--- /dev/null
+++ b/src/Makefile_Efl_Mono_MSBuild_Gen_Helper.am
@@ -0,0 +1,17 @@
+
+EFL_MONO_MSBUILD_GEN = EFL_RUN_IN_TREE=1 $(top_builddir)/src/bin/efl_mono_msbuild_gen/efl_mono_msbuild_gen${EXEEXT}
+_EFL_MONO_MSBUILD_GEN_DEP = bin/efl_mono_msbuild_gen/efl_mono_msbuild_gen${EXEEXT}
+
+if HAVE_WIN32
+
+MSBUILD_GEN_FLAGS := $(MSBUILD_GEN_FLAGS)
+MSBUILD_GEN_FLAGS += -d WIN32
+
+endif
+
+if HAVE_X86_64
+
+MSBUILD_GEN_FLAGS := $(MSBUILD_GEN_FLAGS)
+MSBUILD_GEN_FLAGS += -p x64
+
+endif
diff --git a/src/Makefile_Eolian_Mono_Helper.am b/src/Makefile_Eolian_Mono_Helper.am
new file mode 100644
index 0000000000..6097c447b3
--- /dev/null
+++ b/src/Makefile_Eolian_Mono_Helper.am
@@ -0,0 +1,17 @@
+### Helper for other modules using Eolian_Mono, include only after Makefile_Eolian_Helper.am
+
+if HAVE_EOLIAN_MONO
+EOLIAN_MONO = @eolian_mono@
+_EOLIAN_MONO_DEP = @eolian_mono@
+else
+EOLIAN_MONO = EFL_RUN_IN_TREE=1 $(top_builddir)/src/bin/eolian_mono/eolian_mono${EXEEXT}
+_EOLIAN_MONO_DEP = bin/eolian_mono/eolian_mono${EXEEXT}
+endif
+
+EOLIAN_MONO_FLAGS = -M @VMAJ@ -m @VMIN@
+
+AM_V_EOLMONO = $(am__v_EOLMONO_@AM_V@)
+am__v_EOLMONO_ = $(am__v_EOLMONO_@AM_DEFAULT_V@)
+am__v_EOLMONO_0 = @echo " EOLMONO " $@;
+
+SUFFIXES += .eo.cs
diff --git a/src/examples/eina/Makefile.am b/src/examples/eina/Makefile.am
index 0186c72b45..baeb26bf6f 100644
--- a/src/examples/eina/Makefile.am
+++ b/src/examples/eina/Makefile.am
@@ -135,6 +135,62 @@ $(top_builddir)/src/lib/ecore_evas/libecore_evas.la \
$(top_builddir)/src/lib/evas/libevas.la \
@EINA_LDFLAGS@
+
+if HAVE_CSHARP
+
+include $(top_srcdir)/src/Makefile_Efl_Mono_MSBuild_Gen_Helper.am
+
+EXTRA_PROGRAMS += \
+EinaArray01.exe \
+EinaBinbuf01.exe \
+EinaError01.exe \
+EinaHash01.exe
+
+
+EinaArray01_exe_SOURCES = EinaArray01.cs
+EinaArray01.exe$(EXEEXT): $(EinaArray01_exe_SOURCES) $(am_dirstamp) $(top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ @rm -f $@
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+$(abs_top_builddir)/EinaArray01.csproj: $(EinaArray01_exe_SOURCES) $(am_dirstamp)
+ @rm -f $@
+ $(EFL_MONO_MSBUILD_GEN) $(MSBUILD_GEN_FLAGS) -o $@ -a EinaArray01.exe -r libefl_mono.dll -t exe $(patsubst %.cs,src/examples/eina/%.cs,$(filter %.cs, $(^)))
+
+
+EinaBinbuf01_exe_SOURCES = EinaBinbuf01.cs
+EinaBinbuf01.exe$(EXEEXT): $(EinaBinbuf01_exe_SOURCES) $(am_dirstamp) $(top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ @rm -f $@
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+$(abs_top_builddir)/EinaBinbuf01.csproj: $(EinaBinbuf01_exe_SOURCES) $(am_dirstamp)
+ @rm -f $@
+ $(EFL_MONO_MSBUILD_GEN) $(MSBUILD_GEN_FLAGS) -o $@ -a EinaBinbuf01.exe -r libefl_mono.dll -t exe $(patsubst %.cs,src/examples/eina/%.cs,$(filter %.cs, $(^)))
+
+
+EinaError01_exe_SOURCES = EinaError01.cs
+EinaError01.exe$(EXEEXT): $(EinaError01_exe_SOURCES) $(am_dirstamp) $(top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ @rm -f $@
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+$(abs_top_builddir)/EinaError01.csproj: $(EinaError01_exe_SOURCES) $(am_dirstamp)
+ @rm -f $@
+ $(EFL_MONO_MSBUILD_GEN) $(MSBUILD_GEN_FLAGS) -o $@ -a EinaError01.exe -r libefl_mono.dll -t exe $(patsubst %.cs,src/examples/eina/%.cs,$(filter %.cs, $(^)))
+
+
+EinaHash01_exe_SOURCES = EinaHash01.cs
+EinaHash01.exe$(EXEEXT): $(EinaHash01_exe_SOURCES) $(am_dirstamp) $(top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ @rm -f $@
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+$(abs_top_builddir)/EinaHash01.csproj: $(EinaHash01_exe_SOURCES) $(am_dirstamp)
+ @rm -f $@
+ $(EFL_MONO_MSBUILD_GEN) $(MSBUILD_GEN_FLAGS) -o $@ -a EinaHash01.exe -r libefl_mono.dll -t exe $(patsubst %.cs,src/examples/eina/%.cs,$(filter %.cs, $(^)))
+
+msbuildcsprojs: $(abs_top_builddir)/EinaArray01.csproj $(abs_top_builddir)/EinaBinbuf01.csproj $(abs_top_builddir)/EinaError01.csproj $(abs_top_builddir)/EinaHash01.csproj
+
+endif
+
+
DATA_FILES = addr_book.txt chat.xml Makefile.examples
EXTRA_DIST = $(DATA_FILES)
diff --git a/src/examples/elementary/Makefile.am b/src/examples/elementary/Makefile.am
index 905683c4fd..d1a3767d85 100644
--- a/src/examples/elementary/Makefile.am
+++ b/src/examples/elementary/Makefile.am
@@ -257,6 +257,23 @@ nodist_codegen_example_SOURCES = \
codegen_example_generated.c \
codegen_example_generated.h
+
+if HAVE_CSHARP
+
+efl_ui_slider_mono_exe_SOURCES = \
+ efl_ui_slider_mono.cs
+
+if HAVE_WIN32
+MCS_FLAGS := $(MCS_FLAGS)
+MCS_FLAGS += -define:WIN32
+endif
+
+efl_ui_slider_mono.exe$(EXEEXT): $(efl_ui_slider_mono_exe_SOURCES) $(am_dirstamp) $(top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ @rm -f efl_ui_slider_mono$(EXEEXT)
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+endif
+
examples_PROGRAMS = \
actionslider_example_01 \
bg_example_01 \
@@ -417,6 +434,13 @@ toolbar_cxx_example_01 \
$(NULL)
endif
+if HAVE_CSHARP
+
+examples_PROGRAMS += \
+ efl_ui_slider_mono.exe
+
+endif
+
efl_thread_1_SOURCES = efl_thread_1.c
efl_thread_2_SOURCES = efl_thread_2.c
efl_thread_3_SOURCES = efl_thread_3.c
diff --git a/src/examples/evas/Makefile.am b/src/examples/evas/Makefile.am
index c4ed9dea01..2fc462ea2e 100644
--- a/src/examples/evas/Makefile.am
+++ b/src/examples/evas/Makefile.am
@@ -367,6 +367,61 @@ $(AM_CPPFLAGS) @EVAS_CFLAGS@
endif
+if HAVE_CSHARP
+
+EXTRA_PROGRAMS += \
+ evas_mono_box.exe \
+ evas_mono_image.exe \
+ evas_mono_image2.exe \
+ evas_mono_rectangle.exe \
+ evas_mono_table.exe \
+ evas_mono_text.exe
+
+
+evas_mono_box_exe_SOURCES = \
+ evas_mono_box.cs
+
+evas_mono_box.exe$(EXEEXT): $(evas_mono_box_exe_SOURCES) $(am_dirstamp) $(top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ @rm -f evas_mono_box$(EXEEXT)
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+evas_mono_image_exe_SOURCES = \
+ evas_mono_image.cs
+
+evas_mono_image.exe$(EXEEXT): $(evas_mono_image_exe_SOURCES) $(am_dirstamp) $(top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ @rm -f evas_mono_image$(EXEEXT)
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+evas_mono_image2_exe_SOURCES = \
+ evas_mono_image2.cs
+
+evas_mono_image2.exe$(EXEEXT): $(evas_mono_image2_exe_SOURCES) $(am_dirstamp) $(top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ @rm -f evas_mono_image2$(EXEEXT)
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+evas_mono_rectangle_exe_SOURCES = \
+ evas_mono_rectangle.cs
+
+evas_mono_rectangle.exe$(EXEEXT): $(evas_mono_rectangle_exe_SOURCES) $(am_dirstamp) $(top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ @rm -f evas_mono_rectangle$(EXEEXT)
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+evas_mono_table_exe_SOURCES = \
+ evas_mono_table.cs
+
+evas_mono_table.exe$(EXEEXT): $(evas_mono_table_exe_SOURCES) $(am_dirstamp) $(top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ @rm -f evas_mono_table$(EXEEXT)
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+evas_mono_text_exe_SOURCES = \
+ evas_mono_text.cs
+
+evas_mono_text.exe$(EXEEXT): $(evas_mono_text_exe_SOURCES) $(am_dirstamp) $(top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT)
+ @rm -f evas_mono_text$(EXEEXT)
+ $(AM_V_MCS) $(MCS) $(MCS_FLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll$(EXEEXT) -out:$@ $(filter %.cs, $(^))
+
+endif
+
EDJS = $(EDCS:%.edc=%.edj)
SRCS = \