Support dual ABI 51/130251/1
authorDenis Khalikov <d.khalikov@partner.samsung.com>
Thu, 23 Mar 2017 10:05:21 +0000 (13:05 +0300)
committerDenis Khalikov <d.khalikov@partner.samsung.com>
Fri, 19 May 2017 14:27:46 +0000 (17:27 +0300)
Change-Id: I9f0f491d6485fe3c8c535d732f824a030825b1e5

build/tizen/Makefile.am
build/tizen/configure.ac
build/tizen/dali-core-cxx03.pc.in [new file with mode: 0644]
build/tizen/dali-core.pc.in
build/tizen/dali-core/Makefile.am
packaging/dali.spec

index 7d9bf9511547ad4284aee06ffba5dca895b18e37..7ea2265cdbc1b196bc85db74248a4c1a130a96a0 100644 (file)
 
 SUBDIRS = dali-core
 
+if ENABLE_CXX03_ABI
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = dali-core-cxx03.pc
+
+else
+
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = dali-core.pc
 
+endif
+
+
 MAINTAINERCLEANFILES = \
     aclocal.m4 \
     autom4te.cache \
@@ -44,9 +54,9 @@ rename_cov_data:
        @test -z $(COVERAGE_DIR) || mkdir -p $(COVERAGE_DIR)
        @rm -f $(COVERAGE_DIR)/*
        @cp dali-core/.libs/*.gcda dali-core/.libs/*.gcno $(COVERAGE_DIR)
-       @for i in `find $(COVERAGE_DIR) -name "libdali_core_la-*.gcda" -o -name "libdali_core_la-*.gcno"` ;\
+       @for i in `find $(COVERAGE_DIR) -name "libdali_core_la-*.gcda" -o -name "libdali_core*_la-*.gcno"` ;\
                do mv $$i `echo $$i | sed s/libdali_core_la-//` ; echo $$i ; done
-       @for i in `find $(COVERAGE_DIR) -name "libdali_la-*.gcda" -o -name "libdali_la-*.gcno"` ;\
+       @for i in `find $(COVERAGE_DIR) -name "libdali_la-*.gcda" -o -name "libdali*_la-*.gcno"` ;\
                do mv $$i `echo $$i | sed s/libdali_la-//` ; done
 
 cov_data: rename_cov_data
index bebc98ab54069c1fea8976386facdd4ec7a23ce9..359b42c307b2daa9e07f7d3fa445c1800d0afa03 100644 (file)
@@ -66,6 +66,18 @@ AC_ARG_ENABLE([gles],
               [enable_gles=$enableval],
               [enable_gles=20])
 
+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_CFLAGS="$DALI_CFLAGS -D_GLIBCXX_USE_CXX11_ABI=0"
+fi
+
 DALI_CFLAGS="$DALI_CFLAGS -DDALI_GLES_VERSION=${enable_gles}"
 
 if test "x$enable_debug" = "xyes"; then
@@ -118,11 +130,15 @@ AC_SUBST(DALI_LDFLAGS)
 devincludepath=${includedir}
 AC_SUBST(devincludepath)
 
-AC_CONFIG_FILES([
- Makefile
- dali-core/Makefile
- dali-core.pc
-])
+AC_CONFIG_FILES([Makefile dali-core/Makefile])
+
+if test "x$enable_cxx03_abi" = "xyes"; then
+AC_CONFIG_FILES([dali-core-cxx03.pc])
+fi
+
+if test "x$enable_cxx03_abi" != "xyes"; then
+AC_CONFIG_FILES([dali-core.pc])
+fi
 
 AC_OUTPUT
 
diff --git a/build/tizen/dali-core-cxx03.pc.in b/build/tizen/dali-core-cxx03.pc.in
new file mode 100644 (file)
index 0000000..429a595
--- /dev/null
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+apiversion=@DALI_VERSION@
+libdir=@libdir@
+includedir=@devincludepath@
+
+Name: Samsung OpenGLES Toolkit
+Description: 3D Canvas Toolkit using OpenGLES
+Version: ${apiversion}
+Requires:
+Libs: -L${libdir} -ldali-core
+Cflags: -I${includedir}
index 429a5957de9d594ecc7d453b60a43e9b6a22953d..18cd5c2cffa15a25bec3df05da64c51c24ad6bb1 100644 (file)
@@ -8,5 +8,5 @@ Name: Samsung OpenGLES Toolkit
 Description: 3D Canvas Toolkit using OpenGLES
 Version: ${apiversion}
 Requires:
-Libs: -L${libdir} -ldali-core
+Libs: -L${libdir} -ldali-core_cxx11
 Cflags: -I${includedir}
index ad081d5abc77546c8f31857d42f2116825bf9db4..0d0e0630a800a354b9d709af5846212887b25512 100644 (file)
@@ -34,6 +34,8 @@ include ../../../doc/file.list
 
 # Build the Dali libtool library
 
+if ENABLE_CXX03_ABI
+
 lib_LTLIBRARIES = libdali-core.la
 
 libdali_core_la_SOURCES = $(internal_src_files) \
@@ -56,6 +58,32 @@ libdali_core_la_CXXFLAGS = -DDALI_COMPILATION \
 libdali_core_la_LIBADD = $(DALI_LDFLAGS) \
                          -lpthread
 
+else
+
+lib_LTLIBRARIES = libdali-core_cxx11.la
+
+libdali_core_cxx11_la_SOURCES = $(internal_src_files) \
+                          $(platform_abstraction_src_files) \
+                          $(public_api_src_files) \
+                          $(devel_api_src_files)
+
+dali_core_includes = \
+        -I../../..
+
+cxx_flags = -Werror -Wall -Wextra -Wno-unused-parameter -Wfloat-equal
+
+libdali_core_cxx11_la_CXXFLAGS = -DDALI_COMPILATION \
+                           -DDALI_DATA_RW_DIR="\"${daliReadWriteDir}\"" \
+                           -DDALI_DATA_RO_DIR="\"${daliReadOnlyDir}\"" \
+                           $(cxx_flags) \
+                           $(dali_core_includes) \
+                           $(DALI_CFLAGS)
+
+libdali_core_cxx11_la_LIBADD = $(DALI_LDFLAGS) \
+                         -lpthread
+
+endif
+
 # Install headers under the correct subdirectories
 platformabstractiondir = $(includedir)/dali/integration-api
 platformabstractioneventsdir = $(includedir)/dali/integration-api/events
@@ -141,6 +169,16 @@ linker_test_CXXFLAGS = \
   $(dali_core_includes) \
   $(DALI_CFLAGS)
 
+if ENABLE_CXX03_ABI
+
 linker_test_DEPENDENCIES = libdali-core.la
 linker_test_LDADD = \
   libdali-core.la
+
+else
+
+linker_test_DEPENDENCIES = libdali-core_cxx11.la
+linker_test_LDADD = \
+  libdali-core_cxx11.la
+
+endif
index c3860dc8e7833582ca4cb02a5651d834c99022be..4b39c08b9a33daf6d580d2a14f58812a574d5072 100644 (file)
@@ -16,10 +16,38 @@ BuildRequires:  gawk
 BuildRequires:  pkgconfig(libtzplatform-config)
 %endif
 
-
 %description
 The OpenGLES Canvas Core Library provides a 3D scene graph
 
+%package cxx03
+Summary:       The OpenGLES Canvas Core Library with cxx03 abi
+Provides:      %{name}-cxx03 = %{version}-%{release}
+
+%description cxx03
+The OpenGLES Canvas Core Library with cxx03 abi
+##############################
+# devel
+##############################
+%package devel-cxx03
+Summary:    Development components for the OpenGLES Canvas Core Library with cxx03 abi
+Group:      Development/Building
+Requires:   %{name}-cxx03 = %{version}-%{release}
+Requires:   %{name}-integration-devel-cxx03 = %{version}-%{release}
+
+%description devel-cxx03
+Development components for the OpenGLES Canvas Core Library - public headers and package config
+
+##############################
+# integration-devel
+##############################
+%package integration-devel-cxx03
+Summary:    Integration development package for the OpenGLES Canvas witch cxx03 abi
+Group:      Development/Building
+Requires:   %{name}-cxx03 = %{version}-%{release}
+
+%description integration-devel-cxx03
+Integration development package for the OpenGLES Canvas - headers for integrating with an adaptor/platform abstraction library.
+
 ##############################
 # devel
 ##############################
@@ -66,7 +94,7 @@ Integration development package for the OpenGLES Canvas - headers for integratin
 ##############################
 %build
 PREFIX="/usr"
-CXXFLAGS+=" -Wall -g -Os -DNDEBUG -fPIC -fvisibility-inlines-hidden -fdata-sections -ffunction-sections -D_GLIBCXX_USE_CXX11_ABI=0 "
+CXXFLAGS+=" -Wall -g -Os -DNDEBUG -fPIC -fvisibility-inlines-hidden -fdata-sections -ffunction-sections "
 LDFLAGS+=" -Wl,--rpath=$PREFIX/lib -Wl,--as-needed -Wl,--gc-sections -lgcc_s -lgcc -lpthread -Wl,-Bsymbolic-functions "
 
 %ifarch %{arm}
@@ -92,6 +120,40 @@ export DALI_DATA_RO_DIR
 CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS;
 CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS;
 LDFLAGS="${LDFLAGS:-%optflags}" ; export LDFLAGS;
+
+./configure \
+      --program-prefix=%{?_program_prefix} \
+      --prefix=%{_prefix} \
+      --exec-prefix=%{_exec_prefix} \
+      --bindir=%{_bindir} \
+      --sbindir=%{_sbindir} \
+      --sysconfdir=%{_sysconfdir} \
+      --datadir=%{_datadir} \
+      --includedir=%{_includedir} \
+      --libdir=%{_libdir} \
+      --libexecdir=%{_libexecdir} \
+      --localstatedir=%{_localstatedir} \
+      --sharedstatedir=%{_sharedstatedir} \
+      --mandir=%{_mandir} \
+      --enable-gles=%{target_gles_version} \
+%if 0%{?enable_debug}
+      --enable-debug \
+%endif
+      --infodir=%{_infodir}
+
+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-core_cxx11.so*; do mv "$FILE" "%{_builddir}/%{name}-%{version}/build/tizen/$FILE"; done
+mv pkgconfig/dali-core.pc %{_builddir}/%{name}-%{version}/build/tizen/dali-core.pc 
+popd
+
+make clean
+
 ./configure \
       --program-prefix=%{?_program_prefix} \
       --prefix=%{_prefix} \
@@ -106,6 +168,7 @@ LDFLAGS="${LDFLAGS:-%optflags}" ; export LDFLAGS;
       --localstatedir=%{_localstatedir} \
       --sharedstatedir=%{_sharedstatedir} \
       --mandir=%{_mandir} \
+      --enable-cxx03-abi=yes  \
       --enable-gles=%{target_gles_version} \
 %if 0%{?enable_debug}
       --enable-debug \
@@ -120,9 +183,13 @@ make %{?jobs:-j%jobs}
 %install
 rm -rf %{buildroot}
 cd build/tizen
-%make_install DALI_DATA_RW_DIR="%{dali_data_rw_dir}" DALI_DATA_RO_DIR="%{dali_data_ro_dir}"
 
+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-*.so*; do mv "$FILE" "%{buildroot}%{_libdir}/$FILE"; done
+mv dali-core.pc %{buildroot}%{_libdir}/pkgconfig/dali-core.pc 
+popd
 
 ##############################
 # Post Install
@@ -142,6 +209,17 @@ exit 0
 # Files in Binary Packages
 ##############################
 
+%files cxx03
+%if 0%{?enable_dali_smack_rules}
+%manifest dali.manifest-smack
+%else
+%manifest dali.manifest
+%endif
+%defattr(-,root,root,-)
+%{_libdir}/libdali-core.so*
+%defattr(-,app,app,-)
+%license LICENSE
+
 %files
 %if 0%{?enable_dali_smack_rules}
 %manifest dali.manifest-smack
@@ -149,17 +227,28 @@ exit 0
 %manifest dali.manifest
 %endif
 %defattr(-,root,root,-)
-%{_libdir}/lib%{name}-core.so*
+%{_libdir}/libdali-core_cxx11.so*
 %defattr(-,app,app,-)
 %license LICENSE
 
+%files devel-cxx03
+%defattr(-,root,root,-)
+%{_libdir}/pkgconfig/dali-core-cxx03.pc
+%{dev_include_path}/dali/public-api/*
+%{dev_include_path}/dali/devel-api/*
+%{dev_include_path}/dali/doc/*
+
+%files integration-devel-cxx03
+%defattr(-,root,root,-)
+%{_includedir}/dali/integration-api/*
+
 %files devel
 %defattr(-,root,root,-)
-%{_libdir}/pkgconfig/*.pc
-%{dev_include_path}/%{name}/public-api/*
-%{dev_include_path}/%{name}/devel-api/*
-%{dev_include_path}/%{name}/doc/*
+%{_libdir}/pkgconfig/dali-core.pc
+%{dev_include_path}/dali/public-api/*
+%{dev_include_path}/dali/devel-api/*
+%{dev_include_path}/dali/doc/*
 
 %files integration-devel
 %defattr(-,root,root,-)
-%{_includedir}/%{name}/integration-api/*
+%{_includedir}/dali/integration-api/*