Home | History | Annotate | Download | only in wpa_supplicant
      1 ifndef CC
      2 CC=gcc
      3 endif
      4 
      5 ifndef CFLAGS
      6 CFLAGS = -MMD -O2 -Wall -g
      7 endif
      8 
      9 export LIBDIR ?= /usr/local/lib/
     10 export INCDIR ?= /usr/local/include/
     11 export BINDIR ?= /usr/local/sbin/
     12 PKG_CONFIG ?= pkg-config
     13 
     14 CFLAGS += $(EXTRA_CFLAGS)
     15 CFLAGS += -I$(abspath ../src)
     16 CFLAGS += -I$(abspath ../src/utils)
     17 
     18 -include .config
     19 
     20 ifdef CONFIG_TESTING_OPTIONS
     21 CFLAGS += -DCONFIG_TESTING_OPTIONS
     22 CONFIG_WPS_TESTING=y
     23 CONFIG_TDLS_TESTING=y
     24 endif
     25 
     26 BINALL=wpa_supplicant wpa_cli
     27 
     28 ifndef CONFIG_NO_WPA_PASSPHRASE
     29 BINALL += wpa_passphrase
     30 endif
     31 
     32 ALL = $(BINALL)
     33 ALL += systemd/wpa_supplicant.service
     34 ALL += systemd/wpa_supplicant@.service
     35 ALL += systemd/wpa_supplicant-nl80211@.service
     36 ALL += systemd/wpa_supplicant-wired@.service
     37 ALL += dbus/fi.epitest.hostap.WPASupplicant.service
     38 ALL += dbus/fi.w1.wpa_supplicant1.service
     39 ifdef CONFIG_BUILD_WPA_CLIENT_SO
     40 ALL += libwpa_client.so
     41 endif
     42 
     43 
     44 all: verify_config $(ALL) dynamic_eap_methods
     45 
     46 verify_config:
     47 	@if [ ! -r .config ]; then \
     48 		echo 'Building wpa_supplicant requires a configuration file'; \
     49 		echo '(.config). See README for more instructions. You can'; \
     50 		echo 'run "cp defconfig .config" to create an example'; \
     51 		echo 'configuration.'; \
     52 		exit 1; \
     53 	fi
     54 
     55 mkconfig:
     56 	@if [ -f .config ]; then \
     57 		echo '.config exists - did not replace it'; \
     58 		exit 1; \
     59 	fi
     60 	echo CONFIG_DRIVER_HOSTAP=y >> .config
     61 	echo CONFIG_DRIVER_WEXT=y >> .config
     62 
     63 $(DESTDIR)$(BINDIR)/%: %
     64 	install -D $(<) $(@)
     65 
     66 install: $(addprefix $(DESTDIR)$(BINDIR)/,$(BINALL))
     67 	$(MAKE) -C ../src install
     68 ifdef CONFIG_BUILD_WPA_CLIENT_SO
     69 	install -m 0644 -D libwpa_client.so $(DESTDIR)/$(LIBDIR)/libwpa_client.so
     70 	install -m 0644 -D ../src/common/wpa_ctrl.h $(DESTDIR)/$(INCDIR)/wpa_ctrl.h
     71 endif
     72 
     73 ifdef CONFIG_FIPS
     74 CONFIG_NO_RANDOM_POOL=
     75 CONFIG_OPENSSL_CMAC=y
     76 endif
     77 
     78 OBJS = config.o
     79 OBJS += notify.o
     80 OBJS += bss.o
     81 OBJS += eap_register.o
     82 OBJS += ../src/utils/common.o
     83 OBJS += ../src/utils/wpa_debug.o
     84 OBJS += ../src/utils/wpabuf.o
     85 OBJS_p = wpa_passphrase.o
     86 OBJS_p += ../src/utils/common.o
     87 OBJS_p += ../src/utils/wpa_debug.o
     88 OBJS_p += ../src/utils/wpabuf.o
     89 OBJS_c = wpa_cli.o ../src/common/wpa_ctrl.o
     90 OBJS_c += ../src/utils/wpa_debug.o
     91 OBJS_c += ../src/utils/common.o
     92 OBJS += wmm_ac.o
     93 
     94 ifndef CONFIG_OS
     95 ifdef CONFIG_NATIVE_WINDOWS
     96 CONFIG_OS=win32
     97 else
     98 CONFIG_OS=unix
     99 endif
    100 endif
    101 
    102 ifeq ($(CONFIG_OS), internal)
    103 CFLAGS += -DOS_NO_C_LIB_DEFINES
    104 endif
    105 
    106 OBJS += ../src/utils/os_$(CONFIG_OS).o
    107 OBJS_p += ../src/utils/os_$(CONFIG_OS).o
    108 OBJS_c += ../src/utils/os_$(CONFIG_OS).o
    109 
    110 ifdef CONFIG_WPA_TRACE
    111 CFLAGS += -DWPA_TRACE
    112 OBJS += ../src/utils/trace.o
    113 OBJS_p += ../src/utils/trace.o
    114 OBJS_c += ../src/utils/trace.o
    115 OBJS_priv += ../src/utils/trace.o
    116 LIBCTRL += ../src/utils/trace.o
    117 LIBCTRLSO += ../src/utils/trace.c
    118 LDFLAGS += -rdynamic
    119 CFLAGS += -funwind-tables
    120 ifdef CONFIG_WPA_TRACE_BFD
    121 CFLAGS += -DPACKAGE="wpa_supplicant" -DWPA_TRACE_BFD
    122 LIBS += -lbfd -ldl -liberty -lz
    123 LIBS_p += -lbfd -ldl -liberty -lz
    124 LIBS_c += -lbfd -ldl -liberty -lz
    125 endif
    126 endif
    127 
    128 ifndef CONFIG_ELOOP
    129 CONFIG_ELOOP=eloop
    130 endif
    131 OBJS += ../src/utils/$(CONFIG_ELOOP).o
    132 OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
    133 
    134 ifeq ($(CONFIG_ELOOP), eloop)
    135 # Using glibc < 2.17 requires -lrt for clock_gettime()
    136 LIBS += -lrt
    137 LIBS_c += -lrt
    138 LIBS_p += -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_EAPOL_TEST
    150 CFLAGS += -Werror -DEAPOL_TEST
    151 endif
    152 
    153 ifdef CONFIG_CODE_COVERAGE
    154 CFLAGS += -O0 -fprofile-arcs -ftest-coverage
    155 LIBS += -lgcov
    156 LIBS_c += -lgcov
    157 LIBS_p += -lgcov
    158 endif
    159 
    160 ifdef CONFIG_HT_OVERRIDES
    161 CFLAGS += -DCONFIG_HT_OVERRIDES
    162 endif
    163 
    164 ifdef CONFIG_VHT_OVERRIDES
    165 CFLAGS += -DCONFIG_VHT_OVERRIDES
    166 endif
    167 
    168 ifndef CONFIG_BACKEND
    169 CONFIG_BACKEND=file
    170 endif
    171 
    172 ifeq ($(CONFIG_BACKEND), file)
    173 OBJS += config_file.o
    174 ifndef CONFIG_NO_CONFIG_BLOBS
    175 NEED_BASE64=y
    176 endif
    177 CFLAGS += -DCONFIG_BACKEND_FILE
    178 endif
    179 
    180 ifeq ($(CONFIG_BACKEND), winreg)
    181 OBJS += config_winreg.o
    182 endif
    183 
    184 ifeq ($(CONFIG_BACKEND), none)
    185 OBJS += config_none.o
    186 endif
    187 
    188 ifdef CONFIG_NO_CONFIG_WRITE
    189 CFLAGS += -DCONFIG_NO_CONFIG_WRITE
    190 endif
    191 
    192 ifdef CONFIG_NO_CONFIG_BLOBS
    193 CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
    194 endif
    195 
    196 ifdef CONFIG_NO_SCAN_PROCESSING
    197 CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
    198 endif
    199 
    200 ifdef CONFIG_SUITEB
    201 CFLAGS += -DCONFIG_SUITEB
    202 NEED_SHA256=y
    203 NEED_AES_OMAC1=y
    204 endif
    205 
    206 ifdef CONFIG_SUITEB192
    207 CFLAGS += -DCONFIG_SUITEB192
    208 NEED_SHA384=y
    209 endif
    210 
    211 ifdef CONFIG_IEEE80211W
    212 CFLAGS += -DCONFIG_IEEE80211W
    213 NEED_SHA256=y
    214 NEED_AES_OMAC1=y
    215 endif
    216 
    217 ifdef CONFIG_IEEE80211R
    218 CFLAGS += -DCONFIG_IEEE80211R
    219 OBJS += ../src/rsn_supp/wpa_ft.o
    220 NEED_SHA256=y
    221 NEED_AES_OMAC1=y
    222 endif
    223 
    224 ifdef CONFIG_MESH
    225 NEED_80211_COMMON=y
    226 NEED_SHA256=y
    227 NEED_AES_SIV=y
    228 NEED_AES_OMAC1=y
    229 NEED_AES_CTR=y
    230 CONFIG_SAE=y
    231 CONFIG_AP=y
    232 CFLAGS += -DCONFIG_MESH
    233 OBJS += mesh.o
    234 OBJS += mesh_mpm.o
    235 OBJS += mesh_rsn.o
    236 endif
    237 
    238 ifdef CONFIG_SAE
    239 CFLAGS += -DCONFIG_SAE
    240 OBJS += ../src/common/sae.o
    241 NEED_ECC=y
    242 NEED_DH_GROUPS=y
    243 endif
    244 
    245 ifdef CONFIG_WNM
    246 CFLAGS += -DCONFIG_WNM
    247 OBJS += wnm_sta.o
    248 endif
    249 
    250 ifdef CONFIG_TDLS
    251 CFLAGS += -DCONFIG_TDLS
    252 OBJS += ../src/rsn_supp/tdls.o
    253 NEED_SHA256=y
    254 NEED_AES_OMAC1=y
    255 endif
    256 
    257 ifdef CONFIG_TDLS_TESTING
    258 CFLAGS += -DCONFIG_TDLS_TESTING
    259 endif
    260 
    261 ifdef CONFIG_PEERKEY
    262 CFLAGS += -DCONFIG_PEERKEY
    263 endif
    264 
    265 ifndef CONFIG_NO_WPA
    266 OBJS += ../src/rsn_supp/wpa.o
    267 OBJS += ../src/rsn_supp/preauth.o
    268 OBJS += ../src/rsn_supp/pmksa_cache.o
    269 OBJS += ../src/rsn_supp/peerkey.o
    270 OBJS += ../src/rsn_supp/wpa_ie.o
    271 OBJS += ../src/common/wpa_common.o
    272 NEED_AES=y
    273 NEED_SHA1=y
    274 NEED_MD5=y
    275 NEED_RC4=y
    276 else
    277 CFLAGS += -DCONFIG_NO_WPA
    278 endif
    279 
    280 ifdef CONFIG_IBSS_RSN
    281 NEED_RSN_AUTHENTICATOR=y
    282 CFLAGS += -DCONFIG_IBSS_RSN
    283 OBJS += ibss_rsn.o
    284 endif
    285 
    286 ifdef CONFIG_P2P
    287 OBJS += p2p_supplicant.o
    288 OBJS += p2p_supplicant_sd.o
    289 OBJS += ../src/p2p/p2p.o
    290 OBJS += ../src/p2p/p2p_utils.o
    291 OBJS += ../src/p2p/p2p_parse.o
    292 OBJS += ../src/p2p/p2p_build.o
    293 OBJS += ../src/p2p/p2p_go_neg.o
    294 OBJS += ../src/p2p/p2p_sd.o
    295 OBJS += ../src/p2p/p2p_pd.o
    296 OBJS += ../src/p2p/p2p_invitation.o
    297 OBJS += ../src/p2p/p2p_dev_disc.o
    298 OBJS += ../src/p2p/p2p_group.o
    299 OBJS += ../src/ap/p2p_hostapd.o
    300 OBJS += ../src/utils/bitfield.o
    301 CFLAGS += -DCONFIG_P2P
    302 NEED_GAS=y
    303 NEED_OFFCHANNEL=y
    304 CONFIG_WPS=y
    305 CONFIG_AP=y
    306 ifdef CONFIG_P2P_STRICT
    307 CFLAGS += -DCONFIG_P2P_STRICT
    308 endif
    309 endif
    310 
    311 ifdef CONFIG_WIFI_DISPLAY
    312 CFLAGS += -DCONFIG_WIFI_DISPLAY
    313 OBJS += wifi_display.o
    314 endif
    315 
    316 ifdef CONFIG_HS20
    317 OBJS += hs20_supplicant.o
    318 CFLAGS += -DCONFIG_HS20
    319 CONFIG_INTERWORKING=y
    320 NEED_AES_OMAC1=y
    321 endif
    322 
    323 ifdef CONFIG_INTERWORKING
    324 OBJS += interworking.o
    325 CFLAGS += -DCONFIG_INTERWORKING
    326 NEED_GAS=y
    327 endif
    328 
    329 ifdef CONFIG_NO_ROAMING
    330 CFLAGS += -DCONFIG_NO_ROAMING
    331 endif
    332 
    333 include ../src/drivers/drivers.mak
    334 ifdef CONFIG_AP
    335 OBJS_d += $(DRV_BOTH_OBJS)
    336 CFLAGS += $(DRV_BOTH_CFLAGS)
    337 LDFLAGS += $(DRV_BOTH_LDFLAGS)
    338 LIBS += $(DRV_BOTH_LIBS)
    339 else
    340 NEED_AP_MLME=
    341 OBJS_d += $(DRV_WPA_OBJS)
    342 CFLAGS += $(DRV_WPA_CFLAGS)
    343 LDFLAGS += $(DRV_WPA_LDFLAGS)
    344 LIBS += $(DRV_WPA_LIBS)
    345 endif
    346 
    347 ifndef CONFIG_L2_PACKET
    348 CONFIG_L2_PACKET=linux
    349 endif
    350 
    351 OBJS_l2 += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o
    352 
    353 ifeq ($(CONFIG_L2_PACKET), pcap)
    354 ifdef CONFIG_WINPCAP
    355 CFLAGS += -DCONFIG_WINPCAP
    356 LIBS += -lwpcap -lpacket
    357 LIBS_w += -lwpcap
    358 else
    359 LIBS += -ldnet -lpcap
    360 endif
    361 endif
    362 
    363 ifeq ($(CONFIG_L2_PACKET), winpcap)
    364 LIBS += -lwpcap -lpacket
    365 LIBS_w += -lwpcap
    366 endif
    367 
    368 ifeq ($(CONFIG_L2_PACKET), freebsd)
    369 LIBS += -lpcap
    370 endif
    371 
    372 ifdef CONFIG_ERP
    373 CFLAGS += -DCONFIG_ERP
    374 NEED_SHA256=y
    375 NEED_HMAC_SHA256_KDF=y
    376 endif
    377 
    378 ifdef CONFIG_EAP_TLS
    379 # EAP-TLS
    380 ifeq ($(CONFIG_EAP_TLS), dyn)
    381 CFLAGS += -DEAP_TLS_DYNAMIC
    382 EAPDYN += ../src/eap_peer/eap_tls.so
    383 else
    384 CFLAGS += -DEAP_TLS
    385 OBJS += ../src/eap_peer/eap_tls.o
    386 OBJS_h += ../src/eap_server/eap_server_tls.o
    387 endif
    388 TLS_FUNCS=y
    389 CONFIG_IEEE8021X_EAPOL=y
    390 endif
    391 
    392 ifdef CONFIG_EAP_UNAUTH_TLS
    393 # EAP-UNAUTH-TLS
    394 CFLAGS += -DEAP_UNAUTH_TLS
    395 ifndef CONFIG_EAP_TLS
    396 OBJS += ../src/eap_peer/eap_tls.o
    397 OBJS_h += ../src/eap_server/eap_server_tls.o
    398 TLS_FUNCS=y
    399 endif
    400 CONFIG_IEEE8021X_EAPOL=y
    401 endif
    402 
    403 ifdef CONFIG_EAP_PEAP
    404 # EAP-PEAP
    405 ifeq ($(CONFIG_EAP_PEAP), dyn)
    406 CFLAGS += -DEAP_PEAP_DYNAMIC
    407 EAPDYN += ../src/eap_peer/eap_peap.so
    408 else
    409 CFLAGS += -DEAP_PEAP
    410 OBJS += ../src/eap_peer/eap_peap.o
    411 OBJS += ../src/eap_common/eap_peap_common.o
    412 OBJS_h += ../src/eap_server/eap_server_peap.o
    413 endif
    414 TLS_FUNCS=y
    415 CONFIG_IEEE8021X_EAPOL=y
    416 endif
    417 
    418 ifdef CONFIG_EAP_TTLS
    419 # EAP-TTLS
    420 ifeq ($(CONFIG_EAP_TTLS), dyn)
    421 CFLAGS += -DEAP_TTLS_DYNAMIC
    422 EAPDYN += ../src/eap_peer/eap_ttls.so
    423 else
    424 CFLAGS += -DEAP_TTLS
    425 OBJS += ../src/eap_peer/eap_ttls.o
    426 OBJS_h += ../src/eap_server/eap_server_ttls.o
    427 endif
    428 MS_FUNCS=y
    429 TLS_FUNCS=y
    430 CHAP=y
    431 CONFIG_IEEE8021X_EAPOL=y
    432 endif
    433 
    434 ifdef CONFIG_EAP_MD5
    435 # EAP-MD5
    436 ifeq ($(CONFIG_EAP_MD5), dyn)
    437 CFLAGS += -DEAP_MD5_DYNAMIC
    438 EAPDYN += ../src/eap_peer/eap_md5.so
    439 else
    440 CFLAGS += -DEAP_MD5
    441 OBJS += ../src/eap_peer/eap_md5.o
    442 OBJS_h += ../src/eap_server/eap_server_md5.o
    443 endif
    444 CHAP=y
    445 CONFIG_IEEE8021X_EAPOL=y
    446 endif
    447 
    448 # backwards compatibility for old spelling
    449 ifdef CONFIG_MSCHAPV2
    450 ifndef CONFIG_EAP_MSCHAPV2
    451 CONFIG_EAP_MSCHAPV2=y
    452 endif
    453 endif
    454 
    455 ifdef CONFIG_EAP_MSCHAPV2
    456 # EAP-MSCHAPv2
    457 ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
    458 CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
    459 EAPDYN += ../src/eap_peer/eap_mschapv2.so
    460 EAPDYN += ../src/eap_peer/mschapv2.so
    461 else
    462 CFLAGS += -DEAP_MSCHAPv2
    463 OBJS += ../src/eap_peer/eap_mschapv2.o
    464 OBJS += ../src/eap_peer/mschapv2.o
    465 OBJS_h += ../src/eap_server/eap_server_mschapv2.o
    466 endif
    467 MS_FUNCS=y
    468 CONFIG_IEEE8021X_EAPOL=y
    469 endif
    470 
    471 ifdef CONFIG_EAP_GTC
    472 # EAP-GTC
    473 ifeq ($(CONFIG_EAP_GTC), dyn)
    474 CFLAGS += -DEAP_GTC_DYNAMIC
    475 EAPDYN += ../src/eap_peer/eap_gtc.so
    476 else
    477 CFLAGS += -DEAP_GTC
    478 OBJS += ../src/eap_peer/eap_gtc.o
    479 OBJS_h += ../src/eap_server/eap_server_gtc.o
    480 endif
    481 CONFIG_IEEE8021X_EAPOL=y
    482 endif
    483 
    484 ifdef CONFIG_EAP_OTP
    485 # EAP-OTP
    486 ifeq ($(CONFIG_EAP_OTP), dyn)
    487 CFLAGS += -DEAP_OTP_DYNAMIC
    488 EAPDYN += ../src/eap_peer/eap_otp.so
    489 else
    490 CFLAGS += -DEAP_OTP
    491 OBJS += ../src/eap_peer/eap_otp.o
    492 endif
    493 CONFIG_IEEE8021X_EAPOL=y
    494 endif
    495 
    496 ifdef CONFIG_EAP_SIM
    497 # EAP-SIM
    498 ifeq ($(CONFIG_EAP_SIM), dyn)
    499 CFLAGS += -DEAP_SIM_DYNAMIC
    500 EAPDYN += ../src/eap_peer/eap_sim.so
    501 else
    502 CFLAGS += -DEAP_SIM
    503 OBJS += ../src/eap_peer/eap_sim.o
    504 OBJS_h += ../src/eap_server/eap_server_sim.o
    505 endif
    506 CONFIG_IEEE8021X_EAPOL=y
    507 CONFIG_EAP_SIM_COMMON=y
    508 NEED_AES_CBC=y
    509 endif
    510 
    511 ifdef CONFIG_EAP_LEAP
    512 # EAP-LEAP
    513 ifeq ($(CONFIG_EAP_LEAP), dyn)
    514 CFLAGS += -DEAP_LEAP_DYNAMIC
    515 EAPDYN += ../src/eap_peer/eap_leap.so
    516 else
    517 CFLAGS += -DEAP_LEAP
    518 OBJS += ../src/eap_peer/eap_leap.o
    519 endif
    520 MS_FUNCS=y
    521 CONFIG_IEEE8021X_EAPOL=y
    522 endif
    523 
    524 ifdef CONFIG_EAP_PSK
    525 # EAP-PSK
    526 ifeq ($(CONFIG_EAP_PSK), dyn)
    527 CFLAGS += -DEAP_PSK_DYNAMIC
    528 EAPDYN += ../src/eap_peer/eap_psk.so
    529 else
    530 CFLAGS += -DEAP_PSK
    531 OBJS += ../src/eap_peer/eap_psk.o ../src/eap_common/eap_psk_common.o
    532 OBJS_h += ../src/eap_server/eap_server_psk.o
    533 endif
    534 CONFIG_IEEE8021X_EAPOL=y
    535 NEED_AES=y
    536 NEED_AES_OMAC1=y
    537 NEED_AES_ENCBLOCK=y
    538 NEED_AES_EAX=y
    539 endif
    540 
    541 ifdef CONFIG_EAP_AKA
    542 # EAP-AKA
    543 ifeq ($(CONFIG_EAP_AKA), dyn)
    544 CFLAGS += -DEAP_AKA_DYNAMIC
    545 EAPDYN += ../src/eap_peer/eap_aka.so
    546 else
    547 CFLAGS += -DEAP_AKA
    548 OBJS += ../src/eap_peer/eap_aka.o
    549 OBJS_h += ../src/eap_server/eap_server_aka.o
    550 endif
    551 CONFIG_IEEE8021X_EAPOL=y
    552 CONFIG_EAP_SIM_COMMON=y
    553 NEED_AES_CBC=y
    554 endif
    555 
    556 ifdef CONFIG_EAP_PROXY
    557 CFLAGS += -DCONFIG_EAP_PROXY
    558 OBJS += ../src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).o
    559 include eap_proxy_$(CONFIG_EAP_PROXY).mak
    560 CONFIG_IEEE8021X_EAPOL=y
    561 endif
    562 
    563 ifdef CONFIG_EAP_AKA_PRIME
    564 # EAP-AKA'
    565 ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
    566 CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
    567 else
    568 CFLAGS += -DEAP_AKA_PRIME
    569 endif
    570 NEED_SHA256=y
    571 endif
    572 
    573 ifdef CONFIG_EAP_SIM_COMMON
    574 OBJS += ../src/eap_common/eap_sim_common.o
    575 OBJS_h += ../src/eap_server/eap_sim_db.o
    576 NEED_AES=y
    577 NEED_FIPS186_2_PRF=y
    578 endif
    579 
    580 ifdef CONFIG_EAP_FAST
    581 # EAP-FAST
    582 ifeq ($(CONFIG_EAP_FAST), dyn)
    583 CFLAGS += -DEAP_FAST_DYNAMIC
    584 EAPDYN += ../src/eap_peer/eap_fast.so
    585 EAPDYN += ../src/eap_common/eap_fast_common.o
    586 else
    587 CFLAGS += -DEAP_FAST
    588 OBJS += ../src/eap_peer/eap_fast.o ../src/eap_peer/eap_fast_pac.o
    589 OBJS += ../src/eap_common/eap_fast_common.o
    590 OBJS_h += ../src/eap_server/eap_server_fast.o
    591 endif
    592 TLS_FUNCS=y
    593 CONFIG_IEEE8021X_EAPOL=y
    594 NEED_T_PRF=y
    595 endif
    596 
    597 ifdef CONFIG_EAP_PAX
    598 # EAP-PAX
    599 ifeq ($(CONFIG_EAP_PAX), dyn)
    600 CFLAGS += -DEAP_PAX_DYNAMIC
    601 EAPDYN += ../src/eap_peer/eap_pax.so
    602 else
    603 CFLAGS += -DEAP_PAX
    604 OBJS += ../src/eap_peer/eap_pax.o ../src/eap_common/eap_pax_common.o
    605 OBJS_h += ../src/eap_server/eap_server_pax.o
    606 endif
    607 CONFIG_IEEE8021X_EAPOL=y
    608 endif
    609 
    610 ifdef CONFIG_EAP_SAKE
    611 # EAP-SAKE
    612 ifeq ($(CONFIG_EAP_SAKE), dyn)
    613 CFLAGS += -DEAP_SAKE_DYNAMIC
    614 EAPDYN += ../src/eap_peer/eap_sake.so
    615 else
    616 CFLAGS += -DEAP_SAKE
    617 OBJS += ../src/eap_peer/eap_sake.o ../src/eap_common/eap_sake_common.o
    618 OBJS_h += ../src/eap_server/eap_server_sake.o
    619 endif
    620 CONFIG_IEEE8021X_EAPOL=y
    621 endif
    622 
    623 ifdef CONFIG_EAP_GPSK
    624 # EAP-GPSK
    625 ifeq ($(CONFIG_EAP_GPSK), dyn)
    626 CFLAGS += -DEAP_GPSK_DYNAMIC
    627 EAPDYN += ../src/eap_peer/eap_gpsk.so
    628 else
    629 CFLAGS += -DEAP_GPSK
    630 OBJS += ../src/eap_peer/eap_gpsk.o ../src/eap_common/eap_gpsk_common.o
    631 OBJS_h += ../src/eap_server/eap_server_gpsk.o
    632 endif
    633 CONFIG_IEEE8021X_EAPOL=y
    634 ifdef CONFIG_EAP_GPSK_SHA256
    635 CFLAGS += -DEAP_GPSK_SHA256
    636 endif
    637 NEED_SHA256=y
    638 NEED_AES_OMAC1=y
    639 endif
    640 
    641 ifdef CONFIG_EAP_PWD
    642 CFLAGS += -DEAP_PWD
    643 OBJS += ../src/eap_peer/eap_pwd.o ../src/eap_common/eap_pwd_common.o
    644 OBJS_h += ../src/eap_server/eap_server_pwd.o
    645 CONFIG_IEEE8021X_EAPOL=y
    646 NEED_SHA256=y
    647 endif
    648 
    649 ifdef CONFIG_EAP_EKE
    650 # EAP-EKE
    651 ifeq ($(CONFIG_EAP_EKE), dyn)
    652 CFLAGS += -DEAP_EKE_DYNAMIC
    653 EAPDYN += ../src/eap_peer/eap_eke.so
    654 else
    655 CFLAGS += -DEAP_EKE
    656 OBJS += ../src/eap_peer/eap_eke.o ../src/eap_common/eap_eke_common.o
    657 OBJS_h += ../src/eap_server/eap_server_eke.o
    658 endif
    659 CONFIG_IEEE8021X_EAPOL=y
    660 NEED_DH_GROUPS=y
    661 NEED_DH_GROUPS_ALL=y
    662 NEED_SHA256=y
    663 endif
    664 
    665 ifdef CONFIG_WPS
    666 # EAP-WSC
    667 CFLAGS += -DCONFIG_WPS -DEAP_WSC
    668 OBJS += wps_supplicant.o
    669 OBJS += ../src/utils/uuid.o
    670 OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o
    671 OBJS += ../src/wps/wps.o
    672 OBJS += ../src/wps/wps_common.o
    673 OBJS += ../src/wps/wps_attr_parse.o
    674 OBJS += ../src/wps/wps_attr_build.o
    675 OBJS += ../src/wps/wps_attr_process.o
    676 OBJS += ../src/wps/wps_dev_attr.o
    677 OBJS += ../src/wps/wps_enrollee.o
    678 OBJS += ../src/wps/wps_registrar.o
    679 OBJS_h += ../src/eap_server/eap_server_wsc.o
    680 CONFIG_IEEE8021X_EAPOL=y
    681 NEED_DH_GROUPS=y
    682 NEED_SHA256=y
    683 NEED_BASE64=y
    684 NEED_AES_CBC=y
    685 NEED_MODEXP=y
    686 
    687 ifdef CONFIG_WPS_NFC
    688 CFLAGS += -DCONFIG_WPS_NFC
    689 OBJS += ../src/wps/ndef.o
    690 NEED_WPS_OOB=y
    691 endif
    692 
    693 ifdef NEED_WPS_OOB
    694 CFLAGS += -DCONFIG_WPS_OOB
    695 endif
    696 
    697 ifdef CONFIG_WPS_ER
    698 CONFIG_WPS_UPNP=y
    699 CFLAGS += -DCONFIG_WPS_ER
    700 OBJS += ../src/wps/wps_er.o
    701 OBJS += ../src/wps/wps_er_ssdp.o
    702 endif
    703 
    704 ifdef CONFIG_WPS_UPNP
    705 CFLAGS += -DCONFIG_WPS_UPNP
    706 OBJS += ../src/wps/wps_upnp.o
    707 OBJS += ../src/wps/wps_upnp_ssdp.o
    708 OBJS += ../src/wps/wps_upnp_web.o
    709 OBJS += ../src/wps/wps_upnp_event.o
    710 OBJS += ../src/wps/wps_upnp_ap.o
    711 OBJS += ../src/wps/upnp_xml.o
    712 OBJS += ../src/wps/httpread.o
    713 OBJS += ../src/wps/http_client.o
    714 OBJS += ../src/wps/http_server.o
    715 endif
    716 
    717 ifdef CONFIG_WPS_STRICT
    718 CFLAGS += -DCONFIG_WPS_STRICT
    719 OBJS += ../src/wps/wps_validate.o
    720 endif
    721 
    722 ifdef CONFIG_WPS_TESTING
    723 CFLAGS += -DCONFIG_WPS_TESTING
    724 endif
    725 
    726 ifdef CONFIG_WPS_REG_DISABLE_OPEN
    727 CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN
    728 endif
    729 
    730 endif
    731 
    732 ifdef CONFIG_EAP_IKEV2
    733 # EAP-IKEv2
    734 ifeq ($(CONFIG_EAP_IKEV2), dyn)
    735 CFLAGS += -DEAP_IKEV2_DYNAMIC
    736 EAPDYN += ../src/eap_peer/eap_ikev2.so ../src/eap_peer/ikev2.o
    737 EAPDYN += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
    738 else
    739 CFLAGS += -DEAP_IKEV2
    740 OBJS += ../src/eap_peer/eap_ikev2.o ../src/eap_peer/ikev2.o
    741 OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
    742 OBJS_h += ../src/eap_server/eap_server_ikev2.o
    743 OBJS_h += ../src/eap_server/ikev2.o
    744 endif
    745 CONFIG_IEEE8021X_EAPOL=y
    746 NEED_DH_GROUPS=y
    747 NEED_DH_GROUPS_ALL=y
    748 NEED_MODEXP=y
    749 NEED_CIPHER=y
    750 endif
    751 
    752 ifdef CONFIG_EAP_VENDOR_TEST
    753 ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
    754 CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
    755 EAPDYN += ../src/eap_peer/eap_vendor_test.so
    756 else
    757 CFLAGS += -DEAP_VENDOR_TEST
    758 OBJS += ../src/eap_peer/eap_vendor_test.o
    759 OBJS_h += ../src/eap_server/eap_server_vendor_test.o
    760 endif
    761 CONFIG_IEEE8021X_EAPOL=y
    762 endif
    763 
    764 ifdef CONFIG_EAP_TNC
    765 # EAP-TNC
    766 CFLAGS += -DEAP_TNC
    767 OBJS += ../src/eap_peer/eap_tnc.o
    768 OBJS += ../src/eap_peer/tncc.o
    769 OBJS_h += ../src/eap_server/eap_server_tnc.o
    770 OBJS_h += ../src/eap_server/tncs.o
    771 NEED_BASE64=y
    772 ifndef CONFIG_NATIVE_WINDOWS
    773 ifndef CONFIG_DRIVER_BSD
    774 LIBS += -ldl
    775 endif
    776 endif
    777 endif
    778 
    779 ifdef CONFIG_IEEE8021X_EAPOL
    780 # IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
    781 CFLAGS += -DIEEE8021X_EAPOL
    782 OBJS += ../src/eapol_supp/eapol_supp_sm.o
    783 OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o
    784 NEED_EAP_COMMON=y
    785 ifdef CONFIG_DYNAMIC_EAP_METHODS
    786 CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
    787 LIBS += -ldl -rdynamic
    788 endif
    789 endif
    790 
    791 ifdef CONFIG_MACSEC
    792 CFLAGS += -DCONFIG_MACSEC
    793 NEED_AES_ENCBLOCK=y
    794 NEED_AES_UNWRAP=y
    795 NEED_AES_WRAP=y
    796 NEED_AES_OMAC1=y
    797 OBJS += wpas_kay.o
    798 OBJS += ../src/pae/ieee802_1x_cp.o
    799 OBJS += ../src/pae/ieee802_1x_kay.o
    800 OBJS += ../src/pae/ieee802_1x_key.o
    801 OBJS += ../src/pae/ieee802_1x_secy_ops.o
    802 endif
    803 
    804 ifdef CONFIG_AP
    805 NEED_EAP_COMMON=y
    806 NEED_RSN_AUTHENTICATOR=y
    807 CFLAGS += -DCONFIG_AP
    808 OBJS += ap.o
    809 CFLAGS += -DCONFIG_NO_RADIUS
    810 CFLAGS += -DCONFIG_NO_ACCOUNTING
    811 CFLAGS += -DCONFIG_NO_VLAN
    812 OBJS += ../src/ap/hostapd.o
    813 OBJS += ../src/ap/wpa_auth_glue.o
    814 OBJS += ../src/ap/utils.o
    815 OBJS += ../src/ap/authsrv.o
    816 OBJS += ../src/ap/ap_config.o
    817 OBJS += ../src/utils/ip_addr.o
    818 OBJS += ../src/ap/sta_info.o
    819 OBJS += ../src/ap/tkip_countermeasures.o
    820 OBJS += ../src/ap/ap_mlme.o
    821 OBJS += ../src/ap/ieee802_1x.o
    822 OBJS += ../src/eapol_auth/eapol_auth_sm.o
    823 OBJS += ../src/ap/ieee802_11_auth.o
    824 OBJS += ../src/ap/ieee802_11_shared.o
    825 OBJS += ../src/ap/drv_callbacks.o
    826 OBJS += ../src/ap/ap_drv_ops.o
    827 OBJS += ../src/ap/beacon.o
    828 OBJS += ../src/ap/bss_load.o
    829 OBJS += ../src/ap/eap_user_db.o
    830 ifdef CONFIG_IEEE80211N
    831 OBJS += ../src/ap/ieee802_11_ht.o
    832 ifdef CONFIG_IEEE80211AC
    833 OBJS += ../src/ap/ieee802_11_vht.o
    834 endif
    835 endif
    836 ifdef CONFIG_WNM
    837 OBJS += ../src/ap/wnm_ap.o
    838 endif
    839 ifdef CONFIG_CTRL_IFACE
    840 OBJS += ../src/ap/ctrl_iface_ap.o
    841 endif
    842 
    843 CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
    844 OBJS += ../src/eap_server/eap_server.o
    845 OBJS += ../src/eap_server/eap_server_identity.o
    846 OBJS += ../src/eap_server/eap_server_methods.o
    847 
    848 ifdef CONFIG_IEEE80211N
    849 CFLAGS += -DCONFIG_IEEE80211N
    850 ifdef CONFIG_IEEE80211AC
    851 CFLAGS += -DCONFIG_IEEE80211AC
    852 endif
    853 endif
    854 
    855 ifdef NEED_AP_MLME
    856 OBJS += ../src/ap/wmm.o
    857 OBJS += ../src/ap/ap_list.o
    858 OBJS += ../src/ap/ieee802_11.o
    859 OBJS += ../src/ap/hw_features.o
    860 OBJS += ../src/ap/dfs.o
    861 CFLAGS += -DNEED_AP_MLME
    862 endif
    863 ifdef CONFIG_WPS
    864 CFLAGS += -DEAP_SERVER_WSC
    865 OBJS += ../src/ap/wps_hostapd.o
    866 OBJS += ../src/eap_server/eap_server_wsc.o
    867 endif
    868 ifdef CONFIG_INTERWORKING
    869 OBJS += ../src/ap/gas_serv.o
    870 endif
    871 ifdef CONFIG_HS20
    872 OBJS += ../src/ap/hs20.o
    873 endif
    874 endif
    875 
    876 ifdef NEED_RSN_AUTHENTICATOR
    877 CFLAGS += -DCONFIG_NO_RADIUS
    878 NEED_AES_WRAP=y
    879 OBJS += ../src/ap/wpa_auth.o
    880 OBJS += ../src/ap/wpa_auth_ie.o
    881 OBJS += ../src/ap/pmksa_cache_auth.o
    882 ifdef CONFIG_IEEE80211R
    883 OBJS += ../src/ap/wpa_auth_ft.o
    884 endif
    885 ifdef CONFIG_PEERKEY
    886 OBJS += ../src/ap/peerkey_auth.o
    887 endif
    888 endif
    889 
    890 ifdef CONFIG_EAP_SERVER
    891 CFLAGS += -DEAP_SERVER
    892 OBJS_h += ../src/eap_server/eap_server.o
    893 OBJS_h += ../src/eap_server/eap_server_identity.o
    894 OBJS_h += ../src/eap_server/eap_server_methods.o
    895 endif
    896 
    897 ifdef CONFIG_RADIUS_CLIENT
    898 OBJS_h += ../src/utils/ip_addr.o
    899 OBJS_h += ../src/radius/radius.o
    900 OBJS_h += ../src/radius/radius_client.o
    901 endif
    902 
    903 ifdef CONFIG_AUTHENTICATOR
    904 OBJS_h += ../src/eapol_auth/eapol_auth_sm.o
    905 OBJS_h += ../src/ap/ieee802_1x.o
    906 endif
    907 
    908 ifdef CONFIG_WPA_AUTHENTICATOR
    909 OBJS_h += ../src/ap/wpa_auth.o
    910 OBJS_h += ../src/ap/wpa_auth_ie.o
    911 OBJS_h += ../src/ap/pmksa_cache_auth.o
    912 ifdef CONFIG_IEEE80211R
    913 OBJS_h += ../src/ap/wpa_auth_ft.o
    914 endif
    915 ifdef CONFIG_PEERKEY
    916 OBJS_h += ../src/ap/peerkey_auth.o
    917 endif
    918 endif
    919 
    920 ifdef CONFIG_PCSC
    921 # PC/SC interface for smartcards (USIM, GSM SIM)
    922 CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
    923 OBJS += ../src/utils/pcsc_funcs.o
    924 # -lpthread may not be needed depending on how pcsc-lite was configured
    925 ifdef CONFIG_NATIVE_WINDOWS
    926 #Once MinGW gets support for WinScard, -lwinscard could be used instead of the
    927 #dynamic symbol loading that is now used in pcsc_funcs.c
    928 #LIBS += -lwinscard
    929 else
    930 LIBS += -lpcsclite -lpthread
    931 endif
    932 endif
    933 
    934 ifdef CONFIG_SIM_SIMULATOR
    935 CFLAGS += -DCONFIG_SIM_SIMULATOR
    936 NEED_MILENAGE=y
    937 endif
    938 
    939 ifdef CONFIG_USIM_SIMULATOR
    940 CFLAGS += -DCONFIG_USIM_SIMULATOR
    941 NEED_MILENAGE=y
    942 endif
    943 
    944 ifdef NEED_MILENAGE
    945 OBJS += ../src/crypto/milenage.o
    946 NEED_AES_ENCBLOCK=y
    947 endif
    948 
    949 ifdef CONFIG_PKCS12
    950 CFLAGS += -DPKCS12_FUNCS
    951 endif
    952 
    953 ifdef CONFIG_SMARTCARD
    954 CFLAGS += -DCONFIG_SMARTCARD
    955 endif
    956 
    957 ifdef MS_FUNCS
    958 OBJS += ../src/crypto/ms_funcs.o
    959 NEED_DES=y
    960 NEED_MD4=y
    961 endif
    962 
    963 ifdef CHAP
    964 OBJS += ../src/eap_common/chap.o
    965 endif
    966 
    967 ifdef TLS_FUNCS
    968 NEED_DES=y
    969 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
    970 OBJS += ../src/eap_peer/eap_tls_common.o
    971 OBJS_h += ../src/eap_server/eap_server_tls_common.o
    972 ifndef CONFIG_FIPS
    973 NEED_TLS_PRF=y
    974 NEED_SHA1=y
    975 NEED_MD5=y
    976 endif
    977 endif
    978 
    979 ifndef CONFIG_TLS
    980 CONFIG_TLS=openssl
    981 endif
    982 
    983 ifdef CONFIG_TLSV11
    984 CFLAGS += -DCONFIG_TLSV11
    985 endif
    986 
    987 ifdef CONFIG_TLSV12
    988 CFLAGS += -DCONFIG_TLSV12
    989 NEED_SHA256=y
    990 endif
    991 
    992 ifeq ($(CONFIG_TLS), openssl)
    993 ifdef TLS_FUNCS
    994 CFLAGS += -DEAP_TLS_OPENSSL
    995 OBJS += ../src/crypto/tls_openssl.o
    996 LIBS += -lssl
    997 endif
    998 OBJS += ../src/crypto/crypto_openssl.o
    999 OBJS_p += ../src/crypto/crypto_openssl.o
   1000 OBJS_priv += ../src/crypto/crypto_openssl.o
   1001 ifdef NEED_FIPS186_2_PRF
   1002 OBJS += ../src/crypto/fips_prf_openssl.o
   1003 endif
   1004 LIBS += -lcrypto
   1005 LIBS_p += -lcrypto
   1006 ifdef CONFIG_TLS_ADD_DL
   1007 LIBS += -ldl
   1008 LIBS_p += -ldl
   1009 endif
   1010 endif
   1011 
   1012 ifeq ($(CONFIG_TLS), gnutls)
   1013 ifdef TLS_FUNCS
   1014 OBJS += ../src/crypto/tls_gnutls.o
   1015 LIBS += -lgnutls -lgpg-error
   1016 endif
   1017 OBJS += ../src/crypto/crypto_gnutls.o
   1018 OBJS_p += ../src/crypto/crypto_gnutls.o
   1019 OBJS_priv += ../src/crypto/crypto_gnutls.o
   1020 ifdef NEED_FIPS186_2_PRF
   1021 OBJS += ../src/crypto/fips_prf_internal.o
   1022 SHA1OBJS += ../src/crypto/sha1-internal.o
   1023 endif
   1024 LIBS += -lgcrypt
   1025 LIBS_p += -lgcrypt
   1026 CONFIG_INTERNAL_SHA256=y
   1027 CONFIG_INTERNAL_RC4=y
   1028 CONFIG_INTERNAL_DH_GROUP5=y
   1029 endif
   1030 
   1031 ifeq ($(CONFIG_TLS), internal)
   1032 ifndef CONFIG_CRYPTO
   1033 CONFIG_CRYPTO=internal
   1034 endif
   1035 ifdef TLS_FUNCS
   1036 OBJS += ../src/crypto/crypto_internal-rsa.o
   1037 OBJS += ../src/crypto/tls_internal.o
   1038 OBJS += ../src/tls/tlsv1_common.o
   1039 OBJS += ../src/tls/tlsv1_record.o
   1040 OBJS += ../src/tls/tlsv1_cred.o
   1041 OBJS += ../src/tls/tlsv1_client.o
   1042 OBJS += ../src/tls/tlsv1_client_write.o
   1043 OBJS += ../src/tls/tlsv1_client_read.o
   1044 OBJS += ../src/tls/asn1.o
   1045 OBJS += ../src/tls/rsa.o
   1046 OBJS += ../src/tls/x509v3.o
   1047 OBJS += ../src/tls/pkcs1.o
   1048 OBJS += ../src/tls/pkcs5.o
   1049 OBJS += ../src/tls/pkcs8.o
   1050 NEED_SHA256=y
   1051 NEED_BASE64=y
   1052 NEED_TLS_PRF=y
   1053 ifdef CONFIG_TLSV12
   1054 NEED_TLS_PRF_SHA256=y
   1055 endif
   1056 NEED_MODEXP=y
   1057 NEED_CIPHER=y
   1058 CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
   1059 endif
   1060 ifdef NEED_CIPHER
   1061 NEED_DES=y
   1062 OBJS += ../src/crypto/crypto_internal-cipher.o
   1063 endif
   1064 ifdef NEED_MODEXP
   1065 OBJS += ../src/crypto/crypto_internal-modexp.o
   1066 OBJS += ../src/tls/bignum.o
   1067 endif
   1068 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
   1069 OBJS += ../src/crypto/crypto_libtomcrypt.o
   1070 OBJS_p += ../src/crypto/crypto_libtomcrypt.o
   1071 LIBS += -ltomcrypt -ltfm
   1072 LIBS_p += -ltomcrypt -ltfm
   1073 CONFIG_INTERNAL_SHA256=y
   1074 CONFIG_INTERNAL_RC4=y
   1075 CONFIG_INTERNAL_DH_GROUP5=y
   1076 endif
   1077 ifeq ($(CONFIG_CRYPTO), internal)
   1078 OBJS += ../src/crypto/crypto_internal.o
   1079 OBJS_p += ../src/crypto/crypto_internal.o
   1080 NEED_AES_ENC=y
   1081 CFLAGS += -DCONFIG_CRYPTO_INTERNAL
   1082 ifdef CONFIG_INTERNAL_LIBTOMMATH
   1083 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
   1084 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
   1085 CFLAGS += -DLTM_FAST
   1086 endif
   1087 else
   1088 LIBS += -ltommath
   1089 LIBS_p += -ltommath
   1090 endif
   1091 CONFIG_INTERNAL_AES=y
   1092 CONFIG_INTERNAL_DES=y
   1093 CONFIG_INTERNAL_SHA1=y
   1094 CONFIG_INTERNAL_MD4=y
   1095 CONFIG_INTERNAL_MD5=y
   1096 CONFIG_INTERNAL_SHA256=y
   1097 CONFIG_INTERNAL_RC4=y
   1098 CONFIG_INTERNAL_DH_GROUP5=y
   1099 endif
   1100 ifeq ($(CONFIG_CRYPTO), cryptoapi)
   1101 OBJS += ../src/crypto/crypto_cryptoapi.o
   1102 OBJS_p += ../src/crypto/crypto_cryptoapi.o
   1103 CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
   1104 CONFIG_INTERNAL_SHA256=y
   1105 CONFIG_INTERNAL_RC4=y
   1106 endif
   1107 endif
   1108 
   1109 ifeq ($(CONFIG_TLS), none)
   1110 ifdef TLS_FUNCS
   1111 OBJS += ../src/crypto/tls_none.o
   1112 CFLAGS += -DEAP_TLS_NONE
   1113 CONFIG_INTERNAL_AES=y
   1114 CONFIG_INTERNAL_SHA1=y
   1115 CONFIG_INTERNAL_MD5=y
   1116 endif
   1117 OBJS += ../src/crypto/crypto_none.o
   1118 OBJS_p += ../src/crypto/crypto_none.o
   1119 CONFIG_INTERNAL_SHA256=y
   1120 CONFIG_INTERNAL_RC4=y
   1121 endif
   1122 
   1123 ifdef TLS_FUNCS
   1124 ifdef CONFIG_SMARTCARD
   1125 ifndef CONFIG_NATIVE_WINDOWS
   1126 ifneq ($(CONFIG_L2_PACKET), freebsd)
   1127 LIBS += -ldl
   1128 endif
   1129 endif
   1130 endif
   1131 endif
   1132 
   1133 ifndef TLS_FUNCS
   1134 OBJS += ../src/crypto/tls_none.o
   1135 ifeq ($(CONFIG_TLS), internal)
   1136 CONFIG_INTERNAL_AES=y
   1137 CONFIG_INTERNAL_SHA1=y
   1138 CONFIG_INTERNAL_MD5=y
   1139 CONFIG_INTERNAL_RC4=y
   1140 endif
   1141 endif
   1142 
   1143 AESOBJS = # none so far (see below)
   1144 ifdef CONFIG_INTERNAL_AES
   1145 AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o
   1146 endif
   1147 
   1148 ifneq ($(CONFIG_TLS), openssl)
   1149 AESOBJS += ../src/crypto/aes-unwrap.o
   1150 endif
   1151 ifdef NEED_AES_EAX
   1152 AESOBJS += ../src/crypto/aes-eax.o
   1153 NEED_AES_CTR=y
   1154 endif
   1155 ifdef NEED_AES_CTR
   1156 AESOBJS += ../src/crypto/aes-ctr.o
   1157 endif
   1158 ifdef NEED_AES_ENCBLOCK
   1159 AESOBJS += ../src/crypto/aes-encblock.o
   1160 endif
   1161 ifdef NEED_AES_OMAC1
   1162 NEED_AES_ENC=y
   1163 ifdef CONFIG_OPENSSL_CMAC
   1164 CFLAGS += -DCONFIG_OPENSSL_CMAC
   1165 else
   1166 AESOBJS += ../src/crypto/aes-omac1.o
   1167 endif
   1168 endif
   1169 ifdef NEED_AES_SIV
   1170 AESOBJS += ../src/crypto/aes-siv.o
   1171 endif
   1172 ifdef NEED_AES_WRAP
   1173 NEED_AES_ENC=y
   1174 ifneq ($(CONFIG_TLS), openssl)
   1175 AESOBJS += ../src/crypto/aes-wrap.o
   1176 endif
   1177 endif
   1178 ifdef NEED_AES_CBC
   1179 NEED_AES_ENC=y
   1180 ifneq ($(CONFIG_TLS), openssl)
   1181 AESOBJS += ../src/crypto/aes-cbc.o
   1182 endif
   1183 endif
   1184 ifdef NEED_AES_ENC
   1185 ifdef CONFIG_INTERNAL_AES
   1186 AESOBJS += ../src/crypto/aes-internal-enc.o
   1187 endif
   1188 endif
   1189 ifdef NEED_AES
   1190 OBJS += $(AESOBJS)
   1191 endif
   1192 
   1193 ifdef NEED_SHA1
   1194 ifneq ($(CONFIG_TLS), openssl)
   1195 SHA1OBJS += ../src/crypto/sha1.o
   1196 endif
   1197 SHA1OBJS += ../src/crypto/sha1-prf.o
   1198 ifdef CONFIG_INTERNAL_SHA1
   1199 SHA1OBJS += ../src/crypto/sha1-internal.o
   1200 ifdef NEED_FIPS186_2_PRF
   1201 SHA1OBJS += ../src/crypto/fips_prf_internal.o
   1202 endif
   1203 endif
   1204 ifdef CONFIG_NO_WPA_PASSPHRASE
   1205 CFLAGS += -DCONFIG_NO_PBKDF2
   1206 else
   1207 ifneq ($(CONFIG_TLS), openssl)
   1208 SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
   1209 endif
   1210 endif
   1211 ifdef NEED_T_PRF
   1212 SHA1OBJS += ../src/crypto/sha1-tprf.o
   1213 endif
   1214 ifdef NEED_TLS_PRF
   1215 SHA1OBJS += ../src/crypto/sha1-tlsprf.o
   1216 endif
   1217 endif
   1218 
   1219 ifndef CONFIG_FIPS
   1220 ifneq ($(CONFIG_TLS), openssl)
   1221 MD5OBJS += ../src/crypto/md5.o
   1222 endif
   1223 endif
   1224 ifdef NEED_MD5
   1225 ifdef CONFIG_INTERNAL_MD5
   1226 MD5OBJS += ../src/crypto/md5-internal.o
   1227 endif
   1228 OBJS += $(MD5OBJS)
   1229 OBJS_p += $(MD5OBJS)
   1230 OBJS_priv += $(MD5OBJS)
   1231 endif
   1232 
   1233 ifdef NEED_MD4
   1234 ifdef CONFIG_INTERNAL_MD4
   1235 OBJS += ../src/crypto/md4-internal.o
   1236 endif
   1237 endif
   1238 
   1239 DESOBJS = # none needed when not internal
   1240 ifdef NEED_DES
   1241 ifdef CONFIG_INTERNAL_DES
   1242 DESOBJS += ../src/crypto/des-internal.o
   1243 endif
   1244 endif
   1245 
   1246 ifdef NEED_RC4
   1247 ifdef CONFIG_INTERNAL_RC4
   1248 OBJS += ../src/crypto/rc4.o
   1249 endif
   1250 endif
   1251 
   1252 SHA256OBJS = # none by default
   1253 ifdef NEED_SHA256
   1254 CFLAGS += -DCONFIG_SHA256
   1255 ifneq ($(CONFIG_TLS), openssl)
   1256 SHA256OBJS += ../src/crypto/sha256.o
   1257 endif
   1258 SHA256OBJS += ../src/crypto/sha256-prf.o
   1259 ifdef CONFIG_INTERNAL_SHA256
   1260 SHA256OBJS += ../src/crypto/sha256-internal.o
   1261 endif
   1262 ifdef NEED_TLS_PRF_SHA256
   1263 SHA256OBJS += ../src/crypto/sha256-tlsprf.o
   1264 endif
   1265 ifdef NEED_HMAC_SHA256_KDF
   1266 OBJS += ../src/crypto/sha256-kdf.o
   1267 endif
   1268 OBJS += $(SHA256OBJS)
   1269 endif
   1270 ifdef NEED_SHA384
   1271 CFLAGS += -DCONFIG_SHA384
   1272 endif
   1273 
   1274 ifdef NEED_DH_GROUPS
   1275 OBJS += ../src/crypto/dh_groups.o
   1276 endif
   1277 ifdef NEED_DH_GROUPS_ALL
   1278 CFLAGS += -DALL_DH_GROUPS
   1279 endif
   1280 ifdef CONFIG_INTERNAL_DH_GROUP5
   1281 ifdef NEED_DH_GROUPS
   1282 OBJS += ../src/crypto/dh_group5.o
   1283 endif
   1284 endif
   1285 
   1286 ifdef NEED_ECC
   1287 CFLAGS += -DCONFIG_ECC
   1288 endif
   1289 
   1290 ifdef CONFIG_NO_RANDOM_POOL
   1291 CFLAGS += -DCONFIG_NO_RANDOM_POOL
   1292 else
   1293 OBJS += ../src/crypto/random.o
   1294 endif
   1295 
   1296 ifdef CONFIG_CTRL_IFACE
   1297 ifeq ($(CONFIG_CTRL_IFACE), y)
   1298 ifdef CONFIG_NATIVE_WINDOWS
   1299 CONFIG_CTRL_IFACE=named_pipe
   1300 else
   1301 CONFIG_CTRL_IFACE=unix
   1302 endif
   1303 endif
   1304 CFLAGS += -DCONFIG_CTRL_IFACE
   1305 ifeq ($(CONFIG_CTRL_IFACE), unix)
   1306 CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
   1307 endif
   1308 ifeq ($(CONFIG_CTRL_IFACE), udp)
   1309 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
   1310 endif
   1311 ifeq ($(CONFIG_CTRL_IFACE), udp6)
   1312 CONFIG_CTRL_IFACE=udp
   1313 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
   1314 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
   1315 endif
   1316 ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
   1317 CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
   1318 endif
   1319 ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
   1320 CONFIG_CTRL_IFACE=udp
   1321 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
   1322 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
   1323 endif
   1324 ifeq ($(CONFIG_CTRL_IFACE), udp6-remote)
   1325 CONFIG_CTRL_IFACE=udp
   1326 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
   1327 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
   1328 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
   1329 endif
   1330 OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
   1331 endif
   1332 
   1333 ifdef CONFIG_CTRL_IFACE_DBUS
   1334 DBUS=y
   1335 DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
   1336 DBUS_OBJS += dbus/dbus_old.o dbus/dbus_old_handlers.o
   1337 ifdef CONFIG_WPS
   1338 DBUS_OBJS += dbus/dbus_old_handlers_wps.o
   1339 endif
   1340 DBUS_OBJS += dbus/dbus_dict_helpers.o
   1341 ifndef DBUS_LIBS
   1342 DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
   1343 endif
   1344 ifndef DBUS_INCLUDE
   1345 DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
   1346 endif
   1347 DBUS_CFLAGS += $(DBUS_INCLUDE)
   1348 endif
   1349 
   1350 ifdef CONFIG_CTRL_IFACE_DBUS_NEW
   1351 DBUS=y
   1352 DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
   1353 DBUS_OBJS ?= dbus/dbus_dict_helpers.o
   1354 DBUS_OBJS += dbus/dbus_new_helpers.o
   1355 DBUS_OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o
   1356 ifdef CONFIG_WPS
   1357 DBUS_OBJS += dbus/dbus_new_handlers_wps.o
   1358 endif
   1359 ifdef CONFIG_P2P
   1360 DBUS_OBJS += dbus/dbus_new_handlers_p2p.o
   1361 endif
   1362 ifndef DBUS_LIBS
   1363 DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
   1364 endif
   1365 ifndef DBUS_INCLUDE
   1366 DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
   1367 endif
   1368 ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
   1369 DBUS_OBJS += dbus/dbus_new_introspect.o
   1370 DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
   1371 endif
   1372 DBUS_CFLAGS += $(DBUS_INCLUDE)
   1373 endif
   1374 
   1375 ifdef DBUS
   1376 DBUS_CFLAGS += -DCONFIG_DBUS
   1377 DBUS_OBJS += dbus/dbus_common.o
   1378 endif
   1379 
   1380 OBJS += $(DBUS_OBJS)
   1381 CFLAGS += $(DBUS_CFLAGS)
   1382 LIBS += $(DBUS_LIBS)
   1383 
   1384 ifdef CONFIG_READLINE
   1385 OBJS_c += ../src/utils/edit_readline.o
   1386 LIBS_c += -lncurses -lreadline
   1387 else
   1388 ifdef CONFIG_WPA_CLI_EDIT
   1389 OBJS_c += ../src/utils/edit.o
   1390 else
   1391 OBJS_c += ../src/utils/edit_simple.o
   1392 endif
   1393 endif
   1394 
   1395 ifdef CONFIG_NATIVE_WINDOWS
   1396 CFLAGS += -DCONFIG_NATIVE_WINDOWS
   1397 LIBS += -lws2_32 -lgdi32 -lcrypt32
   1398 LIBS_c += -lws2_32
   1399 LIBS_p += -lws2_32 -lgdi32
   1400 ifeq ($(CONFIG_CRYPTO), cryptoapi)
   1401 LIBS_p += -lcrypt32
   1402 endif
   1403 endif
   1404 
   1405 ifdef CONFIG_NO_STDOUT_DEBUG
   1406 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
   1407 ifndef CONFIG_CTRL_IFACE
   1408 CFLAGS += -DCONFIG_NO_WPA_MSG
   1409 endif
   1410 endif
   1411 
   1412 ifdef CONFIG_IPV6
   1413 # for eapol_test only
   1414 CFLAGS += -DCONFIG_IPV6
   1415 endif
   1416 
   1417 ifdef NEED_BASE64
   1418 OBJS += ../src/utils/base64.o
   1419 endif
   1420 
   1421 ifdef NEED_SME
   1422 OBJS += sme.o
   1423 CFLAGS += -DCONFIG_SME
   1424 endif
   1425 
   1426 OBJS += ../src/common/ieee802_11_common.o
   1427 OBJS += ../src/common/hw_features_common.o
   1428 
   1429 ifdef NEED_EAP_COMMON
   1430 OBJS += ../src/eap_common/eap_common.o
   1431 endif
   1432 
   1433 ifndef CONFIG_MAIN
   1434 CONFIG_MAIN=main
   1435 endif
   1436 
   1437 ifdef CONFIG_DEBUG_SYSLOG
   1438 CFLAGS += -DCONFIG_DEBUG_SYSLOG
   1439 ifdef CONFIG_DEBUG_SYSLOG_FACILITY
   1440 CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
   1441 endif
   1442 endif
   1443 
   1444 ifdef CONFIG_DEBUG_LINUX_TRACING
   1445 CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
   1446 endif
   1447 
   1448 ifdef CONFIG_DEBUG_FILE
   1449 CFLAGS += -DCONFIG_DEBUG_FILE
   1450 endif
   1451 
   1452 ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
   1453 CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
   1454 endif
   1455 
   1456 ifdef CONFIG_FIPS
   1457 CFLAGS += -DCONFIG_FIPS
   1458 ifneq ($(CONFIG_TLS), openssl)
   1459 $(error CONFIG_FIPS=y requires CONFIG_TLS=openssl)
   1460 endif
   1461 endif
   1462 
   1463 OBJS += $(SHA1OBJS) $(DESOBJS)
   1464 
   1465 OBJS_p += $(SHA1OBJS)
   1466 OBJS_p += $(SHA256OBJS)
   1467 OBJS_priv += $(SHA1OBJS)
   1468 
   1469 ifdef CONFIG_BGSCAN_SIMPLE
   1470 CFLAGS += -DCONFIG_BGSCAN_SIMPLE
   1471 OBJS += bgscan_simple.o
   1472 NEED_BGSCAN=y
   1473 endif
   1474 
   1475 ifdef CONFIG_BGSCAN_LEARN
   1476 CFLAGS += -DCONFIG_BGSCAN_LEARN
   1477 OBJS += bgscan_learn.o
   1478 NEED_BGSCAN=y
   1479 endif
   1480 
   1481 ifdef NEED_BGSCAN
   1482 CFLAGS += -DCONFIG_BGSCAN
   1483 OBJS += bgscan.o
   1484 endif
   1485 
   1486 ifdef CONFIG_AUTOSCAN_EXPONENTIAL
   1487 CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL
   1488 OBJS += autoscan_exponential.o
   1489 NEED_AUTOSCAN=y
   1490 endif
   1491 
   1492 ifdef CONFIG_AUTOSCAN_PERIODIC
   1493 CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC
   1494 OBJS += autoscan_periodic.o
   1495 NEED_AUTOSCAN=y
   1496 endif
   1497 
   1498 ifdef NEED_AUTOSCAN
   1499 CFLAGS += -DCONFIG_AUTOSCAN
   1500 OBJS += autoscan.o
   1501 endif
   1502 
   1503 ifdef CONFIG_EXT_PASSWORD_TEST
   1504 OBJS += ../src/utils/ext_password_test.o
   1505 CFLAGS += -DCONFIG_EXT_PASSWORD_TEST
   1506 NEED_EXT_PASSWORD=y
   1507 endif
   1508 
   1509 ifdef NEED_EXT_PASSWORD
   1510 OBJS += ../src/utils/ext_password.o
   1511 CFLAGS += -DCONFIG_EXT_PASSWORD
   1512 endif
   1513 
   1514 ifdef NEED_GAS
   1515 OBJS += ../src/common/gas.o
   1516 OBJS += gas_query.o
   1517 CFLAGS += -DCONFIG_GAS
   1518 NEED_OFFCHANNEL=y
   1519 endif
   1520 
   1521 ifdef NEED_OFFCHANNEL
   1522 OBJS += offchannel.o
   1523 CFLAGS += -DCONFIG_OFFCHANNEL
   1524 endif
   1525 
   1526 ifdef CONFIG_MODULE_TESTS
   1527 CFLAGS += -DCONFIG_MODULE_TESTS
   1528 OBJS += wpas_module_tests.o
   1529 OBJS += ../src/utils/utils_module_tests.o
   1530 OBJS += ../src/common/common_module_tests.o
   1531 OBJS += ../src/crypto/crypto_module_tests.o
   1532 ifdef CONFIG_WPS
   1533 OBJS += ../src/wps/wps_module_tests.o
   1534 endif
   1535 ifndef CONFIG_P2P
   1536 OBJS += ../src/utils/bitfield.o
   1537 endif
   1538 endif
   1539 
   1540 OBJS += ../src/drivers/driver_common.o
   1541 OBJS_priv += ../src/drivers/driver_common.o
   1542 
   1543 OBJS_wpa_rm := ctrl_iface.o ctrl_iface_unix.o
   1544 OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.o
   1545 ifdef CONFIG_AUTHENTICATOR
   1546 OBJS_wpa += tests/link_test.o
   1547 endif
   1548 OBJS_wpa += $(OBJS_l2)
   1549 OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o
   1550 OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o
   1551 OBJS_t += ../src/radius/radius_client.o
   1552 OBJS_t += ../src/radius/radius.o
   1553 ifndef CONFIG_AP
   1554 OBJS_t += ../src/utils/ip_addr.o
   1555 endif
   1556 OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
   1557 
   1558 OBJS_nfc := $(OBJS) $(OBJS_l2) nfc_pw_token.o
   1559 OBJS_nfc += $(OBJS_d) ../src/drivers/drivers.o
   1560 
   1561 OBJS += $(CONFIG_MAIN).o
   1562 
   1563 ifdef CONFIG_PRIVSEP
   1564 OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o
   1565 OBJS_priv += $(OBJS_l2)
   1566 OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
   1567 OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
   1568 OBJS_priv += ../src/utils/common.o
   1569 OBJS_priv += ../src/utils/wpa_debug.o
   1570 OBJS_priv += ../src/utils/wpabuf.o
   1571 OBJS_priv += wpa_priv.o
   1572 ifdef CONFIG_DRIVER_NL80211
   1573 OBJS_priv += ../src/common/ieee802_11_common.o
   1574 endif
   1575 OBJS += ../src/l2_packet/l2_packet_privsep.o
   1576 OBJS += ../src/drivers/driver_privsep.o
   1577 EXTRA_progs += wpa_priv
   1578 else
   1579 OBJS += $(OBJS_d) ../src/drivers/drivers.o
   1580 OBJS += $(OBJS_l2)
   1581 endif
   1582 
   1583 ifdef CONFIG_NDIS_EVENTS_INTEGRATED
   1584 CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
   1585 OBJS += ../src/drivers/ndis_events.o
   1586 EXTRALIBS += -loleaut32 -lole32 -luuid
   1587 ifdef PLATFORMSDKLIB
   1588 EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
   1589 else
   1590 EXTRALIBS += WbemUuid.Lib
   1591 endif
   1592 endif
   1593 
   1594 ifndef LDO
   1595 LDO=$(CC)
   1596 endif
   1597 
   1598 Q=@
   1599 E=echo
   1600 ifeq ($(V), 1)
   1601 Q=
   1602 E=true
   1603 endif
   1604 ifeq ($(QUIET), 1)
   1605 Q=@
   1606 E=true
   1607 endif
   1608 
   1609 dynamic_eap_methods: $(EAPDYN)
   1610 
   1611 ../src/drivers/build.wpa_supplicant:
   1612 	@if [ -f ../src/drivers/build.hostapd ]; then \
   1613 		$(MAKE) -C ../src/drivers clean; \
   1614 	fi
   1615 	@touch ../src/drivers/build.wpa_supplicant
   1616 
   1617 BCHECK=../src/drivers/build.wpa_supplicant
   1618 
   1619 wpa_priv: $(BCHECK) $(OBJS_priv)
   1620 	$(Q)$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS)
   1621 	@$(E) "  LD " $@
   1622 
   1623 $(OBJS_c) $(OBJS_t) $(OBJS_t2) $(OBJS) $(BCHECK) $(EXTRA_progs): .config
   1624 
   1625 wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
   1626 	$(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
   1627 	@$(E) "  LD " $@
   1628 
   1629 eapol_test: $(OBJS_t)
   1630 	$(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
   1631 	@$(E) "  LD " $@
   1632 
   1633 preauth_test: $(OBJS_t2)
   1634 	$(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
   1635 	@$(E) "  LD " $@
   1636 
   1637 wpa_passphrase: $(OBJS_p)
   1638 	$(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
   1639 	@$(E) "  LD " $@
   1640 
   1641 wpa_cli: $(OBJS_c)
   1642 	$(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
   1643 	@$(E) "  LD " $@
   1644 
   1645 LIBCTRL += ../src/common/wpa_ctrl.o
   1646 LIBCTRL += ../src/utils/os_$(CONFIG_OS).o
   1647 LIBCTRL += ../src/utils/wpa_debug.o
   1648 LIBCTRLSO += ../src/common/wpa_ctrl.c
   1649 LIBCTRLSO += ../src/utils/os_$(CONFIG_OS).c
   1650 LIBCTRLSO += ../src/utils/wpa_debug.c
   1651 
   1652 libwpa_client.a: $(LIBCTRL)
   1653 	$(Q)rm -f $@
   1654 	$(Q)$(AR) crs $@ $?
   1655 	@$(E) "  AR " $@
   1656 
   1657 libwpa_client.so: $(LIBCTRLSO)
   1658 	@$(E) "  CC  $@ ($^)"
   1659 	$(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -fPIC $^
   1660 
   1661 link_test: $(OBJS) $(OBJS_h) tests/link_test.o
   1662 	$(Q)$(LDO) $(LDFLAGS) -o link_test $(OBJS) $(OBJS_h) tests/link_test.o $(LIBS)
   1663 	@$(E) "  LD " $@
   1664 
   1665 test_wpa: $(OBJS_wpa) $(OBJS_h)
   1666 	$(Q)$(LDO) $(LDFLAGS) -o test_wpa $(OBJS_wpa) $(LIBS)
   1667 	@$(E) "  LD " $@
   1668 
   1669 nfc_pw_token: $(OBJS_nfc)
   1670 	$(Q)$(LDO) $(LDFLAGS) -o nfc_pw_token $(OBJS_nfc) $(LIBS)
   1671 	@$(E) "  LD " $@
   1672 
   1673 win_if_list: win_if_list.c
   1674 	$(Q)$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
   1675 	@$(E) "  LD " $@
   1676 
   1677 eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
   1678 	$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
   1679 		-Deap_peer_psk_register=eap_peer_method_dynamic_init
   1680 
   1681 eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
   1682 	$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
   1683 		-Deap_peer_pax_register=eap_peer_method_dynamic_init
   1684 
   1685 eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
   1686 	$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
   1687 		-Deap_peer_sake_register=eap_peer_method_dynamic_init
   1688 
   1689 eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c
   1690 	$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
   1691 		-Deap_peer_wsc_register=eap_peer_method_dynamic_init
   1692 
   1693 eap_ikev2.so: ../src/eap_peer/eap_ikev2.c ../src/eap_peer/ikev2.c ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.c
   1694 	$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
   1695 		-Deap_peer_ikev2_register=eap_peer_method_dynamic_init
   1696 
   1697 eap_eke.so: ../src/eap_peer/eap_eke.c ../src/eap_common/eap_eke_common.c
   1698 	$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
   1699 		-Deap_peer_eke_register=eap_peer_method_dynamic_init
   1700 
   1701 %.so: %.c
   1702 	$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
   1703 		-D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
   1704 
   1705 ifdef CONFIG_CODE_COVERAGE
   1706 %.o: %.c
   1707 	@$(E) "  CC " $<
   1708 	$(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<)
   1709 else
   1710 %.o: %.c
   1711 	$(Q)$(CC) -c -o $@ $(CFLAGS) $<
   1712 	@$(E) "  CC " $<
   1713 endif
   1714 
   1715 %.service: %.service.in
   1716 	$(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
   1717 	@$(E) "  sed" $<
   1718 
   1719 %@.service: %.service.arg.in
   1720 	$(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
   1721 	@$(E) "  sed" $<
   1722 
   1723 wpa_supplicant.exe: wpa_supplicant
   1724 	mv -f $< $@
   1725 wpa_cli.exe: wpa_cli
   1726 	mv -f $< $@
   1727 wpa_passphrase.exe: wpa_passphrase
   1728 	mv -f $< $@
   1729 win_if_list.exe: win_if_list
   1730 	mv -f $< $@
   1731 eapol_test.exe: eapol_test
   1732 	mv -f $< $@
   1733 
   1734 WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
   1735 
   1736 windows-bin: $(WINALL)
   1737 	$(STRIP) $(WINALL)
   1738 
   1739 wpa_gui:
   1740 	@echo "wpa_gui has been removed - see wpa_gui-qt4 for replacement"
   1741 
   1742 wpa_gui-qt4/Makefile:
   1743 	qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro
   1744 
   1745 wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts
   1746 	lrelease wpa_gui-qt4/wpa_gui.pro
   1747 
   1748 wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm
   1749 	$(MAKE) -C wpa_gui-qt4
   1750 
   1751 TEST_EAP_SIM_COMMON_OBJS = $(SHA1OBJS) $(MD5OBJS) \
   1752 	../src/utils/common.o ../src/utils/os_unix.o \
   1753 	../src/utils/wpa_debug.o $(AESOBJS) \
   1754 	tests/test_eap_sim_common.o
   1755 test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS)
   1756 	$(LDO) $(LDFLAGS) -o $@ $(TEST_EAP_SIM_COMMON_OBJS) $(LIBS)
   1757 	./test-eap_sim_common
   1758 	rm test-eap_sim_common
   1759 
   1760 tests: test-eap_sim_common
   1761 
   1762 FIPSDIR=/usr/local/ssl/fips-2.0
   1763 FIPSLD=$(FIPSDIR)/bin/fipsld
   1764 fips:
   1765 	$(MAKE) CC=$(FIPSLD) FIPSLD_CC="$(CC)"
   1766 
   1767 lcov-html: wpa_supplicant.gcda
   1768 	lcov -c -d .. > lcov.info
   1769 	genhtml lcov.info --output-directory lcov-html
   1770 
   1771 clean:
   1772 	$(MAKE) -C ../src clean
   1773 	$(MAKE) -C dbus clean
   1774 	rm -f core *~ *.o *.d *.gcno *.gcda *.gcov
   1775 	rm -f eap_*.so $(ALL) $(WINALL) eapol_test preauth_test
   1776 	rm -f wpa_priv
   1777 	rm -f nfc_pw_token
   1778 	rm -f lcov.info
   1779 	rm -rf lcov-html
   1780 	rm -f libwpa_client.a
   1781 	rm -f libwpa_client.so
   1782 
   1783 -include $(OBJS:%.o=%.d)
   1784