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 -fno-inline -fno-optimize-sibling-calls 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 NEED_BASE64=y 303 OBJS += ../src/common/sae_pk.o 304 endif 305 NEED_ECC=y 306 NEED_DH_GROUPS=y 307 NEED_HMAC_SHA256_KDF=y 308 NEED_AP_MLME=y 309 NEED_DRAGONFLY=y 310 endif 311 312 ifdef CONFIG_OWE 313 CFLAGS += -DCONFIG_OWE 314 NEED_ECC=y 315 NEED_HMAC_SHA256_KDF=y 316 NEED_HMAC_SHA384_KDF=y 317 NEED_HMAC_SHA512_KDF=y 318 NEED_SHA384=y 319 NEED_SHA512=y 320 endif 321 322 ifdef CONFIG_AIRTIME_POLICY 323 CFLAGS += -DCONFIG_AIRTIME_POLICY 324 OBJS += ../src/ap/airtime_policy.o 325 endif 326 327 ifdef CONFIG_FILS 328 CFLAGS += -DCONFIG_FILS 329 OBJS += ../src/ap/fils_hlp.o 330 NEED_SHA384=y 331 NEED_AES_SIV=y 332 ifdef CONFIG_FILS_SK_PFS 333 CFLAGS += -DCONFIG_FILS_SK_PFS 334 NEED_ECC=y 335 endif 336 endif 337 338 ifdef CONFIG_WNM 339 CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP 340 OBJS += ../src/ap/wnm_ap.o 341 endif 342 343 ifdef CONFIG_IEEE80211AC 344 CFLAGS += -DCONFIG_IEEE80211AC 345 endif 346 347 ifdef CONFIG_IEEE80211BE 348 CONFIG_IEEE80211AX=y 349 CFLAGS += -DCONFIG_IEEE80211BE 350 OBJS += ../src/ap/ieee802_11_eht.o 351 endif 352 353 ifdef CONFIG_IEEE80211AX 354 CFLAGS += -DCONFIG_IEEE80211AX 355 OBJS += ../src/ap/ieee802_11_he.o 356 endif 357 358 ifdef CONFIG_MBO 359 CFLAGS += -DCONFIG_MBO 360 OBJS += ../src/ap/mbo_ap.o 361 endif 362 363 include ../src/drivers/drivers.mak 364 OBJS += $(DRV_AP_OBJS) 365 CFLAGS += $(DRV_AP_CFLAGS) 366 LDFLAGS += $(DRV_AP_LDFLAGS) 367 LIBS += $(DRV_AP_LIBS) 368 369 ifdef CONFIG_L2_PACKET 370 ifdef CONFIG_DNET_PCAP 371 ifdef CONFIG_L2_FREEBSD 372 LIBS += -lpcap 373 OBJS += ../src/l2_packet/l2_packet_freebsd.o 374 else 375 LIBS += -ldnet -lpcap 376 OBJS += ../src/l2_packet/l2_packet_pcap.o 377 endif 378 else 379 OBJS += ../src/l2_packet/l2_packet_linux.o 380 endif 381 else 382 OBJS += ../src/l2_packet/l2_packet_none.o 383 endif 384 385 386 ifdef CONFIG_ERP 387 CFLAGS += -DCONFIG_ERP 388 NEED_HMAC_SHA256_KDF=y 389 endif 390 391 ifdef CONFIG_EAP_MD5 392 CFLAGS += -DEAP_SERVER_MD5 393 OBJS += ../src/eap_server/eap_server_md5.o 394 CHAP=y 395 endif 396 397 ifdef CONFIG_EAP_TLS 398 CFLAGS += -DEAP_SERVER_TLS 399 OBJS += ../src/eap_server/eap_server_tls.o 400 TLS_FUNCS=y 401 endif 402 403 ifdef CONFIG_EAP_UNAUTH_TLS 404 CFLAGS += -DEAP_SERVER_UNAUTH_TLS 405 ifndef CONFIG_EAP_TLS 406 OBJS += ../src/eap_server/eap_server_tls.o 407 TLS_FUNCS=y 408 endif 409 endif 410 411 ifdef CONFIG_EAP_PEAP 412 CFLAGS += -DEAP_SERVER_PEAP 413 OBJS += ../src/eap_server/eap_server_peap.o 414 OBJS += ../src/eap_common/eap_peap_common.o 415 TLS_FUNCS=y 416 CONFIG_EAP_MSCHAPV2=y 417 endif 418 419 ifdef CONFIG_EAP_TTLS 420 CFLAGS += -DEAP_SERVER_TTLS 421 OBJS += ../src/eap_server/eap_server_ttls.o 422 TLS_FUNCS=y 423 CHAP=y 424 endif 425 426 ifdef CONFIG_EAP_MSCHAPV2 427 CFLAGS += -DEAP_SERVER_MSCHAPV2 428 OBJS += ../src/eap_server/eap_server_mschapv2.o 429 MS_FUNCS=y 430 endif 431 432 ifdef CONFIG_EAP_GTC 433 CFLAGS += -DEAP_SERVER_GTC 434 OBJS += ../src/eap_server/eap_server_gtc.o 435 endif 436 437 ifdef CONFIG_EAP_SIM 438 CFLAGS += -DEAP_SERVER_SIM 439 OBJS += ../src/eap_server/eap_server_sim.o 440 CONFIG_EAP_SIM_COMMON=y 441 NEED_AES_CBC=y 442 endif 443 444 ifdef CONFIG_EAP_AKA 445 CFLAGS += -DEAP_SERVER_AKA 446 OBJS += ../src/eap_server/eap_server_aka.o 447 CONFIG_EAP_SIM_COMMON=y 448 NEED_AES_CBC=y 449 endif 450 451 ifdef CONFIG_EAP_AKA_PRIME 452 CFLAGS += -DEAP_SERVER_AKA_PRIME 453 endif 454 455 ifdef CONFIG_EAP_SIM_COMMON 456 OBJS += ../src/eap_common/eap_sim_common.o 457 # Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be 458 # replaced with another file implementing the interface specified in 459 # eap_sim_db.h. 460 OBJS += ../src/eap_server/eap_sim_db.o 461 NEED_FIPS186_2_PRF=y 462 endif 463 464 ifdef CONFIG_EAP_PAX 465 CFLAGS += -DEAP_SERVER_PAX 466 OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o 467 endif 468 469 ifdef CONFIG_EAP_PSK 470 CFLAGS += -DEAP_SERVER_PSK 471 OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o 472 NEED_AES_ENCBLOCK=y 473 NEED_AES_EAX=y 474 endif 475 476 ifdef CONFIG_EAP_SAKE 477 CFLAGS += -DEAP_SERVER_SAKE 478 OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o 479 endif 480 481 ifdef CONFIG_EAP_GPSK 482 CFLAGS += -DEAP_SERVER_GPSK 483 OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o 484 ifdef CONFIG_EAP_GPSK_SHA256 485 CFLAGS += -DEAP_GPSK_SHA256 486 endif 487 endif 488 489 ifdef CONFIG_EAP_PWD 490 CFLAGS += -DEAP_SERVER_PWD 491 OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o 492 NEED_ECC=y 493 NEED_DRAGONFLY=y 494 endif 495 496 ifdef CONFIG_EAP_EKE 497 CFLAGS += -DEAP_SERVER_EKE 498 OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o 499 NEED_DH_GROUPS=y 500 NEED_DH_GROUPS_ALL=y 501 endif 502 503 ifdef CONFIG_EAP_VENDOR_TEST 504 CFLAGS += -DEAP_SERVER_VENDOR_TEST 505 OBJS += ../src/eap_server/eap_server_vendor_test.o 506 endif 507 508 ifdef CONFIG_EAP_FAST 509 CFLAGS += -DEAP_SERVER_FAST 510 OBJS += ../src/eap_server/eap_server_fast.o 511 OBJS += ../src/eap_common/eap_fast_common.o 512 TLS_FUNCS=y 513 NEED_T_PRF=y 514 NEED_AES_UNWRAP=y 515 endif 516 517 ifdef CONFIG_EAP_TEAP 518 CFLAGS += -DEAP_SERVER_TEAP 519 OBJS += ../src/eap_server/eap_server_teap.o 520 OBJS += ../src/eap_common/eap_teap_common.o 521 TLS_FUNCS=y 522 NEED_T_PRF=y 523 NEED_SHA384=y 524 NEED_TLS_PRF_SHA256=y 525 NEED_TLS_PRF_SHA384=y 526 NEED_AES_UNWRAP=y 527 endif 528 529 ifdef CONFIG_WPS 530 CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC 531 OBJS += ../src/utils/uuid.o 532 OBJS += ../src/ap/wps_hostapd.o 533 OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o 534 OBJS += ../src/wps/wps.o 535 OBJS += ../src/wps/wps_common.o 536 OBJS += ../src/wps/wps_attr_parse.o 537 OBJS += ../src/wps/wps_attr_build.o 538 OBJS += ../src/wps/wps_attr_process.o 539 OBJS += ../src/wps/wps_dev_attr.o 540 OBJS += ../src/wps/wps_enrollee.o 541 OBJS += ../src/wps/wps_registrar.o 542 NEED_DH_GROUPS=y 543 NEED_BASE64=y 544 NEED_AES_CBC=y 545 NEED_MODEXP=y 546 CONFIG_EAP=y 547 548 ifdef CONFIG_WPS_NFC 549 CFLAGS += -DCONFIG_WPS_NFC 550 OBJS += ../src/wps/ndef.o 551 NEED_WPS_OOB=y 552 endif 553 554 ifdef NEED_WPS_OOB 555 CFLAGS += -DCONFIG_WPS_OOB 556 endif 557 558 ifdef CONFIG_WPS_UPNP 559 CFLAGS += -DCONFIG_WPS_UPNP 560 OBJS += ../src/wps/wps_upnp.o 561 OBJS += ../src/wps/wps_upnp_ssdp.o 562 OBJS += ../src/wps/wps_upnp_web.o 563 OBJS += ../src/wps/wps_upnp_event.o 564 OBJS += ../src/wps/wps_upnp_ap.o 565 OBJS += ../src/wps/upnp_xml.o 566 OBJS += ../src/wps/httpread.o 567 OBJS += ../src/wps/http_client.o 568 OBJS += ../src/wps/http_server.o 569 endif 570 571 ifdef CONFIG_WPS_STRICT 572 CFLAGS += -DCONFIG_WPS_STRICT 573 OBJS += ../src/wps/wps_validate.o 574 endif 575 576 ifdef CONFIG_WPS_TESTING 577 CFLAGS += -DCONFIG_WPS_TESTING 578 endif 579 580 endif 581 582 ifdef CONFIG_DPP 583 CFLAGS += -DCONFIG_DPP 584 OBJS += ../src/common/dpp.o 585 OBJS += ../src/common/dpp_auth.o 586 OBJS += ../src/common/dpp_backup.o 587 OBJS += ../src/common/dpp_crypto.o 588 OBJS += ../src/common/dpp_pkex.o 589 OBJS += ../src/common/dpp_reconfig.o 590 OBJS += ../src/common/dpp_tcp.o 591 OBJS += ../src/ap/dpp_hostapd.o 592 OBJS += ../src/ap/gas_query_ap.o 593 NEED_AES_SIV=y 594 NEED_HMAC_SHA256_KDF=y 595 NEED_HMAC_SHA384_KDF=y 596 NEED_HMAC_SHA512_KDF=y 597 NEED_SHA384=y 598 NEED_SHA512=y 599 NEED_ECC=y 600 NEED_JSON=y 601 NEED_GAS=y 602 NEED_BASE64=y 603 NEED_ASN1=y 604 ifdef CONFIG_DPP2 605 CFLAGS += -DCONFIG_DPP2 606 endif 607 ifdef CONFIG_DPP3 608 CFLAGS += -DCONFIG_DPP3 609 endif 610 endif 611 612 ifdef CONFIG_NAN_USD 613 OBJS += ../src/common/nan_de.o 614 OBJS += ../src/ap/nan_usd_ap.o 615 CFLAGS += -DCONFIG_NAN_USD 616 endif 617 618 ifdef CONFIG_PASN 619 CFLAGS += -DCONFIG_PASN 620 CFLAGS += -DCONFIG_PTKSA_CACHE 621 NEED_HMAC_SHA256_KDF=y 622 NEED_HMAC_SHA384_KDF=y 623 NEED_SHA256=y 624 NEED_SHA384=y 625 endif 626 627 ifdef CONFIG_EAP_IKEV2 628 CFLAGS += -DEAP_SERVER_IKEV2 629 OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o 630 OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o 631 NEED_DH_GROUPS=y 632 NEED_DH_GROUPS_ALL=y 633 NEED_MODEXP=y 634 NEED_CIPHER=y 635 endif 636 637 ifdef CONFIG_EAP_TNC 638 CFLAGS += -DEAP_SERVER_TNC 639 OBJS += ../src/eap_server/eap_server_tnc.o 640 OBJS += ../src/eap_server/tncs.o 641 NEED_BASE64=y 642 ifndef CONFIG_DRIVER_BSD 643 LIBS += -ldl 644 endif 645 endif 646 647 ifdef CONFIG_MACSEC 648 CFLAGS += -DCONFIG_MACSEC 649 OBJS += ../src/ap/wpa_auth_kay.o 650 OBJS += ../src/pae/ieee802_1x_cp.o 651 OBJS += ../src/pae/ieee802_1x_kay.o 652 OBJS += ../src/pae/ieee802_1x_key.o 653 OBJS += ../src/pae/ieee802_1x_secy_ops.o 654 endif 655 656 # Basic EAP functionality is needed for EAPOL 657 OBJS += eap_register.o 658 OBJS += ../src/eap_server/eap_server.o 659 OBJS += ../src/eap_common/eap_common.o 660 OBJS += ../src/eap_server/eap_server_methods.o 661 OBJS += ../src/eap_server/eap_server_identity.o 662 CFLAGS += -DEAP_SERVER_IDENTITY 663 664 ifdef CONFIG_EAP 665 CFLAGS += -DEAP_SERVER 666 endif 667 668 ifdef CONFIG_PKCS12 669 CFLAGS += -DPKCS12_FUNCS 670 endif 671 672 ifdef NEED_DRAGONFLY 673 OBJS += ../src/common/dragonfly.o 674 endif 675 676 ifdef MS_FUNCS 677 OBJS += ../src/crypto/ms_funcs.o 678 NEED_DES=y 679 NEED_MD4=y 680 endif 681 682 ifdef CHAP 683 OBJS += ../src/eap_common/chap.o 684 endif 685 686 ifdef CONFIG_RADIUS_TLS 687 TLS_FUNCS=y 688 CFLAGS += -DCONFIG_RADIUS_TLS 689 endif 690 691 ifdef TLS_FUNCS 692 NEED_DES=y 693 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS) 694 CFLAGS += -DEAP_TLS_FUNCS 695 OBJS += ../src/eap_server/eap_server_tls_common.o 696 NEED_TLS_PRF=y 697 endif 698 699 ifndef CONFIG_TLS 700 CONFIG_TLS=openssl 701 endif 702 703 ifdef CONFIG_TLSV11 704 CFLAGS += -DCONFIG_TLSV11 705 endif 706 707 ifdef CONFIG_TLSV12 708 CFLAGS += -DCONFIG_TLSV12 709 endif 710 711 ifeq ($(CONFIG_TLS), wolfssl) 712 CFLAGS += -DCRYPTO_RSA_OAEP_SHA256 713 CONFIG_CRYPTO=wolfssl 714 ifdef TLS_FUNCS 715 OBJS += ../src/crypto/tls_wolfssl.o 716 LIBS += -lwolfssl -lm 717 endif 718 OBJS += ../src/crypto/crypto_wolfssl.o 719 HOBJS += ../src/crypto/crypto_wolfssl.o 720 ifdef NEED_FIPS186_2_PRF 721 OBJS += ../src/crypto/fips_prf_wolfssl.o 722 endif 723 NEED_TLS_PRF_SHA256=y 724 LIBS += -lwolfssl -lm 725 LIBS_h += -lwolfssl -lm 726 ifdef CONFIG_TLS_ADD_DL 727 LIBS += -ldl 728 LIBS_h += -ldl 729 endif 730 endif 731 732 ifeq ($(CONFIG_TLS), openssl) 733 CFLAGS += -DCRYPTO_RSA_OAEP_SHA256 734 CONFIG_CRYPTO=openssl 735 ifdef TLS_FUNCS 736 OBJS += ../src/crypto/tls_openssl.o 737 OBJS += ../src/crypto/tls_openssl_ocsp.o 738 LIBS += -lssl 739 endif 740 OBJS += ../src/crypto/crypto_openssl.o 741 HOBJS += ../src/crypto/crypto_openssl.o 742 SOBJS += ../src/crypto/crypto_openssl.o 743 ifdef NEED_FIPS186_2_PRF 744 OBJS += ../src/crypto/fips_prf_openssl.o 745 endif 746 NEED_TLS_PRF_SHA256=y 747 LIBS += -lcrypto 748 LIBS_h += -lcrypto 749 LIBS_n += -lcrypto 750 LIBS_s += -lcrypto 751 ifdef CONFIG_TLS_ADD_DL 752 LIBS += -ldl 753 LIBS_h += -ldl 754 LIBS_s += -ldl 755 endif 756 ifndef CONFIG_TLS_DEFAULT_CIPHERS 757 CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW" 758 endif 759 CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\" 760 endif 761 762 ifeq ($(CONFIG_TLS), gnutls) 763 ifndef CONFIG_CRYPTO 764 # default to libgcrypt 765 CONFIG_CRYPTO=gnutls 766 endif 767 ifdef TLS_FUNCS 768 OBJS += ../src/crypto/tls_gnutls.o 769 LIBS += -lgnutls -lgpg-error 770 endif 771 OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 772 HOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 773 ifdef NEED_FIPS186_2_PRF 774 OBJS += ../src/crypto/fips_prf_internal.o 775 SHA1OBJS += ../src/crypto/sha1-internal.o 776 endif 777 ifeq ($(CONFIG_CRYPTO), gnutls) 778 LIBS += -lgcrypt 779 LIBS_h += -lgcrypt 780 LIBS_n += -lgcrypt 781 CONFIG_INTERNAL_RC4=y 782 CONFIG_INTERNAL_DH_GROUP5=y 783 endif 784 ifeq ($(CONFIG_CRYPTO), nettle) 785 LIBS += -lnettle -lgmp 786 LIBS_p += -lnettle -lgmp 787 CONFIG_INTERNAL_RC4=y 788 CONFIG_INTERNAL_DH_GROUP5=y 789 endif 790 endif 791 792 ifeq ($(CONFIG_TLS), internal) 793 ifndef CONFIG_CRYPTO 794 CONFIG_CRYPTO=internal 795 endif 796 ifdef TLS_FUNCS 797 OBJS += ../src/crypto/crypto_internal-rsa.o 798 OBJS += ../src/crypto/tls_internal.o 799 OBJS += ../src/tls/tlsv1_common.o 800 OBJS += ../src/tls/tlsv1_record.o 801 OBJS += ../src/tls/tlsv1_cred.o 802 OBJS += ../src/tls/tlsv1_server.o 803 OBJS += ../src/tls/tlsv1_server_write.o 804 OBJS += ../src/tls/tlsv1_server_read.o 805 OBJS += ../src/tls/rsa.o 806 OBJS += ../src/tls/x509v3.o 807 OBJS += ../src/tls/pkcs1.o 808 OBJS += ../src/tls/pkcs5.o 809 OBJS += ../src/tls/pkcs8.o 810 NEED_ASN1=y 811 NEED_BASE64=y 812 NEED_TLS_PRF=y 813 ifdef CONFIG_TLSV12 814 NEED_TLS_PRF_SHA256=y 815 endif 816 NEED_MODEXP=y 817 NEED_CIPHER=y 818 CFLAGS += -DCONFIG_TLS_INTERNAL 819 CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 820 endif 821 ifdef NEED_CIPHER 822 NEED_DES=y 823 OBJS += ../src/crypto/crypto_internal-cipher.o 824 endif 825 ifdef NEED_MODEXP 826 OBJS += ../src/crypto/crypto_internal-modexp.o 827 OBJS += ../src/tls/bignum.o 828 endif 829 ifeq ($(CONFIG_CRYPTO), libtomcrypt) 830 OBJS += ../src/crypto/crypto_libtomcrypt.o 831 LIBS += -ltomcrypt -ltfm 832 LIBS_h += -ltomcrypt -ltfm 833 CONFIG_INTERNAL_SHA256=y 834 CONFIG_INTERNAL_RC4=y 835 CONFIG_INTERNAL_DH_GROUP5=y 836 endif 837 ifeq ($(CONFIG_CRYPTO), internal) 838 OBJS += ../src/crypto/crypto_internal.o 839 NEED_AES_DEC=y 840 CFLAGS += -DCONFIG_CRYPTO_INTERNAL 841 ifdef CONFIG_INTERNAL_LIBTOMMATH 842 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 843 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 844 CFLAGS += -DLTM_FAST 845 endif 846 else 847 LIBS += -ltommath 848 LIBS_h += -ltommath 849 endif 850 CONFIG_INTERNAL_AES=y 851 CONFIG_INTERNAL_DES=y 852 CONFIG_INTERNAL_SHA1=y 853 CONFIG_INTERNAL_MD4=y 854 CONFIG_INTERNAL_MD5=y 855 CONFIG_INTERNAL_SHA256=y 856 CONFIG_INTERNAL_SHA384=y 857 CONFIG_INTERNAL_SHA512=y 858 CONFIG_INTERNAL_RC4=y 859 CONFIG_INTERNAL_DH_GROUP5=y 860 endif 861 ifeq ($(CONFIG_CRYPTO), cryptoapi) 862 OBJS += ../src/crypto/crypto_cryptoapi.o 863 OBJS_p += ../src/crypto/crypto_cryptoapi.o 864 CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 865 CONFIG_INTERNAL_SHA256=y 866 CONFIG_INTERNAL_RC4=y 867 endif 868 endif 869 870 ifeq ($(CONFIG_TLS), linux) 871 OBJS += ../src/crypto/crypto_linux.o 872 ifdef TLS_FUNCS 873 OBJS += ../src/crypto/crypto_internal-rsa.o 874 OBJS += ../src/crypto/tls_internal.o 875 OBJS += ../src/tls/tlsv1_common.o 876 OBJS += ../src/tls/tlsv1_record.o 877 OBJS += ../src/tls/tlsv1_cred.o 878 OBJS += ../src/tls/tlsv1_server.o 879 OBJS += ../src/tls/tlsv1_server_write.o 880 OBJS += ../src/tls/tlsv1_server_read.o 881 OBJS += ../src/tls/rsa.o 882 OBJS += ../src/tls/x509v3.o 883 OBJS += ../src/tls/pkcs1.o 884 OBJS += ../src/tls/pkcs5.o 885 OBJS += ../src/tls/pkcs8.o 886 NEED_ASN1=y 887 NEED_BASE64=y 888 NEED_TLS_PRF=y 889 ifdef CONFIG_TLSV12 890 NEED_TLS_PRF_SHA256=y 891 endif 892 NEED_MODEXP=y 893 NEED_CIPHER=y 894 CFLAGS += -DCONFIG_TLS_INTERNAL 895 CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 896 endif 897 ifdef NEED_MODEXP 898 OBJS += ../src/crypto/crypto_internal-modexp.o 899 OBJS += ../src/tls/bignum.o 900 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 901 CFLAGS += -DLTM_FAST 902 endif 903 CONFIG_INTERNAL_DH_GROUP5=y 904 ifdef NEED_FIPS186_2_PRF 905 OBJS += ../src/crypto/fips_prf_internal.o 906 OBJS += ../src/crypto/sha1-internal.o 907 endif 908 endif 909 910 ifeq ($(CONFIG_TLS), none) 911 ifdef TLS_FUNCS 912 OBJS += ../src/crypto/tls_none.o 913 CFLAGS += -DEAP_TLS_NONE 914 CONFIG_INTERNAL_AES=y 915 CONFIG_INTERNAL_SHA1=y 916 CONFIG_INTERNAL_MD5=y 917 endif 918 OBJS += ../src/crypto/crypto_none.o 919 OBJS_p += ../src/crypto/crypto_none.o 920 CONFIG_INTERNAL_SHA256=y 921 CONFIG_INTERNAL_RC4=y 922 endif 923 924 ifndef TLS_FUNCS 925 OBJS += ../src/crypto/tls_none.o 926 ifeq ($(CONFIG_TLS), internal) 927 CONFIG_INTERNAL_AES=y 928 CONFIG_INTERNAL_SHA1=y 929 CONFIG_INTERNAL_MD5=y 930 CONFIG_INTERNAL_RC4=y 931 endif 932 endif 933 934 AESOBJS = # none so far 935 ifdef CONFIG_INTERNAL_AES 936 AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o 937 endif 938 939 ifneq ($(CONFIG_TLS), openssl) 940 ifneq ($(CONFIG_TLS), wolfssl) 941 AESOBJS += ../src/crypto/aes-wrap.o 942 endif 943 endif 944 ifdef NEED_AES_EAX 945 AESOBJS += ../src/crypto/aes-eax.o 946 NEED_AES_CTR=y 947 endif 948 ifdef NEED_AES_SIV 949 AESOBJS += ../src/crypto/aes-siv.o 950 NEED_AES_CTR=y 951 endif 952 ifdef NEED_AES_CTR 953 AESOBJS += ../src/crypto/aes-ctr.o 954 endif 955 ifdef NEED_AES_ENCBLOCK 956 AESOBJS += ../src/crypto/aes-encblock.o 957 endif 958 ifneq ($(CONFIG_TLS), openssl) 959 ifneq ($(CONFIG_TLS), linux) 960 ifneq ($(CONFIG_TLS), wolfssl) 961 AESOBJS += ../src/crypto/aes-omac1.o 962 endif 963 endif 964 endif 965 ifdef NEED_AES_UNWRAP 966 ifneq ($(CONFIG_TLS), openssl) 967 ifneq ($(CONFIG_TLS), linux) 968 ifneq ($(CONFIG_TLS), wolfssl) 969 NEED_AES_DEC=y 970 AESOBJS += ../src/crypto/aes-unwrap.o 971 endif 972 endif 973 endif 974 endif 975 ifdef NEED_AES_CBC 976 NEED_AES_DEC=y 977 ifneq ($(CONFIG_TLS), openssl) 978 ifneq ($(CONFIG_TLS), linux) 979 ifneq ($(CONFIG_TLS), wolfssl) 980 AESOBJS += ../src/crypto/aes-cbc.o 981 endif 982 endif 983 endif 984 endif 985 ifdef NEED_AES_DEC 986 ifdef CONFIG_INTERNAL_AES 987 AESOBJS += ../src/crypto/aes-internal-dec.o 988 endif 989 endif 990 ifdef NEED_AES 991 OBJS += $(AESOBJS) 992 endif 993 994 ifdef NEED_SHA1 995 ifneq ($(CONFIG_TLS), openssl) 996 ifneq ($(CONFIG_TLS), linux) 997 ifneq ($(CONFIG_TLS), gnutls) 998 ifneq ($(CONFIG_TLS), wolfssl) 999 SHA1OBJS += ../src/crypto/sha1.o 1000 endif 1001 endif 1002 endif 1003 endif 1004 SHA1OBJS += ../src/crypto/sha1-prf.o 1005 ifdef CONFIG_INTERNAL_SHA1 1006 SHA1OBJS += ../src/crypto/sha1-internal.o 1007 ifdef NEED_FIPS186_2_PRF 1008 SHA1OBJS += ../src/crypto/fips_prf_internal.o 1009 endif 1010 endif 1011 ifneq ($(CONFIG_TLS), openssl) 1012 ifneq ($(CONFIG_TLS), wolfssl) 1013 SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 1014 endif 1015 endif 1016 ifdef NEED_T_PRF 1017 SHA1OBJS += ../src/crypto/sha1-tprf.o 1018 endif 1019 ifdef NEED_TLS_PRF 1020 SHA1OBJS += ../src/crypto/sha1-tlsprf.o 1021 endif 1022 endif 1023 1024 ifdef NEED_SHA1 1025 OBJS += $(SHA1OBJS) 1026 endif 1027 1028 ifneq ($(CONFIG_TLS), openssl) 1029 ifneq ($(CONFIG_TLS), linux) 1030 ifneq ($(CONFIG_TLS), gnutls) 1031 ifneq ($(CONFIG_TLS), wolfssl) 1032 OBJS += ../src/crypto/md5.o 1033 endif 1034 endif 1035 endif 1036 endif 1037 1038 ifdef NEED_MD5 1039 ifdef CONFIG_INTERNAL_MD5 1040 OBJS += ../src/crypto/md5-internal.o 1041 HOBJS += ../src/crypto/md5-internal.o 1042 endif 1043 endif 1044 1045 ifdef NEED_MD4 1046 ifdef CONFIG_INTERNAL_MD4 1047 OBJS += ../src/crypto/md4-internal.o 1048 endif 1049 endif 1050 1051 ifdef NEED_DES 1052 CFLAGS += -DCONFIG_DES 1053 ifdef CONFIG_INTERNAL_DES 1054 OBJS += ../src/crypto/des-internal.o 1055 endif 1056 endif 1057 1058 ifdef CONFIG_NO_RC4 1059 CFLAGS += -DCONFIG_NO_RC4 1060 endif 1061 1062 ifdef NEED_RC4 1063 ifdef CONFIG_INTERNAL_RC4 1064 ifndef CONFIG_NO_RC4 1065 OBJS += ../src/crypto/rc4.o 1066 endif 1067 endif 1068 endif 1069 1070 ifdef CONFIG_SAE 1071 ifdef NEED_SHA384 1072 # Need to add HMAC-SHA384 KDF as well, if SHA384 was enabled. 1073 NEED_HMAC_SHA384_KDF=y 1074 endif 1075 ifdef NEED_SHA512 1076 # Need to add HMAC-SHA512 KDF as well, if SHA512 was enabled. 1077 NEED_HMAC_SHA512_KDF=y 1078 endif 1079 endif 1080 1081 CFLAGS += -DCONFIG_SHA256 1082 ifneq ($(CONFIG_TLS), openssl) 1083 ifneq ($(CONFIG_TLS), linux) 1084 ifneq ($(CONFIG_TLS), gnutls) 1085 ifneq ($(CONFIG_TLS), wolfssl) 1086 OBJS += ../src/crypto/sha256.o 1087 endif 1088 endif 1089 endif 1090 endif 1091 OBJS += ../src/crypto/sha256-prf.o 1092 ifdef CONFIG_INTERNAL_SHA256 1093 OBJS += ../src/crypto/sha256-internal.o 1094 endif 1095 ifdef NEED_TLS_PRF_SHA256 1096 OBJS += ../src/crypto/sha256-tlsprf.o 1097 endif 1098 ifdef NEED_TLS_PRF_SHA384 1099 OBJS += ../src/crypto/sha384-tlsprf.o 1100 endif 1101 ifdef NEED_HMAC_SHA256_KDF 1102 OBJS += ../src/crypto/sha256-kdf.o 1103 endif 1104 ifdef NEED_HMAC_SHA384_KDF 1105 OBJS += ../src/crypto/sha384-kdf.o 1106 endif 1107 ifdef NEED_HMAC_SHA512_KDF 1108 OBJS += ../src/crypto/sha512-kdf.o 1109 endif 1110 ifdef NEED_SHA384 1111 CFLAGS += -DCONFIG_SHA384 1112 ifneq ($(CONFIG_TLS), openssl) 1113 ifneq ($(CONFIG_TLS), linux) 1114 ifneq ($(CONFIG_TLS), gnutls) 1115 ifneq ($(CONFIG_TLS), wolfssl) 1116 OBJS += ../src/crypto/sha384.o 1117 endif 1118 endif 1119 endif 1120 endif 1121 OBJS += ../src/crypto/sha384-prf.o 1122 endif 1123 ifdef NEED_SHA512 1124 CFLAGS += -DCONFIG_SHA512 1125 ifneq ($(CONFIG_TLS), openssl) 1126 ifneq ($(CONFIG_TLS), linux) 1127 ifneq ($(CONFIG_TLS), gnutls) 1128 ifneq ($(CONFIG_TLS), wolfssl) 1129 OBJS += ../src/crypto/sha512.o 1130 endif 1131 endif 1132 endif 1133 endif 1134 OBJS += ../src/crypto/sha512-prf.o 1135 endif 1136 1137 ifdef CONFIG_INTERNAL_SHA384 1138 CFLAGS += -DCONFIG_INTERNAL_SHA384 1139 OBJS += ../src/crypto/sha384-internal.o 1140 endif 1141 1142 ifdef CONFIG_INTERNAL_SHA512 1143 CFLAGS += -DCONFIG_INTERNAL_SHA512 1144 OBJS += ../src/crypto/sha512-internal.o 1145 endif 1146 1147 ifdef NEED_ASN1 1148 OBJS += ../src/tls/asn1.o 1149 endif 1150 1151 ifdef NEED_DH_GROUPS 1152 OBJS += ../src/crypto/dh_groups.o 1153 endif 1154 ifdef NEED_DH_GROUPS_ALL 1155 CFLAGS += -DALL_DH_GROUPS 1156 endif 1157 ifdef CONFIG_INTERNAL_DH_GROUP5 1158 ifdef NEED_DH_GROUPS 1159 OBJS += ../src/crypto/dh_group5.o 1160 endif 1161 endif 1162 1163 ifdef NEED_ECC 1164 CFLAGS += -DCONFIG_ECC 1165 endif 1166 1167 ifdef CONFIG_NO_RANDOM_POOL 1168 CFLAGS += -DCONFIG_NO_RANDOM_POOL 1169 else 1170 ifdef CONFIG_GETRANDOM 1171 CFLAGS += -DCONFIG_GETRANDOM 1172 endif 1173 OBJS += ../src/crypto/random.o 1174 HOBJS += ../src/crypto/random.o 1175 HOBJS += ../src/utils/eloop.o 1176 HOBJS += $(SHA1OBJS) 1177 ifneq ($(CONFIG_TLS), openssl) 1178 ifneq ($(CONFIG_TLS), linux) 1179 ifneq ($(CONFIG_TLS), wolfssl) 1180 HOBJS += ../src/crypto/md5.o 1181 endif 1182 endif 1183 endif 1184 endif 1185 1186 ifdef CONFIG_RADIUS_SERVER 1187 CFLAGS += -DRADIUS_SERVER 1188 OBJS += ../src/radius/radius_server.o 1189 endif 1190 1191 ifdef CONFIG_IPV6 1192 CFLAGS += -DCONFIG_IPV6 1193 endif 1194 1195 ifdef CONFIG_DRIVER_RADIUS_ACL 1196 CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL 1197 endif 1198 1199 ifdef NEED_BASE64 1200 OBJS += ../src/utils/base64.o 1201 endif 1202 1203 ifdef NEED_JSON 1204 OBJS += ../src/utils/json.o 1205 CFLAGS += -DCONFIG_JSON 1206 endif 1207 1208 ifdef NEED_AP_MLME 1209 OBJS += ../src/ap/wmm.o 1210 OBJS += ../src/ap/ap_list.o 1211 OBJS += ../src/ap/comeback_token.o 1212 OBJS += ../src/pasn/pasn_responder.o 1213 OBJS += ../src/pasn/pasn_common.o 1214 OBJS += ../src/ap/ieee802_11.o 1215 OBJS += ../src/ap/hw_features.o 1216 OBJS += ../src/ap/dfs.o 1217 CFLAGS += -DNEED_AP_MLME 1218 endif 1219 OBJS += ../src/ap/ieee802_11_ht.o 1220 1221 ifdef CONFIG_IEEE80211AC 1222 OBJS += ../src/ap/ieee802_11_vht.o 1223 endif 1224 1225 ifdef CONFIG_P2P_MANAGER 1226 CFLAGS += -DCONFIG_P2P_MANAGER 1227 OBJS += ../src/ap/p2p_hostapd.o 1228 endif 1229 1230 ifdef CONFIG_HS20 1231 CFLAGS += -DCONFIG_HS20 1232 OBJS += ../src/ap/hs20.o 1233 CONFIG_INTERWORKING=y 1234 endif 1235 1236 ifdef CONFIG_INTERWORKING 1237 CFLAGS += -DCONFIG_INTERWORKING 1238 NEED_GAS=y 1239 endif 1240 1241 ifdef NEED_GAS 1242 OBJS += ../src/common/gas.o 1243 OBJS += ../src/ap/gas_serv.o 1244 endif 1245 1246 ifdef CONFIG_PROXYARP 1247 CFLAGS += -DCONFIG_PROXYARP 1248 OBJS += ../src/ap/x_snoop.o 1249 OBJS += ../src/ap/dhcp_snoop.o 1250 ifdef CONFIG_IPV6 1251 OBJS += ../src/ap/ndisc_snoop.o 1252 endif 1253 endif 1254 1255 OBJS += ../src/drivers/driver_common.o 1256 1257 ifdef CONFIG_WPA_CLI_EDIT 1258 OBJS_c += ../src/utils/edit.o 1259 else 1260 OBJS_c += ../src/utils/edit_simple.o 1261 endif 1262 1263 ifdef CONFIG_ACS 1264 CFLAGS += -DCONFIG_ACS 1265 OBJS += ../src/ap/acs.o 1266 LIBS += -lm 1267 endif 1268 1269 ifdef CONFIG_NO_STDOUT_DEBUG 1270 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 1271 endif 1272 1273 ifdef CONFIG_DEBUG_SYSLOG 1274 CFLAGS += -DCONFIG_DEBUG_SYSLOG 1275 endif 1276 1277 ifdef CONFIG_DEBUG_LINUX_TRACING 1278 CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING 1279 endif 1280 1281 ifdef CONFIG_DEBUG_FILE 1282 CFLAGS += -DCONFIG_DEBUG_FILE 1283 endif 1284 1285 ifdef CONFIG_SQLITE 1286 CFLAGS += -DCONFIG_SQLITE 1287 LIBS += -lsqlite3 1288 LIBS_h += -lsqlite3 1289 endif 1290 1291 ifdef CONFIG_FST 1292 CFLAGS += -DCONFIG_FST 1293 OBJS += ../src/fst/fst.o 1294 OBJS += ../src/fst/fst_group.o 1295 OBJS += ../src/fst/fst_iface.o 1296 OBJS += ../src/fst/fst_session.o 1297 OBJS += ../src/fst/fst_ctrl_aux.o 1298 ifdef CONFIG_FST_TEST 1299 CFLAGS += -DCONFIG_FST_TEST 1300 endif 1301 ifndef CONFIG_NO_CTRL_IFACE 1302 OBJS += ../src/fst/fst_ctrl_iface.o 1303 endif 1304 endif 1305 1306 ifdef CONFIG_WEP 1307 CFLAGS += -DCONFIG_WEP 1308 endif 1309 1310 ifdef CONFIG_NO_TKIP 1311 CFLAGS += -DCONFIG_NO_TKIP 1312 endif 1313 1314 $(DESTDIR)$(BINDIR)/%: % 1315 install -D $(<) $(@) 1316 1317 install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL)) 1318 1319 _OBJS_VAR := OBJS 1320 include ../src/objs.mk 1321 1322 hostapd: $(OBJS) 1323 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS) 1324 @$(E) " LD " $@ 1325 1326 ifdef CONFIG_WPA_TRACE 1327 OBJS_c += ../src/utils/trace.o 1328 endif 1329 1330 _OBJS_VAR := OBJS_c 1331 include ../src/objs.mk 1332 1333 hostapd_cli: $(OBJS_c) 1334 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c) 1335 @$(E) " LD " $@ 1336 1337 NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) 1338 NOBJS += ../src/utils/common.o 1339 ifdef NEED_RC4 1340 ifdef CONFIG_INTERNAL_RC4 1341 ifndef CONFIG_NO_RC4 1342 NOBJS += ../src/crypto/rc4.o 1343 endif 1344 endif 1345 endif 1346 ifdef CONFIG_INTERNAL_MD5 1347 NOBJS += ../src/crypto/md5-internal.o 1348 endif 1349 NOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1350 NOBJS += ../src/utils/os_$(CONFIG_OS).o 1351 NOBJS += ../src/utils/wpa_debug.o 1352 NOBJS += ../src/utils/wpabuf.o 1353 ifdef CONFIG_WPA_TRACE 1354 NOBJS += ../src/utils/trace.o 1355 endif 1356 1357 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 1358 HOBJS += ../src/crypto/aes-encblock.o 1359 ifdef CONFIG_INTERNAL_AES 1360 HOBJS += ../src/crypto/aes-internal.o 1361 HOBJS += ../src/crypto/aes-internal-enc.o 1362 endif 1363 ifeq ($(CONFIG_TLS), linux) 1364 HOBJS += ../src/crypto/crypto_linux.o 1365 endif 1366 1367 SOBJS += sae_pk_gen.o 1368 SOBJS += ../src/utils/common.o 1369 SOBJS += ../src/utils/os_$(CONFIG_OS).o 1370 SOBJS += ../src/utils/base64.o 1371 SOBJS += ../src/utils/wpa_debug.o 1372 SOBJS += ../src/utils/wpabuf.o 1373 ifdef CONFIG_WPA_TRACE 1374 SOBJS += ../src/utils/trace.o 1375 endif 1376 SOBJS += ../src/common/ieee802_11_common.o 1377 SOBJS += ../src/common/sae.o 1378 SOBJS += ../src/common/sae_pk.o 1379 SOBJS += ../src/common/dragonfly.o 1380 SOBJS += $(AESOBJS) 1381 SOBJS += ../src/crypto/sha384.o 1382 SOBJS += ../src/crypto/sha512.o 1383 SOBJS += ../src/crypto/sha256-prf.o 1384 SOBJS += ../src/crypto/sha384-prf.o 1385 SOBJS += ../src/crypto/sha512-prf.o 1386 SOBJS += ../src/crypto/dh_groups.o 1387 SOBJS += ../src/crypto/sha256-kdf.o 1388 SOBJS += ../src/crypto/sha384-kdf.o 1389 SOBJS += ../src/crypto/sha512-kdf.o 1390 SOBJS += ../src/common/wpa_common.o 1391 SOBJS += ../src/crypto/random.o 1392 SOBJS += ../src/crypto/sha1-prf.o 1393 SOBJS += ../src/utils/eloop.o 1394 1395 _OBJS_VAR := NOBJS 1396 include ../src/objs.mk 1397 _OBJS_VAR := HOBJS 1398 include ../src/objs.mk 1399 _OBJS_VAR := SOBJS 1400 include ../src/objs.mk 1401 1402 nt_password_hash: $(NOBJS) 1403 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n) 1404 @$(E) " LD " $@ 1405 1406 hlr_auc_gw: $(HOBJS) 1407 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h) 1408 @$(E) " LD " $@ 1409 1410 sae_pk_gen: $(SOBJS) 1411 $(Q)$(CC) $(LDFLAGS) -o sae_pk_gen $(SOBJS) $(LIBS_s) 1412 @$(E) " LD " $@ 1413 1414 .PHONY: lcov-html 1415 lcov-html: 1416 lcov -c -d $(BUILDDIR) > lcov.info 1417 genhtml lcov.info --output-directory lcov-html 1418 1419 clean: common-clean 1420 rm -f core *~ nt_password_hash hlr_auc_gw 1421 rm -f sae_pk_gen 1422 rm -f lcov.info 1423 rm -rf lcov-html 1424