1 ifndef CC 2 CC=gcc 3 endif 4 5 ifndef CFLAGS 6 CFLAGS = -MMD -O2 -Wall -g 7 endif 8 9 CFLAGS += -I../src 10 CFLAGS += -I../src/utils 11 12 # Uncomment following line and set the path to your kernel tree include 13 # directory if your C library does not include all header files. 14 # CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include 15 16 -include .config 17 18 ifndef CONFIG_OS 19 ifdef CONFIG_NATIVE_WINDOWS 20 CONFIG_OS=win32 21 else 22 CONFIG_OS=unix 23 endif 24 endif 25 26 ifeq ($(CONFIG_OS), internal) 27 CFLAGS += -DOS_NO_C_LIB_DEFINES 28 endif 29 30 ifdef CONFIG_NATIVE_WINDOWS 31 CFLAGS += -DCONFIG_NATIVE_WINDOWS 32 LIBS += -lws2_32 33 endif 34 35 OBJS += main.o 36 OBJS += config_file.o 37 38 OBJS += ../src/ap/hostapd.o 39 OBJS += ../src/ap/wpa_auth_glue.o 40 OBJS += ../src/ap/drv_callbacks.o 41 OBJS += ../src/ap/ap_drv_ops.o 42 OBJS += ../src/ap/utils.o 43 OBJS += ../src/ap/authsrv.o 44 OBJS += ../src/ap/ieee802_1x.o 45 OBJS += ../src/ap/ap_config.o 46 OBJS += ../src/ap/ieee802_11_auth.o 47 OBJS += ../src/ap/sta_info.o 48 OBJS += ../src/ap/wpa_auth.o 49 OBJS += ../src/ap/tkip_countermeasures.o 50 OBJS += ../src/ap/ap_mlme.o 51 OBJS += ../src/ap/wpa_auth_ie.o 52 OBJS += ../src/ap/preauth_auth.o 53 OBJS += ../src/ap/pmksa_cache_auth.o 54 OBJS += ../src/ap/ieee802_11_shared.o 55 OBJS += ../src/ap/beacon.o 56 57 OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o 58 59 NEED_RC4=y 60 NEED_AES=y 61 NEED_MD5=y 62 NEED_SHA1=y 63 64 OBJS += ../src/drivers/drivers.o 65 CFLAGS += -DHOSTAPD 66 67 ifdef CONFIG_WPA_TRACE 68 CFLAGS += -DWPA_TRACE 69 OBJS += ../src/utils/trace.o 70 HOBJS += ../src/utils/trace.o 71 LDFLAGS += -rdynamic 72 CFLAGS += -funwind-tables 73 ifdef CONFIG_WPA_TRACE_BFD 74 CFLAGS += -DWPA_TRACE_BFD 75 LIBS += -lbfd 76 LIBS_c += -lbfd 77 LIBS_h += -lbfd 78 endif 79 endif 80 81 ifndef CONFIG_ELOOP 82 CONFIG_ELOOP=eloop 83 endif 84 OBJS += ../src/utils/$(CONFIG_ELOOP).o 85 OBJS_c += ../src/utils/$(CONFIG_ELOOP).o 86 OBJS += ../src/utils/common.o 87 OBJS += ../src/utils/wpa_debug.o 88 OBJS_c += ../src/utils/wpa_debug.o 89 OBJS += ../src/utils/wpabuf.o 90 OBJS += ../src/utils/os_$(CONFIG_OS).o 91 OBJS += ../src/utils/ip_addr.o 92 93 OBJS += ../src/common/ieee802_11_common.o 94 OBJS += ../src/common/wpa_common.o 95 96 OBJS += ../src/eapol_auth/eapol_auth_sm.o 97 98 99 ifndef CONFIG_NO_DUMP_STATE 100 # define HOSTAPD_DUMP_STATE to include SIGUSR1 handler for dumping state to 101 # a file (undefine it, if you want to save in binary size) 102 CFLAGS += -DHOSTAPD_DUMP_STATE 103 OBJS += dump_state.o 104 OBJS += ../src/eapol_auth/eapol_auth_dump.o 105 endif 106 107 ifdef CONFIG_NO_RADIUS 108 CFLAGS += -DCONFIG_NO_RADIUS 109 CONFIG_NO_ACCOUNTING=y 110 else 111 OBJS += ../src/radius/radius.o 112 OBJS += ../src/radius/radius_client.o 113 OBJS += ../src/radius/radius_das.o 114 endif 115 116 ifdef CONFIG_NO_ACCOUNTING 117 CFLAGS += -DCONFIG_NO_ACCOUNTING 118 else 119 OBJS += ../src/ap/accounting.o 120 endif 121 122 ifdef CONFIG_NO_VLAN 123 CFLAGS += -DCONFIG_NO_VLAN 124 else 125 OBJS += ../src/ap/vlan_init.o 126 ifdef CONFIG_VLAN_NETLINK 127 ifdef CONFIG_FULL_DYNAMIC_VLAN 128 OBJS += ../src/ap/vlan_util.o 129 endif 130 CFLAGS += -DCONFIG_VLAN_NETLINK 131 endif 132 endif 133 134 ifdef CONFIG_NO_CTRL_IFACE 135 CFLAGS += -DCONFIG_NO_CTRL_IFACE 136 else 137 OBJS += ctrl_iface.o 138 OBJS += ../src/ap/ctrl_iface_ap.o 139 endif 140 141 OBJS += ../src/crypto/md5.o 142 143 CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX 144 145 ifdef CONFIG_IAPP 146 CFLAGS += -DCONFIG_IAPP 147 OBJS += ../src/ap/iapp.o 148 endif 149 150 ifdef CONFIG_RSN_PREAUTH 151 CFLAGS += -DCONFIG_RSN_PREAUTH 152 CONFIG_L2_PACKET=y 153 endif 154 155 ifdef CONFIG_PEERKEY 156 CFLAGS += -DCONFIG_PEERKEY 157 OBJS += ../src/ap/peerkey_auth.o 158 endif 159 160 ifdef CONFIG_IEEE80211W 161 CFLAGS += -DCONFIG_IEEE80211W 162 NEED_SHA256=y 163 NEED_AES_OMAC1=y 164 endif 165 166 ifdef CONFIG_IEEE80211R 167 CFLAGS += -DCONFIG_IEEE80211R 168 OBJS += ../src/ap/wpa_auth_ft.o 169 NEED_SHA256=y 170 NEED_AES_OMAC1=y 171 NEED_AES_UNWRAP=y 172 endif 173 174 ifdef CONFIG_IEEE80211V 175 CFLAGS += -DCONFIG_IEEE80211V 176 OBJS += ../src/ap/wnm_ap.o 177 endif 178 179 ifdef CONFIG_IEEE80211N 180 CFLAGS += -DCONFIG_IEEE80211N 181 endif 182 183 ifdef CONFIG_WNM 184 CFLAGS += -DCONFIG_WNM 185 endif 186 187 ifdef CONFIG_IEEE80211AC 188 CFLAGS += -DCONFIG_IEEE80211AC 189 endif 190 191 include ../src/drivers/drivers.mak 192 OBJS += $(DRV_AP_OBJS) 193 CFLAGS += $(DRV_AP_CFLAGS) 194 LDFLAGS += $(DRV_AP_LDFLAGS) 195 LIBS += $(DRV_AP_LIBS) 196 197 ifdef CONFIG_L2_PACKET 198 ifdef CONFIG_DNET_PCAP 199 ifdef CONFIG_L2_FREEBSD 200 LIBS += -lpcap 201 OBJS += ../src/l2_packet/l2_packet_freebsd.o 202 else 203 LIBS += -ldnet -lpcap 204 OBJS += ../src/l2_packet/l2_packet_pcap.o 205 endif 206 else 207 OBJS += ../src/l2_packet/l2_packet_linux.o 208 endif 209 else 210 OBJS += ../src/l2_packet/l2_packet_none.o 211 endif 212 213 214 ifdef CONFIG_EAP_MD5 215 CFLAGS += -DEAP_SERVER_MD5 216 OBJS += ../src/eap_server/eap_server_md5.o 217 CHAP=y 218 endif 219 220 ifdef CONFIG_EAP_TLS 221 CFLAGS += -DEAP_SERVER_TLS 222 OBJS += ../src/eap_server/eap_server_tls.o 223 TLS_FUNCS=y 224 endif 225 226 ifdef CONFIG_EAP_UNAUTH_TLS 227 CFLAGS += -DEAP_SERVER_UNAUTH_TLS 228 ifndef CONFIG_EAP_TLS 229 OBJS += ../src/eap_server/eap_server_tls.o 230 TLS_FUNCS=y 231 endif 232 endif 233 234 ifdef CONFIG_EAP_PEAP 235 CFLAGS += -DEAP_SERVER_PEAP 236 OBJS += ../src/eap_server/eap_server_peap.o 237 OBJS += ../src/eap_common/eap_peap_common.o 238 TLS_FUNCS=y 239 CONFIG_EAP_MSCHAPV2=y 240 endif 241 242 ifdef CONFIG_EAP_TTLS 243 CFLAGS += -DEAP_SERVER_TTLS 244 OBJS += ../src/eap_server/eap_server_ttls.o 245 TLS_FUNCS=y 246 CHAP=y 247 endif 248 249 ifdef CONFIG_EAP_MSCHAPV2 250 CFLAGS += -DEAP_SERVER_MSCHAPV2 251 OBJS += ../src/eap_server/eap_server_mschapv2.o 252 MS_FUNCS=y 253 endif 254 255 ifdef CONFIG_EAP_GTC 256 CFLAGS += -DEAP_SERVER_GTC 257 OBJS += ../src/eap_server/eap_server_gtc.o 258 endif 259 260 ifdef CONFIG_EAP_SIM 261 CFLAGS += -DEAP_SERVER_SIM 262 OBJS += ../src/eap_server/eap_server_sim.o 263 CONFIG_EAP_SIM_COMMON=y 264 NEED_AES_CBC=y 265 endif 266 267 ifdef CONFIG_EAP_AKA 268 CFLAGS += -DEAP_SERVER_AKA 269 OBJS += ../src/eap_server/eap_server_aka.o 270 CONFIG_EAP_SIM_COMMON=y 271 NEED_SHA256=y 272 NEED_AES_CBC=y 273 endif 274 275 ifdef CONFIG_EAP_AKA_PRIME 276 CFLAGS += -DEAP_SERVER_AKA_PRIME 277 endif 278 279 ifdef CONFIG_EAP_SIM_COMMON 280 OBJS += ../src/eap_common/eap_sim_common.o 281 # Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be 282 # replaced with another file implementating the interface specified in 283 # eap_sim_db.h. 284 OBJS += ../src/eap_server/eap_sim_db.o 285 NEED_FIPS186_2_PRF=y 286 endif 287 288 ifdef CONFIG_EAP_PAX 289 CFLAGS += -DEAP_SERVER_PAX 290 OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o 291 endif 292 293 ifdef CONFIG_EAP_PSK 294 CFLAGS += -DEAP_SERVER_PSK 295 OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o 296 NEED_AES_OMAC1=y 297 NEED_AES_ENCBLOCK=y 298 NEED_AES_EAX=y 299 endif 300 301 ifdef CONFIG_EAP_SAKE 302 CFLAGS += -DEAP_SERVER_SAKE 303 OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o 304 endif 305 306 ifdef CONFIG_EAP_GPSK 307 CFLAGS += -DEAP_SERVER_GPSK 308 OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o 309 ifdef CONFIG_EAP_GPSK_SHA256 310 CFLAGS += -DEAP_SERVER_GPSK_SHA256 311 endif 312 NEED_SHA256=y 313 NEED_AES_OMAC1=y 314 endif 315 316 ifdef CONFIG_EAP_PWD 317 CFLAGS += -DEAP_SERVER_PWD 318 OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o 319 NEED_SHA256=y 320 endif 321 322 ifdef CONFIG_EAP_VENDOR_TEST 323 CFLAGS += -DEAP_SERVER_VENDOR_TEST 324 OBJS += ../src/eap_server/eap_server_vendor_test.o 325 endif 326 327 ifdef CONFIG_EAP_FAST 328 CFLAGS += -DEAP_SERVER_FAST 329 OBJS += ../src/eap_server/eap_server_fast.o 330 OBJS += ../src/eap_common/eap_fast_common.o 331 TLS_FUNCS=y 332 NEED_T_PRF=y 333 NEED_AES_UNWRAP=y 334 endif 335 336 ifdef CONFIG_WPS 337 ifdef CONFIG_WPS2 338 CFLAGS += -DCONFIG_WPS2 339 endif 340 341 CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC 342 OBJS += ../src/utils/uuid.o 343 OBJS += ../src/ap/wps_hostapd.o 344 OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o 345 OBJS += ../src/wps/wps.o 346 OBJS += ../src/wps/wps_common.o 347 OBJS += ../src/wps/wps_attr_parse.o 348 OBJS += ../src/wps/wps_attr_build.o 349 OBJS += ../src/wps/wps_attr_process.o 350 OBJS += ../src/wps/wps_dev_attr.o 351 OBJS += ../src/wps/wps_enrollee.o 352 OBJS += ../src/wps/wps_registrar.o 353 NEED_DH_GROUPS=y 354 NEED_SHA256=y 355 NEED_BASE64=y 356 NEED_AES_CBC=y 357 NEED_MODEXP=y 358 CONFIG_EAP=y 359 360 ifdef CONFIG_WPS_UFD 361 CFLAGS += -DCONFIG_WPS_UFD 362 OBJS += ../src/wps/wps_ufd.o 363 NEED_WPS_OOB=y 364 endif 365 366 ifdef CONFIG_WPS_NFC 367 CFLAGS += -DCONFIG_WPS_NFC 368 OBJS += ../src/wps/ndef.o 369 OBJS += ../src/wps/wps_nfc.o 370 NEED_WPS_OOB=y 371 ifdef CONFIG_WPS_NFC_PN531 372 PN531_PATH ?= /usr/local/src/nfc 373 CFLAGS += -DCONFIG_WPS_NFC_PN531 374 CFLAGS += -I${PN531_PATH}/inc 375 OBJS += ../src/wps/wps_nfc_pn531.o 376 LIBS += ${PN531_PATH}/lib/wpsnfc.dll 377 LIBS += ${PN531_PATH}/lib/libnfc_mapping_pn53x.dll 378 endif 379 endif 380 381 ifdef NEED_WPS_OOB 382 CFLAGS += -DCONFIG_WPS_OOB 383 endif 384 385 ifdef CONFIG_WPS_UPNP 386 CFLAGS += -DCONFIG_WPS_UPNP 387 OBJS += ../src/wps/wps_upnp.o 388 OBJS += ../src/wps/wps_upnp_ssdp.o 389 OBJS += ../src/wps/wps_upnp_web.o 390 OBJS += ../src/wps/wps_upnp_event.o 391 OBJS += ../src/wps/wps_upnp_ap.o 392 OBJS += ../src/wps/upnp_xml.o 393 OBJS += ../src/wps/httpread.o 394 OBJS += ../src/wps/http_client.o 395 OBJS += ../src/wps/http_server.o 396 endif 397 398 ifdef CONFIG_WPS_STRICT 399 CFLAGS += -DCONFIG_WPS_STRICT 400 OBJS += ../src/wps/wps_validate.o 401 endif 402 403 ifdef CONFIG_WPS_TESTING 404 CFLAGS += -DCONFIG_WPS_TESTING 405 endif 406 407 endif 408 409 ifdef CONFIG_EAP_IKEV2 410 CFLAGS += -DEAP_SERVER_IKEV2 411 OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o 412 OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o 413 NEED_DH_GROUPS=y 414 NEED_DH_GROUPS_ALL=y 415 NEED_MODEXP=y 416 NEED_CIPHER=y 417 endif 418 419 ifdef CONFIG_EAP_TNC 420 CFLAGS += -DEAP_SERVER_TNC 421 OBJS += ../src/eap_server/eap_server_tnc.o 422 OBJS += ../src/eap_server/tncs.o 423 NEED_BASE64=y 424 ifndef CONFIG_DRIVER_BSD 425 LIBS += -ldl 426 endif 427 endif 428 429 # Basic EAP functionality is needed for EAPOL 430 OBJS += eap_register.o 431 OBJS += ../src/eap_server/eap_server.o 432 OBJS += ../src/eap_common/eap_common.o 433 OBJS += ../src/eap_server/eap_server_methods.o 434 OBJS += ../src/eap_server/eap_server_identity.o 435 CFLAGS += -DEAP_SERVER_IDENTITY 436 437 ifdef CONFIG_EAP 438 CFLAGS += -DEAP_SERVER 439 endif 440 441 ifdef CONFIG_PKCS12 442 CFLAGS += -DPKCS12_FUNCS 443 endif 444 445 ifdef MS_FUNCS 446 OBJS += ../src/crypto/ms_funcs.o 447 NEED_DES=y 448 NEED_MD4=y 449 endif 450 451 ifdef CHAP 452 OBJS += ../src/eap_common/chap.o 453 endif 454 455 ifdef TLS_FUNCS 456 NEED_DES=y 457 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS) 458 CFLAGS += -DEAP_TLS_FUNCS 459 OBJS += ../src/eap_server/eap_server_tls_common.o 460 NEED_TLS_PRF=y 461 endif 462 463 ifndef CONFIG_TLS 464 CONFIG_TLS=openssl 465 endif 466 467 ifdef CONFIG_TLSV11 468 CFLAGS += -DCONFIG_TLSV11 469 endif 470 471 ifdef CONFIG_TLSV12 472 CFLAGS += -DCONFIG_TLSV12 473 NEED_SHA256=y 474 endif 475 476 ifeq ($(CONFIG_TLS), openssl) 477 ifdef TLS_FUNCS 478 OBJS += ../src/crypto/tls_openssl.o 479 LIBS += -lssl 480 endif 481 OBJS += ../src/crypto/crypto_openssl.o 482 HOBJS += ../src/crypto/crypto_openssl.o 483 ifdef NEED_FIPS186_2_PRF 484 OBJS += ../src/crypto/fips_prf_openssl.o 485 endif 486 LIBS += -lcrypto 487 LIBS_h += -lcrypto 488 endif 489 490 ifeq ($(CONFIG_TLS), gnutls) 491 ifdef TLS_FUNCS 492 OBJS += ../src/crypto/tls_gnutls.o 493 LIBS += -lgnutls -lgpg-error 494 endif 495 OBJS += ../src/crypto/crypto_gnutls.o 496 HOBJS += ../src/crypto/crypto_gnutls.o 497 ifdef NEED_FIPS186_2_PRF 498 OBJS += ../src/crypto/fips_prf_gnutls.o 499 endif 500 LIBS += -lgcrypt 501 LIBS_h += -lgcrypt 502 CONFIG_INTERNAL_SHA256=y 503 CONFIG_INTERNAL_RC4=y 504 CONFIG_INTERNAL_DH_GROUP5=y 505 endif 506 507 ifeq ($(CONFIG_TLS), schannel) 508 ifdef TLS_FUNCS 509 OBJS += ../src/crypto/tls_schannel.o 510 endif 511 OBJS += ../src/crypto/crypto_cryptoapi.o 512 OBJS_p += ../src/crypto/crypto_cryptoapi.o 513 CONFIG_INTERNAL_SHA256=y 514 CONFIG_INTERNAL_RC4=y 515 CONFIG_INTERNAL_DH_GROUP5=y 516 endif 517 518 ifeq ($(CONFIG_TLS), nss) 519 ifdef TLS_FUNCS 520 OBJS += ../src/crypto/tls_nss.o 521 LIBS += -lssl3 522 endif 523 OBJS += ../src/crypto/crypto_nss.o 524 ifdef NEED_FIPS186_2_PRF 525 OBJS += ../src/crypto/fips_prf_nss.o 526 endif 527 LIBS += -lnss3 528 LIBS_h += -lnss3 529 CONFIG_INTERNAL_MD4=y 530 CONFIG_INTERNAL_DH_GROUP5=y 531 endif 532 533 ifeq ($(CONFIG_TLS), internal) 534 ifndef CONFIG_CRYPTO 535 CONFIG_CRYPTO=internal 536 endif 537 ifdef TLS_FUNCS 538 OBJS += ../src/crypto/crypto_internal-rsa.o 539 OBJS += ../src/crypto/tls_internal.o 540 OBJS += ../src/tls/tlsv1_common.o 541 OBJS += ../src/tls/tlsv1_record.o 542 OBJS += ../src/tls/tlsv1_cred.o 543 OBJS += ../src/tls/tlsv1_server.o 544 OBJS += ../src/tls/tlsv1_server_write.o 545 OBJS += ../src/tls/tlsv1_server_read.o 546 OBJS += ../src/tls/asn1.o 547 OBJS += ../src/tls/rsa.o 548 OBJS += ../src/tls/x509v3.o 549 OBJS += ../src/tls/pkcs1.o 550 OBJS += ../src/tls/pkcs5.o 551 OBJS += ../src/tls/pkcs8.o 552 NEED_SHA256=y 553 NEED_BASE64=y 554 NEED_TLS_PRF=y 555 ifdef CONFIG_TLSV12 556 NEED_TLS_PRF_SHA256=y 557 endif 558 NEED_MODEXP=y 559 NEED_CIPHER=y 560 CFLAGS += -DCONFIG_TLS_INTERNAL 561 CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 562 endif 563 ifdef NEED_CIPHER 564 NEED_DES=y 565 OBJS += ../src/crypto/crypto_internal-cipher.o 566 endif 567 ifdef NEED_MODEXP 568 OBJS += ../src/crypto/crypto_internal-modexp.o 569 OBJS += ../src/tls/bignum.o 570 endif 571 ifeq ($(CONFIG_CRYPTO), libtomcrypt) 572 OBJS += ../src/crypto/crypto_libtomcrypt.o 573 LIBS += -ltomcrypt -ltfm 574 LIBS_h += -ltomcrypt -ltfm 575 CONFIG_INTERNAL_SHA256=y 576 CONFIG_INTERNAL_RC4=y 577 CONFIG_INTERNAL_DH_GROUP5=y 578 endif 579 ifeq ($(CONFIG_CRYPTO), internal) 580 OBJS += ../src/crypto/crypto_internal.o 581 NEED_AES_DEC=y 582 CFLAGS += -DCONFIG_CRYPTO_INTERNAL 583 ifdef CONFIG_INTERNAL_LIBTOMMATH 584 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 585 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 586 CFLAGS += -DLTM_FAST 587 endif 588 else 589 LIBS += -ltommath 590 LIBS_h += -ltommath 591 endif 592 CONFIG_INTERNAL_AES=y 593 CONFIG_INTERNAL_DES=y 594 CONFIG_INTERNAL_SHA1=y 595 CONFIG_INTERNAL_MD4=y 596 CONFIG_INTERNAL_MD5=y 597 CONFIG_INTERNAL_SHA256=y 598 CONFIG_INTERNAL_RC4=y 599 CONFIG_INTERNAL_DH_GROUP5=y 600 endif 601 ifeq ($(CONFIG_CRYPTO), cryptoapi) 602 OBJS += ../src/crypto/crypto_cryptoapi.o 603 OBJS_p += ../src/crypto/crypto_cryptoapi.o 604 CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 605 CONFIG_INTERNAL_SHA256=y 606 CONFIG_INTERNAL_RC4=y 607 endif 608 endif 609 610 ifeq ($(CONFIG_TLS), none) 611 ifdef TLS_FUNCS 612 OBJS += ../src/crypto/tls_none.o 613 CFLAGS += -DEAP_TLS_NONE 614 CONFIG_INTERNAL_AES=y 615 CONFIG_INTERNAL_SHA1=y 616 CONFIG_INTERNAL_MD5=y 617 endif 618 OBJS += ../src/crypto/crypto_none.o 619 OBJS_p += ../src/crypto/crypto_none.o 620 CONFIG_INTERNAL_SHA256=y 621 CONFIG_INTERNAL_RC4=y 622 endif 623 624 ifndef TLS_FUNCS 625 OBJS += ../src/crypto/tls_none.o 626 ifeq ($(CONFIG_TLS), internal) 627 CONFIG_INTERNAL_AES=y 628 CONFIG_INTERNAL_SHA1=y 629 CONFIG_INTERNAL_MD5=y 630 CONFIG_INTERNAL_RC4=y 631 endif 632 endif 633 634 AESOBJS = # none so far 635 ifdef CONFIG_INTERNAL_AES 636 AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o 637 endif 638 639 AESOBJS += ../src/crypto/aes-wrap.o 640 ifdef NEED_AES_EAX 641 AESOBJS += ../src/crypto/aes-eax.o 642 NEED_AES_CTR=y 643 endif 644 ifdef NEED_AES_CTR 645 AESOBJS += ../src/crypto/aes-ctr.o 646 endif 647 ifdef NEED_AES_ENCBLOCK 648 AESOBJS += ../src/crypto/aes-encblock.o 649 endif 650 ifdef NEED_AES_OMAC1 651 AESOBJS += ../src/crypto/aes-omac1.o 652 endif 653 ifdef NEED_AES_UNWRAP 654 NEED_AES_DEC=y 655 AESOBJS += ../src/crypto/aes-unwrap.o 656 endif 657 ifdef NEED_AES_CBC 658 NEED_AES_DEC=y 659 AESOBJS += ../src/crypto/aes-cbc.o 660 endif 661 ifdef NEED_AES_DEC 662 ifdef CONFIG_INTERNAL_AES 663 AESOBJS += ../src/crypto/aes-internal-dec.o 664 endif 665 endif 666 ifdef NEED_AES 667 OBJS += $(AESOBJS) 668 endif 669 670 ifdef NEED_SHA1 671 ifneq ($(CONFIG_TLS), openssl) 672 SHA1OBJS += ../src/crypto/sha1.o 673 endif 674 SHA1OBJS += ../src/crypto/sha1-prf.o 675 ifdef CONFIG_INTERNAL_SHA1 676 SHA1OBJS += ../src/crypto/sha1-internal.o 677 ifdef NEED_FIPS186_2_PRF 678 SHA1OBJS += ../src/crypto/fips_prf_internal.o 679 endif 680 endif 681 ifneq ($(CONFIG_TLS), openssl) 682 SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 683 endif 684 ifdef NEED_T_PRF 685 SHA1OBJS += ../src/crypto/sha1-tprf.o 686 endif 687 ifdef NEED_TLS_PRF 688 SHA1OBJS += ../src/crypto/sha1-tlsprf.o 689 endif 690 endif 691 692 ifdef NEED_SHA1 693 OBJS += $(SHA1OBJS) 694 endif 695 696 ifdef NEED_MD5 697 ifdef CONFIG_INTERNAL_MD5 698 OBJS += ../src/crypto/md5-internal.o 699 HOBJS += ../src/crypto/md5-internal.o 700 endif 701 endif 702 703 ifdef NEED_MD4 704 ifdef CONFIG_INTERNAL_MD4 705 OBJS += ../src/crypto/md4-internal.o 706 endif 707 endif 708 709 ifdef NEED_DES 710 ifdef CONFIG_INTERNAL_DES 711 OBJS += ../src/crypto/des-internal.o 712 endif 713 endif 714 715 ifdef NEED_RC4 716 ifdef CONFIG_INTERNAL_RC4 717 OBJS += ../src/crypto/rc4.o 718 endif 719 endif 720 721 ifdef NEED_SHA256 722 CFLAGS += -DCONFIG_SHA256 723 ifneq ($(CONFIG_TLS), openssl) 724 OBJS += ../src/crypto/sha256.o 725 endif 726 OBJS += ../src/crypto/sha256-prf.o 727 ifdef CONFIG_INTERNAL_SHA256 728 OBJS += ../src/crypto/sha256-internal.o 729 endif 730 ifdef NEED_TLS_PRF_SHA256 731 OBJS += ../src/crypto/sha256-tlsprf.o 732 endif 733 endif 734 735 ifdef NEED_DH_GROUPS 736 OBJS += ../src/crypto/dh_groups.o 737 endif 738 ifdef NEED_DH_GROUPS_ALL 739 CFLAGS += -DALL_DH_GROUPS 740 endif 741 ifdef CONFIG_INTERNAL_DH_GROUP5 742 ifdef NEED_DH_GROUPS 743 OBJS += ../src/crypto/dh_group5.o 744 endif 745 endif 746 747 ifdef CONFIG_NO_RANDOM_POOL 748 CFLAGS += -DCONFIG_NO_RANDOM_POOL 749 else 750 OBJS += ../src/crypto/random.o 751 HOBJS += ../src/crypto/random.o 752 HOBJS += ../src/utils/eloop.o 753 HOBJS += $(SHA1OBJS) 754 HOBJS += ../src/crypto/md5.o 755 endif 756 757 ifdef CONFIG_RADIUS_SERVER 758 CFLAGS += -DRADIUS_SERVER 759 OBJS += ../src/radius/radius_server.o 760 endif 761 762 ifdef CONFIG_IPV6 763 CFLAGS += -DCONFIG_IPV6 764 endif 765 766 ifdef CONFIG_DRIVER_RADIUS_ACL 767 CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL 768 endif 769 770 ifdef CONFIG_FULL_DYNAMIC_VLAN 771 # define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges 772 # and vlan interfaces for the vlan feature. 773 CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN 774 endif 775 776 ifdef NEED_BASE64 777 OBJS += ../src/utils/base64.o 778 endif 779 780 ifdef NEED_AP_MLME 781 OBJS += ../src/ap/wmm.o 782 OBJS += ../src/ap/ap_list.o 783 OBJS += ../src/ap/ieee802_11.o 784 OBJS += ../src/ap/hw_features.o 785 CFLAGS += -DNEED_AP_MLME 786 endif 787 ifdef CONFIG_IEEE80211N 788 OBJS += ../src/ap/ieee802_11_ht.o 789 endif 790 791 ifdef CONFIG_IEEE80211AC 792 OBJS += ../src/ap/ieee802_11_vht.o 793 endif 794 795 ifdef CONFIG_P2P_MANAGER 796 CFLAGS += -DCONFIG_P2P_MANAGER 797 OBJS += ../src/ap/p2p_hostapd.o 798 endif 799 800 ifdef CONFIG_HS20 801 CFLAGS += -DCONFIG_HS20 802 OBJS += ../src/ap/hs20.o 803 CONFIG_INTERWORKING=y 804 endif 805 806 ifdef CONFIG_INTERWORKING 807 CFLAGS += -DCONFIG_INTERWORKING 808 OBJS += ../src/common/gas.o 809 OBJS += ../src/ap/gas_serv.o 810 endif 811 812 OBJS += ../src/drivers/driver_common.o 813 814 ifdef CONFIG_WPA_CLI_EDIT 815 OBJS_c += ../src/utils/edit.o 816 else 817 OBJS_c += ../src/utils/edit_simple.o 818 endif 819 820 ifdef CONFIG_NO_STDOUT_DEBUG 821 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 822 endif 823 824 ifdef CONFIG_DEBUG_FILE 825 CFLAGS += -DCONFIG_DEBUG_FILE 826 endif 827 828 ifdef CONFIG_SQLITE 829 CFLAGS += -DCONFIG_SQLITE 830 LIBS += -lsqlite3 831 LIBS_h += -lsqlite3 832 endif 833 834 ALL=hostapd hostapd_cli 835 836 all: verify_config $(ALL) 837 838 Q=@ 839 E=echo 840 ifeq ($(V), 1) 841 Q= 842 E=true 843 endif 844 845 %.o: %.c 846 $(Q)$(CC) -c -o $@ $(CFLAGS) $< 847 @$(E) " CC " $< 848 849 verify_config: 850 @if [ ! -r .config ]; then \ 851 echo 'Building hostapd requires a configuration file'; \ 852 echo '(.config). See README for more instructions. You can'; \ 853 echo 'run "cp defconfig .config" to create an example'; \ 854 echo 'configuration.'; \ 855 exit 1; \ 856 fi 857 858 install: all 859 mkdir -p $(DESTDIR)/usr/local/bin 860 for i in $(ALL); do cp -f $$i $(DESTDIR)/usr/local/bin/$$i; done 861 862 ../src/drivers/build.hostapd: 863 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \ 864 $(MAKE) -C ../src/drivers clean; \ 865 fi 866 @touch ../src/drivers/build.hostapd 867 868 BCHECK=../src/drivers/build.hostapd 869 870 hostapd: $(BCHECK) $(OBJS) 871 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS) 872 @$(E) " LD " $@ 873 874 ifdef CONFIG_WPA_TRACE 875 OBJS_c += ../src/utils/trace.o 876 endif 877 hostapd_cli: $(OBJS_c) 878 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c) 879 @$(E) " LD " $@ 880 881 NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) ../src/crypto/md5.o 882 ifdef NEED_RC4 883 ifdef CONFIG_INTERNAL_RC4 884 NOBJS += ../src/crypto/rc4.o 885 endif 886 endif 887 ifdef CONFIG_INTERNAL_MD5 888 NOBJS += ../src/crypto/md5-internal.o 889 endif 890 NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o 891 NOBJS += ../src/utils/wpa_debug.o 892 NOBJS += ../src/utils/wpabuf.o 893 ifdef CONFIG_WPA_TRACE 894 NOBJS += ../src/utils/trace.o 895 LIBS_n += -lbfd 896 endif 897 ifdef TLS_FUNCS 898 LIBS_n += -lcrypto 899 endif 900 901 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 902 HOBJS += ../src/crypto/aes-encblock.o 903 ifdef CONFIG_INTERNAL_AES 904 HOBJS += ../src/crypto/aes-internal.o 905 HOBJS += ../src/crypto/aes-internal-enc.o 906 endif 907 908 nt_password_hash: $(NOBJS) 909 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n) 910 @$(E) " LD " $@ 911 912 hlr_auc_gw: $(HOBJS) 913 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h) 914 @$(E) " LD " $@ 915 916 clean: 917 $(MAKE) -C ../src clean 918 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw 919 rm -f *.d 920 921 -include $(OBJS:%.o=%.d) 922