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