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