diff --git a/.gitignore b/.gitignore index c10b14de45..b0fe06ce2a 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,8 @@ tags *.eo.hh *.eo.impl.hh *.eo.js.cc +*.eo.cs +*.eot.cs *.eo.lua *.luac .dir-locals.el diff --git a/Makefile.am b/Makefile.am index 8fb921c734..8fd7776ff6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -188,6 +188,11 @@ pc/eo-js.pc \ pc/eina-js.pc endif +if HAVE_CSHARP +pkgconfig_DATA += \ +pc/efl-mono.pc +endif + if BUILD_ENGINE_SOFTWARE_X11 pkgconfig_DATA += pc/evas-software-x11.pc endif @@ -434,6 +439,15 @@ EXTRA_DIST += $(systemdunits_DATA) .PHONY: doc benchmark examples install-examples +# MSBuild C Sharp projects generation: + +if HAVE_CSHARP + +msbuildcsprojs: + @$(MAKE) $(AM_MAKEFLAGS) -C src msbuildcsprojs + +endif + # Documentation doc: diff --git a/configure.ac b/configure.ac index 003190ba26..69ea681848 100644 --- a/configure.ac +++ b/configure.ac @@ -163,6 +163,7 @@ EFL_WITH_BIN([eet], [eet-eet]) EFL_WITH_BIN([edje], [edje-cc]) EFL_WITH_BIN([eolian], [eolian-gen]) EFL_WITH_BIN([eolian_cxx], [eolian-cxx]) +EFL_WITH_BIN([eolian_mono], [eolian-mono]) EFL_WITH_BIN([eolian-js], [eolian-js]) EFL_WITH_BIN_SUFFIX([elua], [elua], [_bin]) EFL_WITH_BIN([eldbus], [eldbus_codegen]) @@ -329,6 +330,7 @@ AC_LANG(C) AC_PROG_CC_C99 AM_PROG_CC_C_O AC_PROG_SED +AC_PROG_MCS AM_CONDITIONAL([BUILD_EFL_NATIVE], [test "x${cross_compiling}" = "xno"]) @@ -1329,6 +1331,129 @@ EFL_EVAL_PKGS([EO_JS]) EFL_LIB_END_OPTIONAL([Eo_Js]) #### End of Eo JS +#### Efl C Sharp Bindings + +want_csharp="no" +AC_ARG_ENABLE([csharp-bindings], + [AS_HELP_STRING([--enable-csharp-bindings],[enable C Sharp bindings. @<:@default=disabled@:>@])], + [ + if test "x${enableval}" = "xyes" ; then + want_csharp="yes" + else + want_csharp="no" + fi + ], + [want_csharp="no"]) + +if test "x${want_csharp}" = "xyes" -a "x${HAVE_MCS}" != "x1"; then + want_csharp="no" + AC_MSG_ERROR([C Sharp bindings requested but C Sharp compiler could not be found]) +fi + +AM_CONDITIONAL([HAVE_CSHARP], [test "x${want_csharp}" = "xyes"]) +AC_DEFINE_IF([HAVE_CSHARP], [test "x${want_csharp}" = "xyes"], + [1], [Compiling bindings for C Sharp]) +AC_SUBST([want_csharp]) + +# Efl Mono +EFL_LIB_START_OPTIONAL([Efl_Mono], [test "x${want_csharp}" = "xyes"]) + +EFL_PLATFORM_DEPEND([EFL_MONO], [evil]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Eina]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Eo]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Ecore]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Eet]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Ecore_Evas]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Ecore_Con]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Ecore_Audio]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Efl]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Evas]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Edje]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Emotion]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Eldbus]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Emile]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Ethumb]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Ethumb_Client]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Eio]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Elementary]) +EFL_INTERNAL_DEPEND_PKG([EFL_MONO], [Efl_Custom_Exports_Mono]) + +EFL_EVAL_PKGS([EFL_MONO]) + +EFL_LIB_END_OPTIONAL([Efl_Mono]) + +# Efl Custom Exports Mono +EFL_LIB_START_OPTIONAL([Efl_Custom_Exports_Mono], [test "x${want_csharp}" = "xyes"]) + +EFL_PLATFORM_DEPEND([EFL_CUSTOM_EXPORTS_MONO], [evil]) +EFL_INTERNAL_DEPEND_PKG([EFL_CUSTOM_EXPORTS_MONO], [Eina]) +EFL_INTERNAL_DEPEND_PKG([EFL_CUSTOM_EXPORTS_MONO], [Eo]) +EFL_INTERNAL_DEPEND_PKG([EFL_CUSTOM_EXPORTS_MONO], [Efl]) +EFL_INTERNAL_DEPEND_PKG([EFL_CUSTOM_EXPORTS_MONO], [Eldbus]) + +EFL_EVAL_PKGS([EFL_CUSTOM_EXPORTS_MONO]) + +EFL_LIB_END_OPTIONAL([Efl_Custom_Exports_Mono]) + +# Libtool versioning stuff. +# On windows, the version of the library goes into the filename. +# See https://autotools.io/libtool/windows.html#libtool.windows.version +# Based on the current:revision:age string passed to libtool, the generated suffix +# has the value of (current - age). +# To get the current and age, we use the same calculation from m4/efl.m4 (lt_cur, lt_age) +DLIB_PREFIX_MONO="" +DLIB_SUFFIX_MONO="" +if test "x${have_windows}" = "xyes"; then + DLIB_PREFIX_MONO="lib" + if test "x${EFL_VERSION_MAJOR}" = "x1"; then + DLIB_SUFFIX_MONO="-${EFL_VERSION_MAJOR}" + else + DLIB_SUFFIX_MONO="-${EFL_VERSION_MAJOR}00" + fi +fi +AC_SUBST([DLIB_PREFIX_MONO]) +AC_SUBST([DLIB_SUFFIX_MONO]) + +EFL_DL_MONO="${DLIB_PREFIX_MONO}efl${DLIB_SUFFIX_MONO}"; +ECORE_DL_MONO="${DLIB_PREFIX_MONO}ecore${DLIB_SUFFIX_MONO}"; +EINA_DL_MONO="${DLIB_PREFIX_MONO}eina${DLIB_SUFFIX_MONO}" +EO_DL_MONO="${DLIB_PREFIX_MONO}eo${DLIB_SUFFIX_MONO}" +EVAS_DL_MONO="${DLIB_PREFIX_MONO}evas${DLIB_SUFFIX_MONO}" +if test "x${have_windows}" = "xyes"; then + EVIL_DL_MONO="${DLIB_PREFIX_MONO}evil${DLIB_SUFFIX_MONO}" +else + EVIL_DL_MONO="dl" +fi +ECORE_EVAS_DL_MONO="${DLIB_PREFIX_MONO}ecore_evas${DLIB_SUFFIX_MONO}" +EDJE_DL_MONO="${DLIB_PREFIX_MONO}edje${DLIB_SUFFIX_MONO}" +ELEMENTARY_DL_MONO="${DLIB_PREFIX_MONO}elementary${DLIB_SUFFIX_MONO}" +ELDBUS_DL_MONO="${DLIB_PREFIX_MONO}eldbus${DLIB_SUFFIX_MONO}" +CUSTOM_EXPORTS_MONO_DL_MONO="${DLIB_PREFIX_MONO}eflcustomexportsmono${DLIB_SUFFIX_MONO}" + +AC_SUBST([EFL_DL_MONO]) +AC_SUBST([ECORE_DL_MONO]) +AC_SUBST([EINA_DL_MONO]) +AC_SUBST([EO_DL_MONO]) +AC_SUBST([EVAS_DL_MONO]) +AC_SUBST([EVIL_DL_MONO]) +AC_SUBST([ECORE_EVAS_DL_MONO]) +AC_SUBST([EDJE_DL_MONO]) +AC_SUBST([ELEMENTARY_DL_MONO]) +AC_SUBST([ELDBUS_DL_MONO]) +AC_SUBST([CUSTOM_EXPORTS_MONO_DL_MONO]) + +# Eos file/library mapping + +# Unescaped sed pattern: sed -n 's/src\/lib\/\([a-z0-9_]*\)\/[a-z\/]*\/\([a-z0-9\._]*\)/\2,\1/pg' +_configure_path=`realpath $0` +efl_mono_top_srcdir=`dirname ${_configure_path}` +EFL_MONO_LIBRARY_MAP=`find ${efl_mono_top_srcdir}/src/lib/ -iname "*\.eo" | sed -n 's/.*\/src\/lib\/\(@<:@a-z0-9_@:>@*\)@<:@\/a-z@:>@*\/\(@<:@a-z0-9\._@:>@*\)/\2,\1/pg'` + +AC_SUBST([EFL_MONO_LIBRARY_MAP]) +AM_SUBST_NOTMAKE([EFL_MONO_LIBRARY_MAP]) + +#### End of Efl C Sharp Bindings + #### Eo EFL_LIB_START([Eo]) @@ -5560,6 +5685,8 @@ doc/Doxyfile doc/previews/Makefile doc/widgets/Makefile src/Makefile +src/bindings/mono/efl_mono/efl_libs.cs +src/bindings/mono/efl_mono/efl_libs.csv src/benchmarks/eina/Makefile src/benchmarks/eo/Makefile src/benchmarks/evas/Makefile @@ -5578,6 +5705,7 @@ src/examples/emile/Makefile src/examples/ethumb_client/Makefile src/examples/elua/Makefile src/examples/eolian_cxx/Makefile +src/examples/efl_mono/Makefile src/examples/elocation/Makefile src/examples/elementary/Makefile src/lib/eina/eina_config.h @@ -5603,6 +5731,7 @@ pc/eolian-js.pc pc/eo-js.pc pc/efl.pc pc/efl-cxx.pc +pc/efl-mono.pc pc/efl-wl.pc pc/efl-core.pc pc/efl-net.pc @@ -5789,6 +5918,7 @@ echo " Cryptography..: ${build_crypto}" echo " X11...........: ${with_x11}" echo " OpenGL........: ${with_opengl} ${opengl_egl}" echo " C++11.........: ${have_cxx11}" +echo " C#............: ${want_csharp}" echo " JavaScript....: ${want_js}" echo " JavaScript flg: $EINA_JS_LIBS" echo "Eina............: yes (${features_eina} unwind=$have_unwind)" diff --git a/m4/efl_mono.m4 b/m4/efl_mono.m4 new file mode 100644 index 0000000000..807526ee24 --- /dev/null +++ b/m4/efl_mono.m4 @@ -0,0 +1,95 @@ +# # ============================================================================ +# # http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html +# # ============================================================================ +# # +# # SYNOPSIS +# # +# # AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional]) +# # +# # DESCRIPTION +# # +# # Check for baseline language coverage in the compiler for the C++11 +# # standard; if necessary, add switches to CXXFLAGS to enable support. +# # +# # The first argument, if specified, indicates whether you insist on an +# # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. +# # -std=c++11). If neither is specified, you get whatever works, with +# # preference for an extended mode. +# # +# # The second argument, if specified 'mandatory' or if left unspecified, +# # indicates that baseline C++11 support is required and that the macro +# # should error out if no mode with that support is found. If specified +# # 'optional', then configuration proceeds regardless, after defining +# # HAVE_CXX11 if and only if a supporting mode is found. +# # +# # LICENSE +# # +# # Copyright (c) 2016 Felipe Magno de Almeida +# # +# # Copying and distribution of this file, with or without modification, are +# # permitted in any medium without royalty provided the copyright notice +# # and this notice are preserved. This file is offered as-is, without any +# # warranty. + +# AC_LANG(CSHARP) +# ----------- +AC_LANG_DEFINE([CSHARP], [csharp], [MCS], [], +[ac_ext=cs +ac_compile='$MCS $MCSFLAGS conftest.$ac_ext >&AS_MESSAGE_LOG_FD' +]) + +AU_DEFUN([AC_LANG_CSHARP], [AC_LANG(CSHARP)]) + +m4_define([AC_LANG_PROGRAM(CSHARP)], +[$1 +class MyClass +{ + static void Main(string[] args) + { + $2 + } +}]) + +AC_DEFUN([AC_LANG_COMPILER(CSHARP)], +[AC_REQUIRE([AC_PROG_MCS])]) + +AN_MAKEVAR([MCS], [AC_PROG_MCS]) +AN_PROGRAM([mcs], [AC_PROG_MCS]) +AC_DEFUN([AC_PROG_MCS], +[AC_LANG_PUSH(CSHARP)dnl +AC_ARG_VAR([MCS], [MCS (C#) compiler command])dnl +AC_ARG_VAR([MCSFLAGS], [MCS (C#) compiler flags])dnl +dnl _AC_ARG_VAR_LDFLAGS()dnl +m4_ifval([$1], + [AC_CHECK_TOOLS(MCS, [$1])], +[AC_CHECK_TOOL(MCS, mcs) +if test -z "$MCS"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(MCS, [${ac_tool_prefix}mcs], [$ac_tool_prefix}mcs]) + fi +fi +if test -z "$MCS"; then + AC_CHECK_PROG(MCS, mcs, mcs, , , false) +fi +if test -z "$MCS"; then + HAVE_MCS=0 + AC_MSG_NOTICE([No C sharp compiler was found]) +else + HAVE_MCS=1 + AC_DEFINE(HAVE_MCS,1, + [define if the MCS compiler is available]) +fi +AC_SUBST(HAVE_MCS) +]) + +# Provide some information about the compiler. +_AS_ECHO_LOG([checking for _AC_LANG compiler version]) +set X $ac_compile +ac_compiler=$[2] +_AC_DO_LIMIT([$ac_compiler --version >&AS_MESSAGE_LOG_FD]) +m4_expand_once([_AC_COMPILER_EXEEXT])[]dnl +m4_expand_once([_AC_COMPILER_OBJEXT])[]dnl +AC_LANG_POP(CSHARP)dnl +])# AC_PROG_MCS + + diff --git a/pc/.gitignore b/pc/.gitignore index 5657ab6a68..8756bce99d 100644 --- a/pc/.gitignore +++ b/pc/.gitignore @@ -70,6 +70,7 @@ /elua.pc /emile.pc /efl-js.pc +/efl-mono.pc /elementary-cxx.pc /elput.pc /ecore-drm2.pc diff --git a/pc/efl-mono.pc.in b/pc/efl-mono.pc.in new file mode 100644 index 0000000000..8b4a147af3 --- /dev/null +++ b/pc/efl-mono.pc.in @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ +datarootdir=@datarootdir@ +datadir=@datadir@ + +#variable to be used with meson +mono_libs=-r:@prefix@/bin/libefl_mono.dll + +Name: EFL-Mono +Description: EFL's C-Sharp bindings +Version: @PACKAGE_VERSION@ +Libs: -r:${prefix}/bin/libefl_mono.dll + 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 = \