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