我对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>
)是编译时变量,不应该是硬编码的。对此的工作范围也作为替代答案受到欢迎。
答案 0 :(得分:0)
我发现我需要在代码中提供修正标头的固定路径,或者 -
因为无论如何我都在修改bluedroid代码,所以我继续修改了bluedroid的semaphore.h。 rouge semaphore.h中的这一行有助于:
#include_next "semaphore.h"
gcc扩展FTW。这应该继续工作,直到android ndk继续使用gcc ..
我知道随之而来的一般警告。如果没有基于正确的信号量编写我自己独立的信号量包装器库,这是我能找到的唯一方法。
我考虑的另一个替代方案是重命名bluedroid的semaphore.h但这将成为维护的噩梦。