From aeb23f0388b3afca17d38be8a9e7f18a947a638a Mon Sep 17 00:00:00 2001 From: "xb.teng" Date: Wed, 12 Oct 2016 18:57:46 +0800 Subject: [PATCH 1/1] This patch is for building gbs NDalic rpm with swig only Change-Id: I7ab9ed4cd7f06afcd4287aca12343ac1a79d07f7 Signed-off-by: xb.teng --- build/tizen/Makefile.am | 6 +- build/tizen/configure.ac | 55 ++++++++- build/tizen/plugins/csharp/Makefile.am | 83 +++++++++++++ build/tizen/plugins/{ => javascript}/Makefile.am | 10 +- dali-csharp-wrapper.manifest | 5 + packaging/dali-csharp-wrapper.spec | 146 +++++++++++++++++++++++ 6 files changed, 295 insertions(+), 10 deletions(-) mode change 100644 => 100755 build/tizen/Makefile.am mode change 100644 => 100755 build/tizen/configure.ac create mode 100755 build/tizen/plugins/csharp/Makefile.am rename build/tizen/plugins/{ => javascript}/Makefile.am (87%) create mode 100755 dali-csharp-wrapper.manifest create mode 100755 packaging/dali-csharp-wrapper.spec diff --git a/build/tizen/Makefile.am b/build/tizen/Makefile.am old mode 100644 new mode 100755 index 0d0e733..89a5e28 --- a/build/tizen/Makefile.am +++ b/build/tizen/Makefile.am @@ -17,7 +17,11 @@ 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 diff --git a/build/tizen/configure.ac b/build/tizen/configure.ac old mode 100644 new mode 100755 index 21e03da..f12ab89 --- a/build/tizen/configure.ac +++ b/build/tizen/configure.ac @@ -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], - [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" @@ -162,10 +173,45 @@ 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 - plugins/Makefile + plugins/javascript/Makefile + plugins/csharp/Makefile 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 + CSharp support $build_csharp_plugin 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 index 0000000..3d3d0e8 --- /dev/null +++ b/build/tizen/plugins/csharp/Makefile.am @@ -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 + diff --git a/build/tizen/plugins/Makefile.am b/build/tizen/plugins/javascript/Makefile.am similarity index 87% rename from build/tizen/plugins/Makefile.am rename to build/tizen/plugins/javascript/Makefile.am index 9d0b25b..0bb1082 100644 --- a/build/tizen/plugins/Makefile.am +++ b/build/tizen/plugins/javascript/Makefile.am @@ -16,9 +16,9 @@ # 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 @@ -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 -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 = \ @@ -39,7 +39,7 @@ libdali_script_plugin_v8_la_SOURCES = \ libdali_script_plugin_v8_la_DEPENDENCIES = libdali_script_plugin_v8_la_CXXFLAGS = -DDALI_COMPILATION \ - -I../../../ \ + -I../../../../ \ $(V8_CFLAGS) \ $(DALI_TOOLKIT_CFLAGS) \ $(DALICORE_CFLAGS) \ diff --git a/dali-csharp-wrapper.manifest b/dali-csharp-wrapper.manifest new file mode 100755 index 0000000..75b0fa5 --- /dev/null +++ b/dali-csharp-wrapper.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/packaging/dali-csharp-wrapper.spec b/packaging/dali-csharp-wrapper.spec new file mode 100755 index 0000000..73ee8da --- /dev/null +++ b/packaging/dali-csharp-wrapper.spec @@ -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* + + -- 2.7.4