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