From e08b0aa7f70b223de1e389a2bb82fe572eb7ef8d Mon Sep 17 00:00:00 2001 From: Denis Khalikov Date: Thu, 4 May 2017 11:47:32 +0300 Subject: [PATCH] Support dual ABI Change-Id: I76ddf1cd3acd6d8e1f91859758de6929735fe580 Signed-off-by: Denis Khalikov --- build/tizen/Makefile.am | 5 +- build/tizen/configure.ac | 31 +++++++- build/tizen/dali-toolkit.pc.in | 4 +- build/tizen/dali-toolkit/Makefile.am | 46 ++++++++++-- dali-toolkit/internal/scripting/script-impl.cpp | 4 + packaging/dali-toolkit.spec | 97 ++++++++++++++++++++++--- 6 files changed, 165 insertions(+), 22 deletions(-) diff --git a/build/tizen/Makefile.am b/build/tizen/Makefile.am index 89a5e28..3df2c08 100755 --- a/build/tizen/Makefile.am +++ b/build/tizen/Makefile.am @@ -28,6 +28,7 @@ endif SUBDIRS += docs pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = dali-toolkit.pc MAINTAINERCLEANFILES = \ @@ -56,8 +57,8 @@ rename_cov_data: @test -z $(COVERAGE_DIR) || mkdir -p $(COVERAGE_DIR) @rm -f $(COVERAGE_DIR)/* @cp dali-toolkit/.libs/*.gcda dali-toolkit/.libs/*.gcno $(COVERAGE_DIR) - @for i in `find $(COVERAGE_DIR) -name "libdali_toolkit_la-*.gcda" -o -name "libdali_toolkit_la-*.gcno"` ;\ - do mv $$i `echo $$i | sed s/libdali_toolkit_la-//` ; echo $$i ; done + @for i in `find $(COVERAGE_DIR) -name "libdali_toolkit*_la-*.gcda" -o -name "libdali_toolkit*_la-*.gcno"` ;\ + do mv $$i `echo $$i | sed s/libdali_toolkit*_la-//` ; echo $$i ; done cov_data: rename_cov_data @cd $(COVERAGE_DIR) ; lcov $(LCOV_OPTS) --base-directory . --directory . -c -o dali.info diff --git a/build/tizen/configure.ac b/build/tizen/configure.ac index 80e4a8f..26be349 100755 --- a/build/tizen/configure.ac +++ b/build/tizen/configure.ac @@ -28,7 +28,6 @@ LT_INIT DALI_TOOLKIT_VERSION=dali_version AC_SUBST(DALI_TOOLKIT_VERSION) -PKG_CHECK_MODULES(DALICORE, dali-core) DALI_TOOLKIT_CFLAGS=-DPLATFORM_TIZEN @@ -75,6 +74,25 @@ AC_ARG_ENABLE([csharp], [enable_csharp=$enableval], [enable_csharp=automatic]) +AC_ARG_ENABLE([cxx03_abi], + [AC_HELP_STRING([--enable-cxx03-abi], + [Specify abi for the build])], + [enable_cxx03_abi=$enableval], + [enable_cxx03_abi=no]) + +AC_ARG_ENABLE([rename_so], + [AC_HELP_STRING([--enable-rename-so], + [Specify whether so file is renamed or not])], + [enable_rename_so=$enableval], + [enable_rename_so=yes]) + +AM_CONDITIONAL([ENABLE_CXX03_ABI], [test x$enable_cxx03_abi = xyes]) +AM_CONDITIONAL([ENABLE_RENAME_SO], [test x$enable_rename_so = xyes]) + +if test "x$enable_cxx03_abi" = "xyes"; then + DALI_TOOLKIT_CFLAGS="$DALI_TOOLKIT_CFLAGS -D_GLIBCXX_USE_CXX11_ABI=0" +fi + if test "x$enable_debug" = "xyes"; then DALI_TOOLKIT_CFLAGS="$DALI_TOOLKIT_CFLAGS -DDEBUG_ENABLED" fi @@ -203,6 +221,12 @@ if test x$enable_csharp = xyes; then AC_SUBST(DALITOOLKIT_LIBS) fi +if test "x$enable_cxx03_abi" = "xyes"; then +PKG_CHECK_MODULES(DALICORE, dali-core-cxx03) +else +PKG_CHECK_MODULES(DALICORE, dali-core) +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]) @@ -212,13 +236,16 @@ AC_CONFIG_FILES([ dali-toolkit/Makefile plugins/javascript/Makefile plugins/csharp/Makefile - dali-toolkit.pc docs/Makefile docs/dali.doxy docs-internal/dali-internal.doxy ../../automated-tests/CMakeLists.txt ]) +if test "x$enable_cxx03_abi" = "xno"; then +AC_CONFIG_FILES([dali-toolkit.pc]) +fi + AC_OUTPUT echo " diff --git a/build/tizen/dali-toolkit.pc.in b/build/tizen/dali-toolkit.pc.in index 87cbcc0..16eacc4 100644 --- a/build/tizen/dali-toolkit.pc.in +++ b/build/tizen/dali-toolkit.pc.in @@ -4,8 +4,8 @@ apiversion=@DALI_TOOLKIT_VERSION@ libdir=@libdir@ includedir=@devincludepath@ -Name: Samsung OpenGLES Toolkit (including Toolkit) -Description: 3D Canvas Toolkit using OpenGLES (with the toolkit) +Name: Dali 3D engine Toolkit +Description: Cross platform 3D Engine Toolkit Version: ${apiversion} Requires: dali-core Libs: -L${libdir} -ldali-toolkit diff --git a/build/tizen/dali-toolkit/Makefile.am b/build/tizen/dali-toolkit/Makefile.am index c2f73c3..25bdf75 100644 --- a/build/tizen/dali-toolkit/Makefile.am +++ b/build/tizen/dali-toolkit/Makefile.am @@ -53,10 +53,7 @@ dalisound_DATA = ${dali_toolkit_sound_files} package_doxy_dir = ../../../doc include ../../../doc/file.list -# The library -lib_LTLIBRARIES = libdali-toolkit.la - -libdali_toolkit_la_SOURCES = \ +LIBDALI_TOOLKIT_LA_SOURCES = \ $(toolkit_src_files) \ $(public_api_src_files) \ $(devel_api_src_files) \ @@ -70,7 +67,7 @@ dalistyleimages_DATA = ${dali_toolkit_style_images} libdali_toolkit_la_DEPENDENCIES = -libdali_toolkit_la_CXXFLAGS = -DDALI_COMPILATION \ +LIBDALI_TOOLKIT_LA_CXXFLAGS = -DDALI_COMPILATION \ -DDALI_IMAGE_DIR="\"${daliimagedir}\"" \ -DDALI_SOUND_DIR="\"${dalisounddir}\"" \ -DDALI_STYLE_DIR="\"${dalistyledir}\"" \ @@ -84,14 +81,49 @@ libdali_toolkit_la_CXXFLAGS = -DDALI_COMPILATION \ $(FRIBIDI_CFLAGS) \ $(HTMLCXX_CFLAGS) -libdali_toolkit_la_LIBADD = \ +LIBDALI_TOOLKIT_LA_LIBADD = \ $(DALICORE_LIBS) \ $(DLOG_LIBS) \ $(FRIBIDI_LIBS) \ $(HTMLCXX_LIBS) -# Install headers +# The library +if ENABLE_CXX03_ABI + +lib_LTLIBRARIES = libdali-toolkit.la +libdali_toolkit_la_SOURCES = $(LIBDALI_TOOLKIT_LA_SOURCES) +libdali_toolkit_la_LIBADD = $(LIBDALI_TOOLKIT_LA_LIBADD) +libdali_toolkit_la_CXXFLAGS = $(LIBDALI_TOOLKIT_LA_CXXFLAGS) +libdali_toolkit_la_CFLAGS = $(LIBDALI_TOOLKTI_LA_CFLAGS) + +if ENABLE_RENAME_SO +#rename +install: install-am + rm -rf $(libdir)/libdali-toolkit.so + rm -rf $(libdir)/libdali-toolkit-cxx03.so + ln -s $(libdir)/libdali-toolkit.so.0.0.* $(libdir)/libdali-toolkit-cxx03.so +endif + +else + +lib_LTLIBRARIES = libdali-toolkit-cxx11.la +libdali_toolkit_cxx11_la_SOURCES = $(LIBDALI_TOOLKIT_LA_SOURCES) +libdali_toolkit_cxx11_la_LIBADD = $(LIBDALI_TOOLKIT_LA_LIBADD) +libdali_toolkit_cxx11_la_CXXFLAGS = $(LIBDALI_TOOLKIT_LA_CXXFLAGS) +libdali_toolkit_cxx11_la_CFLAGS = $(LIBDALI_TOOLKTI_LA_CFLAGS) + +if ENABLE_RENAME_SO +#rename +install: install-am + rm -rf $(libdir)/libdali-toolkit-cxx11.so + rm -rf $(libdir)/libdali-toolkit.so + ln -s $(libdir)/libdali-toolkit-cxx11.so.0.0.* $(libdir)/libdali-toolkit.so +endif + +endif + +# Install headers topleveldir = $(devincludepath)/dali-toolkit toplevel_HEADERS = ../../../dali-toolkit/dali-toolkit.h diff --git a/dali-toolkit/internal/scripting/script-impl.cpp b/dali-toolkit/internal/scripting/script-impl.cpp index 9cc0d24..6c9191b 100644 --- a/dali-toolkit/internal/scripting/script-impl.cpp +++ b/dali-toolkit/internal/scripting/script-impl.cpp @@ -33,7 +33,11 @@ namespace Internal namespace { +#if _GLIBCXX_USE_CXX11_ABI +const char* PLUGIN_FILE = "libdali-script-plugin-v8-cxx11.so"; +#else const char* PLUGIN_FILE = "libdali-script-plugin-v8.so"; +#endif } Script::Script() diff --git a/packaging/dali-toolkit.spec b/packaging/dali-toolkit.spec index 09b9373..0414a58 100644 --- a/packaging/dali-toolkit.spec +++ b/packaging/dali-toolkit.spec @@ -1,5 +1,5 @@ Name: dali-toolkit -Summary: The OpenGLES Canvas Core Library Toolkit +Summary: Dali 3D engine Toolkit Version: 1.2.55 Release: 1 Group: System/Libraries @@ -10,15 +10,25 @@ Source0: %{name}-%{version}.tar.gz Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig +%if 0%{?tizen_version_major} < 4 +%define disable_cxx03_build 1 +%endif + BuildRequires: pkgconfig BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(dali-core) +%if !0%{?disable_cxx03_build} +BuildRequires: pkgconfig(dali-core-cxx03) +%endif BuildRequires: gettext # dali-toolkit only need to know the interfaces(APIs) of dali-adaptor(the devel package). # It doesn't need to know which adaptor will be used by applications. # Applications or dali-addon will decide which one they will use. BuildRequires: dali-adaptor-devel +%if !0%{?disable_cxx03_build} +BuildRequires: dali-adaptor-devel-cxx03 +%endif #need libtzplatform-config for directory if tizen version is 3.x @@ -35,7 +45,7 @@ BuildRequires: pkgconfig(libtzplatform-config) %endif %description -The OpenGLES Canvas Core Library Toolkit - a set of controls that provide +Dali 3D engine Toolkit - a set of controls that provide user interface functionality. ############################## @@ -68,16 +78,25 @@ Conflicts: %{name}-resources_720x1280 dali-toolkit default resource files for 1920x1080 Contain po / sounds / common images / style / style images +%if !0%{?disable_cxx03_build} +%package cxx03 +Summary: Dali 3D engine Toolkit with cxx03 +Provides: %{name}-cxx03 = %{version}-%{release} + +%description cxx03 +Dali 3D engine Toolkit with cxx03 +%endif + ############################## # devel ############################## %package devel -Summary: Application development package for the OpenGLES Canvas toolkit +Summary: Application development package for Dali 3D engine toolkit Group: Development/Building Requires: %{name} = %{version}-%{release} %description devel -Application development package for the OpenGLES Canvas toolkit - headers and package config +Application development package for Dali 3D engine toolkit - headers and package config ############################## # Preparation @@ -133,18 +152,52 @@ DALI_DATA_RO_DIR="%{dali_data_ro_dir}" ; export DALI_DATA_RO_DIR %if 0%{?enable_debug} --enable-debug \ %endif - --enable-i18n=yes + --enable-i18n=yes \ + --enable-rename-so=no make %{?jobs:-j%jobs} +pushd %{_builddir}/%{name}-%{version}/build/tizen +%make_install DALI_DATA_RW_DIR="%{dali_data_rw_dir}" DALI_DATA_RO_DIR="%{dali_data_ro_dir}" +popd + +pushd %{buildroot}%{_libdir} +for FILE in libdali-toolkit-cxx11.so*; do mv "$FILE" "%{_builddir}/%{name}-%{version}/build/tizen/$FILE"; done +mv pkgconfig/dali-toolkit.pc %{_builddir}/%{name}-%{version}/build/tizen/dali-toolkit.pc +popd + +%if !0%{?disable_cxx03_build} +make clean + +libtoolize --force +cd %{_builddir}/dali-toolkit-%{version}/build/tizen +autoreconf --install + +DALI_DATA_RW_DIR="%{dali_data_rw_dir}" ; export DALI_DATA_RW_DIR +DALI_DATA_RO_DIR="%{dali_data_ro_dir}" ; export DALI_DATA_RO_DIR + +%configure --enable-profile=TIZEN \ + --enable-cxx03-abi=yes \ +%if 0%{?enable_debug} + --enable-debug \ +%endif + --enable-i18n=yes \ + --enable-rename-so=no + +make %{?jobs:-j%jobs} +%endif + ############################## # Installation ############################## %install rm -rf %{buildroot} -pushd build/tizen +pushd %{_builddir}/%{name}-%{version}/build/tizen %make_install DALI_DATA_RW_DIR="%{dali_data_rw_dir}" DALI_DATA_RO_DIR="%{dali_data_ro_dir}" +for FILE in libdali-toolkit-cxx11.so*; do mv "$FILE" "%{buildroot}%{_libdir}/$FILE"; done +mv dali-toolkit.pc %{buildroot}%{_libdir}/pkgconfig/dali-toolkit.pc + # PO { cd %{_builddir}/dali-toolkit-%{version}/dali-toolkit/po @@ -157,6 +210,18 @@ done } &> /dev/null popd +############################# +#rename +############################# +pushd %{buildroot}%{_libdir} +rm -rf libdali-toolkit.so +rm -rf libdali-toolkit-cxx11.so +%if !0%{?disable_cxx03_build} +ln -s libdali-toolkit.so.0.0.* libdali-toolkit-cxx03.so +%endif +ln -s libdali-toolkit-cxx11.so.0.0.* libdali-toolkit.so +popd + # Remove default style and style images which are for Linux build rm -rf %{buildroot}%{dali_toolkit_style_files}/* @@ -279,13 +344,27 @@ popd %manifest dali-toolkit.manifest %endif %defattr(-,root,root,-) -%{_libdir}/lib%{name}.so* +%{_libdir}/libdali-toolkit-cxx11.so.* +%{_libdir}/libdali-toolkit.so +%license LICENSE + +%if !0%{?disable_cxx03_build} +%files cxx03 +%if 0%{?enable_dali_smack_rules} +%manifest dali-toolkit.manifest-smack +%else +%manifest dali-toolkit.manifest +%endif +%defattr(-,root,root,-) +%{_libdir}/libdali-toolkit.so.* +%{_libdir}/libdali-toolkit-cxx03.so %license LICENSE +%endif %files devel %defattr(-,root,root,-) -%{dev_include_path}/%{name}/* -%{_libdir}/pkgconfig/*.pc +%{dev_include_path}/dali-toolkit/* +%{_libdir}/pkgconfig/dali-toolkit.pc %files resources_480x800 %manifest dali-toolkit-resources.manifest -- 2.7.4