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