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