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