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