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