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_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