棋子 · 2022年01月04日

全志R329Tina下无法选中libcedarx如何解决?

请问全志R329Tina下无法选中libcedarx如何解决?

1 个回答 得票排序 · 时间排序
极术小姐姐 · 2022年01月04日
本回答来自https://bbs.aw-ol.com/topic/674/faq-全志r329tina下无法选中libcedarx如何解决

问题背景

Tina SDK用户反馈,对于特定方案(v833),在make menuconfig时,可以搜索到PACKAGE_libcedarx,但无法选择。

0c8beadd51f34b74ab5d0e8c53f32629.jfif

如上图所示,可以搜索到PACKAGE_libcedarx,但是没有显示其目录路径,同时也没有显示是否选中。

问题分析

在Tina中, 使用 make 编译 tina 下的任何目标,都会通过 build/scan.mk 生成必要的临时文件,scan.mk 会扫描tina package、target等目录下的文件信息,并将对应的扫描结果保存在 tmp 目录,这是tina下所有目标生成的前提。

对于本例来说,PACKAGE_libcedarx对应目录package/allwinner/tina_multimedia,经过扫描之后,会生成临时文件tmp/info/.packageinfo-allwinner_tina_multimedia,此时,该文件的内容如下:

$ cat tmp/info/.packageinfo-allwinner_tina_multimedia
Source-Makefile: package/allwinner/tina_multimedia/Makefile
现在,我们打开一个menuconfig可以选中的pacakge,比如tplayerdemo,其对应的临时文件tmp/info/.packageinfo-allwinner_tina_multimedia_demo_tplayerdemo的内容如下:

$ cat tmp/info/.packageinfo-allwinner_tina_multimedia_demo_tplayerdemo
Source-Makefile: package/allwinner/tina_multimedia_demo/tplayerdemo/Makefile
Package: tplayerdemo
Submenu: tina_multimedia_demo
Version: 1-1
Depends: +libc +SSP_SUPPORT:libssp +USE_GLIBC:librt +USE_GLIBC:libpthread @TPLAYER libcedarx libstdcpp
Conflicts:
Menu-Depends:
Provides:
Build-Depends: libcedarx
Section: utils
Category: Allwinner
Title: use tplayer interface in tina_multimedia
Maintainer:
Source:
Type: ipkg
Description:    CedarX2.8 tplayerdemo

@@

对比两者,可发现libcedarx的临时文件只有一行,缺少很多信息,如Package、Submenu、Depends等,而Package、Submenu、Depends信息都是对应package下的Makefile定义。

对package/allwinner/tina_multimedia/Makefile进行检查,发现上述定义都被下列条件语句所限制。

feq ($(TARGET_BOARD_PLATFORM),$(filter $(TARGET_BOARD_PLATFORM),r16 r58 r40 r18 r6 c200s g102 r11 r7 r30 r311 r333 r331 r7s t7 r332 v306 dolphin h3 h6 mr133 r328s2 r328s3 mr813 r329 r818 a33i r528 r528rv d1 f133 t113))

显然,这里表示的意思是,只有这些方案,才会定义libcedarx所需的目标。

问题解决

对于本例(v833)来说,补丁如下。

diff --git a/allwinner/tina_multimedia/Makefile b/allwinner/tina_multimedia/Makefile
index 8f3f263af..28cc01eb2 100755
--- a/allwinner/tina_multimedia/Makefile
+++ b/allwinner/tina_multimedia/Makefile
@@ -435,7 +435,7 @@ ifeq ($(CONFIG_ONLY_DISABLE_AUDIO),y)
        CONF_ONLY_DISABLE_AUDIO = -DONLY_DISABLE_AUDIO
 endif

-ifeq ($(TARGET_BOARD_PLATFORM),$(filter $(TARGET_BOARD_PLATFORM),r16 r58 r40 r18 r6 c200s g102 r11 r7 r30 r311 r333 r331 r7s t7 r332 v306 dolphin h3 h6 mr133 r328s2 r328s3 mr813 r329 r818 a33i r528 r528rv d1 f133 t113))
+ifeq ($(TARGET_BOARD_PLATFORM),$(filter $(TARGET_BOARD_PLATFORM),r16 r58 r40 r18 r6 c200s g102 r11 r7 r30 r311 r333 r331 r7s t7 r332 v306 dolphin h3 h6 mr133 r328s2 r328s3 mr813 r329 r818 a33i r528 r528rv d1 f133 t113 v833))

 define Package/$(PKG_NAME)/config
 source "$(SOURCE)/Config.in"
@@ -765,6 +765,6 @@ endef

 endif

-ifeq ($(TARGET_BOARD_PLATFORM),$(filter $(TARGET_BOARD_PLATFORM),r16 r58 r40 r18 r6 c200s g102 r11 r7 r30 r311 r333 r331 r7s t7 r332 v306 dolphin h3 h6 mr133 r328s2 r328s3 mr813 r329 r818 a33i r528 r528rv d1 f133 t113))
+ifeq ($(TARGET_BOARD_PLATFORM),$(filter $(TARGET_BOARD_PLATFORM),r16 r58 r40 r18 r6 c200s g102 r11 r7 r30 r311 r333 r331 r7s t7 r332 v306 dolphin h3 h6 mr133 r328s2 r328s3 mr813 r329 r818 a33i r528 r528rv d1 f133 t113 v833))
 $(eval $(call BuildPackage,$(PKG_NAME)))
 endif
你的回答
关注数
1
收藏数
0
浏览数
2355
极术小姐姐
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息