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