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