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