xref: /OK3568_Linux_fs/buildroot/package/rockchip/rknpu/rknpu.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun################################################################################
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# rknpu
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun################################################################################
6*4882a593SmuzhiyunRKNPU_VERSION = 1.5.0
7*4882a593SmuzhiyunRKNPU_SITE_METHOD = local
8*4882a593SmuzhiyunRKNPU_SITE = $(TOPDIR)/../external/rknpu
9*4882a593SmuzhiyunNPU_TEST_FILE = $(@D)/test
10*4882a593SmuzhiyunRKNPU_INSTALL_STAGING = YES
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_RKNPU_PCIE),y)
13*4882a593SmuzhiyunNPU_KO_FILE = galcore_rk3399pro-npu-pcie.ko
14*4882a593Smuzhiyunelse ifeq ($(BR2_PACKAGE_RK3399PRO_NPU),y)
15*4882a593SmuzhiyunNPU_KO_FILE = galcore_rk3399pro-npu.ko
16*4882a593Smuzhiyunelse ifeq ($(BR2_PACKAGE_RK1806),y)
17*4882a593SmuzhiyunNPU_KO_FILE = galcore_rk1806.ko
18*4882a593Smuzhiyunelse ifeq ($(BR2_PACKAGE_RV1126_RV1109),y)
19*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_RKNPU_USE_MINI_DRIVER),y)
20*4882a593SmuzhiyunNPU_KO_FILE = galcore_puma_tb.ko
21*4882a593Smuzhiyunelse
22*4882a593SmuzhiyunNPU_KO_FILE = galcore_puma.ko
23*4882a593Smuzhiyunendif
24*4882a593Smuzhiyunelse
25*4882a593SmuzhiyunNPU_KO_FILE = galcore.ko
26*4882a593Smuzhiyunendif
27*4882a593Smuzhiyun
28*4882a593Smuzhiyunifeq ($(BR2_arm),y)
29*4882a593SmuzhiyunNPU_PLATFORM_ARCH := linux-armhf
30*4882a593Smuzhiyunelse
31*4882a593SmuzhiyunNPU_PLATFORM_ARCH := linux-aarch64
32*4882a593Smuzhiyunendif
33*4882a593Smuzhiyun
34*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_RV1126_RV1109),y)
35*4882a593SmuzhiyunNPU_PLATFORM_ARCH := linux-armhf-puma
36*4882a593Smuzhiyunendif
37*4882a593Smuzhiyun
38*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_RKNPU_USE_MINI_DRIVER), y)
39*4882a593SmuzhiyunNPU_PLATFORM := $(NPU_PLATFORM_ARCH)-mini
40*4882a593SmuzhiyunBUILD_NOT_START_RKNN_SCRIPT=y
41*4882a593Smuzhiyunelse
42*4882a593SmuzhiyunNPU_PLATFORM := $(NPU_PLATFORM_ARCH)
43*4882a593Smuzhiyunendif
44*4882a593Smuzhiyun
45*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_PYTHON_RKNN), y)
46*4882a593SmuzhiyunBUILD_PYTHON_RKNN=y
47*4882a593Smuzhiyunendif
48*4882a593Smuzhiyun
49*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_RKNPU_USE_RKNN_API), y)
50*4882a593SmuzhiyunBUILD_RKNN_API=y
51*4882a593Smuzhiyunendif
52*4882a593Smuzhiyun
53*4882a593Smuzhiyundefine RKNPU_INSTALL_STAGING_CMDS
54*4882a593Smuzhiyun    mkdir -p $(STAGING_DIR)/usr/include/rknn
55*4882a593Smuzhiyun    $(INSTALL) -D -m 0644 $(@D)/rknn/include/rknn_runtime.h $(STAGING_DIR)/usr/include/rknn/rknn_runtime.h
56*4882a593Smuzhiyun    if [ ${BUILD_RKNN_API} = "y" ]; then \
57*4882a593Smuzhiyun        $(INSTALL) -D -m 0644 $(@D)/rknn/rknn_api/librknn_api/include/rknn_api.h $(STAGING_DIR)/usr/include/rknn/rknn_api.h; \
58*4882a593Smuzhiyun    fi
59*4882a593Smuzhiyunendef
60*4882a593Smuzhiyun
61*4882a593Smuzhiyundefine RKNPU_INSTALL_TARGET_CMDS
62*4882a593Smuzhiyun    mkdir -p $(TARGET_DIR)/lib/modules/
63*4882a593Smuzhiyun    mkdir -p $(TARGET_DIR)/usr/share/npu/
64*4882a593Smuzhiyun    $(INSTALL) -D -m 0644 $(@D)/drivers/npu_ko/$(NPU_KO_FILE) $(TARGET_DIR)/lib/modules/galcore.ko
65*4882a593Smuzhiyun    cp -r $(@D)/drivers/common/* $(TARGET_DIR)/
66*4882a593Smuzhiyun    cp -r $(@D)/drivers/common/* $(STAGING_DIR)/
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun    if [ x${BUILD_NOT_START_RKNN_SCRIPT} != x ]; then \
69*4882a593Smuzhiyun        rm $(TARGET_DIR)/etc/init.d/S60NPU_init; \
70*4882a593Smuzhiyun    else \
71*4882a593Smuzhiyun        rm $(TARGET_DIR)/etc/init.d/S05NPU_init; \
72*4882a593Smuzhiyun    fi
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun    cp -r $(@D)/drivers/$(NPU_PLATFORM)/* $(TARGET_DIR)/
75*4882a593Smuzhiyun    cp -r $(@D)/drivers/$(NPU_PLATFORM)/* $(STAGING_DIR)/
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun    if [ -e "$(@D)/test" ]; then \
78*4882a593Smuzhiyun        cp -r $(@D)/test $(TARGET_DIR)/usr/share/npu; \
79*4882a593Smuzhiyun    fi
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun    if [ x${BUILD_PYTHON_RKNN} != x ]; then \
82*4882a593Smuzhiyun        cp -r $(@D)/rknn/python/rknn $(TARGET_DIR)/usr/lib/python3.6/site-packages/; \
83*4882a593Smuzhiyun    fi
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun    if [ ${BUILD_RKNN_API} = "y" ]; then \
86*4882a593Smuzhiyun        if [ ${NPU_PLATFORM_ARCH} = "linux-aarch64" ]; then \
87*4882a593Smuzhiyun            $(INSTALL) -D -m 0644 $(@D)/rknn/rknn_api/librknn_api/lib64/librknn_api.so $(TARGET_DIR)/usr/lib/; \
88*4882a593Smuzhiyun            $(INSTALL) -D -m 0644 $(@D)/rknn/rknn_api/librknn_api/lib64/librknn_api.so $(STAGING_DIR)/usr/lib; \
89*4882a593Smuzhiyun        else \
90*4882a593Smuzhiyun            $(INSTALL) -D -m 0644 $(@D)/rknn/rknn_api/librknn_api/lib/librknn_api.so $(TARGET_DIR)/usr/lib/; \
91*4882a593Smuzhiyun            $(INSTALL) -D -m 0644 $(@D)/rknn/rknn_api/librknn_api/lib/librknn_api.so $(STAGING_DIR)/usr/lib; \
92*4882a593Smuzhiyun        fi \
93*4882a593Smuzhiyun    fi
94*4882a593Smuzhiyunendef
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun$(eval $(generic-package))
97