]> git.ipfire.org Git - thirdparty/hostap.git/blame - wpa_supplicant/Makefile
WPS: Add initial part of External Registrar functionality
[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
512OBJS += ../src/wps/httpread.o
513endif
514
ad08c363
JM
515endif
516
6fc6879b
JM
517ifdef CONFIG_EAP_IKEV2
518# EAP-IKEv2
519ifeq ($(CONFIG_EAP_IKEV2), dyn)
520CFLAGS += -DEAP_IKEV2_DYNAMIC
521EAPDYN += ../src/eap_peer/eap_ikev2.so ../src/eap_peer/ikev2.o
522EAPDYN += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
523else
524CFLAGS += -DEAP_IKEV2
525OBJS += ../src/eap_peer/eap_ikev2.o ../src/eap_peer/ikev2.o
526OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
527OBJS_h += ../src/eap_server/eap_ikev2.o
528OBJS_h += ../src/eap_server/ikev2.o
529endif
530CONFIG_IEEE8021X_EAPOL=y
531NEED_DH_GROUPS=y
dd01b1ff 532NEED_DH_GROUPS_ALL=y
38b46286 533NEED_MODEXP=y
6fc6879b
JM
534endif
535
536ifdef CONFIG_EAP_VENDOR_TEST
537ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
538CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
539EAPDYN += ../src/eap_peer/eap_vendor_test.so
540else
541CFLAGS += -DEAP_VENDOR_TEST
542OBJS += ../src/eap_peer/eap_vendor_test.o
543OBJS_h += ../src/eap_server/eap_vendor_test.o
544endif
545CONFIG_IEEE8021X_EAPOL=y
546endif
547
548ifdef CONFIG_EAP_TNC
549# EAP-TNC
550CFLAGS += -DEAP_TNC
551OBJS += ../src/eap_peer/eap_tnc.o
552OBJS += ../src/eap_peer/tncc.o
93ea8ed0
JM
553OBJS_h += ../src/eap_server/eap_tnc.o
554OBJS_h += ../src/eap_server/tncs.o
6fc6879b 555NEED_BASE64=y
53c256a4 556ifndef CONFIG_NATIVE_WINDOWS
7d737d6b 557ifndef CONFIG_DRIVER_BSD
b77eab28 558LIBS += -ldl
6fc6879b 559endif
53c256a4 560endif
7d737d6b 561endif
6fc6879b
JM
562
563ifdef CONFIG_IEEE8021X_EAPOL
564# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
565CFLAGS += -DIEEE8021X_EAPOL
566OBJS += ../src/eapol_supp/eapol_supp_sm.o ../src/eap_peer/eap.o ../src/eap_common/eap_common.o ../src/eap_peer/eap_methods.o
567ifdef CONFIG_DYNAMIC_EAP_METHODS
568CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
569LIBS += -ldl -rdynamic
570endif
571endif
572
1581b38b
JM
573ifdef CONFIG_AP
574CFLAGS += -DCONFIG_AP
f1a48710
JM
575OBJS += ap.o
576CFLAGS += -DCONFIG_NO_RADIUS
577CFLAGS += -DCONFIG_NO_ACCOUNTING
578CFLAGS += -DCONFIG_NO_VLAN
2d5b792d
JM
579OBJS += ../hostapd/hostapd.o
580OBJS += ../hostapd/config.o
581OBJS += ../src/utils/ip_addr.o
f1a48710
JM
582OBJS += ../hostapd/sta_info.o
583OBJS += ../hostapd/wpa.o
3afe7b61 584NEED_AES_WRAP=y
f1a48710
JM
585OBJS += ../hostapd/pmksa_cache.o
586OBJS += ../hostapd/wpa_auth_ie.o
587OBJS += ../hostapd/tkip_countermeasures.o
588OBJS += ../hostapd/mlme.o
589OBJS += ../hostapd/ieee802_1x.o
590OBJS += ../hostapd/eapol_sm.o
591OBJS += ../hostapd/ieee802_11_auth.o
592OBJS += ../hostapd/drv_callbacks.o
e653b622
JM
593ifdef CONFIG_CTRL_IFACE
594OBJS += ../hostapd/ctrl_iface_ap.o
595endif
f1a48710
JM
596ifdef CONFIG_IEEE80211R
597OBJS += ../hostapd/wpa_ft.o
598endif
599ifdef CONFIG_PEERKEY
600OBJS += ../hostapd/peerkey.o
601endif
602
603CFLAGS += -DEAP_SERVER
604OBJS += ../src/eap_server/eap.o
605OBJS += ../src/eap_server/eap_identity.o
606OBJS += ../src/eap_server/eap_methods.o
607
608ifdef NEED_AP_MLME
609OBJS += ../hostapd/beacon.o
610OBJS += ../hostapd/wme.o
611OBJS += ../hostapd/ap_list.o
612OBJS += ../hostapd/ieee802_11.o
613OBJS += ../hostapd/hw_features.o
fe6bdb77 614CFLAGS += -DNEED_AP_MLME
f1a48710
JM
615endif
616ifdef CONFIG_WPS
617CFLAGS += -DEAP_SERVER_WSC
618OBJS += ../hostapd/wps_hostapd.o
619OBJS += ../src/eap_server/eap_wsc.o
620endif
1581b38b
JM
621endif
622
6fc6879b
JM
623ifdef CONFIG_EAP_SERVER
624CFLAGS += -DEAP_SERVER
625OBJS_h += ../src/eap_server/eap.o
626OBJS_h += ../src/eap_server/eap_identity.o
627OBJS_h += ../src/eap_server/eap_methods.o
628endif
629
630ifdef CONFIG_RADIUS_CLIENT
631OBJS_h += ../src/utils/ip_addr.o
632OBJS_h += ../src/radius/radius.o
633OBJS_h += ../src/radius/radius_client.o
634endif
635
636ifdef CONFIG_AUTHENTICATOR
637OBJS_h += ../hostapd/eapol_sm.o
638OBJS_h += ../hostapd/ieee802_1x.o
639endif
640
641ifdef CONFIG_WPA_AUTHENTICATOR
642OBJS_h += ../hostapd/wpa.o
643OBJS_h += ../hostapd/wpa_auth_ie.o
644ifdef CONFIG_IEEE80211R
645OBJS_h += ../hostapd/wpa_ft.o
646endif
647ifdef CONFIG_PEERKEY
648OBJS_h += ../hostapd/peerkey.o
649endif
650endif
651
652ifdef CONFIG_PCSC
653# PC/SC interface for smartcards (USIM, GSM SIM)
654CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
655OBJS += ../src/utils/pcsc_funcs.o
656# -lpthread may not be needed depending on how pcsc-lite was configured
657ifdef CONFIG_NATIVE_WINDOWS
658#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
659#dynamic symbol loading that is now used in pcsc_funcs.c
660#LIBS += -lwinscard
661else
662LIBS += -lpcsclite -lpthread
663endif
664endif
665
81eec387
JM
666ifdef CONFIG_SIM_SIMULATOR
667CFLAGS += -DCONFIG_SIM_SIMULATOR
668NEED_MILENAGE=y
669endif
670
2a24bb31
JM
671ifdef CONFIG_USIM_SIMULATOR
672CFLAGS += -DCONFIG_USIM_SIMULATOR
81eec387
JM
673NEED_MILENAGE=y
674endif
675
676ifdef NEED_MILENAGE
2a24bb31
JM
677OBJS += ../src/hlr_auc_gw/milenage.o
678endif
679
71374569
JM
680ifdef CONFIG_PKCS12
681CFLAGS += -DPKCS12_FUNCS
682endif
683
684ifdef CONFIG_SMARTCARD
685CFLAGS += -DCONFIG_SMARTCARD
686endif
687
688ifdef MS_FUNCS
689OBJS += ../src/crypto/ms_funcs.o
38b46286
JM
690NEED_DES=y
691NEED_MD4=y
71374569
JM
692endif
693
694ifdef CHAP
695OBJS += ../src/eap_common/chap.o
696endif
697
6fc6879b 698ifdef TLS_FUNCS
38b46286 699NEED_DES=y
6fc6879b
JM
700# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
701CFLAGS += -DEAP_TLS_FUNCS
702OBJS += ../src/eap_peer/eap_tls_common.o
703OBJS_h += ../src/eap_server/eap_tls_common.o
704NEED_TLS_PRF=y
000bbd77
JM
705endif
706
38b46286
JM
707ifndef CONFIG_TLS
708CONFIG_TLS=openssl
709endif
710
6fc6879b 711ifeq ($(CONFIG_TLS), openssl)
38b46286 712ifdef TLS_FUNCS
6fc6879b
JM
713CFLAGS += -DEAP_TLS_OPENSSL
714OBJS += ../src/crypto/tls_openssl.o
38b46286
JM
715LIBS += -lssl
716endif
717OBJS += ../src/crypto/crypto_openssl.o
718OBJS_p += ../src/crypto/crypto_openssl.o
719ifdef NEED_FIPS186_2_PRF
720OBJS += ../src/crypto/fips_prf_openssl.o
721endif
722LIBS += -lcrypto
6fc6879b
JM
723LIBS_p += -lcrypto
724endif
38b46286 725
6fc6879b 726ifeq ($(CONFIG_TLS), gnutls)
38b46286 727ifdef TLS_FUNCS
6fc6879b 728OBJS += ../src/crypto/tls_gnutls.o
38b46286 729LIBS += -lgnutls -lgpg-error
6fc6879b
JM
730ifdef CONFIG_GNUTLS_EXTRA
731CFLAGS += -DCONFIG_GNUTLS_EXTRA
732LIBS += -lgnutls-extra
733endif
734endif
6fc6879b
JM
735OBJS += ../src/crypto/crypto_gnutls.o
736OBJS_p += ../src/crypto/crypto_gnutls.o
05edfe29
JB
737ifdef NEED_FIPS186_2_PRF
738OBJS += ../src/crypto/fips_prf_gnutls.o
05edfe29 739endif
38b46286
JM
740LIBS += -lgcrypt
741LIBS_p += -lgcrypt
6fc6879b 742CONFIG_INTERNAL_SHA256=y
ac73690c 743CONFIG_INTERNAL_RC4=y
f042122a 744CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 745endif
38b46286 746
6fc6879b 747ifeq ($(CONFIG_TLS), schannel)
38b46286
JM
748ifdef TLS_FUNCS
749OBJS += ../src/crypto/tls_schannel.o
750endif
6fc6879b
JM
751OBJS += ../src/crypto/crypto_cryptoapi.o
752OBJS_p += ../src/crypto/crypto_cryptoapi.o
753CONFIG_INTERNAL_SHA256=y
ac73690c 754CONFIG_INTERNAL_RC4=y
f042122a 755CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 756endif
38b46286 757
289ffc2b 758ifeq ($(CONFIG_TLS), nss)
38b46286
JM
759ifdef TLS_FUNCS
760OBJS += ../src/crypto/tls_nss.o
761LIBS += -lssl3
762endif
289ffc2b
JM
763OBJS += ../src/crypto/crypto_nss.o
764OBJS_p += ../src/crypto/crypto_nss.o
289ffc2b
JM
765ifdef NEED_FIPS186_2_PRF
766OBJS += ../src/crypto/fips_prf_nss.o
767endif
38b46286
JM
768LIBS += -lnss3
769LIBS_p += -lnss3
770CONFIG_INTERNAL_MD4=y
f042122a 771CONFIG_INTERNAL_DH_GROUP5=y
289ffc2b 772endif
38b46286 773
6fc6879b 774ifeq ($(CONFIG_TLS), internal)
38b46286
JM
775ifndef CONFIG_CRYPTO
776CONFIG_CRYPTO=internal
777endif
778ifdef TLS_FUNCS
779OBJS += ../src/crypto/tls_internal.o
780OBJS += ../src/tls/tlsv1_common.o
781OBJS += ../src/tls/tlsv1_record.o
782OBJS += ../src/tls/tlsv1_cred.o
783OBJS += ../src/tls/tlsv1_client.o
784OBJS += ../src/tls/tlsv1_client_write.o
785OBJS += ../src/tls/tlsv1_client_read.o
786OBJS += ../src/tls/asn1.o
787OBJS += ../src/tls/rsa.o
788OBJS += ../src/tls/x509v3.o
f1739bac
JM
789OBJS += ../src/tls/pkcs1.o
790OBJS += ../src/tls/pkcs5.o
791OBJS += ../src/tls/pkcs8.o
38b46286
JM
792OBJS_p += ../src/tls/asn1.o
793OBJS_p += ../src/tls/rsa.o
f1739bac
JM
794OBJS_p += ../src/tls/pkcs1.o
795OBJS_p += ../src/tls/pkcs5.o
796OBJS_p += ../src/tls/pkcs8.o
38b46286
JM
797OBJS_p += ../src/crypto/rc4.o
798NEED_BASE64=y
799NEED_TLS_PRF=y
800NEED_MODEXP=y
801CFLAGS += -DCONFIG_TLS_INTERNAL
802CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
803endif
804ifdef NEED_MODEXP
805OBJS += ../src/tls/bignum.o
806OBJS_p += ../src/tls/bignum.o
807endif
6fc6879b 808ifeq ($(CONFIG_CRYPTO), libtomcrypt)
38b46286 809CFLAGS += -DCONFIG_INTERNAL_X509
6fc6879b
JM
810OBJS += ../src/crypto/crypto_libtomcrypt.o
811OBJS_p += ../src/crypto/crypto_libtomcrypt.o
38b46286
JM
812LIBS += -ltomcrypt -ltfm
813LIBS_p += -ltomcrypt -ltfm
6fc6879b 814CONFIG_INTERNAL_SHA256=y
ac73690c 815CONFIG_INTERNAL_RC4=y
f042122a 816CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
817endif
818ifeq ($(CONFIG_CRYPTO), internal)
38b46286
JM
819CFLAGS += -DCONFIG_INTERNAL_X509
820OBJS += ../src/crypto/crypto_internal.o
821OBJS_p += ../src/crypto/crypto_internal.o
6fc6879b 822CFLAGS += -DCONFIG_CRYPTO_INTERNAL
049a292f
JM
823ifdef CONFIG_INTERNAL_LIBTOMMATH
824CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
825ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
826CFLAGS += -DLTM_FAST
827endif
828else
829LIBS += -ltommath
830LIBS_p += -ltommath
831endif
6fc6879b
JM
832CONFIG_INTERNAL_AES=y
833CONFIG_INTERNAL_DES=y
834CONFIG_INTERNAL_SHA1=y
835CONFIG_INTERNAL_MD4=y
836CONFIG_INTERNAL_MD5=y
837CONFIG_INTERNAL_SHA256=y
ac73690c 838CONFIG_INTERNAL_RC4=y
f042122a 839CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
840endif
841ifeq ($(CONFIG_CRYPTO), cryptoapi)
842OBJS += ../src/crypto/crypto_cryptoapi.o
843OBJS_p += ../src/crypto/crypto_cryptoapi.o
844CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
845CONFIG_INTERNAL_SHA256=y
ac73690c 846CONFIG_INTERNAL_RC4=y
6fc6879b
JM
847endif
848endif
38b46286 849
6fc6879b 850ifeq ($(CONFIG_TLS), none)
38b46286
JM
851ifdef TLS_FUNCS
852OBJS += ../src/crypto/tls_none.o
853CFLAGS += -DEAP_TLS_NONE
854CONFIG_INTERNAL_AES=y
855CONFIG_INTERNAL_SHA1=y
856CONFIG_INTERNAL_MD5=y
857endif
6fc6879b
JM
858OBJS += ../src/crypto/crypto_none.o
859OBJS_p += ../src/crypto/crypto_none.o
860CONFIG_INTERNAL_SHA256=y
ac73690c 861CONFIG_INTERNAL_RC4=y
6fc6879b 862endif
38b46286
JM
863
864ifdef TLS_FUNCS
865ifdef CONFIG_SMARTCARD
866ifndef CONFIG_NATIVE_WINDOWS
867ifneq ($(CONFIG_L2_PACKET), freebsd)
868LIBS += -ldl
869endif
870endif
871endif
872endif
873
874ifndef TLS_FUNCS
875OBJS += ../src/crypto/tls_none.o
876ifeq ($(CONFIG_TLS), internal)
6fc6879b
JM
877CONFIG_INTERNAL_AES=y
878CONFIG_INTERNAL_SHA1=y
879CONFIG_INTERNAL_MD5=y
9d388d50 880CONFIG_INTERNAL_RC4=y
6fc6879b 881endif
38b46286 882endif
6fc6879b 883
38b46286
JM
884ifdef NEED_MODEXP
885CFLAGS += -DCONFIG_MODEXP
886endif
887
888AESOBJS = # none so far (see below)
6fc6879b 889ifdef CONFIG_INTERNAL_AES
381fcbc9 890AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o
6fc6879b 891endif
38b46286
JM
892
893AESOBJS += ../src/crypto/aes-unwrap.o
bd4e9d03 894ifdef NEED_AES_EAX
38b46286 895AESOBJS += ../src/crypto/aes-eax.o
bd4e9d03
JM
896NEED_AES_CTR=y
897endif
898ifdef NEED_AES_CTR
899AESOBJS += ../src/crypto/aes-ctr.o
900endif
901ifdef NEED_AES_ENCBLOCK
38b46286 902AESOBJS += ../src/crypto/aes-encblock.o
bd4e9d03
JM
903endif
904ifdef NEED_AES_OMAC1
279d859b 905NEED_AES_ENC=y
38b46286 906AESOBJS += ../src/crypto/aes-omac1.o
bd4e9d03
JM
907endif
908ifdef NEED_AES_WRAP
3afe7b61 909NEED_AES_ENC=y
38b46286
JM
910AESOBJS += ../src/crypto/aes-wrap.o
911endif
912ifdef NEED_AES_CBC
279d859b
MH
913NEED_AES_ENC=y
914AESOBJS += ../src/crypto/aes-cbc.o
915endif
916ifdef NEED_AES_ENC
38b46286
JM
917ifdef CONFIG_INTERNAL_AES
918AESOBJS += ../src/crypto/aes-internal-enc.o
919endif
38b46286
JM
920endif
921ifdef NEED_AES
922OBJS += $(AESOBJS)
923ifdef CONFIG_INTERNAL_AES
924OBJS_p += $(AESOBJS)
925endif
926endif
927
928ifdef NEED_SHA1
929SHA1OBJS += ../src/crypto/sha1.o
6fc6879b 930ifdef CONFIG_INTERNAL_SHA1
928a50a3 931SHA1OBJS += ../src/crypto/sha1-internal.o
05edfe29
JB
932ifdef NEED_FIPS186_2_PRF
933SHA1OBJS += ../src/crypto/fips_prf_internal.o
934endif
6fc6879b 935endif
38b46286
JM
936ifndef CONFIG_NO_WPA_PASSPHRASE
937SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
938endif
939ifdef NEED_T_PRF
940SHA1OBJS += ../src/crypto/sha1-tprf.o
941endif
942ifdef NEED_TLS_PRF
943SHA1OBJS += ../src/crypto/sha1-tlsprf.o
944endif
945endif
946
947MD5OBJS = ../src/crypto/md5.o
948ifdef NEED_MD5
6fc6879b 949ifdef CONFIG_INTERNAL_MD5
ad01a531 950MD5OBJS += ../src/crypto/md5-internal.o
6fc6879b 951endif
38b46286
JM
952ifdef CONFIG_FIPS
953MD5OBJS += ../src/crypto/md5-non-fips.o
6fc6879b 954endif
38b46286 955OBJS += $(MD5OBJS)
3e91d242 956OBJS_p += $(MD5OBJS)
38b46286
JM
957endif
958
959ifdef NEED_MD4
960ifdef CONFIG_INTERNAL_MD4
961OBJS += ../src/crypto/md4-internal.o
962endif
963endif
bd4e2895 964
38b46286
JM
965DESOBJS = # none needed when not internal
966ifdef NEED_DES
6fc6879b 967ifdef CONFIG_INTERNAL_DES
657f0381 968DESOBJS += ../src/crypto/des-internal.o
6fc6879b 969endif
38b46286 970endif
6fc6879b 971
38b46286 972ifdef NEED_RC4
ac73690c
JM
973ifdef CONFIG_INTERNAL_RC4
974OBJS += ../src/crypto/rc4.o
975endif
1d8ce433
JM
976endif
977
38b46286 978SHA256OBJS = # none by default
6fc6879b 979ifdef NEED_SHA256
598a792d 980SHA256OBJS += ../src/crypto/sha256.o
1d8ce433 981CFLAGS += -DNEED_SHA256
598a792d
JB
982ifdef CONFIG_INTERNAL_SHA256
983SHA256OBJS += ../src/crypto/sha256-internal.o
984endif
598a792d 985OBJS += $(SHA256OBJS)
38b46286
JM
986endif
987
988ifdef CONFIG_INTERNAL_DH_GROUP5
989ifdef NEED_DH_GROUPS
990OBJS += ../src/crypto/dh_groups.o
991OBJS += ../src/crypto/dh_group5.o
992ifdef NEED_DH_GROUPS_ALL
993CFLAGS += -DALL_DH_GROUPS
994endif
995endif
996else
997ifdef NEED_DH_GROUPS_ALL
998OBJS += ../src/crypto/dh_groups.o
999CFLAGS += -DALL_DH_GROUPS
1000endif
1001endif
6fc6879b 1002
6fc6879b
JM
1003ifdef CONFIG_CTRL_IFACE
1004ifeq ($(CONFIG_CTRL_IFACE), y)
1005ifdef CONFIG_NATIVE_WINDOWS
1006CONFIG_CTRL_IFACE=named_pipe
1007else
1008CONFIG_CTRL_IFACE=unix
1009endif
1010endif
1011CFLAGS += -DCONFIG_CTRL_IFACE
1012ifeq ($(CONFIG_CTRL_IFACE), unix)
1013CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1014endif
1015ifeq ($(CONFIG_CTRL_IFACE), udp)
1016CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1017endif
1018ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1019CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1020endif
1021OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
1022endif
1023
1024ifdef CONFIG_CTRL_IFACE_DBUS
1025CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
1026OBJS += ctrl_iface_dbus.o ctrl_iface_dbus_handlers.o dbus_dict_helpers.o
1027ifndef DBUS_LIBS
1028DBUS_LIBS := $(shell pkg-config --libs dbus-1)
1029endif
1030LIBS += $(DBUS_LIBS)
1031ifndef DBUS_INCLUDE
1032DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1)
1033endif
1034dbus_version=$(subst ., ,$(shell pkg-config --modversion dbus-1))
1035DBUS_VERSION_MAJOR=$(word 1,$(dbus_version))
1036DBUS_VERSION_MINOR=$(word 2,$(dbus_version))
1037ifeq ($(DBUS_VERSION_MAJOR),)
1038DBUS_VERSION_MAJOR=0
1039endif
1040ifeq ($(DBUS_VERSION_MINOR),)
1041DBUS_VERSION_MINOR=0
1042endif
1043DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR)
1044DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR)
1045CFLAGS += $(DBUS_INCLUDE)
1046endif
1047
1048ifdef CONFIG_READLINE
1049CFLAGS += -DCONFIG_READLINE
1050LIBS_c += -lncurses -lreadline
1051endif
1052
1053ifdef CONFIG_NATIVE_WINDOWS
1054CFLAGS += -DCONFIG_NATIVE_WINDOWS
1055LIBS += -lws2_32 -lgdi32 -lcrypt32
1056LIBS_c += -lws2_32
1057LIBS_p += -lws2_32 -lgdi32
1058ifeq ($(CONFIG_CRYPTO), cryptoapi)
1059LIBS_p += -lcrypt32
1060endif
1061endif
1062
1063ifdef CONFIG_NO_STDOUT_DEBUG
1064CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1065ifndef CONFIG_CTRL_IFACE
1066CFLAGS += -DCONFIG_NO_WPA_MSG
1067endif
1068endif
1069
1070ifdef CONFIG_IPV6
1071# for eapol_test only
1072CFLAGS += -DCONFIG_IPV6
1073endif
1074
6fc6879b
JM
1075ifdef NEED_BASE64
1076OBJS += ../src/utils/base64.o
1077endif
1078
c2a04078
JM
1079ifdef NEED_SME
1080OBJS += sme.o
1081CFLAGS += -DCONFIG_SME
1082endif
1083
6fc6879b 1084ifdef CONFIG_CLIENT_MLME
26c9d7ea 1085OBJS += mlme.o
6fc6879b 1086CFLAGS += -DCONFIG_CLIENT_MLME
26c9d7ea
JM
1087NEED_80211_COMMON=y
1088endif
1089
1090ifdef NEED_80211_COMMON
1091OBJS += ../src/common/ieee802_11_common.o
6fc6879b
JM
1092endif
1093
1094ifndef CONFIG_MAIN
1095CONFIG_MAIN=main
1096endif
1097
cca87731
SL
1098ifdef CONFIG_DEBUG_SYSLOG
1099CFLAGS += -DCONFIG_DEBUG_SYSLOG
1100endif
1101
6fc6879b
JM
1102ifdef CONFIG_DEBUG_FILE
1103CFLAGS += -DCONFIG_DEBUG_FILE
1104endif
1105
46690a3b
JM
1106ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1107CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1108endif
1109
577072b1
JM
1110ifdef CONFIG_FIPS
1111CFLAGS += -DCONFIG_FIPS
577072b1
JM
1112endif
1113
6fc6879b 1114OBJS += ../src/drivers/scan_helpers.o
657f0381 1115OBJS += $(SHA1OBJS) $(DESOBJS)
928a50a3 1116
3e91d242 1117OBJS_p += $(SHA1OBJS) $(DESOBJS)
6fc6879b 1118
60b94c98
JM
1119ifdef CONFIG_BGSCAN_SIMPLE
1120CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1121OBJS += bgscan_simple.o
1122NEED_BGSCAN=y
1123endif
1124
1125ifdef NEED_BGSCAN
1126CFLAGS += -DCONFIG_BGSCAN
1127OBJS += bgscan.o
1128endif
1129
6fc6879b
JM
1130OBJS_wpa_rm := ctrl_iface.o mlme.o ctrl_iface_unix.o
1131OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.o
1132ifdef CONFIG_AUTHENTICATOR
1133OBJS_wpa += tests/link_test.o
1134endif
1135OBJS_wpa += $(OBJS_l2)
1136OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o
a7baefda
JM
1137OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o ../src/radius/radius_client.o
1138ifndef CONFIG_IBSS_RSN
1139OBJS_t += ../src/radius/radius.o
1140endif
6fc6879b
JM
1141OBJS_t += ../src/utils/ip_addr.o
1142OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
1143OBJS += $(CONFIG_MAIN).o
1144
1145ifdef CONFIG_PRIVSEP
1146OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o ../src/drivers/scan_helpers.o
1147OBJS_priv += $(OBJS_l2)
1148OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
1149OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
1150OBJS_priv += ../src/utils/common.o
1151OBJS_priv += ../src/utils/wpa_debug.o
716d543d 1152OBJS_priv += ../src/utils/wpabuf.o
6fc6879b
JM
1153OBJS_priv += wpa_priv.o
1154ifdef CONFIG_DRIVER_TEST
928a50a3 1155OBJS_priv += $(SHA1OBJS)
ad01a531 1156OBJS_priv += $(MD5OBJS)
6fc6879b
JM
1157ifeq ($(CONFIG_TLS), openssl)
1158OBJS_priv += ../src/crypto/crypto_openssl.o
1159endif
1160ifeq ($(CONFIG_TLS), gnutls)
1161OBJS_priv += ../src/crypto/crypto_gnutls.o
1162endif
289ffc2b
JM
1163ifeq ($(CONFIG_TLS), nss)
1164OBJS_priv += ../src/crypto/crypto_nss.o
1165endif
6fc6879b
JM
1166ifeq ($(CONFIG_TLS), internal)
1167ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1168OBJS_priv += ../src/crypto/crypto_libtomcrypt.o
1169else
1170OBJS_priv += ../src/crypto/crypto_internal.o
1171endif
1172endif
1173endif # CONFIG_DRIVER_TEST
1174OBJS += ../src/l2_packet/l2_packet_privsep.o
1175OBJS += ../src/drivers/driver_privsep.o
1176EXTRA_progs += wpa_priv
1177else
1178OBJS += $(OBJS_d) ../src/drivers/drivers.o
1179OBJS += $(OBJS_l2)
1180endif
1181
1182ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1183CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1184OBJS += ../src/drivers/ndis_events.o
1185EXTRALIBS += -loleaut32 -lole32 -luuid
1186ifdef PLATFORMSDKLIB
1187EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1188else
1189EXTRALIBS += WbemUuid.Lib
1190endif
1191endif
1192
1193ifndef LDO
1194LDO=$(CC)
1195endif
1196
1197dynamic_eap_methods: $(EAPDYN)
1198
ba30964b
JM
1199../src/drivers/build.wpa_supplicant:
1200 @if [ -e ../src/drivers/build.hostapd ]; then \
1201 $(MAKE) -C ../src/drivers clean; \
1202 fi
1203 @touch ../src/drivers/build.wpa_supplicant
1204
1205BCHECK=../src/drivers/build.wpa_supplicant
1206
1207wpa_priv: $(BCHECK) $(OBJS_priv)
6fc6879b
JM
1208 $(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS)
1209
ba30964b 1210wpa_supplicant: .config $(BCHECK) $(OBJS) $(EXTRA_progs)
6fc6879b
JM
1211 $(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
1212
1213eapol_test: .config $(OBJS_t)
1214 $(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
1215
1216preauth_test: .config $(OBJS_t2)
1217 $(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
1218
1219wpa_passphrase: $(OBJS_p)
1220 $(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
1221
1222wpa_cli: $(OBJS_c)
1223 $(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
1224
1225link_test: $(OBJS) $(OBJS_h) tests/link_test.o
1226 $(LDO) $(LDFLAGS) -o link_test $(OBJS) $(OBJS_h) tests/link_test.o $(LIBS)
1227
1228test_wpa: $(OBJS_wpa) $(OBJS_h)
1229 $(LDO) $(LDFLAGS) -o test_wpa $(OBJS_wpa) $(LIBS)
1230
1231OBJSa=../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 1232 ../src/crypto/crypto_$(CONFIG_CRYPTO).o $(MD5OBJS) $(SHA1OBSJ) \
246157cb 1233 ../src/crypto/rc4.o $(DESOBJS) $(AESOBJS) ../src/tls/bignum.o ../src/tls/rsa.o
6fc6879b
JM
1234asn1_test: $(OBJSa)
1235 $(LDO) $(LDFLAGS) -o asn1_test $(OBJSa)
1236
1237OBJSx=tests/test_x509v3.o ../src/tls/asn1.o ../src/tls/x509v3.o \
1238 ../src/utils/common.o ../src/utils/wpa_debug.o ../src/utils/os_unix.o \
1239 ../src/crypto/crypto_$(CONFIG_CRYPTO).o \
ad01a531 1240 $(MD5OBJS) $(SHA1OBJS) $(AESOBJS) \
598a792d 1241 ../src/crypto/rc4.o $(DESOBJS) $(SHA256OBJS) \
6fc6879b
JM
1242 ../src/tls/bignum.o ../src/tls/rsa.o
1243test_x509v3: $(OBJSx)
1244 $(LDO) $(LDFLAGS) -o test_x509v3 $(OBJSx)
1245
1246win_if_list: win_if_list.c
1247 $(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
1248
1249eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
466940c5 1250 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1251 -Deap_peer_psk_register=eap_peer_method_dynamic_init
1252
1253eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
466940c5 1254 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1255 -Deap_peer_pax_register=eap_peer_method_dynamic_init
1256
1257eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
466940c5 1258 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1259 -Deap_peer_sake_register=eap_peer_method_dynamic_init
1260
ad08c363 1261eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c
466940c5 1262 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
ad08c363
JM
1263 -Deap_peer_wsc_register=eap_peer_method_dynamic_init
1264
6fc6879b 1265eap_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 1266 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1267 -Deap_peer_ikev2_register=eap_peer_method_dynamic_init
1268
1269%.so: %.c
466940c5 1270 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
4c2660c2 1271 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
6fc6879b 1272
b2840aaf
JB
1273Q=@
1274E=echo
1275ifeq ($(V), 1)
1276Q=
1277E=true
1278endif
1279
1280%.o: %.c
1281 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1282 @$(E) " CC " $<
6fc6879b
JM
1283
1284wpa_supplicant.exe: wpa_supplicant
1285 mv -f $< $@
1286wpa_cli.exe: wpa_cli
1287 mv -f $< $@
1288wpa_passphrase.exe: wpa_passphrase
1289 mv -f $< $@
1290win_if_list.exe: win_if_list
1291 mv -f $< $@
1292eapol_test.exe: eapol_test
1293 mv -f $< $@
1294
1295WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
1296
1297windows-bin: $(WINALL)
1298 $(STRIP) $(WINALL)
1299
1300wpa_gui/Makefile:
1301 qmake -o wpa_gui/Makefile wpa_gui/wpa_gui.pro
1302
1303wpa_gui: wpa_gui/Makefile
1304 $(MAKE) -C wpa_gui
1305
1306wpa_gui-qt4/Makefile:
1307 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro
1308
1309wpa_gui-qt4: wpa_gui-qt4/Makefile
1310 $(MAKE) -C wpa_gui-qt4
1311
ad01a531 1312TEST_MS_FUNCS_OBJS = ../src/crypto/crypto_openssl.o $(SHA1OBJS) $(MD5OBJS) \
6fc6879b
JM
1313 ../src/utils/os_unix.o ../src/crypto/rc4.o tests/test_ms_funcs.o
1314test-ms_funcs: $(TEST_MS_FUNCS_OBJS)
1315 $(LDO) $(LDFLAGS) -o $@ $(TEST_MS_FUNCS_OBJS) $(LIBS) -lcrypto
1316 ./test-ms_funcs
1317 rm test-ms_funcs
1318
ad01a531 1319TEST_SHA1_OBJS = $(SHA1OBJS) $(MD5OBJS) tests/test_sha1.o #../src/crypto/crypto_openssl.o
6fc6879b
JM
1320test-sha1: $(TEST_SHA1_OBJS)
1321 $(LDO) $(LDFLAGS) -o $@ $(TEST_SHA1_OBJS) $(LIBS)
1322 ./test-sha1
1323 rm test-sha1
1324
ad01a531 1325TEST_SHA256_OBJS = $(SHA256OBJS) $(MD5OBJS) tests/test_sha256.o ../src/utils/os_unix.o ../src/crypto/crypto_openssl.o
6fc6879b
JM
1326test-sha256: $(TEST_SHA256_OBJS)
1327 $(LDO) $(LDFLAGS) -o $@ $(TEST_SHA256_OBJS) $(LIBS)
1328 ./test-sha256
1329 rm test-sha256
1330
246157cb 1331TEST_AES_OBJS = tests/test_aes.o $(AESOBJS)
6fc6879b
JM
1332test-aes: $(TEST_AES_OBJS)
1333 $(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS)
1334 ./test-aes
1335 rm test-aes
1336
ad01a531 1337TEST_EAP_SIM_COMMON_OBJS = $(SHA1OBJS) $(MD5OBJS) \
246157cb
JB
1338 ../src/utils/common.o ../src/utils/os_unix.o \
1339 ../src/utils/wpa_debug.o $(AESOBJS) \
6fc6879b
JM
1340 tests/test_eap_sim_common.o
1341test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS)
1342 $(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS)
1343 ./test-eap_sim_common
1344 rm test-eap_sim_common
1345
bd4e2895 1346TEST_MD4_OBJS = ../src/crypto/md4-internal.o tests/test_md4.o #../src/crypto/crypto_openssl.o
6fc6879b
JM
1347test-md4: $(TEST_MD4_OBJS)
1348 $(LDO) $(LDFLAGS) -o $@ $(TEST_MD4_OBJS) $(LIBS)
1349 ./test-md4
1350 rm test-md4
1351
ad01a531 1352TEST_MD5_OBJS = $(MD5OBJS) tests/test_md5.o #../src/crypto/crypto_openssl.o
6fc6879b
JM
1353test-md5: $(TEST_MD5_OBJS)
1354 $(LDO) $(LDFLAGS) -o $@ $(TEST_MD5_OBJS) $(LIBS)
1355 ./test-md5
1356 rm test-md5
1357
1358tests: test-ms_funcs test-sha1 test-aes test-eap_sim_common test-md4 test-md5
1359
1360clean:
1361 $(MAKE) -C ../src clean
8055fb78 1362 rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL) eapol_test preauth_test
385f16c6 1363 rm -f wpa_priv
6fc6879b
JM
1364
1365%.eps: %.fig
1366 fig2dev -L eps $*.fig $*.eps
1367
1368%.png: %.fig
1369 fig2dev -L png -m 3 $*.fig | pngtopnm | pnmscale 0.4 | pnmtopng \
1370 > $*.png
1371
1372docs-pics: doc/wpa_supplicant.png doc/wpa_supplicant.eps
1373
1374docs: docs-pics
1375 (cd ..; doxygen wpa_supplicant/doc/doxygen.full; cd wpa_supplicant)
1376 $(MAKE) -C doc/latex
1377 cp doc/latex/refman.pdf wpa_supplicant-devel.pdf
1378
1379docs-fast: docs-pics
875f6d7b 1380 (cd ..; doxygen wpa_supplicant/doc/doxygen.fast; cd wpa_supplicant)
6fc6879b
JM
1381
1382clean-docs:
1383 rm -rf doc/latex doc/html
1384 rm -f doc/wpa_supplicant.{eps,png} wpa_supplicant-devel.pdf
1385
6fc6879b 1386-include $(OBJS:%.o=%.d)