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