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