Support Dual ABI
authorDenis Khalikov <d.khalikov@partner.samsung.com>
Thu, 4 May 2017 08:47:32 +0000 (11:47 +0300)
committerDenis Khalikov <d.khalikov@partner.samsung.com>
Thu, 18 May 2017 09:20:13 +0000 (12:20 +0300)
build/tizen/Makefile.am
build/tizen/configure.ac
build/tizen/dali-toolkit-cxx03.pc.in [new file with mode: 0644]
build/tizen/dali-toolkit.pc.in
build/tizen/dali-toolkit/Makefile.am
packaging/dali-toolkit.spec

index 89a5e28b953e09028f1446afb148cd968c7da078..29cb7f7f4677117674624bd86ee87b459328c620 100755 (executable)
@@ -27,8 +27,13 @@ endif
 # perform documentation last, so it doesn't prevent code from building if there's an error
 SUBDIRS += docs
 
+if ENABLE_CXX03_ABI
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = dali-toolkit-cxx03.pc
+else
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = dali-toolkit.pc
+endif
 
 MAINTAINERCLEANFILES = \
     aclocal.m4 \
@@ -56,8 +61,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
index c1c663244c2defd792c3a6eb0a1f18bd0945135f..305de1aeba35c89c282c3906a9a4f05130cdbd90 100755 (executable)
@@ -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,18 @@ 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])
+
+AM_CONDITIONAL([ENABLE_CXX03_ABI], [test x$enable_cxx03_abi = 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 +214,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 +229,18 @@ 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" = "xyes"; then
+AC_CONFIG_FILES([dali-toolkit-cxx03.pc])
+else
+AC_CONFIG_FILES([dali-toolkit.pc])
+fi
+
 AC_OUTPUT
 
 echo "
diff --git a/build/tizen/dali-toolkit-cxx03.pc.in b/build/tizen/dali-toolkit-cxx03.pc.in
new file mode 100644 (file)
index 0000000..8f8cff5
--- /dev/null
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+apiversion=@DALI_TOOLKIT_VERSION@
+libdir=@libdir@
+includedir=@devincludepath@
+
+Name: Samsung OpenGLES Toolkit (including Toolkit)
+Description: 3D Canvas Toolkit using OpenGLES (with the toolkit)
+Version: ${apiversion}
+Requires: dali-core-cxx03
+Libs: -L${libdir} -ldali-toolkit
+Cflags: -I${includedir}
index 87cbcc07abcfece025d7cd65546552d527ba85a4..1a1c1644daca5b1d7594fe4aeecc9b8fcb2bb4d9 100644 (file)
@@ -8,5 +8,5 @@ Name: Samsung OpenGLES Toolkit (including Toolkit)
 Description: 3D Canvas Toolkit using OpenGLES (with the toolkit)
 Version: ${apiversion}
 Requires: dali-core
-Libs: -L${libdir} -ldali-toolkit
+Libs: -L${libdir} -ldali-toolkit_cxx11
 Cflags: -I${includedir}
index 7127db2431910019ab8e97329112edcb1d69efd4..1b8d84199f48402e3f3289d8825e76c4a5f5f1fc 100644 (file)
@@ -53,7 +53,8 @@ dalisound_DATA = ${dali_toolkit_sound_files}
 package_doxy_dir = ../../../doc
 include ../../../doc/file.list
 
-# The library
+if ENABLE_CXX03_ABI
+
 lib_LTLIBRARIES = libdali-toolkit.la
 
 libdali_toolkit_la_SOURCES = \
@@ -90,6 +91,45 @@ libdali_toolkit_la_LIBADD = \
                       $(FRIBIDI_LIBS) \
                       $(HTMLCXX_LIBS)
 
+
+else
+# The library
+lib_LTLIBRARIES = libdali-toolkit_cxx11.la
+
+libdali_toolkit_cxx11_la_SOURCES = \
+                     $(toolkit_src_files) \
+                     $(public_api_src_files) \
+                     $(devel_api_src_files) \
+                     $(third_party_src_files)
+
+dalistyledir = ${dataReadOnlyDir}/toolkit/styles/
+dalistyle_DATA = ${dali_toolkit_style_files}
+
+dalistyleimagesdir = ${dataReadOnlyDir}/toolkit/styles/images/
+dalistyleimages_DATA = ${dali_toolkit_style_images}
+
+libdali_toolkit_cxx11_la_DEPENDENCIES =
+
+libdali_toolkit_cxx11_la_CXXFLAGS = -DDALI_COMPILATION \
+                      -DDALI_IMAGE_DIR="\"${daliimagedir}\"" \
+                      -DDALI_SOUND_DIR="\"${dalisounddir}\"" \
+                      -DDALI_STYLE_DIR="\"${dalistyledir}\"" \
+                      -DDALI_STYLE_IMAGE_DIR="\"${dalistyleimagesdir}\"" \
+                      -DDALI_DATA_READ_ONLY_DIR="\"${dataReadOnlyDir}\"" \
+                      -Werror -Wall \
+                      -I../../../ \
+                      $(DALI_TOOLKIT_CFLAGS) \
+                      $(DALICORE_CFLAGS) \
+                      $(DLOG_CFLAGS) \
+                      $(FRIBIDI_CFLAGS) \
+                      $(HTMLCXX_CFLAGS)
+
+libdali_toolkit_cxx11_la_LIBADD = \
+                      $(DALICORE_LIBS) \
+                      $(DLOG_LIBS) \
+                      $(FRIBIDI_LIBS) \
+                      $(HTMLCXX_LIBS)
+endif
 # Install headers
 
 topleveldir = $(devincludepath)/dali-toolkit
index 754e7223ba5ae5206ccefcfbb5367b386a019d12..9d8823f5b06daa57015bc74ee1bc51c3249d471e 100644 (file)
@@ -13,12 +13,15 @@ Requires(postun): /sbin/ldconfig
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(dali-core)
+BuildRequires:  pkgconfig(dali-core-cxx03)
 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
+BuildRequires:  dali-adaptor-devel-cxx03
+
 
 #need libtzplatform-config for directory if tizen version is 3.x
 
@@ -79,6 +82,25 @@ Conflicts:  %{name}-resources_720x1280
 dali-toolkit default resource files for 1920x1080
 Contain po / sounds / common images / style / style images
 
+%package cxx03
+Summary:       The OpenGLES Canvas Core Library Toolkit with cxx03
+Provides:      %{name}-cxx03 = %{version}-%{release}
+
+%description cxx03
+The OpenGLES Canvas Core Library Toolkit with cxx03
+
+##############################
+# devel cxx03
+##############################
+%package devel-cxx03
+Summary:    Application development package for the OpenGLES Canvas toolkit with cxx03 abi
+Group:      Development/Building
+Requires:   %{name}-cxx03 = %{version}-%{release}
+
+%description devel-cxx03
+Application development package for the OpenGLES Canvas toolkit - headers and package config
+with cxx03 abi
+
 ##############################
 # devel
 ##############################
@@ -126,7 +148,7 @@ done
 ##############################
 %build
 PREFIX="/usr"
-CXXFLAGS+=" -Wall -g -Os -fPIC -fvisibility-inlines-hidden -fdata-sections -ffunction-sections -D_GLIBCXX_USE_CXX11_ABI=0 "
+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}
@@ -149,14 +171,46 @@ DALI_DATA_RO_DIR="%{dali_data_ro_dir}" ; export DALI_DATA_RO_DIR
 
 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
+
+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 \
+           --with-style=%{dali_style_folder} \
+           --enable-cxx03-abi=yes \
+%if 0%{?enable_debug}
+           --enable-debug \
+%endif
+           --enable-i18n=yes
+
+make %{?jobs:-j%jobs}
+
+
 ##############################
 # 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
@@ -205,13 +259,28 @@ exit 0
 %manifest dali-toolkit.manifest
 %endif
 %defattr(-,root,root,-)
-%{_libdir}/lib%{name}.so*
+%{_libdir}/libdali-toolkit_cxx11.so*
+%license LICENSE
+
+%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*
 %license LICENSE
 
 %files devel
 %defattr(-,root,root,-)
-%{dev_include_path}/%{name}/*
-%{_libdir}/pkgconfig/*.pc
+%{dev_include_path}/dali-toolkit/*
+%{_libdir}/pkgconfig/dali-toolkit.pc
+
+%files devel-cxx03
+%defattr(-,root,root,-)
+%{dev_include_path}/dali-toolkit/*
+%{_libdir}/pkgconfig/dali-toolkit-cxx03.pc
 
 %post resources_480x800
 pushd %{dali_toolkit_style_files}/480x800