1if(CHIP STREQUAL "ws53") 2 include (${WIFI_DIR}/wifi_alg_ws53.cmake) 3 add_subdirectory(${WIFI_DIR}/source/alg wifi_alg) 4elseif(CHIP STREQUAL "ws63") 5 if(DEFINED LLT_PATH) 6 include (${WIFI_DIR}/wifi_alg_ws63.cmake) 7 add_subdirectory(${WIFI_DIR}/source/alg wifi_alg) 8 endif() 9elseif(DEFINED CHIP) 10 return() 11else() 12 set(project_name ws73) 13 add_subdirectory(${WIFI_DIR}/source/alg wifi_alg) 14 include (${WIFI_DIR}/wifi_alg_ws73.cmake) 15endif() 16 17function(wifi_alg_addprefix prefix list_name) 18 set(${list_name}_tmp) 19 foreach(component IN LISTS ${list_name}) 20 list(APPEND ${list_name}_tmp ${prefix}${component}) 21 endforeach() 22 set(${list_name} ${${list_name}_tmp} PARENT_SCOPE) 23 unset(${list_name}_tmp) 24endfunction() 25 26function(wifi_alg_add_components _in_components) 27 set(_out_components) 28 if(${_in_components}) 29 foreach(component IN LISTS ${_in_components}) 30 get_property(${component} GLOBAL PROPERTY ${component}) 31 set(temp_component ${${component}}) 32 if(${component}) 33 if(MY_ADD_DEFINES_PREFIX AND component MATCHES ".*DEFINES") 34 wifi_alg_addprefix("-D" ${component}) 35 endif() 36 list(APPEND _out_components ${${component}}) 37 endif() 38 endforeach() 39 endif() 40 set(_out_components ${_out_components} PARENT_SCOPE) 41endfunction() 42 43function(wifi_alg_add_ind_components out_components_final independent_components) 44 foreach(ind_property IN LISTS ${independent_components}) 45 get_property(${ind_property} GLOBAL PROPERTY ${ind_property}) 46 set(ind_components ${${ind_property}}) 47 foreach(ind_component IN LISTS ind_components) 48 string(TOUPPER ${ind_component} ind_component_upper) 49 get_property(${ind_component_upper} GLOBAL PROPERTY ${ind_component_upper}) 50 list(APPEND ${out_components_final} ${${ind_component_upper}}) 51 endforeach() 52 endforeach() 53 set(_out_components ${${out_components_final}} PARENT_SCOPE) 54endfunction() 55 56function(wifi_alg_compiler_entry _component_name) 57 set(options ADD_DEFINES_PREFIX) 58 set(oneValueArgs OUT_SOURCES OUT_INCLUDES OUT_DEFINES) 59 set(multiValueArgs WIFI_SOURCES WIFI_INCLUDES WIFI_DEFINES ALG_INDEPENDENT) 60 cmake_parse_arguments(MY "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) 61 if(${_component_name}) 62 cmake_parse_arguments(${project_name} "" "" "${multiValueArgs}" ${${_component_name}}) 63 wifi_alg_add_components("${project_name}_WIFI_SOURCES") 64 if (MY_ALG_INDEPENDENT) 65 set(independent_components MY_ALG_INDEPENDENT) 66 set(out_components_final _out_components) 67 wifi_alg_add_ind_components(${out_components_final} ${independent_components}) 68 endif() 69 list(APPEND MY_WIFI_SOURCES ${_out_components}) 70 wifi_alg_add_components("${project_name}_WIFI_INCLUDES") 71 list(APPEND MY_WIFI_INCLUDES ${_out_components}) 72 wifi_alg_add_components("${project_name}_WIFI_DEFINES") 73 list(APPEND MY_WIFI_DEFINES ${_out_components}) 74 else() 75 message(ERROR "unknown wifi alg componet name") 76 endif() 77 if(MY_OUT_SOURCES) 78 set(${MY_OUT_SOURCES} "${MY_WIFI_SOURCES}" PARENT_SCOPE) 79 endif() 80 if(MY_OUT_DEFINES) 81 set(${MY_OUT_DEFINES} "${MY_WIFI_DEFINES}" PARENT_SCOPE) 82 endif() 83 if(MY_OUT_INCLUDES) 84 set(${MY_OUT_INCLUDES} "${MY_WIFI_INCLUDES}" PARENT_SCOPE) 85 endif() 86endfunction() 87 88function(wifi_alg_build_ind_component component) 89 set(COMPONENT_NAME ${component}) 90 string(TOUPPER ${component} component_upper) 91 set(SOURCES) 92 get_property(${component_upper} GLOBAL PROPERTY ${component_upper}) 93 foreach(source IN LISTS ${component_upper}) 94 list(APPEND SOURCES ${source}) 95 endforeach() 96 add_base_config() 97 build_component() 98endfunction() 99 100function(wifi_alg_independent_build ind_components) 101 foreach(ind_component IN LISTS ${ind_components}) 102 get_property(${ind_component} GLOBAL PROPERTY ${ind_component}) 103 foreach(ind IN LISTS ${ind_component}) 104 wifi_alg_build_ind_component(${ind}) 105 endforeach() 106 endforeach() 107endfunction() 108 109function(wifi_alg_copy_src) 110 execute_process(COMMAND "rm" "-rf" "alg_src" COMMAND "mkdir" "-p" "alg_src/device" COMMAND "mkdir" "-p" "alg_src/host") 111 set(files WIFI_ALG_COMMON_DEVICE_ROM_SOURCES WIFI_ALG_COMMON_DEVICE_RAM_SOURCES WIFI_ALG_IOT_DEVICE_ROM_SOURCES 112 WIFI_ALG_IOT_DEVICE_RAM_SOURCES WIFI_ALG_IOT_DEVICE_IND_SOURCES WIFI_ALG_COMMON_HOST_SOURCES WIFI_ALG_IOT_HOST_SOURCES) 113 set(ind_files WIFI_ALG_IOT_HOST_IND_SOURCES WIFI_ALG_IOT_DEVICE_IND_SOURCES) 114 foreach(ind_component IN LISTS files) 115 get_property(${ind_component} GLOBAL PROPERTY ${ind_component}) 116 foreach(ind IN LISTS ${ind_component}) 117 if(ind_component MATCHES ".*DEVICE.*") 118 execute_process(COMMAND "cp" ${ind} "./alg_src/device/") 119 else() 120 execute_process(COMMAND "cp" ${ind} "./alg_src/host/") 121 endif() 122 endforeach() 123 endforeach() 124 foreach(ind_component IN LISTS ind_files) 125 get_property(${ind_component} GLOBAL PROPERTY ${ind_component}) 126 foreach(ind IN LISTS ${ind_component}) 127 string(TOUPPER ${ind} ind_upper) 128 get_property(ind2 GLOBAL PROPERTY ${ind_upper}) 129 foreach(source IN LISTS ind2) 130 if(ind_component MATCHES ".*DEVICE.*") 131 execute_process(COMMAND "cp" ${source} "./alg_src/device/") 132 else() 133 execute_process(COMMAND "cp" ${source} "./alg_src/host/") 134 endif() 135 endforeach() 136 endforeach() 137 endforeach() 138endfunction()