1# SPDX-License-Identifier: Apache-2.0
2
3zephyr_library()
4zephyr_library_include_directories(${ZEPHYR_BASE}/subsys/net/ip)
5zephyr_library_include_directories_ifdef(
6  CONFIG_NET_L2_WIFI_SHELL ${ZEPHYR_BASE}/subsys/net/lib/shell
7  )
8zephyr_library_compile_definitions_ifdef(
9  CONFIG_NEWLIB_LIBC __LINUX_ERRNO_EXTENSIONS__
10  )
11zephyr_library_include_directories_ifdef(
12  CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO_ENTERPRISE test_certs
13  )
14
15zephyr_library_sources_ifdef(CONFIG_NET_L2_WIFI_MGMT wifi_mgmt.c)
16zephyr_library_sources_ifdef(CONFIG_WIFI_CERTIFICATE_LIB wifi_certs.c)
17zephyr_library_sources_ifdef(CONFIG_NET_L2_WIFI_SHELL wifi_shell.c)
18zephyr_library_sources_ifdef(CONFIG_WIFI_NM wifi_nm.c)
19zephyr_library_sources_ifdef(CONFIG_NET_L2_WIFI_UTILS wifi_utils.c)
20
21# Linker section placement for wifi_nm_instance iterable structure
22zephyr_linker_sources_ifdef(CONFIG_WIFI_NM DATA_SECTIONS wifi_nm.ld)
23if (CONFIG_WIFI_NM)
24zephyr_iterable_section(NAME wifi_nm_instance GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT})
25endif()
26
27if(CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO_ENTERPRISE AND CONFIG_NET_L2_WIFI_SHELL)
28  # Wi-Fi Enterprise test certificates handling
29  set(gen_inc_dir ${ZEPHYR_BINARY_DIR}/misc/generated)
30  set(gen_dir ${gen_inc_dir}/wifi_enterprise_test_certs)
31  if(NOT DEFINED WIFI_TEST_CERTS_DIR)
32    set(WIFI_TEST_CERTS_DIR ${ZEPHYR_BASE}/samples/net/wifi/test_certs/rsa3k)
33  endif()
34  # Create output directory for test certs
35  file(MAKE_DIRECTORY ${gen_dir})
36
37  # convert .pem files to array data at build time
38  zephyr_include_directories(${gen_inc_dir})
39
40  foreach(cert_file IN ITEMS
41      ${WIFI_TEST_CERTS_DIR}/client.pem
42      ${WIFI_TEST_CERTS_DIR}/client-key.pem
43      ${WIFI_TEST_CERTS_DIR}/ca.pem
44      ${WIFI_TEST_CERTS_DIR}/client2.pem
45      ${WIFI_TEST_CERTS_DIR}/client-key2.pem
46      ${WIFI_TEST_CERTS_DIR}/ca2.pem
47      ${WIFI_TEST_CERTS_DIR}/server.pem
48      ${WIFI_TEST_CERTS_DIR}/server-key.pem
49      )
50    if(EXISTS ${cert_file})
51      get_filename_component(cert_name ${cert_file} NAME)
52      generate_inc_file_for_target(
53          app
54          ${cert_file}
55          ${gen_dir}/${cert_name}.inc
56          )
57    else()
58      get_filename_component(cert_name ${cert_file} NAME)
59      file(WRITE ${gen_dir}/${cert_name}.inc "// Empty file generated because ${cert_file} does not exist\n")
60    endif()
61  endforeach()
62
63  # Add explicit dependency on app target for ZEPHYR_CURRENT_LIBRARY, so these
64  # headers are generated at the correct point in the build
65  add_dependencies(${ZEPHYR_CURRENT_LIBRARY} app)
66endif() #CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO_ENTERPRISE AND CONFIG_NET_L2_WIFI_SHELL
67