Home | History | Annotate | Line # | Download | only in hostapd
      1 ALL=hostapd hostapd_cli
      2 CONFIG_FILE = .config
      3 
      4 include ../src/build.rules
      5 
      6 ifdef LIBS
      7 # If LIBS is set with some global build system defaults, clone those for
      8 # LIBS_c, LIBS_h, and LIBS_n to cover hostapd_cli, hlr_auc_gw, and
      9 # nt_password_hash as well.
     10 ifndef LIBS_c
     11 LIBS_c := $(LIBS)
     12 endif
     13 ifndef LIBS_h
     14 LIBS_h := $(LIBS)
     15 endif
     16 ifndef LIBS_n
     17 LIBS_n := $(LIBS)
     18 endif
     19 ifndef LIBS_s
     20 LIBS_s := $(LIBS)
     21 endif
     22 endif
     23 
     24 CFLAGS += $(EXTRA_CFLAGS)
     25 CFLAGS += -I$(abspath ../src)
     26 CFLAGS += -I$(abspath ../src/utils)
     27 
     28 export BINDIR ?= /usr/local/bin/
     29 
     30 ifndef CONFIG_NO_GITVER
     31 # Add VERSION_STR postfix for builds from a git repository
     32 ifeq ($(wildcard ../.git),../.git)
     33 GITVER := $(shell git describe --dirty=+)
     34 ifneq ($(GITVER),)
     35 CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\"
     36 endif
     37 endif
     38 endif
     39 
     40 ifdef CONFIG_TESTING_OPTIONS
     41 CFLAGS += -DCONFIG_TESTING_OPTIONS
     42 CONFIG_WPS_TESTING=y
     43 endif
     44 
     45 ifndef CONFIG_OS
     46 ifdef CONFIG_NATIVE_WINDOWS
     47 CONFIG_OS=win32
     48 else
     49 CONFIG_OS=unix
     50 endif
     51 endif
     52 
     53 ifeq ($(CONFIG_OS), internal)
     54 CFLAGS += -DOS_NO_C_LIB_DEFINES
     55 endif
     56 
     57 ifdef CONFIG_NATIVE_WINDOWS
     58 CFLAGS += -DCONFIG_NATIVE_WINDOWS
     59 LIBS += -lws2_32
     60 endif
     61 
     62 OBJS += main.o
     63 OBJS += config_file.o
     64 
     65 OBJS += ../src/ap/hostapd.o
     66 OBJS += ../src/ap/wpa_auth_glue.o
     67 OBJS += ../src/ap/drv_callbacks.o
     68 OBJS += ../src/ap/ap_drv_ops.o
     69 OBJS += ../src/ap/utils.o
     70 OBJS += ../src/ap/authsrv.o
     71 OBJS += ../src/ap/ieee802_1x.o
     72 OBJS += ../src/ap/ap_config.o
     73 OBJS += ../src/ap/eap_user_db.o
     74 OBJS += ../src/ap/ieee802_11_auth.o
     75 OBJS += ../src/ap/sta_info.o
     76 OBJS += ../src/ap/wpa_auth.o
     77 OBJS += ../src/ap/tkip_countermeasures.o
     78 OBJS += ../src/ap/ap_mlme.o
     79 OBJS += ../src/ap/wpa_auth_ie.o
     80 OBJS += ../src/ap/preauth_auth.o
     81 OBJS += ../src/ap/pmksa_cache_auth.o
     82 OBJS += ../src/ap/ieee802_11_shared.o
     83 OBJS += ../src/ap/beacon.o
     84 OBJS += ../src/ap/bss_load.o
     85 OBJS += ../src/ap/neighbor_db.o
     86 OBJS += ../src/ap/rrm.o
     87 OBJS += ../src/common/ptksa_cache.o
     88 
     89 OBJS_c = hostapd_cli.o
     90 OBJS_c += ../src/common/wpa_ctrl.o
     91 OBJS_c += ../src/utils/os_$(CONFIG_OS).o
     92 OBJS_c += ../src/common/cli.o
     93 
     94 NEED_RC4=y
     95 NEED_AES=y
     96 NEED_MD5=y
     97 NEED_SHA1=y
     98 
     99 OBJS += ../src/drivers/drivers.o
    100 CFLAGS += -DHOSTAPD
    101 
    102 ifdef CONFIG_TAXONOMY
    103 CFLAGS += -DCONFIG_TAXONOMY
    104 OBJS += ../src/ap/taxonomy.o
    105 endif
    106 
    107 ifdef CONFIG_MODULE_TESTS
    108 CFLAGS += -DCONFIG_MODULE_TESTS
    109 OBJS += hapd_module_tests.o
    110 endif
    111 
    112 ifdef CONFIG_WPA_TRACE
    113 CFLAGS += -DWPA_TRACE
    114 OBJS += ../src/utils/trace.o
    115 HOBJS += ../src/utils/trace.o
    116 LDFLAGS += -rdynamic
    117 CFLAGS += -funwind-tables
    118 ifdef CONFIG_WPA_TRACE_BFD
    119 CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD
    120 LIBS += -lbfd -ldl -liberty -lz
    121 LIBS_c += -lbfd -ldl -liberty -lz
    122 LIBS_h += -lbfd -ldl -liberty -lz
    123 LIBS_n += -lbfd -ldl -liberty -lz
    124 LIBS_s += -lbfd -ldl -liberty -lz
    125 endif
    126 endif
    127 
    128 ifndef CONFIG_ELOOP
    129 CONFIG_ELOOP=eloop
    130 endif
    131 OBJS += ../src/utils/$(CONFIG_ELOOP).o
    132 OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
    133 
    134 ifeq ($(CONFIG_ELOOP), eloop)
    135 # Using glibc < 2.17 requires -lrt for clock_gettime()
    136 LIBS += -lrt
    137 LIBS_c += -lrt
    138 LIBS_h += -lrt
    139 LIBS_n += -lrt
    140 endif
    141 
    142 ifdef CONFIG_ELOOP_POLL
    143 CFLAGS += -DCONFIG_ELOOP_POLL
    144 endif
    145 
    146 ifdef CONFIG_ELOOP_EPOLL
    147 CFLAGS += -DCONFIG_ELOOP_EPOLL
    148 endif
    149 
    150 ifdef CONFIG_ELOOP_KQUEUE
    151 CFLAGS += -DCONFIG_ELOOP_KQUEUE
    152 endif
    153 
    154 OBJS += ../src/utils/common.o
    155 OBJS_c += ../src/utils/common.o
    156 OBJS += ../src/utils/wpa_debug.o
    157 OBJS_c += ../src/utils/wpa_debug.o
    158 OBJS += ../src/utils/wpabuf.o
    159 OBJS += ../src/utils/os_$(CONFIG_OS).o
    160 OBJS += ../src/utils/ip_addr.o
    161 OBJS += ../src/utils/crc32.o
    162 
    163 OBJS += ../src/common/ieee802_11_common.o
    164 OBJS += ../src/common/wpa_common.o
    165 OBJS += ../src/common/hw_features_common.o
    166 
    167 OBJS += ../src/eapol_auth/eapol_auth_sm.o
    168 
    169 
    170 ifdef CONFIG_CODE_COVERAGE
    171 CFLAGS += -O0 -fprofile-arcs -ftest-coverage -U_FORTIFY_SOURCE
    172 LIBS += -lgcov
    173 LIBS_c += -lgcov
    174 LIBS_h += -lgcov
    175 LIBS_n += -lgcov
    176 endif
    177 
    178 ifndef CONFIG_NO_DUMP_STATE
    179 # define HOSTAPD_DUMP_STATE to include support for dumping internal state
    180 # through control interface commands (undefine it, if you want to save in
    181 # binary size)
    182 CFLAGS += -DHOSTAPD_DUMP_STATE
    183 OBJS += ../src/eapol_auth/eapol_auth_dump.o
    184 endif
    185 
    186 ifdef CONFIG_NO_RADIUS
    187 CFLAGS += -DCONFIG_NO_RADIUS
    188 CONFIG_NO_ACCOUNTING=y
    189 else
    190 OBJS += ../src/radius/radius.o
    191 OBJS += ../src/radius/radius_client.o
    192 OBJS += ../src/radius/radius_das.o
    193 endif
    194 
    195 ifdef CONFIG_NO_ACCOUNTING
    196 CFLAGS += -DCONFIG_NO_ACCOUNTING
    197 else
    198 OBJS += ../src/ap/accounting.o
    199 endif
    200 
    201 ifdef CONFIG_NO_VLAN
    202 CFLAGS += -DCONFIG_NO_VLAN
    203 else
    204 OBJS += ../src/ap/vlan_init.o
    205 OBJS += ../src/ap/vlan_ifconfig.o
    206 OBJS += ../src/ap/vlan.o
    207 ifdef CONFIG_FULL_DYNAMIC_VLAN
    208 # Define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
    209 # and VLAN interfaces for the VLAN feature.
    210 CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
    211 OBJS += ../src/ap/vlan_full.o
    212 ifdef CONFIG_VLAN_NETLINK
    213 OBJS += ../src/ap/vlan_util.o
    214 else
    215 OBJS += ../src/ap/vlan_ioctl.o
    216 endif
    217 endif
    218 endif
    219 
    220 ifdef CONFIG_NO_CTRL_IFACE
    221 CFLAGS += -DCONFIG_NO_CTRL_IFACE
    222 else
    223 ifeq ($(CONFIG_CTRL_IFACE), udp)
    224 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
    225 else
    226 ifeq ($(CONFIG_CTRL_IFACE), udp6)
    227 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
    228 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
    229 else
    230 ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
    231 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
    232 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
    233 else
    234 ifeq ($(CONFIG_CTRL_IFACE), udp6-remote)
    235 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
    236 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
    237 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
    238 else
    239 CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
    240 endif
    241 endif
    242 endif
    243 endif
    244 OBJS += ../src/common/ctrl_iface_common.o
    245 OBJS += ctrl_iface.o
    246 OBJS += ../src/ap/ctrl_iface_ap.o
    247 endif
    248 
    249 ifndef CONFIG_NO_CTRL_IFACE
    250 CFLAGS += -DCONFIG_CTRL_IFACE
    251 endif
    252 
    253 ifdef CONFIG_RSN_PREAUTH
    254 CFLAGS += -DCONFIG_RSN_PREAUTH
    255 CONFIG_L2_PACKET=y
    256 endif
    257 
    258 ifdef CONFIG_HS20
    259 CONFIG_PROXYARP=y
    260 endif
    261 
    262 ifdef CONFIG_PROXYARP
    263 CONFIG_L2_PACKET=y
    264 endif
    265 
    266 ifdef CONFIG_SUITEB
    267 CFLAGS += -DCONFIG_SUITEB
    268 endif
    269 
    270 ifdef CONFIG_SUITEB192
    271 CFLAGS += -DCONFIG_SUITEB192
    272 NEED_SHA384=y
    273 endif
    274 
    275 ifdef CONFIG_OCV
    276 CFLAGS += -DCONFIG_OCV
    277 OBJS += ../src/common/ocv.o
    278 endif
    279 
    280 NEED_AES_UNWRAP=y
    281 
    282 ifdef CONFIG_IEEE80211R
    283 CFLAGS += -DCONFIG_IEEE80211R -DCONFIG_IEEE80211R_AP
    284 OBJS += ../src/ap/wpa_auth_ft.o
    285 NEED_AES_UNWRAP=y
    286 NEED_AES_SIV=y
    287 NEED_ETH_P_OUI=y
    288 NEED_HMAC_SHA256_KDF=y
    289 endif
    290 
    291 ifdef NEED_ETH_P_OUI
    292 CFLAGS += -DCONFIG_ETH_P_OUI
    293 OBJS += ../src/ap/eth_p_oui.o
    294 endif
    295 
    296 ifdef CONFIG_SAE
    297 CFLAGS += -DCONFIG_SAE
    298 OBJS += ../src/common/sae.o
    299 ifdef CONFIG_SAE_PK
    300 CFLAGS += -DCONFIG_SAE_PK
    301 NEED_AES_SIV=y
    302 OBJS += ../src/common/sae_pk.o
    303 endif
    304 NEED_ECC=y
    305 NEED_DH_GROUPS=y
    306 NEED_HMAC_SHA256_KDF=y
    307 NEED_AP_MLME=y
    308 NEED_DRAGONFLY=y
    309 endif
    310 
    311 ifdef CONFIG_OWE
    312 CFLAGS += -DCONFIG_OWE
    313 NEED_ECC=y
    314 NEED_HMAC_SHA256_KDF=y
    315 NEED_HMAC_SHA384_KDF=y
    316 NEED_HMAC_SHA512_KDF=y
    317 NEED_SHA384=y
    318 NEED_SHA512=y
    319 endif
    320 
    321 ifdef CONFIG_AIRTIME_POLICY
    322 CFLAGS += -DCONFIG_AIRTIME_POLICY
    323 OBJS += ../src/ap/airtime_policy.o
    324 endif
    325 
    326 ifdef CONFIG_FILS
    327 CFLAGS += -DCONFIG_FILS
    328 OBJS += ../src/ap/fils_hlp.o
    329 NEED_SHA384=y
    330 NEED_AES_SIV=y
    331 ifdef CONFIG_FILS_SK_PFS
    332 CFLAGS += -DCONFIG_FILS_SK_PFS
    333 NEED_ECC=y
    334 endif
    335 endif
    336 
    337 ifdef CONFIG_WNM
    338 CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP
    339 OBJS += ../src/ap/wnm_ap.o
    340 endif
    341 
    342 ifdef CONFIG_IEEE80211AC
    343 CFLAGS += -DCONFIG_IEEE80211AC
    344 endif
    345 
    346 ifdef CONFIG_IEEE80211BE
    347 CONFIG_IEEE80211AX=y
    348 CFLAGS += -DCONFIG_IEEE80211BE
    349 OBJS += ../src/ap/ieee802_11_eht.o
    350 endif
    351 
    352 ifdef CONFIG_IEEE80211AX
    353 CFLAGS += -DCONFIG_IEEE80211AX
    354 OBJS += ../src/ap/ieee802_11_he.o
    355 endif
    356 
    357 ifdef CONFIG_MBO
    358 CFLAGS += -DCONFIG_MBO
    359 OBJS += ../src/ap/mbo_ap.o
    360 endif
    361 
    362 include ../src/drivers/drivers.mak
    363 OBJS += $(DRV_AP_OBJS)
    364 CFLAGS += $(DRV_AP_CFLAGS)
    365 LDFLAGS += $(DRV_AP_LDFLAGS)
    366 LIBS += $(DRV_AP_LIBS)
    367 
    368 ifdef CONFIG_L2_PACKET
    369 ifdef CONFIG_DNET_PCAP
    370 ifdef CONFIG_L2_FREEBSD
    371 LIBS += -lpcap
    372 OBJS += ../src/l2_packet/l2_packet_freebsd.o
    373 else
    374 LIBS += -ldnet -lpcap
    375 OBJS += ../src/l2_packet/l2_packet_pcap.o
    376 endif
    377 else
    378 OBJS += ../src/l2_packet/l2_packet_linux.o
    379 endif
    380 else
    381 OBJS += ../src/l2_packet/l2_packet_none.o
    382 endif
    383 
    384 
    385 ifdef CONFIG_ERP
    386 CFLAGS += -DCONFIG_ERP
    387 NEED_HMAC_SHA256_KDF=y
    388 endif
    389 
    390 ifdef CONFIG_EAP_MD5
    391 CFLAGS += -DEAP_SERVER_MD5
    392 OBJS += ../src/eap_server/eap_server_md5.o
    393 CHAP=y
    394 endif
    395 
    396 ifdef CONFIG_EAP_TLS
    397 CFLAGS += -DEAP_SERVER_TLS
    398 OBJS += ../src/eap_server/eap_server_tls.o
    399 TLS_FUNCS=y
    400 endif
    401 
    402 ifdef CONFIG_EAP_UNAUTH_TLS
    403 CFLAGS += -DEAP_SERVER_UNAUTH_TLS
    404 ifndef CONFIG_EAP_TLS
    405 OBJS += ../src/eap_server/eap_server_tls.o
    406 TLS_FUNCS=y
    407 endif
    408 endif
    409 
    410 ifdef CONFIG_EAP_PEAP
    411 CFLAGS += -DEAP_SERVER_PEAP
    412 OBJS += ../src/eap_server/eap_server_peap.o
    413 OBJS += ../src/eap_common/eap_peap_common.o
    414 TLS_FUNCS=y
    415 CONFIG_EAP_MSCHAPV2=y
    416 endif
    417 
    418 ifdef CONFIG_EAP_TTLS
    419 CFLAGS += -DEAP_SERVER_TTLS
    420 OBJS += ../src/eap_server/eap_server_ttls.o
    421 TLS_FUNCS=y
    422 CHAP=y
    423 endif
    424 
    425 ifdef CONFIG_EAP_MSCHAPV2
    426 CFLAGS += -DEAP_SERVER_MSCHAPV2
    427 OBJS += ../src/eap_server/eap_server_mschapv2.o
    428 MS_FUNCS=y
    429 endif
    430 
    431 ifdef CONFIG_EAP_GTC
    432 CFLAGS += -DEAP_SERVER_GTC
    433 OBJS += ../src/eap_server/eap_server_gtc.o
    434 endif
    435 
    436 ifdef CONFIG_EAP_SIM
    437 CFLAGS += -DEAP_SERVER_SIM
    438 OBJS += ../src/eap_server/eap_server_sim.o
    439 CONFIG_EAP_SIM_COMMON=y
    440 NEED_AES_CBC=y
    441 endif
    442 
    443 ifdef CONFIG_EAP_AKA
    444 CFLAGS += -DEAP_SERVER_AKA
    445 OBJS += ../src/eap_server/eap_server_aka.o
    446 CONFIG_EAP_SIM_COMMON=y
    447 NEED_AES_CBC=y
    448 endif
    449 
    450 ifdef CONFIG_EAP_AKA_PRIME
    451 CFLAGS += -DEAP_SERVER_AKA_PRIME
    452 endif
    453 
    454 ifdef CONFIG_EAP_SIM_COMMON
    455 OBJS += ../src/eap_common/eap_sim_common.o
    456 # Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
    457 # replaced with another file implementing the interface specified in
    458 # eap_sim_db.h.
    459 OBJS += ../src/eap_server/eap_sim_db.o
    460 NEED_FIPS186_2_PRF=y
    461 endif
    462 
    463 ifdef CONFIG_EAP_PAX
    464 CFLAGS += -DEAP_SERVER_PAX
    465 OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
    466 endif
    467 
    468 ifdef CONFIG_EAP_PSK
    469 CFLAGS += -DEAP_SERVER_PSK
    470 OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
    471 NEED_AES_ENCBLOCK=y
    472 NEED_AES_EAX=y
    473 endif
    474 
    475 ifdef CONFIG_EAP_SAKE
    476 CFLAGS += -DEAP_SERVER_SAKE
    477 OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
    478 endif
    479 
    480 ifdef CONFIG_EAP_GPSK
    481 CFLAGS += -DEAP_SERVER_GPSK
    482 OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
    483 ifdef CONFIG_EAP_GPSK_SHA256
    484 CFLAGS += -DEAP_GPSK_SHA256
    485 endif
    486 endif
    487 
    488 ifdef CONFIG_EAP_PWD
    489 CFLAGS += -DEAP_SERVER_PWD
    490 OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
    491 NEED_ECC=y
    492 NEED_DRAGONFLY=y
    493 endif
    494 
    495 ifdef CONFIG_EAP_EKE
    496 CFLAGS += -DEAP_SERVER_EKE
    497 OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o
    498 NEED_DH_GROUPS=y
    499 NEED_DH_GROUPS_ALL=y
    500 endif
    501 
    502 ifdef CONFIG_EAP_VENDOR_TEST
    503 CFLAGS += -DEAP_SERVER_VENDOR_TEST
    504 OBJS += ../src/eap_server/eap_server_vendor_test.o
    505 endif
    506 
    507 ifdef CONFIG_EAP_FAST
    508 CFLAGS += -DEAP_SERVER_FAST
    509 OBJS += ../src/eap_server/eap_server_fast.o
    510 OBJS += ../src/eap_common/eap_fast_common.o
    511 TLS_FUNCS=y
    512 NEED_T_PRF=y
    513 NEED_AES_UNWRAP=y
    514 endif
    515 
    516 ifdef CONFIG_EAP_TEAP
    517 CFLAGS += -DEAP_SERVER_TEAP
    518 OBJS += ../src/eap_server/eap_server_teap.o
    519 OBJS += ../src/eap_common/eap_teap_common.o
    520 TLS_FUNCS=y
    521 NEED_T_PRF=y
    522 NEED_SHA384=y
    523 NEED_TLS_PRF_SHA256=y
    524 NEED_TLS_PRF_SHA384=y
    525 NEED_AES_UNWRAP=y
    526 endif
    527 
    528 ifdef CONFIG_WPS
    529 CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
    530 OBJS += ../src/utils/uuid.o
    531 OBJS += ../src/ap/wps_hostapd.o
    532 OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
    533 OBJS += ../src/wps/wps.o
    534 OBJS += ../src/wps/wps_common.o
    535 OBJS += ../src/wps/wps_attr_parse.o
    536 OBJS += ../src/wps/wps_attr_build.o
    537 OBJS += ../src/wps/wps_attr_process.o
    538 OBJS += ../src/wps/wps_dev_attr.o
    539 OBJS += ../src/wps/wps_enrollee.o
    540 OBJS += ../src/wps/wps_registrar.o
    541 NEED_DH_GROUPS=y
    542 NEED_BASE64=y
    543 NEED_AES_CBC=y
    544 NEED_MODEXP=y
    545 CONFIG_EAP=y
    546 
    547 ifdef CONFIG_WPS_NFC
    548 CFLAGS += -DCONFIG_WPS_NFC
    549 OBJS += ../src/wps/ndef.o
    550 NEED_WPS_OOB=y
    551 endif
    552 
    553 ifdef NEED_WPS_OOB
    554 CFLAGS += -DCONFIG_WPS_OOB
    555 endif
    556 
    557 ifdef CONFIG_WPS_UPNP
    558 CFLAGS += -DCONFIG_WPS_UPNP
    559 OBJS += ../src/wps/wps_upnp.o
    560 OBJS += ../src/wps/wps_upnp_ssdp.o
    561 OBJS += ../src/wps/wps_upnp_web.o
    562 OBJS += ../src/wps/wps_upnp_event.o
    563 OBJS += ../src/wps/wps_upnp_ap.o
    564 OBJS += ../src/wps/upnp_xml.o
    565 OBJS += ../src/wps/httpread.o
    566 OBJS += ../src/wps/http_client.o
    567 OBJS += ../src/wps/http_server.o
    568 endif
    569 
    570 ifdef CONFIG_WPS_STRICT
    571 CFLAGS += -DCONFIG_WPS_STRICT
    572 OBJS += ../src/wps/wps_validate.o
    573 endif
    574 
    575 ifdef CONFIG_WPS_TESTING
    576 CFLAGS += -DCONFIG_WPS_TESTING
    577 endif
    578 
    579 endif
    580 
    581 ifdef CONFIG_DPP
    582 CFLAGS += -DCONFIG_DPP
    583 OBJS += ../src/common/dpp.o
    584 OBJS += ../src/common/dpp_auth.o
    585 OBJS += ../src/common/dpp_backup.o
    586 OBJS += ../src/common/dpp_crypto.o
    587 OBJS += ../src/common/dpp_pkex.o
    588 OBJS += ../src/common/dpp_reconfig.o
    589 OBJS += ../src/common/dpp_tcp.o
    590 OBJS += ../src/ap/dpp_hostapd.o
    591 OBJS += ../src/ap/gas_query_ap.o
    592 NEED_AES_SIV=y
    593 NEED_HMAC_SHA256_KDF=y
    594 NEED_HMAC_SHA384_KDF=y
    595 NEED_HMAC_SHA512_KDF=y
    596 NEED_SHA384=y
    597 NEED_SHA512=y
    598 NEED_ECC=y
    599 NEED_JSON=y
    600 NEED_GAS=y
    601 NEED_BASE64=y
    602 NEED_ASN1=y
    603 ifdef CONFIG_DPP2
    604 CFLAGS += -DCONFIG_DPP2
    605 endif
    606 ifdef CONFIG_DPP3
    607 CFLAGS += -DCONFIG_DPP3
    608 endif
    609 endif
    610 
    611 ifdef CONFIG_NAN_USD
    612 OBJS += ../src/common/nan_de.o
    613 OBJS += ../src/ap/nan_usd_ap.o
    614 CFLAGS += -DCONFIG_NAN_USD
    615 endif
    616 
    617 ifdef CONFIG_PASN
    618 CFLAGS += -DCONFIG_PASN
    619 CFLAGS += -DCONFIG_PTKSA_CACHE
    620 NEED_HMAC_SHA256_KDF=y
    621 NEED_HMAC_SHA384_KDF=y
    622 NEED_SHA256=y
    623 NEED_SHA384=y
    624 endif
    625 
    626 ifdef CONFIG_EAP_IKEV2
    627 CFLAGS += -DEAP_SERVER_IKEV2
    628 OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
    629 OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
    630 NEED_DH_GROUPS=y
    631 NEED_DH_GROUPS_ALL=y
    632 NEED_MODEXP=y
    633 NEED_CIPHER=y
    634 endif
    635 
    636 ifdef CONFIG_EAP_TNC
    637 CFLAGS += -DEAP_SERVER_TNC
    638 OBJS += ../src/eap_server/eap_server_tnc.o
    639 OBJS += ../src/eap_server/tncs.o
    640 NEED_BASE64=y
    641 ifndef CONFIG_DRIVER_BSD
    642 LIBS += -ldl
    643 endif
    644 endif
    645 
    646 ifdef CONFIG_MACSEC
    647 CFLAGS += -DCONFIG_MACSEC
    648 OBJS += ../src/ap/wpa_auth_kay.o
    649 OBJS += ../src/pae/ieee802_1x_cp.o
    650 OBJS += ../src/pae/ieee802_1x_kay.o
    651 OBJS += ../src/pae/ieee802_1x_key.o
    652 OBJS += ../src/pae/ieee802_1x_secy_ops.o
    653 endif
    654 
    655 # Basic EAP functionality is needed for EAPOL
    656 OBJS += eap_register.o
    657 OBJS += ../src/eap_server/eap_server.o
    658 OBJS += ../src/eap_common/eap_common.o
    659 OBJS += ../src/eap_server/eap_server_methods.o
    660 OBJS += ../src/eap_server/eap_server_identity.o
    661 CFLAGS += -DEAP_SERVER_IDENTITY
    662 
    663 ifdef CONFIG_EAP
    664 CFLAGS += -DEAP_SERVER
    665 endif
    666 
    667 ifdef CONFIG_PKCS12
    668 CFLAGS += -DPKCS12_FUNCS
    669 endif
    670 
    671 ifdef NEED_DRAGONFLY
    672 OBJS += ../src/common/dragonfly.o
    673 endif
    674 
    675 ifdef MS_FUNCS
    676 OBJS += ../src/crypto/ms_funcs.o
    677 NEED_DES=y
    678 NEED_MD4=y
    679 endif
    680 
    681 ifdef CHAP
    682 OBJS += ../src/eap_common/chap.o
    683 endif
    684 
    685 ifdef CONFIG_RADIUS_TLS
    686 TLS_FUNCS=y
    687 CFLAGS += -DCONFIG_RADIUS_TLS
    688 endif
    689 
    690 ifdef TLS_FUNCS
    691 NEED_DES=y
    692 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
    693 CFLAGS += -DEAP_TLS_FUNCS
    694 OBJS += ../src/eap_server/eap_server_tls_common.o
    695 NEED_TLS_PRF=y
    696 endif
    697 
    698 ifndef CONFIG_TLS
    699 CONFIG_TLS=openssl
    700 endif
    701 
    702 ifdef CONFIG_TLSV11
    703 CFLAGS += -DCONFIG_TLSV11
    704 endif
    705 
    706 ifdef CONFIG_TLSV12
    707 CFLAGS += -DCONFIG_TLSV12
    708 endif
    709 
    710 ifeq ($(CONFIG_TLS), wolfssl)
    711 CONFIG_CRYPTO=wolfssl
    712 ifdef TLS_FUNCS
    713 OBJS += ../src/crypto/tls_wolfssl.o
    714 LIBS += -lwolfssl -lm
    715 endif
    716 OBJS += ../src/crypto/crypto_wolfssl.o
    717 HOBJS += ../src/crypto/crypto_wolfssl.o
    718 ifdef NEED_FIPS186_2_PRF
    719 OBJS += ../src/crypto/fips_prf_wolfssl.o
    720 endif
    721 NEED_TLS_PRF_SHA256=y
    722 LIBS += -lwolfssl -lm
    723 LIBS_h += -lwolfssl -lm
    724 ifdef CONFIG_TLS_ADD_DL
    725 LIBS += -ldl
    726 LIBS_h += -ldl
    727 endif
    728 endif
    729 
    730 ifeq ($(CONFIG_TLS), openssl)
    731 CFLAGS += -DCRYPTO_RSA_OAEP_SHA256
    732 CONFIG_CRYPTO=openssl
    733 ifdef TLS_FUNCS
    734 OBJS += ../src/crypto/tls_openssl.o
    735 OBJS += ../src/crypto/tls_openssl_ocsp.o
    736 LIBS += -lssl
    737 endif
    738 OBJS += ../src/crypto/crypto_openssl.o
    739 HOBJS += ../src/crypto/crypto_openssl.o
    740 SOBJS += ../src/crypto/crypto_openssl.o
    741 ifdef NEED_FIPS186_2_PRF
    742 OBJS += ../src/crypto/fips_prf_openssl.o
    743 endif
    744 NEED_TLS_PRF_SHA256=y
    745 LIBS += -lcrypto
    746 LIBS_h += -lcrypto
    747 LIBS_n += -lcrypto
    748 LIBS_s += -lcrypto
    749 ifdef CONFIG_TLS_ADD_DL
    750 LIBS += -ldl
    751 LIBS_h += -ldl
    752 LIBS_s += -ldl
    753 endif
    754 ifndef CONFIG_TLS_DEFAULT_CIPHERS
    755 CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW"
    756 endif
    757 CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\"
    758 endif
    759 
    760 ifeq ($(CONFIG_TLS), gnutls)
    761 ifndef CONFIG_CRYPTO
    762 # default to libgcrypt
    763 CONFIG_CRYPTO=gnutls
    764 endif
    765 ifdef TLS_FUNCS
    766 OBJS += ../src/crypto/tls_gnutls.o
    767 LIBS += -lgnutls -lgpg-error
    768 endif
    769 OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
    770 HOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
    771 ifdef NEED_FIPS186_2_PRF
    772 OBJS += ../src/crypto/fips_prf_internal.o
    773 SHA1OBJS += ../src/crypto/sha1-internal.o
    774 endif
    775 ifeq ($(CONFIG_CRYPTO), gnutls)
    776 LIBS += -lgcrypt
    777 LIBS_h += -lgcrypt
    778 LIBS_n += -lgcrypt
    779 CONFIG_INTERNAL_RC4=y
    780 CONFIG_INTERNAL_DH_GROUP5=y
    781 endif
    782 ifeq ($(CONFIG_CRYPTO), nettle)
    783 LIBS += -lnettle -lgmp
    784 LIBS_p += -lnettle -lgmp
    785 CONFIG_INTERNAL_RC4=y
    786 CONFIG_INTERNAL_DH_GROUP5=y
    787 endif
    788 endif
    789 
    790 ifeq ($(CONFIG_TLS), internal)
    791 ifndef CONFIG_CRYPTO
    792 CONFIG_CRYPTO=internal
    793 endif
    794 ifdef TLS_FUNCS
    795 OBJS += ../src/crypto/crypto_internal-rsa.o
    796 OBJS += ../src/crypto/tls_internal.o
    797 OBJS += ../src/tls/tlsv1_common.o
    798 OBJS += ../src/tls/tlsv1_record.o
    799 OBJS += ../src/tls/tlsv1_cred.o
    800 OBJS += ../src/tls/tlsv1_server.o
    801 OBJS += ../src/tls/tlsv1_server_write.o
    802 OBJS += ../src/tls/tlsv1_server_read.o
    803 OBJS += ../src/tls/rsa.o
    804 OBJS += ../src/tls/x509v3.o
    805 OBJS += ../src/tls/pkcs1.o
    806 OBJS += ../src/tls/pkcs5.o
    807 OBJS += ../src/tls/pkcs8.o
    808 NEED_ASN1=y
    809 NEED_BASE64=y
    810 NEED_TLS_PRF=y
    811 ifdef CONFIG_TLSV12
    812 NEED_TLS_PRF_SHA256=y
    813 endif
    814 NEED_MODEXP=y
    815 NEED_CIPHER=y
    816 CFLAGS += -DCONFIG_TLS_INTERNAL
    817 CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
    818 endif
    819 ifdef NEED_CIPHER
    820 NEED_DES=y
    821 OBJS += ../src/crypto/crypto_internal-cipher.o
    822 endif
    823 ifdef NEED_MODEXP
    824 OBJS += ../src/crypto/crypto_internal-modexp.o
    825 OBJS += ../src/tls/bignum.o
    826 endif
    827 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
    828 OBJS += ../src/crypto/crypto_libtomcrypt.o
    829 LIBS += -ltomcrypt -ltfm
    830 LIBS_h += -ltomcrypt -ltfm
    831 CONFIG_INTERNAL_SHA256=y
    832 CONFIG_INTERNAL_RC4=y
    833 CONFIG_INTERNAL_DH_GROUP5=y
    834 endif
    835 ifeq ($(CONFIG_CRYPTO), internal)
    836 OBJS += ../src/crypto/crypto_internal.o
    837 NEED_AES_DEC=y
    838 CFLAGS += -DCONFIG_CRYPTO_INTERNAL
    839 ifdef CONFIG_INTERNAL_LIBTOMMATH
    840 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
    841 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
    842 CFLAGS += -DLTM_FAST
    843 endif
    844 else
    845 LIBS += -ltommath
    846 LIBS_h += -ltommath
    847 endif
    848 CONFIG_INTERNAL_AES=y
    849 CONFIG_INTERNAL_DES=y
    850 CONFIG_INTERNAL_SHA1=y
    851 CONFIG_INTERNAL_MD4=y
    852 CONFIG_INTERNAL_MD5=y
    853 CONFIG_INTERNAL_SHA256=y
    854 CONFIG_INTERNAL_SHA384=y
    855 CONFIG_INTERNAL_SHA512=y
    856 CONFIG_INTERNAL_RC4=y
    857 CONFIG_INTERNAL_DH_GROUP5=y
    858 endif
    859 ifeq ($(CONFIG_CRYPTO), cryptoapi)
    860 OBJS += ../src/crypto/crypto_cryptoapi.o
    861 OBJS_p += ../src/crypto/crypto_cryptoapi.o
    862 CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
    863 CONFIG_INTERNAL_SHA256=y
    864 CONFIG_INTERNAL_RC4=y
    865 endif
    866 endif
    867 
    868 ifeq ($(CONFIG_TLS), linux)
    869 OBJS += ../src/crypto/crypto_linux.o
    870 ifdef TLS_FUNCS
    871 OBJS += ../src/crypto/crypto_internal-rsa.o
    872 OBJS += ../src/crypto/tls_internal.o
    873 OBJS += ../src/tls/tlsv1_common.o
    874 OBJS += ../src/tls/tlsv1_record.o
    875 OBJS += ../src/tls/tlsv1_cred.o
    876 OBJS += ../src/tls/tlsv1_server.o
    877 OBJS += ../src/tls/tlsv1_server_write.o
    878 OBJS += ../src/tls/tlsv1_server_read.o
    879 OBJS += ../src/tls/rsa.o
    880 OBJS += ../src/tls/x509v3.o
    881 OBJS += ../src/tls/pkcs1.o
    882 OBJS += ../src/tls/pkcs5.o
    883 OBJS += ../src/tls/pkcs8.o
    884 NEED_ASN1=y
    885 NEED_BASE64=y
    886 NEED_TLS_PRF=y
    887 ifdef CONFIG_TLSV12
    888 NEED_TLS_PRF_SHA256=y
    889 endif
    890 NEED_MODEXP=y
    891 NEED_CIPHER=y
    892 CFLAGS += -DCONFIG_TLS_INTERNAL
    893 CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
    894 endif
    895 ifdef NEED_MODEXP
    896 OBJS += ../src/crypto/crypto_internal-modexp.o
    897 OBJS += ../src/tls/bignum.o
    898 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
    899 CFLAGS += -DLTM_FAST
    900 endif
    901 CONFIG_INTERNAL_DH_GROUP5=y
    902 ifdef NEED_FIPS186_2_PRF
    903 OBJS += ../src/crypto/fips_prf_internal.o
    904 OBJS += ../src/crypto/sha1-internal.o
    905 endif
    906 endif
    907 
    908 ifeq ($(CONFIG_TLS), none)
    909 ifdef TLS_FUNCS
    910 OBJS += ../src/crypto/tls_none.o
    911 CFLAGS += -DEAP_TLS_NONE
    912 CONFIG_INTERNAL_AES=y
    913 CONFIG_INTERNAL_SHA1=y
    914 CONFIG_INTERNAL_MD5=y
    915 endif
    916 OBJS += ../src/crypto/crypto_none.o
    917 OBJS_p += ../src/crypto/crypto_none.o
    918 CONFIG_INTERNAL_SHA256=y
    919 CONFIG_INTERNAL_RC4=y
    920 endif
    921 
    922 ifndef TLS_FUNCS
    923 OBJS += ../src/crypto/tls_none.o
    924 ifeq ($(CONFIG_TLS), internal)
    925 CONFIG_INTERNAL_AES=y
    926 CONFIG_INTERNAL_SHA1=y
    927 CONFIG_INTERNAL_MD5=y
    928 CONFIG_INTERNAL_RC4=y
    929 endif
    930 endif
    931 
    932 AESOBJS = # none so far
    933 ifdef CONFIG_INTERNAL_AES
    934 AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
    935 endif
    936 
    937 ifneq ($(CONFIG_TLS), openssl)
    938 ifneq ($(CONFIG_TLS), wolfssl)
    939 AESOBJS += ../src/crypto/aes-wrap.o
    940 endif
    941 endif
    942 ifdef NEED_AES_EAX
    943 AESOBJS += ../src/crypto/aes-eax.o
    944 NEED_AES_CTR=y
    945 endif
    946 ifdef NEED_AES_SIV
    947 AESOBJS += ../src/crypto/aes-siv.o
    948 NEED_AES_CTR=y
    949 endif
    950 ifdef NEED_AES_CTR
    951 AESOBJS += ../src/crypto/aes-ctr.o
    952 endif
    953 ifdef NEED_AES_ENCBLOCK
    954 AESOBJS += ../src/crypto/aes-encblock.o
    955 endif
    956 ifneq ($(CONFIG_TLS), openssl)
    957 ifneq ($(CONFIG_TLS), linux)
    958 ifneq ($(CONFIG_TLS), wolfssl)
    959 AESOBJS += ../src/crypto/aes-omac1.o
    960 endif
    961 endif
    962 endif
    963 ifdef NEED_AES_UNWRAP
    964 ifneq ($(CONFIG_TLS), openssl)
    965 ifneq ($(CONFIG_TLS), linux)
    966 ifneq ($(CONFIG_TLS), wolfssl)
    967 NEED_AES_DEC=y
    968 AESOBJS += ../src/crypto/aes-unwrap.o
    969 endif
    970 endif
    971 endif
    972 endif
    973 ifdef NEED_AES_CBC
    974 NEED_AES_DEC=y
    975 ifneq ($(CONFIG_TLS), openssl)
    976 ifneq ($(CONFIG_TLS), linux)
    977 ifneq ($(CONFIG_TLS), wolfssl)
    978 AESOBJS += ../src/crypto/aes-cbc.o
    979 endif
    980 endif
    981 endif
    982 endif
    983 ifdef NEED_AES_DEC
    984 ifdef CONFIG_INTERNAL_AES
    985 AESOBJS += ../src/crypto/aes-internal-dec.o
    986 endif
    987 endif
    988 ifdef NEED_AES
    989 OBJS += $(AESOBJS)
    990 endif
    991 
    992 ifdef NEED_SHA1
    993 ifneq ($(CONFIG_TLS), openssl)
    994 ifneq ($(CONFIG_TLS), linux)
    995 ifneq ($(CONFIG_TLS), gnutls)
    996 ifneq ($(CONFIG_TLS), wolfssl)
    997 SHA1OBJS += ../src/crypto/sha1.o
    998 endif
    999 endif
   1000 endif
   1001 endif
   1002 SHA1OBJS += ../src/crypto/sha1-prf.o
   1003 ifdef CONFIG_INTERNAL_SHA1
   1004 SHA1OBJS += ../src/crypto/sha1-internal.o
   1005 ifdef NEED_FIPS186_2_PRF
   1006 SHA1OBJS += ../src/crypto/fips_prf_internal.o
   1007 endif
   1008 endif
   1009 ifneq ($(CONFIG_TLS), openssl)
   1010 ifneq ($(CONFIG_TLS), wolfssl)
   1011 SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
   1012 endif
   1013 endif
   1014 ifdef NEED_T_PRF
   1015 SHA1OBJS += ../src/crypto/sha1-tprf.o
   1016 endif
   1017 ifdef NEED_TLS_PRF
   1018 SHA1OBJS += ../src/crypto/sha1-tlsprf.o
   1019 endif
   1020 endif
   1021 
   1022 ifdef NEED_SHA1
   1023 OBJS += $(SHA1OBJS)
   1024 endif
   1025 
   1026 ifneq ($(CONFIG_TLS), openssl)
   1027 ifneq ($(CONFIG_TLS), linux)
   1028 ifneq ($(CONFIG_TLS), gnutls)
   1029 ifneq ($(CONFIG_TLS), wolfssl)
   1030 OBJS += ../src/crypto/md5.o
   1031 endif
   1032 endif
   1033 endif
   1034 endif
   1035 
   1036 ifdef NEED_MD5
   1037 ifdef CONFIG_INTERNAL_MD5
   1038 OBJS += ../src/crypto/md5-internal.o
   1039 HOBJS += ../src/crypto/md5-internal.o
   1040 endif
   1041 endif
   1042 
   1043 ifdef NEED_MD4
   1044 ifdef CONFIG_INTERNAL_MD4
   1045 OBJS += ../src/crypto/md4-internal.o
   1046 endif
   1047 endif
   1048 
   1049 ifdef NEED_DES
   1050 CFLAGS += -DCONFIG_DES
   1051 ifdef CONFIG_INTERNAL_DES
   1052 OBJS += ../src/crypto/des-internal.o
   1053 endif
   1054 endif
   1055 
   1056 ifdef CONFIG_NO_RC4
   1057 CFLAGS += -DCONFIG_NO_RC4
   1058 endif
   1059 
   1060 ifdef NEED_RC4
   1061 ifdef CONFIG_INTERNAL_RC4
   1062 ifndef CONFIG_NO_RC4
   1063 OBJS += ../src/crypto/rc4.o
   1064 endif
   1065 endif
   1066 endif
   1067 
   1068 CFLAGS += -DCONFIG_SHA256
   1069 ifneq ($(CONFIG_TLS), openssl)
   1070 ifneq ($(CONFIG_TLS), linux)
   1071 ifneq ($(CONFIG_TLS), gnutls)
   1072 ifneq ($(CONFIG_TLS), wolfssl)
   1073 OBJS += ../src/crypto/sha256.o
   1074 endif
   1075 endif
   1076 endif
   1077 endif
   1078 OBJS += ../src/crypto/sha256-prf.o
   1079 ifdef CONFIG_INTERNAL_SHA256
   1080 OBJS += ../src/crypto/sha256-internal.o
   1081 endif
   1082 ifdef NEED_TLS_PRF_SHA256
   1083 OBJS += ../src/crypto/sha256-tlsprf.o
   1084 endif
   1085 ifdef NEED_TLS_PRF_SHA384
   1086 OBJS += ../src/crypto/sha384-tlsprf.o
   1087 endif
   1088 ifdef NEED_HMAC_SHA256_KDF
   1089 OBJS += ../src/crypto/sha256-kdf.o
   1090 endif
   1091 ifdef NEED_HMAC_SHA384_KDF
   1092 OBJS += ../src/crypto/sha384-kdf.o
   1093 endif
   1094 ifdef NEED_HMAC_SHA512_KDF
   1095 OBJS += ../src/crypto/sha512-kdf.o
   1096 endif
   1097 ifdef NEED_SHA384
   1098 CFLAGS += -DCONFIG_SHA384
   1099 ifneq ($(CONFIG_TLS), openssl)
   1100 ifneq ($(CONFIG_TLS), linux)
   1101 ifneq ($(CONFIG_TLS), gnutls)
   1102 ifneq ($(CONFIG_TLS), wolfssl)
   1103 OBJS += ../src/crypto/sha384.o
   1104 endif
   1105 endif
   1106 endif
   1107 endif
   1108 OBJS += ../src/crypto/sha384-prf.o
   1109 endif
   1110 ifdef NEED_SHA512
   1111 CFLAGS += -DCONFIG_SHA512
   1112 ifneq ($(CONFIG_TLS), openssl)
   1113 ifneq ($(CONFIG_TLS), linux)
   1114 ifneq ($(CONFIG_TLS), gnutls)
   1115 ifneq ($(CONFIG_TLS), wolfssl)
   1116 OBJS += ../src/crypto/sha512.o
   1117 endif
   1118 endif
   1119 endif
   1120 endif
   1121 OBJS += ../src/crypto/sha512-prf.o
   1122 endif
   1123 
   1124 ifdef CONFIG_INTERNAL_SHA384
   1125 CFLAGS += -DCONFIG_INTERNAL_SHA384
   1126 OBJS += ../src/crypto/sha384-internal.o
   1127 endif
   1128 
   1129 ifdef CONFIG_INTERNAL_SHA512
   1130 CFLAGS += -DCONFIG_INTERNAL_SHA512
   1131 OBJS += ../src/crypto/sha512-internal.o
   1132 endif
   1133 
   1134 ifdef NEED_ASN1
   1135 OBJS += ../src/tls/asn1.o
   1136 endif
   1137 
   1138 ifdef NEED_DH_GROUPS
   1139 OBJS += ../src/crypto/dh_groups.o
   1140 endif
   1141 ifdef NEED_DH_GROUPS_ALL
   1142 CFLAGS += -DALL_DH_GROUPS
   1143 endif
   1144 ifdef CONFIG_INTERNAL_DH_GROUP5
   1145 ifdef NEED_DH_GROUPS
   1146 OBJS += ../src/crypto/dh_group5.o
   1147 endif
   1148 endif
   1149 
   1150 ifdef NEED_ECC
   1151 CFLAGS += -DCONFIG_ECC
   1152 endif
   1153 
   1154 ifdef CONFIG_NO_RANDOM_POOL
   1155 CFLAGS += -DCONFIG_NO_RANDOM_POOL
   1156 else
   1157 ifdef CONFIG_GETRANDOM
   1158 CFLAGS += -DCONFIG_GETRANDOM
   1159 endif
   1160 OBJS += ../src/crypto/random.o
   1161 HOBJS += ../src/crypto/random.o
   1162 HOBJS += ../src/utils/eloop.o
   1163 HOBJS += $(SHA1OBJS)
   1164 ifneq ($(CONFIG_TLS), openssl)
   1165 ifneq ($(CONFIG_TLS), linux)
   1166 ifneq ($(CONFIG_TLS), wolfssl)
   1167 HOBJS += ../src/crypto/md5.o
   1168 endif
   1169 endif
   1170 endif
   1171 endif
   1172 
   1173 ifdef CONFIG_RADIUS_SERVER
   1174 CFLAGS += -DRADIUS_SERVER
   1175 OBJS += ../src/radius/radius_server.o
   1176 endif
   1177 
   1178 ifdef CONFIG_IPV6
   1179 CFLAGS += -DCONFIG_IPV6
   1180 endif
   1181 
   1182 ifdef CONFIG_DRIVER_RADIUS_ACL
   1183 CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
   1184 endif
   1185 
   1186 ifdef NEED_BASE64
   1187 OBJS += ../src/utils/base64.o
   1188 endif
   1189 
   1190 ifdef NEED_JSON
   1191 OBJS += ../src/utils/json.o
   1192 CFLAGS += -DCONFIG_JSON
   1193 endif
   1194 
   1195 ifdef NEED_AP_MLME
   1196 OBJS += ../src/ap/wmm.o
   1197 OBJS += ../src/ap/ap_list.o
   1198 OBJS += ../src/ap/comeback_token.o
   1199 OBJS += ../src/pasn/pasn_responder.o
   1200 OBJS += ../src/pasn/pasn_common.o
   1201 OBJS += ../src/ap/ieee802_11.o
   1202 OBJS += ../src/ap/hw_features.o
   1203 OBJS += ../src/ap/dfs.o
   1204 CFLAGS += -DNEED_AP_MLME
   1205 endif
   1206 OBJS += ../src/ap/ieee802_11_ht.o
   1207 
   1208 ifdef CONFIG_IEEE80211AC
   1209 OBJS += ../src/ap/ieee802_11_vht.o
   1210 endif
   1211 
   1212 ifdef CONFIG_P2P_MANAGER
   1213 CFLAGS += -DCONFIG_P2P_MANAGER
   1214 OBJS += ../src/ap/p2p_hostapd.o
   1215 endif
   1216 
   1217 ifdef CONFIG_HS20
   1218 CFLAGS += -DCONFIG_HS20
   1219 OBJS += ../src/ap/hs20.o
   1220 CONFIG_INTERWORKING=y
   1221 endif
   1222 
   1223 ifdef CONFIG_INTERWORKING
   1224 CFLAGS += -DCONFIG_INTERWORKING
   1225 NEED_GAS=y
   1226 endif
   1227 
   1228 ifdef NEED_GAS
   1229 OBJS += ../src/common/gas.o
   1230 OBJS += ../src/ap/gas_serv.o
   1231 endif
   1232 
   1233 ifdef CONFIG_PROXYARP
   1234 CFLAGS += -DCONFIG_PROXYARP
   1235 OBJS += ../src/ap/x_snoop.o
   1236 OBJS += ../src/ap/dhcp_snoop.o
   1237 ifdef CONFIG_IPV6
   1238 OBJS += ../src/ap/ndisc_snoop.o
   1239 endif
   1240 endif
   1241 
   1242 OBJS += ../src/drivers/driver_common.o
   1243 
   1244 ifdef CONFIG_WPA_CLI_EDIT
   1245 OBJS_c += ../src/utils/edit.o
   1246 else
   1247 OBJS_c += ../src/utils/edit_simple.o
   1248 endif
   1249 
   1250 ifdef CONFIG_ACS
   1251 CFLAGS += -DCONFIG_ACS
   1252 OBJS += ../src/ap/acs.o
   1253 LIBS += -lm
   1254 endif
   1255 
   1256 ifdef CONFIG_NO_STDOUT_DEBUG
   1257 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
   1258 endif
   1259 
   1260 ifdef CONFIG_DEBUG_SYSLOG
   1261 CFLAGS += -DCONFIG_DEBUG_SYSLOG
   1262 endif
   1263 
   1264 ifdef CONFIG_DEBUG_LINUX_TRACING
   1265 CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
   1266 endif
   1267 
   1268 ifdef CONFIG_DEBUG_FILE
   1269 CFLAGS += -DCONFIG_DEBUG_FILE
   1270 endif
   1271 
   1272 ifdef CONFIG_SQLITE
   1273 CFLAGS += -DCONFIG_SQLITE
   1274 LIBS += -lsqlite3
   1275 LIBS_h += -lsqlite3
   1276 endif
   1277 
   1278 ifdef CONFIG_FST
   1279 CFLAGS += -DCONFIG_FST
   1280 OBJS += ../src/fst/fst.o
   1281 OBJS += ../src/fst/fst_group.o
   1282 OBJS += ../src/fst/fst_iface.o
   1283 OBJS += ../src/fst/fst_session.o
   1284 OBJS += ../src/fst/fst_ctrl_aux.o
   1285 ifdef CONFIG_FST_TEST
   1286 CFLAGS += -DCONFIG_FST_TEST
   1287 endif
   1288 ifndef CONFIG_NO_CTRL_IFACE
   1289 OBJS += ../src/fst/fst_ctrl_iface.o
   1290 endif
   1291 endif
   1292 
   1293 ifdef CONFIG_WEP
   1294 CFLAGS += -DCONFIG_WEP
   1295 endif
   1296 
   1297 ifdef CONFIG_NO_TKIP
   1298 CFLAGS += -DCONFIG_NO_TKIP
   1299 endif
   1300 
   1301 $(DESTDIR)$(BINDIR)/%: %
   1302 	install -D $(<) $(@)
   1303 
   1304 install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL))
   1305 
   1306 _OBJS_VAR := OBJS
   1307 include ../src/objs.mk
   1308 
   1309 hostapd: $(OBJS)
   1310 	$(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
   1311 	@$(E) "  LD " $@
   1312 
   1313 ifdef CONFIG_WPA_TRACE
   1314 OBJS_c += ../src/utils/trace.o
   1315 endif
   1316 
   1317 _OBJS_VAR := OBJS_c
   1318 include ../src/objs.mk
   1319 
   1320 hostapd_cli: $(OBJS_c)
   1321 	$(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
   1322 	@$(E) "  LD " $@
   1323 
   1324 NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
   1325 NOBJS += ../src/utils/common.o
   1326 ifdef NEED_RC4
   1327 ifdef CONFIG_INTERNAL_RC4
   1328 ifndef CONFIG_NO_RC4
   1329 NOBJS += ../src/crypto/rc4.o
   1330 endif
   1331 endif
   1332 endif
   1333 ifdef CONFIG_INTERNAL_MD5
   1334 NOBJS += ../src/crypto/md5-internal.o
   1335 endif
   1336 NOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
   1337 NOBJS += ../src/utils/os_$(CONFIG_OS).o
   1338 NOBJS += ../src/utils/wpa_debug.o
   1339 NOBJS += ../src/utils/wpabuf.o
   1340 ifdef CONFIG_WPA_TRACE
   1341 NOBJS += ../src/utils/trace.o
   1342 endif
   1343 
   1344 HOBJS += hlr_auc_gw.o ../src/utils/common.o ../src/utils/wpa_debug.o ../src/utils/os_$(CONFIG_OS).o ../src/utils/wpabuf.o ../src/crypto/milenage.o
   1345 HOBJS += ../src/crypto/aes-encblock.o
   1346 ifdef CONFIG_INTERNAL_AES
   1347 HOBJS += ../src/crypto/aes-internal.o
   1348 HOBJS += ../src/crypto/aes-internal-enc.o
   1349 endif
   1350 ifeq ($(CONFIG_TLS), linux)
   1351 HOBJS += ../src/crypto/crypto_linux.o
   1352 endif
   1353 
   1354 SOBJS += sae_pk_gen.o
   1355 SOBJS +=  ../src/utils/common.o
   1356 SOBJS += ../src/utils/os_$(CONFIG_OS).o
   1357 SOBJS += ../src/utils/base64.o
   1358 SOBJS += ../src/utils/wpa_debug.o
   1359 SOBJS += ../src/utils/wpabuf.o
   1360 ifdef CONFIG_WPA_TRACE
   1361 SOBJS += ../src/utils/trace.o
   1362 endif
   1363 SOBJS += ../src/common/ieee802_11_common.o
   1364 SOBJS += ../src/common/sae.o
   1365 SOBJS += ../src/common/sae_pk.o
   1366 SOBJS += ../src/common/dragonfly.o
   1367 SOBJS += $(AESOBJS)
   1368 SOBJS += ../src/crypto/sha256-prf.o
   1369 SOBJS += ../src/crypto/sha384-prf.o
   1370 SOBJS += ../src/crypto/sha512-prf.o
   1371 SOBJS += ../src/crypto/dh_groups.o
   1372 SOBJS += ../src/crypto/sha256-kdf.o
   1373 SOBJS += ../src/crypto/sha384-kdf.o
   1374 SOBJS += ../src/crypto/sha512-kdf.o
   1375 
   1376 _OBJS_VAR := NOBJS
   1377 include ../src/objs.mk
   1378 _OBJS_VAR := HOBJS
   1379 include ../src/objs.mk
   1380 _OBJS_VAR := SOBJS
   1381 include ../src/objs.mk
   1382 
   1383 nt_password_hash: $(NOBJS)
   1384 	$(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
   1385 	@$(E) "  LD " $@
   1386 
   1387 hlr_auc_gw: $(HOBJS)
   1388 	$(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
   1389 	@$(E) "  LD " $@
   1390 
   1391 sae_pk_gen: $(SOBJS)
   1392 	$(Q)$(CC) $(LDFLAGS) -o sae_pk_gen $(SOBJS) $(LIBS_s)
   1393 	@$(E) "  LD " $@
   1394 
   1395 .PHONY: lcov-html
   1396 lcov-html:
   1397 	lcov -c -d $(BUILDDIR) > lcov.info
   1398 	genhtml lcov.info --output-directory lcov-html
   1399 
   1400 clean: common-clean
   1401 	rm -f core *~ nt_password_hash hlr_auc_gw
   1402 	rm -f sae_pk_gen
   1403 	rm -f lcov.info
   1404 	rm -rf lcov-html
   1405