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