AOSP Build:如何从include中跳过本地标题

时间:2016-05-30 07:30:57

标签: android android-ndk android-source

我对bluedroid代码进行了修改。

我的代码需要使用通常的 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>)是编译时变量,不应该是硬编码的。对此的工作范围也作为替代答案受到欢迎。

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

1 个答案:

答案 0 :(得分:0)

我发现我需要在代码中提供修正标头的固定路径,或者 -

因为无论如何我都在修改bluedroid代码,所以我继续修改了bluedroid的semaphore.h。 rouge semaphore.h中的这一行有助于:

#include_next "semaphore.h"

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

我知道随之而来的一般警告。如果没有基于正确的信号量编写我自己独立的信号量包装器库,这是我能找到的唯一方法。

我考虑的另一个替代方案是重命名bluedroid的semaphore.h但这将成为维护的噩梦。