Android.bp中添加条件编译控制

Android.bp

//引入go脚本
bootstrap_go_package {
    name: "soong-xxxparser",
    pkgPath: "android/soong/xxxparser",
    deps: [
    "blueprint",
    "blueprint-pathtools",
    "soong",
    "soong-android",
    "soong-cc",
    "soong-genrule",
    ],
    srcs: [
        "xxxparser.go",
    ],
    pluginFor: ["soong_build"],
}

xxxparser {
    name: "xxxparser_defaults",
}

cc_binary {
    defaults: ["xxxparser_defaults"],
    name: "AndroidBp",
    srcs: ["main.c"],


    cflags: ["-Wno-error=implicit-function-declaration"],



    shared_libs: [
        "libcutils",
        "liblog",
        "libutils",
    ],

}

main.c

#include<stdio.h>
int main()
{
    #ifdef PRINT  //宏控制
    printf("Hello world\n");
    #endif

    #ifdef XXX //宏控制
    printf("XXOOX\n");
    #endif

    printf("This is AndroidBp Test\n");
    return 0;
}

xxxparser.go

package  xxxparser

import (
        "android/soong/android"
        "android/soong/cc"
)

func init() {
    // resister a module "xxxparser_defaults"
    android.RegisterModuleType("xxxparser", xxxdroidDefaultsFactory)
}

func xxxdroidDefaultsFactory() (android.Module) {
    module := cc.DefaultsFactory()
    android.AddLoadHook(module, xxxdroidDefaults)
    return module
}

func xxxdroidDefaults(ctx android.LoadHookContext) {
   type props struct {
        Cflags []string
    }
    p := &props{}
    p.Cflags = globalDefaults(ctx)
    ctx.AppendProperties(p)
}

func globalDefaults(ctx android.BaseContext) ([]string) {
    var cppflags []string
    if ctx.AConfig().Getenv("TARGET_PRODUCT") == "dockdroid_arm64" {
          cppflags = append(cppflags,"-DXXX")
    }
    return cppflags
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馬佩德罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值