blob: 47444055f66733a5a2852ea8e195f70f2340c7df [file] [log] [blame]
pankore544da73c2021-10-19 02:51:16 +08001cmake_minimum_required(VERSION 3.6)
2
3project(chip-gn)
4
5set(chip_dir "${ameba_matter_root}")
6set(chip_dir_output "${matter_output_path}/chip")
7set(chip_c_flags "")
8set(chip_cpp_flags "")
9set(chip-gn chip-gn)
10
pankoreb8c0b6d2022-04-01 12:13:55 +080011set(matter_enable_rotating_id 1)
12
pankore544da73c2021-10-19 02:51:16 +080013get_filename_component(CHIP_ROOT ${chip_dir} REALPATH)
14get_filename_component(CHIP_OUTPUT ${chip_dir_output} REALPATH)
15get_filename_component(LIB_ROOT ${prj_root}/GCC-RELEASE/project_hp/asdk/lib/application REALPATH)
16
17include(ExternalProject)
18
19# FOR CHIP
20string(APPEND CHIP_GN_ARGS)
21
22list(
23 APPEND CHIP_CFLAGS
24
25 -DCHIP_PROJECT=1
26 -DCONFIG_PLATFORM_8721D
27 -DCONFIG_USE_MBEDTLS_ROM_ALG
28 -DCONFIG_FUNCION_O0_OPTIMIZE
pankorefaf85112023-01-07 05:53:54 +080029 -DCONFIG_ENABLE_AMEBA_FACTORY_DATA=0
pankore544da73c2021-10-19 02:51:16 +080030 -DDM_ODM_SUPPORT_TYPE=32
31 -DCHIP_DEVICE_LAYER_TARGET=Ameba
pankorebab75e62021-10-28 21:48:46 +080032 -DMBEDTLS_CONFIG_FILE=<mbedtls_config.h>
33 -D_POSIX_REALTIME_SIGNALS
pankore33b90462022-11-23 22:52:29 +080034 -DCHIP_SHELL_MAX_TOKENS=11
pankore544da73c2021-10-19 02:51:16 +080035)
36
37list(
38 APPEND CHIP_CXXFLAGS
39
40 -DFD_SETSIZE=10
41 -Wno-sign-compare
42 -Wno-unused-function
43 -Wno-unused-but-set-variable
44 -Wno-unused-variable
45 -Wno-deprecated-declarations
46 -Wno-unused-parameter
pankorefaf85112023-01-07 05:53:54 +080047 -Wno-unused-label
pankore544da73c2021-10-19 02:51:16 +080048 -Wno-format
pankore6e035c82021-12-22 14:17:38 +080049 -Wno-stringop-truncation
Justin Wood0e149792022-01-06 21:52:51 +010050 -Wno-format-nonliteral
51 -Wno-format-security
pankore6e035c82021-12-22 14:17:38 +080052 -std=c++17
pankore544da73c2021-10-19 02:51:16 +080053)
54
55list(
56 APPEND CHIP_INC
57
58 ${CHIP_ROOT}/config/ameba
59 ${CHIP_ROOT}/src/include
60 ${CHIP_ROOT}/src/lib
61 ${CHIP_ROOT}/src
62 ${CHIP_ROOT}/src/system
63 ${CHIP_ROOT}/src/app
64 ${CHIP_ROOT}/third_party/nlassert/repo/include
65 ${CHIP_ROOT}/third_party/nlio/repo/include
pankore544da73c2021-10-19 02:51:16 +080066)
67
68execute_process(
69 COMMAND echo "mkdir CHIP output folder ..."
70 COMMAND mkdir -p ${CHIP_OUTPUT}
71)
72
73foreach(tmp IN LISTS CHIP_CFLAGS)
74 string(CONCAT appended "\"" ${tmp} "\", ")
75 string(APPEND chip_c_flags "${appended}")
76endforeach()
77foreach(tmp IN LISTS GLOBAL_C_FLAGS)
78 string(CONCAT appended "\"" ${tmp} "\", ")
79 string(APPEND chip_c_flags "${appended}")
80endforeach()
81foreach(tmp IN LISTS inc_path)
82 string(CONCAT appended "\"-I" ${tmp} "\", ")
83 string(APPEND chip_c_flags "${appended}")
84endforeach()
85foreach(tmp IN LISTS CHIP_INC)
86 string(CONCAT appended "\"-I" ${tmp} "\", ")
87 string(APPEND chip_c_flags "${appended}")
88endforeach()
89foreach(tmp IN LISTS CHIP_CXXFLAGS)
90 string(CONCAT appended "\"" ${tmp} "\", ")
91 string(APPEND chip_cpp_flags "${appended}")
92endforeach()
93foreach(tmp IN LISTS GLOBAL_CPP_FLAGS)
94 string(CONCAT appended "\"" ${tmp} "\", ")
95 string(APPEND chip_cpp_flags "${appended}")
96endforeach()
97string(APPEND chip_cpp_flags "${chip_c_flags}")
98
99set(import_str "import(\"//args.gni\")\n" )
100
101string(APPEND CHIP_GN_ARGS "${import_str}")
102string(APPEND CHIP_GN_ARGS "target_cflags_c = [${chip_c_flags}]\n")
103string(APPEND CHIP_GN_ARGS "target_cflags_cc = [${chip_cpp_flags}]\n")
104string(APPEND CHIP_GN_ARGS "ameba_ar = \"arm-none-eabi-ar\"\n")
105string(APPEND CHIP_GN_ARGS "ameba_cc = \"arm-none-eabi-gcc\"\n")
106string(APPEND CHIP_GN_ARGS "ameba_cxx = \"arm-none-eabi-c++\"\n")
107string(APPEND CHIP_GN_ARGS "ameba_cpu = \"ameba\"\n")
pankoreb8c0b6d2022-04-01 12:13:55 +0800108string(APPEND CHIP_GN_ARGS "chip_inet_config_enable_ipv4 = false\n")
pankoredaa30ec2023-04-12 21:05:23 +0800109string(APPEND CHIP_GN_ARGS "chip_use_transitional_commissionable_data_provider = true\n")
pankore544da73c2021-10-19 02:51:16 +0800110
pankorecd423532022-07-15 20:45:41 -0700111# Enable persistent storage audit
112if (matter_enable_persistentstorage_audit)
113string(APPEND CHIP_GN_ARGS "chip_support_enable_storage_api_audit = true\n")
114endif (matter_enable_persistentstorage_audit)
115#endif
116
pankore6e035c82021-12-22 14:17:38 +0800117# Build RPC
pankoreb79b7812022-01-24 21:03:12 +0800118if (matter_enable_rpc)
pankore6e035c82021-12-22 14:17:38 +0800119#string(APPEND CHIP_GN_ARGS "remove_default_configs = [\"//third_party/connectedhomeip/third_party/pigweed/repo/pw_build:cpp17\"]\n")
120string(APPEND CHIP_GN_ARGS "chip_build_pw_rpc_lib = true\n")
121string(APPEND CHIP_GN_ARGS "pw_log_BACKEND = \"//third_party/connectedhomeip/third_party/pigweed/repo/pw_log_basic\"\n")
rgoliverdcec35a2022-06-15 10:50:26 -0400122string(APPEND CHIP_GN_ARGS "pw_assert_BACKEND = \"//third_party/connectedhomeip/third_party/pigweed/repo/pw_assert_log:check_backend\"\n")
pankore6e035c82021-12-22 14:17:38 +0800123string(APPEND CHIP_GN_ARGS "pw_sys_io_BACKEND = \"//third_party/connectedhomeip/examples/platform/ameba/pw_sys_io:pw_sys_io_ameba\"\n")
124string(APPEND CHIP_GN_ARGS "dir_pw_third_party_nanopb = \"//third_party/connectedhomeip/third_party/nanopb/repo\"\n")
125string(APPEND CHIP_GN_ARGS "pw_build_LINK_DEPS = [\"//third_party/connectedhomeip/third_party/pigweed/repo/pw_assert:impl\", \"//third_party/connectedhomeip/third_party/pigweed/repo/pw_log:impl\"]\n")
rgolivereb3ac832022-05-31 16:02:41 -0400126string(APPEND CHIP_GN_ARGS "pw_rpc_CONFIG = \"//third_party/connectedhomeip/third_party/pigweed/repo/pw_rpc:disable_global_mutex\"")
pankoreb79b7812022-01-24 21:03:12 +0800127endif (matter_enable_rpc)
128
pankore6a3c36c2022-07-28 00:56:06 +0800129# Build Matter Shell
130if (matter_enable_shell)
131string(APPEND CHIP_GN_ARGS "chip_build_libshell = true\n")
132endif (matter_enable_shell)
133
pankoreb79b7812022-01-24 21:03:12 +0800134# Build ota-requestor
135if (matter_enable_ota_requestor)
136string(APPEND CHIP_GN_ARGS "chip_enable_ota_requestor = true\n")
137endif (matter_enable_ota_requestor)
pankore6e035c82021-12-22 14:17:38 +0800138
pankore6a3c36c2022-07-28 00:56:06 +0800139# Rotating ID
pankoreb8c0b6d2022-04-01 12:13:55 +0800140if (matter_enable_rotating_id)
141 string(APPEND CHIP_GN_ARGS "chip_enable_additional_data_advertising = true\n")
142 string(APPEND CHIP_GN_ARGS "chip_enable_rotating_device_id = true\n")
pankore6a3c36c2022-07-28 00:56:06 +0800143else (matter_enable_rotating_id)
pankoreb8c0b6d2022-04-01 12:13:55 +0800144 string(APPEND CHIP_GN_ARGS "chip_enable_additional_data_advertising = false\n")
145 string(APPEND CHIP_GN_ARGS "chip_enable_rotating_device_id = false\n")
pankore6a3c36c2022-07-28 00:56:06 +0800146endif (matter_enable_rotating_id)
pankore9ac8ef42022-02-07 23:22:52 +0800147
pankore544da73c2021-10-19 02:51:16 +0800148file(GENERATE OUTPUT ${CHIP_OUTPUT}/args.gn CONTENT ${CHIP_GN_ARGS})
149
150ExternalProject_Add(
151 chip-gn
152 PREFIX ${CMAKE_CURRENT_BINARY_DIR}
153 SOURCE_DIR ${CHIP_ROOT}
154 BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}
155 CONFIGURE_COMMAND gn --root=${CHIP_ROOT}/config/ameba gen --check --fail-on-unused-args ${CHIP_OUTPUT}
pankore6e035c82021-12-22 14:17:38 +0800156 BUILD_COMMAND ninja -C ${CHIP_OUTPUT} :ameba
pankore544da73c2021-10-19 02:51:16 +0800157 INSTALL_COMMAND ""
pankore6e035c82021-12-22 14:17:38 +0800158 BUILD_BYPRODUCTS -lCHIP -lPwRpc
pankore544da73c2021-10-19 02:51:16 +0800159 CONFIGURE_ALWAYS TRUE
160 BUILD_ALWAYS TRUE
161 USES_TERMINAL_CONFIGURE TRUE
162 USES_TERMINAL_BUILD TRUE
163)