• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()