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