xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/iq_parser_v2/CMakeLists.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1cmake_minimum_required(VERSION 2.8...3.22)
2
3if (ARCH STREQUAL "arm")
4    set(J2S_HOST_CFLAGS -m32 -std=gnu99 -malign-double)
5elseif (ARCH STREQUAL "aarch64")
6    set(J2S_HOST_CFLAGS -m64 -std=gnu99 -malign-double)
7endif()
8
9set(J2S_SRC
10    ${CMAKE_CURRENT_SOURCE_DIR}/j2s/cJSON.cpp
11    ${CMAKE_CURRENT_SOURCE_DIR}/j2s/cJSON_Utils.cpp
12    ${CMAKE_CURRENT_SOURCE_DIR}/j2s/j2s.cpp
13    ${CMAKE_CURRENT_SOURCE_DIR}/j2s/j2s_utils.cpp
14    )
15
16#########################################################
17#               HEADER MACRO PREPROCESS                 #
18#########################################################
19add_custom_command(
20    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/output.h
21    COMMAND ${CMAKE_C_COMPILER}
22    ${rk_aiq_SOURCE_DIR}/include/iq_parser_v2/RkAiqCalibDbTypesV2.h -E -C -o .temp.h ${ISP_HW_VERSION}
23    -I${rk_aiq_SOURCE_DIR}/
24    -I${rk_aiq_SOURCE_DIR}/include
25    -I${rk_aiq_SOURCE_DIR}/include/common
26    -I${rk_aiq_SOURCE_DIR}/include/uAPI2
27    -I${rk_aiq_SOURCE_DIR}/include/algos
28    -I${rk_aiq_SOURCE_DIR}/include/iq_parser_v2
29    -I${rk_aiq_SOURCE_DIR}/include/iq_parser
30    -I${rk_aiq_SOURCE_DIR}/include/xcore
31    -I${rk_aiq_SOURCE_DIR}/include/algos
32    COMMAND ${rk_aiq_SOURCE_DIR}/tools/iq_check/script/header_strip.sh
33    .temp.h output.h
34)
35
36add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/RkAiqCalibDbTypesV2_M4.h
37    COMMAND cat ${rk_aiq_SOURCE_DIR}/tools/iq_check/script/m4/desc.m4
38    output.h > RkAiqCalibDbTypesV2.m4
39    COMMAND cp ${rk_aiq_SOURCE_DIR}/tools/iq_check/script/m4/desc.sh ./
40    COMMAND m4 -E RkAiqCalibDbTypesV2.m4 > RkAiqCalibDbTypesV2_M4.h
41    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/output.h
42)
43
44#########################################################
45#                BUILD HOST PARSER tools                 #
46#########################################################
47add_custom_command(
48    OUTPUT ${rk_aiq_BINARY_DIR}/.j2s_generated.h
49    COMMAND gcc ${J2S_HOST_CFLAGS} -DJ2S_ENABLE_DESC ${rk_aiq_SOURCE_DIR}/tools/iq_check/src/parser.c -o parser ${ISP_HW_VERSION}
50    -I${rk_aiq_SOURCE_DIR}/include/common
51    -I${rk_aiq_SOURCE_DIR}/
52    -I${rk_aiq_SOURCE_DIR}/include/uAPI2
53    -I${rk_aiq_SOURCE_DIR}/include/algos
54    -I${rk_aiq_SOURCE_DIR}/include/iq_parser_v2
55    -I${rk_aiq_SOURCE_DIR}/include/iq_parser_v2/j2s
56    COMMAND ${rk_aiq_SOURCE_DIR}/tools/iq_check/script/headerprocess.sh
57    ${rk_aiq_SOURCE_DIR}/include/iq_parser_v2/RkAiqCalibDbTypesV2.h
58    ${rk_aiq_BINARY_DIR}/.j2s_generated.h
59	#COMMAND ${rk_aiq_SOURCE_DIR}/tools/iq_check/bin/parser RkAiqCalibDbTypesV2_M4.h CamCalibDbProj_t >>
60	COMMAND ${rk_aiq_BINARY_DIR}/iq_parser_v2/parser RkAiqCalibDbTypesV2_M4.h CamCalibDbProj_t >>
61    ${rk_aiq_BINARY_DIR}/.j2s_generated.h
62    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/RkAiqCalibDbTypesV2_M4.h
63    )
64
65#########################################################
66#                    BUILD HOST CODE2BIN tool               #
67#########################################################
68add_custom_target(
69    j2s_code2bin
70    COMMAND gcc ${J2S_HOST_CFLAGS} ${rk_aiq_SOURCE_DIR}/tools/iq_check/src/tobin.c -o tobin ${ISP_HW_VERSION} -DRKAIQ_HAVE_LSC_V3
71	-I${rk_aiq_BINARY_DIR}
72    -I${rk_aiq_SOURCE_DIR}/include/common
73    -I${rk_aiq_SOURCE_DIR}/
74    -I${rk_aiq_SOURCE_DIR}/include/uAPI2
75    -I${rk_aiq_SOURCE_DIR}/include/algos
76    -I${rk_aiq_SOURCE_DIR}/include/iq_parser_v2
77    -I${rk_aiq_SOURCE_DIR}/include/iq_parser_v2/j2s
78
79	COMMAND ./tobin ${rk_aiq_BINARY_DIR}/j2s_code2bin.bin
80	COMMAND cd ${rk_aiq_BINARY_DIR}/ && xxd -i j2s_code2bin.bin j2s_code2bin.h
81    DEPENDS ${rk_aiq_BINARY_DIR}/.j2s_generated.h
82    )
83
84#########################################################
85#                    BUILD HOST j2s_generated.h optimize tool               #
86#########################################################
87add_custom_target(
88    j2s_generated_optim
89    COMMAND gcc ${J2S_HOST_CFLAGS} ${rk_aiq_SOURCE_DIR}/tools/iq_check/src/j2s_generated_optim.c -o j2s_generated_optim ${ISP_HW_VERSION}
90	-I${rk_aiq_BINARY_DIR}
91    -I${rk_aiq_SOURCE_DIR}/include/common
92    -I${rk_aiq_SOURCE_DIR}/
93    -I${rk_aiq_SOURCE_DIR}/include/uAPI2
94    -I${rk_aiq_SOURCE_DIR}/include/algos
95    -I${rk_aiq_SOURCE_DIR}/include/iq_parser_v2
96    -I${rk_aiq_SOURCE_DIR}/include/iq_parser_v2/j2s
97
98	COMMAND ./j2s_generated_optim ${rk_aiq_BINARY_DIR}/j2s_generated.h
99    DEPENDS j2s_code2bin
100    )
101
102#########################################################
103#                    BUILD HOST DUMP tool               #
104#########################################################
105add_custom_target(
106    j2s_parser
107	COMMAND g++ -std=gnu++11 -DJ2S_ENABLE_DESC -DCOMPILE_TEMPLATE -o dump ${J2S_SRC} ${ISP_HW_VERSION}
108    ${rk_aiq_SOURCE_DIR}/tools/iq_check/src/dump.cpp
109    -I${rk_aiq_SOURCE_DIR}/include/common
110    -I${rk_aiq_SOURCE_DIR}/
111    -I${rk_aiq_SOURCE_DIR}/include/uAPI2
112    -I${rk_aiq_SOURCE_DIR}/include/algos
113    -I${rk_aiq_SOURCE_DIR}/include/iq_parser_v2
114    -I${rk_aiq_SOURCE_DIR}/include/iq_parser_v2/j2s
115    -I${rk_aiq_BINARY_DIR}/
116
117    COMMAND ./dump --template > .j2s_template.json
118    COMMAND cp ${rk_aiq_SOURCE_DIR}/tools/iq_check/script/dump_template.sh ./
119    COMMAND ./dump_template.sh
120    ${rk_aiq_BINARY_DIR}/j2s_generated_template_json.h
121	DEPENDS ${rk_aiq_BINARY_DIR}/.j2s_generated.h
122	DEPENDS j2s_generated_optim
123    )
124
125#########################################################
126#                    BUILD BINARY IQ FILES              #
127#########################################################
128if (${ISP_HW_VERSION} STREQUAL "-DISP_HW_V21")
129    set(IQFILES_DIR_INTERNAL "${rk_aiq_SOURCE_DIR}/iqfiles/isp21")
130endif ()
131if (${ISP_HW_VERSION} STREQUAL "-DISP_HW_V30")
132    set(IQFILES_DIR_INTERNAL "${rk_aiq_SOURCE_DIR}/iqfiles/isp3x")
133endif ()
134if (${ISP_HW_VERSION} STREQUAL "-DISP_HW_V32")
135    set(IQFILES_DIR_INTERNAL "${rk_aiq_SOURCE_DIR}/iqfiles/isp32")
136endif ()
137if (${ISP_HW_VERSION} STREQUAL "-DISP_HW_V32_LITE")
138    set(IQFILES_DIR_INTERNAL "${rk_aiq_SOURCE_DIR}/iqfiles/isp32_lite")
139endif ()
140
141add_custom_target(
142    j2s4b
143    COMMAND ${CMAKE_COMMAND}
144    -DROOT_PROJ_BIN_DIR:STRING=${rk_aiq_BINARY_DIR}
145    -DRKAIQ_IQFILES_DIR:STRING="${IQFILES_DIR_INTERNAL}"
146    -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE:PATH="${rk_aiq_BINARY_DIR}/bin"
147    -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
148    -DRKAIQ_TARGET_ARCH=${ARCH}
149    -B"host_tool"
150    -H"${rk_aiq_SOURCE_DIR}/tools/j2s4b"
151    COMMAND ${CMAKE_COMMAND} --build host_tool
152    COMMAND make -C host_tool install
153	DEPENDS j2s_parser
154    )
155
156SET(IQ_PARSERV2_SRC
157    ${CMAKE_CURRENT_SOURCE_DIR}/j2s/cJSON.cpp
158    ${CMAKE_CURRENT_SOURCE_DIR}/j2s/cJSON_Utils.cpp
159    ${CMAKE_CURRENT_SOURCE_DIR}/j2s/j2s.cpp
160    ${CMAKE_CURRENT_SOURCE_DIR}/j2s/j2s_utils.cpp
161    ${CMAKE_CURRENT_SOURCE_DIR}/RkAiqCalibDbV2.cpp
162    ${CMAKE_CURRENT_SOURCE_DIR}/scene/scene_manager.cpp
163    )
164
165SET(RK_AIQ_SRC ${RK_AIQ_SRC} ${IQ_PARSERV2_SRC} PARENT_SCOPE)
166