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