cmake_minimum_required(VERSION 3.5.1) project(j2s) # ├── iq_check.c # ├── include # │   ├── cJSON.h # │   ├── cJSON_Utils.h # │   ├── common.h # │   ├── j2s_generated.h # │   └── j2s.h # ├── input.h # ├── j2s # │   ├── cJSON.c # │   ├── cJSON_Utils.c # │   ├── j2s.c # │   └── j2s_utils.c set(ROOT_PROJ_DIR ${PROJECT_SOURCE_DIR}/../..) set(J2S_SRC ${ROOT_PROJ_DIR}/iq_parser_v2/j2s/cJSON.c ${ROOT_PROJ_DIR}/iq_parser_v2/j2s/cJSON_Utils.c ${ROOT_PROJ_DIR}/iq_parser_v2/j2s/j2s.c ${ROOT_PROJ_DIR}/iq_parser_v2/j2s/j2s_utils.c ) include_directories(${CMAKE_SYSROOT}/usr/includ) include_directories(${ROOT_PROJ_DIR}/include) include_directories(${ROOT_PROJ_DIR}/include/common) include_directories(${ROOT_PROJ_DIR}/include/iq_parser_v2) include_directories(${ROOT_PROJ_DIR}/include/iq_parser_v2/j2s) include_directories(${ROOT_PROJ_DIR}/) add_compile_options(${ISP_HW_VERSION}) ######################################################### # HEADER MACRO PREPROCESS # ######################################################### add_custom_target( j2s_parser COMMAND ${CMAKE_C_COMPILER} ${ROOT_PROJ_DIR}/include/iq_parser_v2/RkAiqCalibDbTypesV2.h -E -C -o .temp.h ${ISP_HW_VERSION} -I${ROOT_PROJ_DIR}/include/common -I${ROOT_PROJ_DIR}/include/iq_parser_v2 -I${ROOT_PROJ_DIR}/include/iq_parser COMMAND ${PROJECT_SOURCE_DIR}/script/header_strip.sh .temp.h output.h COMMAND cat ${PROJECT_SOURCE_DIR}/script/m4/desc.m4 output.h > RkAiqCalibDbTypesV2.m4 COMMAND cp ${PROJECT_SOURCE_DIR}/script/m4/desc.sh ./ COMMAND m4 -E RkAiqCalibDbTypesV2.m4 > RkAiqCalibDbTypesV2_M4.h ) ######################################################### # BUILD HOST PARSER TOOL # ######################################################### add_custom_target( parser_tool COMMAND gcc -DJ2S_ENABLE_DESC ${PROJECT_SOURCE_DIR}/src/parser.c -o parser ${ISP_HW_VERSION} -I${ROOT_PROJ_DIR}/include/common -I${ROOT_PROJ_DIR}/include/iq_parser_v2 -I${ROOT_PROJ_DIR}/include/iq_parser_v2/j2s COMMAND ${PROJECT_SOURCE_DIR}/script/headerprocess.sh ${ROOT_PROJ_DIR}/include/iq_parser_v2/RkAiqCalibDbTypesV2.h ${ROOT_PROJ_DIR}/include/iq_parser_v2/j2s/j2s_generated.h COMMAND ${PROJECT_SOURCE_DIR}/bin/parser RkAiqCalibDbTypesV2_M4.h >> ${ROOT_PROJ_DIR}/include/iq_parser_v2/j2s/j2s_generated.h ) add_dependencies(parser_tool j2s_parser) ######################################################### # BUILD LIBRARY # ######################################################### add_library(j2s STATIC ${J2S_SRC}) add_dependencies(j2s j2s_parser) ######################################################### # BUILD HOST DUMP TOOL # ######################################################### add_custom_target( dump_tool COMMAND gcc -DJ2S_ENABLE_DESC ${ISP_HW_VERSION} -o dump ${J2S_SRC} ${ISP_HW_VERSION} ${PROJECT_SOURCE_DIR}/src/dump.c -I${ROOT_PROJ_DIR}/include/common -I${ROOT_PROJ_DIR}/include/iq_parser_v2 -I${ROOT_PROJ_DIR}/include/iq_parser_v2/j2s COMMAND ./dump --template > .j2s_template.json COMMAND cp ${PROJECT_SOURCE_DIR}/script/dump_template.sh ./ COMMAND ./dump_template.sh ${ROOT_PROJ_DIR}/include/iq_parser_v2/j2s/j2s_generated_template_json.h ) add_dependencies(dump_tool parser_tool) ######################################################### # BUILD TOOL # ######################################################### add_executable(iq_check iq_check.c) target_link_libraries(iq_check j2s) add_dependencies(iq_check dump_tool) install(TARGETS j2s DESTINATION lib) install(TARGETS iq_check DESTINATION bin)