forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-08-21 fc437ccf3419c424092701f3d883215fa4552a8b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
CAMERAHAL_SITE = $(TOPDIR)/../framework/camerahal
CAMERAHAL_SITE_METHOD = local
CAMERAHAL_INSTALL_STAGING = YES
 
CAMERAHAL_DEPENDENCIES = libion
 
define search_iq
dts_name=`echo $(1)`; \
build_camiq_dir=`echo $(2)`; \
target_use_bin=`echo $(3)`; \
target_camiq_dir=`echo $(4)`; \
dts_dir=`echo $${dts_name%/*}`; \
echo dts_name=$$dts_name; \
echo dts_dir=$$dts_dir; \
echo build_camiq_dir=$$build_camiq_dir; \
echo target_use_bin=$$target_use_bin; \
camera_temp=`grep "cif_isp0" -A 6 $(1) | sed ':a;N;$$!ba;s/\n/ /g' | cut -d '{' -f2 | cut -d '}' -f1 | cut -d '<' -f2 | cut -d '>' -f1 | tr -d "&"`; \
cam_id=$$camera_temp; \
temp=`echo "$$camera_temp" | grep "camera"`; \
if [[ -z "$$temp" ]]; then \
   cam_id=`grep "$$camera_temp" -A 10 $(1) | \
   grep "rockchip,rkisp-coproc-v4l2-platform-subdev" -A 10 | \
   grep "rockchip,camera-modules-attached" | \
   sed ':a;N;$$!ba;s/\n/ /g' | grep "&camera" | \
   cut -d '{' -f2 | cut -d '}' -f1 | cut -d '<' -f2 | cut -d '>' -f1 | tr -d "&"`; \
fi; \
echo cam_id=$$cam_id; \
cam_dts=`grep "&i2c" -A 30 $(1) | grep "^#include" | cut -d '"' -f2 | cut -d '"' -f1`; \
for i in $$cam_id; do \
   echo $$i; \
   if [[ ! -z "$$cam_dts" ]]; then \
       cam_iq=`grep "$$i:" -A 35 $$dts_dir/$$cam_dts | \
               sed ':a;N;$$!ba;s/\n/ /g' | \
               cut -d '{' -f2 | cut -d '}' -f1 | \
               awk -F 'rockchip,camera-module-name' '{print $$(2)}' | \
               cut -d '"' -f2 | cut -d '"' -f1`; \
       echo cam_dts=$$cam_dts; \
       echo cam_iq=$$cam_iq; \
       cam_name=`grep "$$i:" -A 15 $$dts_dir/$$cam_dts | \
               grep "compatible" | \
               cut -d ',' -f2 | cut -d '-' -f1`; \
       echo cam_name=$$cam_name; \
   else \
       cam_iq=`grep "$$i:" -A 35 $(1) | \
               sed ':a;N;$$!ba;s/\n/ /g' | \
               cut -d '{' -f2 | cut -d '}' -f1 | \
               awk -F 'rockchip,camera-module-name' '{print $$(2)}' | \
               cut -d '"' -f2 | cut -d '"' -f1`; \
       echo cam_iq=$$cam_iq; \
       cam_name=`grep "$$i:" -A 15 $(1) | \
               grep "compatible" | \
               cut -d ',' -f2 | cut -d '-' -f1`; \
       echo cam_name=$$cam_name; \
   fi; \
   cam_xml_array+="$${cam_name}_$${cam_iq}.xml "; \
done; \
echo cam_xml_array=$$cam_xml_array; \
if [[ "bin" == $$target_use_bin ]]; then \
   echo "Use bin IQ data"; \
   for i in $$cam_xml_array; do \
       echo xml:$$i; \
       cam_xml_name=`echo $$i | cut -d '.' -f1`; \
       cp $$build_camiq_dir/CamIqData.db.$$cam_xml_name $$build_camiq_dir/CamIqData.db; \
       break; \
   done; \
else \
   echo "Use xml IQ data"; \
   for i in $$cam_xml_array; do \
       echo xml:$$i; \
       cp $$build_camiq_dir/$$i $$target_camiq_dir/; \
   done; \
fi;
endef
 
define CAMERAHAL_PRE_CONFIGURE_BIN_CMDS
   $(call search_iq,$(call qstrip,$(TOPDIR)/../kernel/arch/arm/boot/dts/$(RK_KERNEL_DTS).dts),\
       $(@D)/camera_engine_cifisp/IQ/bin,bin)
endef
 
define CAMERAHAL_PRE_INSTALL_TARGET_XML_CMDS
   mkdir -p $(TARGET_DIR)/etc/cam_iq/
   $(call search_iq,$(call qstrip,$(TOPDIR)/../kernel/arch/arm/boot/dts/$(RK_KERNEL_DTS).dts),\
       $(@D)/camera_engine_cifisp/IQ,xml,$(TARGET_DIR)/etc/cam_iq/)
endef
 
ifdef BR2_PACKAGE_CAMERAHAL_USE_IQ_BIN
CAMERAHAL_MAKE_OPTS += IQ_BIN_NAME="CamIqData.db"
CAMERAHAL_PRE_BUILD_HOOKS += CAMERAHAL_PRE_CONFIGURE_BIN_CMDS
else
CAMERAHAL_PRE_INSTALL_TARGET_HOOKS += CAMERAHAL_PRE_INSTALL_TARGET_XML_CMDS
endif
 
define CAMERAHAL_BUILD_CMDS
   -rm -rf $(TARGET_DIR)/etc/cam_iq
   cd $(@D) && \
        $(TARGET_MAKE_ENV) CROSS_COMPILE=$(TARGET_CROSS) $(MAKE) $(CAMERAHAL_MAKE_OPTS)
endef
 
define CAMERAHAL_INSTALL_TARGET_CMDS
   $(INSTALL) -D -m  644 $(@D)/camera_engine_cifisp/build/lib/libcam_engine_cifisp.so $(TARGET_DIR)/usr/lib/
   $(INSTALL) -D -m  644 $(@D)/camera_engine_cifisp/build/lib/libcam_ia.so $(TARGET_DIR)/usr/lib/
   $(INSTALL) -D -m  755 $(@D)/camera_engine_cifisp/build/bin/cnvIQ $(TARGET_DIR)/usr/bin/
   mkdir -p $(TARGET_DIR)/usr/include/CameraHal/linux
   $(foreach header,$(wildcard $(@D)/camera_engine_cifisp/HAL/include/*.h),$(INSTALL) -D -m 644 $(header) $(TARGET_DIR)/usr/include/CameraHal;)
   cp -fr $(@D)/camera_engine_cifisp/include/linux/* $(TARGET_DIR)/usr/include/CameraHal/linux
   cp -fr $(@D)/camera_engine_cifisp/include/* $(TARGET_DIR)/usr/include/
endef
 
define CAMERAHAL_INSTALL_STAGING_CMDS
   $(INSTALL) -D -m  644 $(@D)/camera_engine_cifisp/build/lib/libcam_engine_cifisp.so $(STAGING_DIR)/usr/lib/
   $(INSTALL) -D -m  644 $(@D)/camera_engine_cifisp/build/lib/libcam_ia.so $(STAGING_DIR)/usr/lib/
   mkdir -p $(STAGING_DIR)/usr/include/CameraHal/linux
   $(foreach header,$(wildcard $(@D)/camera_engine_cifisp/include/*.h), $(INSTALL) -D -m 644 $(header) $(STAGING_DIR)/usr/include/CameraHal;)
   $(foreach header,$(wildcard $(@D)/camera_engine_cifisp/HAL/include/*.h),$(INSTALL) -D -m 644 $(header) $(STAGING_DIR)/usr/include/CameraHal;)
   cp -fr $(@D)/camera_engine_cifisp/include/linux/* $(STAGING_DIR)/usr/include/CameraHal/linux
   cp -fr $(@D)/camera_engine_cifisp/include/* $(STAGING_DIR)/usr/include/
endef
 
$(eval $(generic-package))