This patch is for building gbs NDalic rpm with swig only 76/91976/2
authorxb.teng <xb.teng@samsung.com>
Wed, 12 Oct 2016 10:57:46 +0000 (18:57 +0800)
committerdongsug.song <dongsug.song@samsung.com>
Wed, 12 Oct 2016 12:52:39 +0000 (21:52 +0900)
Change-Id: I7ab9ed4cd7f06afcd4287aca12343ac1a79d07f7
Signed-off-by: xb.teng <xb.teng@samsung.com>
build/tizen/Makefile.am [changed mode: 0644->0755]
build/tizen/configure.ac [changed mode: 0644->0755]
build/tizen/plugins/csharp/Makefile.am [new file with mode: 0755]
build/tizen/plugins/javascript/Makefile.am [moved from build/tizen/plugins/Makefile.am with 87% similarity]
dali-csharp-wrapper.manifest [new file with mode: 0755]
packaging/dali-csharp-wrapper.spec [new file with mode: 0755]

old mode 100644 (file)
new mode 100755 (executable)
index 0d0e733..89a5e28
 SUBDIRS = dali-toolkit
 
 if ENABLE_JAVASCRIPT_PLUGIN
 SUBDIRS = dali-toolkit
 
 if ENABLE_JAVASCRIPT_PLUGIN
-SUBDIRS +=plugins
+SUBDIRS +=plugins/javascript
+endif
+
+if ENABLE_CSHARP_PLUGIN
+SUBDIRS +=plugins/csharp
 endif
 
 # perform documentation last, so it doesn't prevent code from building if there's an error
 endif
 
 # perform documentation last, so it doesn't prevent code from building if there's an error
old mode 100644 (file)
new mode 100755 (executable)
index 21e03da..f12ab89
@@ -59,10 +59,21 @@ AC_ARG_ENABLE([i18n],
 #  no setting                // enable_javascript = automatic ( enable if v8 present)
 AC_ARG_ENABLE([javascript],
               [AC_HELP_STRING([--enable-javascript],
 #  no setting                // enable_javascript = automatic ( enable if v8 present)
 AC_ARG_ENABLE([javascript],
               [AC_HELP_STRING([--enable-javascript],
-               [Enable JavaScript plugin])] ,
-               [enable_javascript=$enableval],
-               [enable_javascript=automatic])
+                [Enable JavaScript plugin])],
+              [enable_javascript=$enableval],
+              [enable_javascript=automatic])
 
 
+# option to build C# plugin
+# configure settings and output
+# --enable-csharp        // enable_csharp = yes
+# --enable-csharp=yes    // enable_csharp = yes
+# --enable-csharp=no     // enable_csharp = no
+#  no setting            // enable_csharp = no
+AC_ARG_ENABLE([csharp],
+              [AC_HELP_STRING([--enable-csharp],
+                [Enable csharp plugin])],
+              [enable_csharp=$enableval],
+              [enable_csharp=automatic])
 
 if test "x$enable_debug" = "xyes"; then
   DALI_TOOLKIT_CFLAGS="$DALI_TOOLKIT_CFLAGS -DDEBUG_ENABLED"
 
 if test "x$enable_debug" = "xyes"; then
   DALI_TOOLKIT_CFLAGS="$DALI_TOOLKIT_CFLAGS -DDEBUG_ENABLED"
@@ -162,10 +173,45 @@ DOXYGEN_ROOT_DIR=../../..
 AC_SUBST(DOXYGEN_DOCS_DIR)
 AC_SUBST(DOXYGEN_ROOT_DIR)
 
 AC_SUBST(DOXYGEN_DOCS_DIR)
 AC_SUBST(DOXYGEN_ROOT_DIR)
 
+# Enable csharp plugin
+build_csharp_plugin=no
+build_ruby_flag=no
+if test x$enable_csharp = xyes; then
+  [build_csharp_plugin=yes]
+  AC_MSG_NOTICE(Building DALi csharp plugin ...)
+
+  PKG_CHECK_MODULES(DALIADAPTOR, dali-adaptor)
+  AC_PATH_PROG([SWIG], [swig])
+
+  # if gbs enable, then only use swig, without ruby or mcs
+  if test "x$dali_profile" = "xUBUNTU"; then
+    [build_ruby_flag=yes]
+    AC_PATH_PROG([RUBY], [ruby])
+    AC_PATH_PROGS([MCS], [mcs gmcs gmcs2])
+    AC_MSG_NOTICE(swig ruby mcs working ...)
+  else
+    [build_ruby_flag=no]
+    AC_PATH_PROG([RUBY], [ruby])
+    #AC_PATH_PROGS([MCS], [mcs gmcs gmcs2])
+    #AC_MSG_NOTICE(swig only working ...)
+  fi
+
+  # Set varaibles for dali-toolkit
+  DALITOOLKIT_CFLAGS="-I${prefix}/include -I${prefix}/include/dali-toolkit"
+  DALITOOLKIT_LIBS="-L${prefix}/lib -ldali-toolkit -ldali-core"
+  AC_SUBST(DALITOOLKIT_CFLAGS)
+  AC_SUBST(DALITOOLKIT_LIBS)
+fi
+
+#set a variable for the makefile to force compile the csharp plugin
+AM_CONDITIONAL([ENABLE_CSHARP_PLUGIN], [test x$build_csharp_plugin = xyes])
+AM_CONDITIONAL([ENABLE_RUBY_FLAG], [test x$build_ruby_flag = xyes])
+
 AC_CONFIG_FILES([
  Makefile
  dali-toolkit/Makefile
 AC_CONFIG_FILES([
  Makefile
  dali-toolkit/Makefile
- plugins/Makefile
+ plugins/javascript/Makefile
+ plugins/csharp/Makefile
  dali-toolkit.pc
  docs/Makefile
  docs/dali.doxy
  dali-toolkit.pc
  docs/Makefile
  docs/dali.doxy
@@ -181,6 +227,7 @@ Configuration
   Prefix:                           $prefix
   Debug Build:                      $enable_debug
   JavaScript support (V8 required)  $build_javascript_plugin
   Prefix:                           $prefix
   Debug Build:                      $enable_debug
   JavaScript support (V8 required)  $build_javascript_plugin
+  CSharp support                    $build_csharp_plugin
   Profile:                          $dali_profile
   Data Dir (Read/Write):            $dataReadWriteDir
   Data Dir (Read Only):             $dataReadOnlyDir
   Profile:                          $dali_profile
   Data Dir (Read/Write):            $dataReadWriteDir
   Data Dir (Read Only):             $dataReadOnlyDir
diff --git a/build/tizen/plugins/csharp/Makefile.am b/build/tizen/plugins/csharp/Makefile.am
new file mode 100755 (executable)
index 0000000..3d3d0e8
--- /dev/null
@@ -0,0 +1,83 @@
+# Copyright (c) 2016 Samsung Electronics Co., Ltd.
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+dali_swig_dir = ../../../../plugins/dali-swig
+
+CLEANFILES = $(dali_swig_dir)/automatic/cpp/dali_wrap.* $(dali_swig_dir)/automatic/csharp/*.cs $(dali_swig_dir)/*.so $(dali_swig_dir)/*.dll \
+             $(dali_swig_dir)/manual/cpp/*.o \
+             $(dali_swig_dir)/examples/*.so $(dali_swig_dir)/examples/*.dll $(dali_swig_dir)/examples/*.exe
+
+BUILT_SOURCES = $(dali_swig_dir)/automatic/cpp/dali_wrap.cpp
+
+all-local: libNDalic.so NDali.dll
+gbs-local: libNDalic.so
+
+libNDalic.so: $(dali_swig_dir)/automatic/cpp/dali_wrap.o $(dali_swig_dir)/manual/cpp/keyboard_focus_manager_wrap.o
+       $(CXX) -shared $(dali_swig_dir)/automatic/cpp/dali_wrap.o $(dali_swig_dir)/manual/cpp/keyboard_focus_manager_wrap.o -o $(dali_swig_dir)/libNDalic.so $(DALICORE_LIBS) $(DALIADAPTOR_LIBS) $(DALITOOLKIT_LIBS)
+
+$(dali_swig_dir)/automatic/cpp/dali_wrap.o: $(BUILT_SOURCES)
+       $(CXX) -c -fpic $(CXXFLAGS) $(DALICORE_CFLAGS) $(DALIADAPTOR_CFLAGS) $(DALITOOLKIT_CFLAGS) $(dali_swig_dir)/automatic/cpp/dali_wrap.cpp -o $(dali_swig_dir)/automatic/cpp/dali_wrap.o
+
+$(dali_swig_dir)/manual/cpp/keyboard_focus_manager_wrap.o: $(dali_swig_dir)/manual/cpp/keyboard_focus_manager_wrap.cpp
+       $(CXX) -c -fpic $(CXXFLAGS) $(DALICORE_CFLAGS) $(DALIADAPTOR_CFLAGS) $(DALITOOLKIT_CFLAGS) $(dali_swig_dir)/manual/cpp/keyboard_focus_manager_wrap.cpp -o $(dali_swig_dir)/manual/cpp/keyboard_focus_manager_wrap.o
+
+NDali.dll: $(BUILT_SOURCES)
+       $(MCS) -nologo -target:library -out:$(dali_swig_dir)/NDali.dll $(dali_swig_dir)/automatic/csharp/*.cs $(dali_swig_dir)/manual/csharp/*.cs
+
+
+# use swig to generate the CS wrapper code
+# then call our property-wrapper to inject DALi property getters / setters
+if ENABLE_RUBY_FLAG
+
+$(BUILT_SOURCES): $(dali_swig_dir)/SWIG/*.i
+       rm -f $(dali_swig_dir)/automatic/csharp/*.cs
+       rm -f $(dali_swig_dir)/automatic/cpp/dali-wrap.*
+       $(SWIG) -csharp -c++ -outdir $(dali_swig_dir)/automatic/csharp \
+            $(DALI_CFLAGS) $(DALICORE_CFLAGS) $(DALIADAPTOR_CFLAGS) $(DALITOOLKIT_CFLAGS) -namespace Dali -o $(dali_swig_dir)/automatic/cpp/dali_wrap.cpp $(dali_swig_dir)/SWIG/dali.i
+       cd $(dali_swig_dir) && ./property-wrapper.rb
+       cd $(dali_swig_dir) && ./constructor-generator.rb
+
+else
+
+$(BUILT_SOURCES): $(dali_swig_dir)/SWIG/*.i
+       rm -f $(dali_swig_dir)/automatic/csharp/*.cs
+       rm -f $(dali_swig_dir)/automatic/cpp/dali-wrap.*
+       $(SWIG) -version
+       $(SWIG) -csharp -c++ -outdir $(dali_swig_dir)/automatic/csharp \
+            $(DALI_CFLAGS) $(DALICORE_CFLAGS) $(DALIADAPTOR_CFLAGS) $(DALITOOLKIT_CFLAGS) -namespace Dali -o $(dali_swig_dir)/automatic/cpp/dali_wrap.cpp $(dali_swig_dir)/SWIG/dali.i
+endif
+
+
+dist-hook: $(BUILT_SOURCES)
+       mkdir -p $(distdir)/automatic/cpp
+       cp $(dali_swig_dir)/automatic/cpp/*.cpp $(distdir)/automatic/cpp
+       cp $(dali_swig_dir)/automatic/cpp/*.h $(distdir)/automatic/cpp
+       mkdir -p $(distdir)/manual/cpp
+       cp $(dali_swig_dir)/manual/cpp/*.cpp $(distdir)/manual/cpp
+       cp $(dali_swig_dir)/manual/cpp/*.h $(distdir)/manual/cpp
+       mkdir -p $(distdir)/automatic/csharp
+       cp $(dali_swig_dir)/automatic/csharp/*.cs $(distdir)/automatic/csharp
+       mkdir -p $(distdir)/manual/csharp
+       cp $(dali_swig_dir)/manual/csharp/*.cs $(distdir)/manual/csharp
+       mkdir -p $(distdir)/examples
+       cp $(dali_swig_dir)/examples/*.csproj $(distdir)/examples
+       cp $(dali_swig_dir)/examples/*.cs $(distdir)/examples
+
+gbs-install: gbs-local
+       -$(INSTALL) -d $(DESTDIR)
+       -$(INSTALL) $(dali_swig_dir)/libNDalic.so $(DESTDIR)
+
+EXTRA_DIST = \
+    swig.cmd
+
similarity index 87%
rename from build/tizen/plugins/Makefile.am
rename to build/tizen/plugins/javascript/Makefile.am
index 9d0b25b..0bb1082 100644 (file)
@@ -16,9 +16,9 @@
 
 # Build the Dali Toolkit library
 
 
 # Build the Dali Toolkit library
 
-plugin_src_dir = ../../../plugins
+plugin_src_dir = ../../../../plugins
 
 
-include ../../../plugins/dali-script-v8/file.list
+include ../../../../plugins/dali-script-v8/file.list
 
 
 lib_LTLIBRARIES = libdali-script-plugin-v8.la
 
 
 lib_LTLIBRARIES = libdali-script-plugin-v8.la
@@ -29,8 +29,8 @@ lib_LTLIBRARIES = libdali-script-plugin-v8.la
 # install path for dali-toolkit.h, is dali-toolkit.h is not installed yet.
 # It won't be installed until the rpm is installed, and unfortunately the
 # plugin is part of the same rpm
 # install path for dali-toolkit.h, is dali-toolkit.h is not installed yet.
 # It won't be installed until the rpm is installed, and unfortunately the
 # plugin is part of the same rpm
-script_plugin_v8_includes = -I../../../plugins/dali-script-v8/src \
-                            -I../../../plugins/dali-script-v8/src/utils
+script_plugin_v8_includes = -I../../../../plugins/dali-script-v8/src \
+                            -I../../../../plugins/dali-script-v8/src/utils
 
 
 libdali_script_plugin_v8_la_SOURCES = \
 
 
 libdali_script_plugin_v8_la_SOURCES = \
@@ -39,7 +39,7 @@ libdali_script_plugin_v8_la_SOURCES = \
 libdali_script_plugin_v8_la_DEPENDENCIES =
 
 libdali_script_plugin_v8_la_CXXFLAGS = -DDALI_COMPILATION \
 libdali_script_plugin_v8_la_DEPENDENCIES =
 
 libdali_script_plugin_v8_la_CXXFLAGS = -DDALI_COMPILATION \
-                            -I../../../ \
+                            -I../../../../ \
                             $(V8_CFLAGS) \
                             $(DALI_TOOLKIT_CFLAGS) \
                             $(DALICORE_CFLAGS) \
                             $(V8_CFLAGS) \
                             $(DALI_TOOLKIT_CFLAGS) \
                             $(DALICORE_CFLAGS) \
diff --git a/dali-csharp-wrapper.manifest b/dali-csharp-wrapper.manifest
new file mode 100755 (executable)
index 0000000..75b0fa5
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+    <request>
+        <domain name="_"/>
+    </request>
+</manifest>
diff --git a/packaging/dali-csharp-wrapper.spec b/packaging/dali-csharp-wrapper.spec
new file mode 100755 (executable)
index 0000000..73ee8da
--- /dev/null
@@ -0,0 +1,146 @@
+Name:       NDalic
+Summary:    dali wrapper
+Version:    1.2.9
+Release:    1
+Group:      uifw/graphic
+License:    TO_BE_FILLED_IN
+Source0:    %{name}-%{version}.tar.gz
+BuildRequires: cmake
+BuildRequires: swig
+#BuildRequires: ruby
+#BuildRequires: ruby-devel
+
+#BuildRequires: mono-core
+#BuildRequires: mono-compat
+#BuildRequires: mono-data
+#BuildRequires: mono-compiler
+#BuildRequires: mono-wcf
+#BuildRequires: mono-web
+
+BuildRequires:  pkgconfig
+
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(dali-core)
+BuildRequires: pkgconfig(dali-adaptor)
+BuildRequires: pkgconfig(dali-toolkit)
+
+BuildRequires: dali-devel
+BuildRequires: dali-integration-devel
+BuildRequires: dali-adaptor-devel
+BuildRequires: dali-adaptor-integration-devel
+BuildRequires: dali-toolkit-devel
+
+%description
+dali wrapper
+
+%package dali-wrapper
+
+Summary: Development dali-wrapper
+Group: Development/Libraries/Other
+Requires: %{name} = %{version}
+
+%description dali-wrapper
+Development .so for dali wrapper
+%define daliSwigDir %{_builddir}/%{name}-%{version}/build/tizen
+%define daliToolkitDir %{_builddir}/dali-toolkit-%{version}/build/tizen
+%define daliPluginsDir %{_builddir}/%{name}-%{version}/build/tizen/plugins/csharp
+
+#############################
+# profile setup
+#############################
+
+
+%define dali_toolkit_profile MOBILE
+
+%define dali_style_folder 720x1280
+# dali_style to be provided by build system as with dali_toolkit_profile or by passing --define 'dali_style 470x800' to the rpm build command
+
+%if "%{?dali_style}"
+  %define dali_style_folder %{dali_style}
+%endif
+
+# Further resource locations profiles can be provided here otherwise MOBILE will be used
+%if "%{tizen_profile_name}" == "mobile"
+  %define dali_toolkit_profile MOBILE
+%endif
+
+%description
+The OpenGLES Canvas Core Library Toolkit - a set of controls that provide
+user interface functionality.
+
+##############################
+# Preparation
+##############################
+%prep
+%setup -q
+
+#Use TZ_PATH when tizen version is 3.x
+
+%if "%{tizen_version_major}" == "2"
+%define ndali_data_rw_dir            /opt/usr/share/dali/
+%define ndali_data_ro_dir            /usr/share/dali/
+%else
+%define ndali_data_rw_dir            %TZ_SYS_SHARE/dali/
+%define ndali_data_ro_dir            %TZ_SYS_RO_SHARE/dali/
+%endif
+##############################
+# Build
+##############################
+%build
+echo "----------------" %{_builddir}
+echo "----------------" %{daliSwigDir}
+echo "----------------" %{_libdir}
+echo "----------------" %{daliPluginsDir}
+
+PREFIX="/usr"
+CXXFLAGS+=" -Wall -g -Os -fPIC -fvisibility-inlines-hidden -fdata-sections -ffunction-sections "
+LDFLAGS+=" -Wl,--rpath=$PREFIX/lib -Wl,--as-needed -Wl,--gc-sections -Wl,-Bsymbolic-functions "
+
+%if 0%{?enable_coverage}
+CXXFLAGS+=" --coverage "
+LDFLAGS+=" --coverage "
+%endif
+
+
+##############################
+# Build dali-wrap
+##############################
+
+libtoolize --force
+cd %{daliSwigDir}
+autoreconf --install
+NDALI_DATA_RW_DIR="%{ndali_data_rw_dir}" ; export NDALI_DATA_RW_DIR
+NDALI_DATA_RO_DIR="%{ndali_data_ro_dir}" ; export NDALI_DATA_RO_DIR
+%configure --enable-profile=%{dali_toolkit_profile} \
+           --with-style=%{dali_style_folder} \
+           --enable-csharp=yes \
+%if 0%{?enable_debug}
+           --enable-debug \
+%endif
+           --enable-i18n=yes
+cd %{daliPluginsDir}
+make gbs-local
+
+##############################
+# Installation
+##############################
+echo "----------------" %{_buildrootdir}
+%install
+cd "%{daliPluginsDir}"
+make DESTDIR=%{_buildrootdir}/%{name}-%{version}-%{release}.arm/usr/lib/ gbs-install
+
+##############################
+# Post Install
+##############################
+%post
+
+
+##############################
+# Files in Binary Packages
+##############################
+%files
+%manifest dali-csharp-wrapper.manifest
+%defattr(-,root,root,-)
+%{_libdir}/lib*
+
+