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