Build platform-api-wrapper library within chromium-efl 90/317790/6
authorGajendra N <gajendra.n@samsung.com>
Wed, 18 Sep 2024 05:06:16 +0000 (10:36 +0530)
committerGajendra N <gajendra.n@samsung.com>
Mon, 23 Sep 2024 04:13:52 +0000 (09:43 +0530)
This commit unifies platform-api-wrapper build for standard and TV profiles.
Builds the .so library with GCC, CMake and links with libchromium-impl.

Adds build switch --disable-platform-api-wrapper to disable the functionality
which is enabled by default.

Change-Id: I680d2864ee03687524183175aee1bb2199df256b
Signed-off-by: Gajendra N <gajendra.n@samsung.com>
17 files changed:
packaging/chromium-efl.spec
tizen_src/build/BUILD.gn
tizen_src/build/common.sh
tizen_src/build/config/tizen_features.gni
tizen_src/build/gbs.conf.in
tizen_src/build/local_repository/chromium-efl-platform-api-wrapper-1.0.0-1.armv7l.rpm [deleted file]
tizen_src/chromium_impl/media/filters/ieme_drm_bridge.cc
tizen_src/ewk/efl_integration/BUILD.gn
tizen_src/ewk/efl_integration/renderer/key_systems_tizen.cc
tizen_src/platform_api_wrapper/CMakeLists.txt
tizen_src/platform_api_wrapper/README [deleted file]
tizen_src/platform_api_wrapper/build.sh
tizen_src/platform_api_wrapper/chromium-efl-platform-api-wrapper.pc [deleted file]
tizen_src/platform_api_wrapper/gbs.conf [deleted file]
tizen_src/platform_api_wrapper/packaging/chromium-efl-platform-api-wrapper.spec [deleted file]
tizen_src/platform_api_wrapper/platform_api_wrapper.cc
tizen_src/platform_api_wrapper/platform_api_wrapper.h

index 9efd26dfe5165e3d267c68986641bdcb580d65b4..e6bc9e747d13978293a2015744f37a3f2ee36281 100644 (file)
@@ -66,6 +66,11 @@ Source1: content_shell.in
 %define __enable_network_camera 0
 %endif
 
+%define __enable_platform_api_wrapper 1
+%if 0%{?_disable_platform_api_wrapper}
+%define __enable_platform_api_wrapper 0
+%endif
+
 %if "%{enable_gamepad_latency_test}" == "1"
 %define __enable_gamepad_latency_test 1
 %else
@@ -88,6 +93,9 @@ BuildRequires: binutils-gold
 %endif
 BuildRequires: at-spi2-atk-devel, bison, edje-tools, expat-devel, flex, gettext, gperf, libatk-bridge-2_0-0, libcap-devel, libcurl, libatomic
 BuildRequires: libjpeg-turbo-devel, ninja, perl, python3, python3-xml, which
+%if 0%{?__enable_platform_api_wrapper}
+BuildRequires: cmake
+%endif
 BuildRequires: pkgconfig(atk)
 BuildRequires: pkgconfig(capi-appfw-application)
 BuildRequires: pkgconfig(capi-appfw-app-manager)
@@ -205,7 +213,6 @@ BuildRequires: pkgconfig(tv-resource-manager)
 BuildRequires: pkgconfig(tv-resource-information)
 BuildRequires: pkgconfig(vd-win-util)
 BuildRequires: pkgconfig(WebProduct)
-BuildRequires: pkgconfig(chromium-efl-platform-api-wrapper)
 %if %{tizen_version} >= 60
 BuildRequires: pkgconfig(resource-center-api)
 %endif
@@ -437,6 +444,12 @@ Chromium tizen ppapi extension unit test utilities
   CFLAGS="$(echo $CFLAGS | sed -E 's/-g[0-9] /-g0 /g')"
   CXXFLAGS="$(echo $CXXFLAGS | sed -E 's/-g[0-9] /-g0 /g')"
 %endif
+
+%if 0%{?__enable_platform_api_wrapper}
+# Build platform api wrapper separately with gcc and cmake.
+./tizen_src/platform_api_wrapper/build.sh %{?tizen_profile_name}
+%endif
+
 %if %{__use_clang} == 0
   ulimit -n 16384
 %endif
@@ -562,6 +575,7 @@ touch ./tizen_src/downloadable/ewk_api_wrapper_generator.py
 %if %{__drm_mapi_aarch_64} && "%{?tizen_profile_name}" == "tv" && %{tizen_version} >= 80
   "drm_mapi_aarch_64=true" \
 %endif
+  "platform_api_wrapper=%{macro_to_bool __enable_platform_api_wrapper}" \
 %endif  # _skip_gn
 
 ninja %{_smp_mflags} -C "%{OUTPUT_FOLDER}" \
@@ -754,9 +768,9 @@ install -m 0644 third_party/electron_node/src/*.h "%{buildroot}"%{_includedir}/n
   %else
     install -m 0644 "%{OUTPUT_FOLDER}"/libchromium-ewk.so  "%{buildroot}"%{CHROMIUM_LIB_DIR}/lib/
   %endif
-  %if "%{?profile}" == "tv"
-    install -m 0644 "%{_libdir}"/libchromium-efl-platform-api-wrapper.so "%{buildroot}"%{CHROMIUM_LIB_DIR}/lib/
-  %endif
+%if 0%{?__enable_platform_api_wrapper}
+  install -m 0644 ./tizen_src/platform_api_wrapper/libchromium-efl-platform-api-wrapper.so "%{buildroot}"%{CHROMIUM_LIB_DIR}/lib/
+%endif
 %endif
 
 install -m 0644 "%{OUTPUT_FOLDER}"/resources/*.edj "%{buildroot}"%{CHROMIUM_LIB_DIR}/res/themes/
@@ -1136,9 +1150,9 @@ rm -rf %{CHROMIUM_TPK_DIR}/%{_tpk_file_name}.tpk
   %else
     %{CHROMIUM_LIB_DIR}/lib/libchromium-ewk.so
   %endif
-  %if "%{?profile}" == "tv"
-    %{CHROMIUM_LIB_DIR}/lib/libchromium-efl-platform-api-wrapper.so
-  %endif
+%if 0%{?__enable_platform_api_wrapper}
+  %{CHROMIUM_LIB_DIR}/lib/libchromium-efl-platform-api-wrapper.so
+%endif
   %{CHROMIUM_LIB_DIR}/res/images/*.png
 %endif
 
index 361bd55ef996d2ef19cc71d11e923cd69d47ecd3..fde5305d1b81469e260b1746482525aef6e5b345 100644 (file)
@@ -880,13 +880,6 @@ tizen_pkg_config("autoinput") {
   }
 }
 
-tizen_pkg_config("chromium-efl-platform-api-wrapper") {
-  packages = []
-  if (tizen_product_tv) {
-    packages = [ "chromium-efl-platform-api-wrapper" ]
-  }
-}
-
 if (enable_wrt_js) {
   tizen_pkg_config("appcore-agent") {
     packages = [ "appcore-agent" ]
index 23a3e77076021be8313acf9f17bfd85424fca627..7bfa727db18fe40dbf8260e9c2666dab3d59b959 100755 (executable)
@@ -18,7 +18,6 @@ if [ "$DEFAULT_TIZEN_VERSION" != "${LATEST_TIZEN_VERSION}" ]; then
 fi
 sed -e "s/@PUBLIC_REPO_VERSION@/$PUBLIC_REPO_VERSION/g" \
     -e "s/@TIZEN_VERSION@/$DEFAULT_TIZEN_VERSION/g" \
-    -e "s#@RPM_LOCAL_PATH_PREFIX@#$PWD#g" \
     tizen_src/build/gbs.conf.in > tizen_src/build/gbs.conf
 
 function getSystemDeps() {
@@ -271,6 +270,9 @@ function setupAndExecuteTargetBuild() {
     --disable-wrtjs)
         ARGS+=(--define "_disable_wrt_js 1")
     ;;
+    --disable-platform-api-wrapper)
+        ARGS+=(--define "_disable_platform_api_wrapper 1")
+    ;;
     --gbs-debug)
         ARGS+=(--debug)
     ;;
index 3f79d549bb7d581b813fb0c8ee681ae00c17d61d..1434fcb8f428218f4bd9927db91c5abe21c71da1 100644 (file)
@@ -51,6 +51,7 @@ declare_args() {
 
   build_chrome = false
   enable_ewk_interface = false
+  platform_api_wrapper = false
 
   enable_wrt_js = false
   tizen_pepper_extensions = false
@@ -117,7 +118,6 @@ werror = false
 use_gstreamer_fft = false
 
 ewk_bringup = true
-platform_api_wrapper = true
 wayland_bringup = use_wayland
 
 compile_suid_client = true
index 576e0d5a245ffcb86ea0d1987373cdb3da9c155b..f6788ab687f181fde941e87b0cfc0016dff89686 100755 (executable)
@@ -129,7 +129,7 @@ url = https://168.219.243.64/api
 #
 [profile.tztv_9.0_arm-pontusm]
 obs = obs.tizen_product_tv
-repos = repo.tv_product_9.0_pontusm, repo.tv_product_9.0_base, repo.tv_product_9.0_pontusm_local
+repos = repo.tv_product_9.0_pontusm, repo.tv_product_9.0_base
 buildroot = ~/GBS-ROOT-TZTV_9.0_ARM-PONTUSM
 
 [repo.tv_product_9.0_base]
@@ -138,9 +138,6 @@ url = http://repos.vd.sec.samsung.net/base/tizen-9.0-base/standard/latest/repos/
 [repo.tv_product_9.0_pontusm]
 url = http://repos.vd.sec.samsung.net/products/tv/official/2025/ONEMAIN/PontusM/latest/repos/product/armv7l/packages/
 
-[repo.tv_product_9.0_pontusm_local]
-url = @RPM_LOCAL_PATH_PREFIX@/tizen_src/build/local_repository/
-
 ###############################################
 #
 # Tizen v8.0 for product tv (PontusM armv7l)
diff --git a/tizen_src/build/local_repository/chromium-efl-platform-api-wrapper-1.0.0-1.armv7l.rpm b/tizen_src/build/local_repository/chromium-efl-platform-api-wrapper-1.0.0-1.armv7l.rpm
deleted file mode 100644 (file)
index 8ca850e..0000000
Binary files a/tizen_src/build/local_repository/chromium-efl-platform-api-wrapper-1.0.0-1.armv7l.rpm and /dev/null differ
index eb4cf73e3e4a408ff5227ae940fa62e5a3841b50..de9f6ff71f2a32c804ea44e2d9404149fbea4cfe 100644 (file)
@@ -5,7 +5,6 @@
 #include "media/filters/ieme_drm_bridge.h"
 
 #include <drmdecrypt_api.h>
-#include <platform-api-wrapper/platform_api_wrapper.h>
 #include <algorithm>
 #include <limits>
 
@@ -17,6 +16,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "content/public/common/content_switches.h"
 #include "media/base/decoder_buffer.h"
+#include "tizen_src/platform_api_wrapper/platform_api_wrapper.h"
 #include "url/gurl.h"
 
 namespace media {
index 4dce0cefd949a60746c0225e1e9565907dfdc848..f99eace12aee5b2f683b741227c8865b523b4d9a 100644 (file)
@@ -78,7 +78,6 @@ shared_library("chromium-ewk") {
   if (tizen_product_tv) {
     configs += [ "//tizen_src/build:WebProduct" ]
     configs += [ "//tizen_src/build:drmdecrypt" ]
-    configs += [ "//tizen_src/build:chromium-efl-platform-api-wrapper" ]
   }
   deps = [
     "//base/:base_static",
@@ -204,11 +203,17 @@ shared_library("chromium-ewk") {
     deps += [ "//ui/ozone" ]
   }
 
+  libs = []
   if (is_clang) {
-    libs = [ "atomic" ]
+    libs += [ "atomic" ]
     ldflags += [ "-Wl,-rpath=\$ORIGIN/:/usr/local/lib/" ]
   }
 
+  if (platform_api_wrapper) {
+    lib_dirs = [ "//tizen_src/platform_api_wrapper" ]
+    libs += [ "chromium-efl-platform-api-wrapper" ]
+  }
+
   if (enable_wrt_js) {
     deps += [ "//wrt:wrt_lib" ]
   }
index 4e4aded7202a938abef6c195184d86ea94023d69..debb721ff1a18d7a598936bf550aae0df118b0a7 100644 (file)
@@ -5,12 +5,12 @@
 #include "renderer/key_systems_tizen.h"
 
 #include <emeCDM/IEME.h>
-#include <platform-api-wrapper/platform_api_wrapper.h>
 #include <algorithm>
 
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
 #include "renderer/tizen_key_system_info.h"
+#include "tizen_src/platform_api_wrapper/platform_api_wrapper.h"
 
 namespace efl_integration {
 
index 5707e1ffab806a0e7c85bac854faee995de47f2e..91126cd151d93b58f525c1005421e520d2c7eedc 100644 (file)
@@ -10,13 +10,20 @@ set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS})
 
 INCLUDE(FindPkgConfig)
 
-pkg_check_modules(PACKAGE_DEPS REQUIRED drmdecrypt)
+if (TIZEN_PROFILE STREQUAL "tv")
+  pkg_check_modules(PACKAGE_DEPS REQUIRED drmdecrypt)
+  add_compile_definitions(OS_TIZEN_TV_PRODUCT)
+endif()
 
-add_library(chromium-efl-platform-api-wrapper
+add_library(chromium-efl-platform-api-wrapper SHARED
             platform_api_wrapper.cc
            )
 
-target_link_libraries(chromium-efl-platform-api-wrapper ${PACKAGE_DEPS_LIBRARIES})
+if (TIZEN_PROFILE STREQUAL "tv")
+  target_include_directories(chromium-efl-platform-api-wrapper PUBLIC ${PACKAGE_DEPS_INCLUDE_DIRS})
+  target_link_libraries(chromium-efl-platform-api-wrapper ${PACKAGE_DEPS_LIBRARIES})
+endif()
+
 target_link_libraries(chromium-efl-platform-api-wrapper stdc++)
 
-target_include_directories(chromium-efl-platform-api-wrapper PUBLIC ${PACKAGE_DEPS_INCLUDE_DIRS})
+install(TARGETS chromium-efl-platform-api-wrapper LIBRARY DESTINATION ${CMAKE_SOURCE_DIR})
diff --git a/tizen_src/platform_api_wrapper/README b/tizen_src/platform_api_wrapper/README
deleted file mode 100644 (file)
index 30cc0bd..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-This directory has to be built in a separate git codebase,
-and the built rpm has to be copied to tizen_src/build/local_repository/
index aacdf48ab92a000523871dab9ac17d2ec3ccb7c9..1aa66b69a66ff1ea1e7e260edb266271d1d5d6d6 100755 (executable)
@@ -1 +1,8 @@
-gbs -c ./gbs.conf build -P profile.tztv_9.0_arm-pontusm -A armv7l --include-all $1
+# Script for building platform-api-wrapper library with cmake.
+
+cd ./tizen_src/platform_api_wrapper
+rm -r build *.so
+mkdir build && cd build
+cmake ../ -DTIZEN_PROFILE=$1
+make && make install
+rm -r ../build
diff --git a/tizen_src/platform_api_wrapper/chromium-efl-platform-api-wrapper.pc b/tizen_src/platform_api_wrapper/chromium-efl-platform-api-wrapper.pc
deleted file mode 100644 (file)
index 2acc12e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=/usr
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: chromium-efl-platform-api-wrapper
-Description: Chromium-Efl Platform Api Wrapper
-Requires: drmdecrypt
-Version: 1.0.0
-
-Libs: -L${libdir} -lchromium-efl-platform-api-wrapper
-Cflags: -I${includedir}/platform-api-wrapper
diff --git a/tizen_src/platform_api_wrapper/gbs.conf b/tizen_src/platform_api_wrapper/gbs.conf
deleted file mode 100644 (file)
index 7ab66a0..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################
-#
-# Tizen product tv
-#
-[obs.tizen_product_tv]
-url = https://168.219.243.64/api
-
-###############################################
-#
-# Tizen v9.0 for product tv (PontusM armv7l)
-#
-[profile.tztv_9.0_arm-pontusm]
-obs = obs.tizen_product_tv
-repos = repo.tv_product_9.0_pontusm, repo.tv_product_9.0_base
-buildroot = ~/GBS-ROOT-PLATFORM-API-WRAPPER
-
-[repo.tv_product_9.0_base]
-url = http://repos.vd.sec.samsung.net/base/tizen-9.0-base/standard/latest/repos/base/armv7l/packages/
-
-[repo.tv_product_9.0_pontusm]
-url = http://repos.vd.sec.samsung.net/products/tv/official/2025/ONEMAIN/PontusM/latest/repos/product/armv7l/packages/
diff --git a/tizen_src/platform_api_wrapper/packaging/chromium-efl-platform-api-wrapper.spec b/tizen_src/platform_api_wrapper/packaging/chromium-efl-platform-api-wrapper.spec
deleted file mode 100644 (file)
index a0cc775..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-%define _unpackaged_files_terminate_build 0
-
-Name:           chromium-efl-platform-api-wrapper
-Summary:        Chromium-Efl Plaform Api Wrapper
-Version:        1.0.0
-Release:        1
-Group:          Application
-License:        Apache-2.0 and BSD-3-Clause
-Source0:        %{name}-%{version}.tar.gz
-
-BuildRequires: cmake
-BuildRequires: pkgconfig(drmdecrypt)
-
-%description
-Plaform Api Wrapper
-
-%prep
-%setup -q
-
-%build
-export CXX=/usr/bin/g++
-export CC=/usr/bin/gcc
-export CXXFLAGS="$(echo $CFLAGS | sed 's/-Wl,--as-needed//g')"
-export CXXFLAGS="$(echo $CFLAGS | sed 's/-Wshadow//g')"
-
-%cmake .
-make %{?_smp_mflags}
-
-%install
-
-install -d %{buildroot}/usr/lib/
-install -d %{buildroot}/usr/lib/pkgconfig/
-install -d %{buildroot}/usr/include/platform-api-wrapper/
-
-install -m 0644 ./libchromium-efl-platform-api-wrapper.so   %{buildroot}/usr/lib/libchromium-efl-platform-api-wrapper.so
-install -m 0644 ./chromium-efl-platform-api-wrapper.pc      %{buildroot}/usr/lib/pkgconfig/chromium-efl-platform-api-wrapper.pc
-install -m 0644 ./platform_api_wrapper.h                    %{buildroot}/usr/include/platform-api-wrapper/platform_api_wrapper.h
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%files
-/usr/lib/libchromium-efl-platform-api-wrapper.so
-/usr/lib/pkgconfig/chromium-efl-platform-api-wrapper.pc
-/usr/include/platform-api-wrapper/platform_api_wrapper.h
index 2f2847bcb656e27fe192c8bc0af6f995d987fb71..5461296ba7580980a7ce7dbf1a4f22e0106f37eb 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace platform_api_wrapper {
 
+#if defined(OS_TIZEN_TV_PRODUCT)
 // eme::IEME wrapper impl
 
 void enumerateMediaKeySystems(vector_wrapper<const char*>* list) {
@@ -21,5 +22,6 @@ eme::IEME* createIEME(eme::IEventListener* listener,
 eme::Status isKeySystemSupported(const char* key_system) {
   return eme::IEME::isKeySystemSupported(std::string(key_system));
 }
+#endif
 
 }  // namespace platform_api_wrapper
index 6cff344d94db282a8d64938320baf247be29b70a..ee6c14a46e531b1657a3ade6f1a524266ac27304 100644 (file)
@@ -1,4 +1,11 @@
+#ifndef PLATFORM_API_WRAPPER_H_
+#define PLATFORM_API_WRAPPER_H_
+
+#if defined(OS_TIZEN_TV_PRODUCT)
 #include <emeCDM/IEME.h>
+#endif
+
+#include <vector>
 
 namespace platform_api_wrapper {
 
@@ -17,6 +24,7 @@ class vector_wrapper {
   std::vector<T> list_;
 };
 
+#if defined(OS_TIZEN_TV_PRODUCT)
 // Wrapper APIs for <emeCDM/IEME.h>
 
 void enumerateMediaKeySystems(vector_wrapper<const char*>* list);
@@ -26,5 +34,8 @@ eme::IEME* createIEME(eme::IEventListener* listener,
                       bool privacy_mode);
 
 eme::Status isKeySystemSupported(const char* key_system);
+#endif
 
 }  // namespace platform_api_wrapper
+
+#endif