2016-05-30 81 views
1

我已经对bluedroid代码进行了修改。AOSP构建:如何跳过本地头包括

我的代码需要使用通常 semaphore.h中,其在位于:现在<aosp_root>/prebuilts/ndk/current/platforms/<platform>/<arch>/usr/include/semaphore.h

,在AOSP 6.0+ bluedroid驻留在<aosp_root>/system/bt/

在那里,在一个标头: <aosp_root>system/bt/osi/include/semaphore.h

在通常的AOSP构建中,如果我在我的代码中留下了一个简单的#include <semaphore.h>,则会将osi头部包含在内,这是不兼容的。有没有办法修改构建系统,以便ndk的头被用于我的代码?

我很高兴地在我的代码中包含了这个相对路径,但<arch>(可能是<platform>)是编译时变量,不应该被硬编码。 workarround为此也受欢迎作为备用答案。

Link to osi's header
Link to bluedroid main make file

回答

0

我发现,无论我需要给固定的路径,以正确的头在我的代码,或者 -

由于我是无论如何修改bluedroid代码,我继续修改bluedroid的信号.h也是。这条线在胭脂semaphore.h中帮助:

#include_next "semaphore.h"

GCC的扩展FTW。这应该继续工作,直到android ndk保持使用gcc ..

我知道与它一起的一般警告。根据正确的信号灯编写我自己的单独的信号量包装库,这是我能找到的唯一方法。

我考虑的另一种替代方法是重命名bluedroid的semaphore.h,但那会成为维护的噩梦。