]> git.ipfire.org Git - thirdparty/hostap.git/blame - wpa_supplicant/Makefile
Allow TLS flags to be configured (allow MD5, disable time checks)
[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
94c3e91f
JM
767ifdef NEED_FIPS186_2_PRF
768OBJS += ../src/crypto/fips_prf_cryptoapi.o
769endif
6fc6879b 770CONFIG_INTERNAL_SHA256=y
ac73690c 771CONFIG_INTERNAL_RC4=y
f042122a 772CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 773endif
38b46286 774
289ffc2b 775ifeq ($(CONFIG_TLS), nss)
38b46286
JM
776ifdef TLS_FUNCS
777OBJS += ../src/crypto/tls_nss.o
778LIBS += -lssl3
779endif
289ffc2b
JM
780OBJS += ../src/crypto/crypto_nss.o
781OBJS_p += ../src/crypto/crypto_nss.o
289ffc2b
JM
782ifdef NEED_FIPS186_2_PRF
783OBJS += ../src/crypto/fips_prf_nss.o
784endif
38b46286
JM
785LIBS += -lnss3
786LIBS_p += -lnss3
787CONFIG_INTERNAL_MD4=y
f042122a 788CONFIG_INTERNAL_DH_GROUP5=y
289ffc2b 789endif
38b46286 790
6fc6879b 791ifeq ($(CONFIG_TLS), internal)
38b46286
JM
792ifndef CONFIG_CRYPTO
793CONFIG_CRYPTO=internal
794endif
795ifdef TLS_FUNCS
be473f3f 796OBJS += ../src/crypto/crypto_internal-rsa.o
38b46286
JM
797OBJS += ../src/crypto/tls_internal.o
798OBJS += ../src/tls/tlsv1_common.o
799OBJS += ../src/tls/tlsv1_record.o
800OBJS += ../src/tls/tlsv1_cred.o
801OBJS += ../src/tls/tlsv1_client.o
802OBJS += ../src/tls/tlsv1_client_write.o
803OBJS += ../src/tls/tlsv1_client_read.o
804OBJS += ../src/tls/asn1.o
805OBJS += ../src/tls/rsa.o
806OBJS += ../src/tls/x509v3.o
f1739bac
JM
807OBJS += ../src/tls/pkcs1.o
808OBJS += ../src/tls/pkcs5.o
809OBJS += ../src/tls/pkcs8.o
1a707778 810NEED_SHA256=y
38b46286
JM
811NEED_BASE64=y
812NEED_TLS_PRF=y
813NEED_MODEXP=y
be473f3f 814NEED_CIPHER=y
38b46286
JM
815CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
816endif
be473f3f
JM
817ifdef NEED_CIPHER
818NEED_DES=y
819OBJS += ../src/crypto/crypto_internal-cipher.o
820endif
38b46286 821ifdef NEED_MODEXP
be473f3f 822OBJS += ../src/crypto/crypto_internal-modexp.o
38b46286 823OBJS += ../src/tls/bignum.o
38b46286 824endif
6fc6879b
JM
825ifeq ($(CONFIG_CRYPTO), libtomcrypt)
826OBJS += ../src/crypto/crypto_libtomcrypt.o
827OBJS_p += ../src/crypto/crypto_libtomcrypt.o
38b46286
JM
828LIBS += -ltomcrypt -ltfm
829LIBS_p += -ltomcrypt -ltfm
6fc6879b 830CONFIG_INTERNAL_SHA256=y
ac73690c 831CONFIG_INTERNAL_RC4=y
f042122a 832CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
833endif
834ifeq ($(CONFIG_CRYPTO), internal)
38b46286
JM
835OBJS += ../src/crypto/crypto_internal.o
836OBJS_p += ../src/crypto/crypto_internal.o
73d0ad78 837NEED_AES_ENC=y
6fc6879b 838CFLAGS += -DCONFIG_CRYPTO_INTERNAL
049a292f
JM
839ifdef CONFIG_INTERNAL_LIBTOMMATH
840CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
841ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
842CFLAGS += -DLTM_FAST
843endif
844else
845LIBS += -ltommath
846LIBS_p += -ltommath
847endif
6fc6879b
JM
848CONFIG_INTERNAL_AES=y
849CONFIG_INTERNAL_DES=y
850CONFIG_INTERNAL_SHA1=y
851CONFIG_INTERNAL_MD4=y
852CONFIG_INTERNAL_MD5=y
853CONFIG_INTERNAL_SHA256=y
ac73690c 854CONFIG_INTERNAL_RC4=y
f042122a 855CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
856endif
857ifeq ($(CONFIG_CRYPTO), cryptoapi)
858OBJS += ../src/crypto/crypto_cryptoapi.o
859OBJS_p += ../src/crypto/crypto_cryptoapi.o
860CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
861CONFIG_INTERNAL_SHA256=y
ac73690c 862CONFIG_INTERNAL_RC4=y
6fc6879b
JM
863endif
864endif
38b46286 865
6fc6879b 866ifeq ($(CONFIG_TLS), none)
38b46286
JM
867ifdef TLS_FUNCS
868OBJS += ../src/crypto/tls_none.o
869CFLAGS += -DEAP_TLS_NONE
870CONFIG_INTERNAL_AES=y
871CONFIG_INTERNAL_SHA1=y
872CONFIG_INTERNAL_MD5=y
873endif
6fc6879b
JM
874OBJS += ../src/crypto/crypto_none.o
875OBJS_p += ../src/crypto/crypto_none.o
876CONFIG_INTERNAL_SHA256=y
ac73690c 877CONFIG_INTERNAL_RC4=y
6fc6879b 878endif
38b46286
JM
879
880ifdef TLS_FUNCS
881ifdef CONFIG_SMARTCARD
882ifndef CONFIG_NATIVE_WINDOWS
883ifneq ($(CONFIG_L2_PACKET), freebsd)
884LIBS += -ldl
885endif
886endif
887endif
888endif
889
890ifndef TLS_FUNCS
891OBJS += ../src/crypto/tls_none.o
892ifeq ($(CONFIG_TLS), internal)
6fc6879b
JM
893CONFIG_INTERNAL_AES=y
894CONFIG_INTERNAL_SHA1=y
895CONFIG_INTERNAL_MD5=y
9d388d50 896CONFIG_INTERNAL_RC4=y
6fc6879b 897endif
38b46286 898endif
6fc6879b 899
38b46286 900AESOBJS = # none so far (see below)
6fc6879b 901ifdef CONFIG_INTERNAL_AES
381fcbc9 902AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o
6fc6879b 903endif
38b46286
JM
904
905AESOBJS += ../src/crypto/aes-unwrap.o
bd4e9d03 906ifdef NEED_AES_EAX
38b46286 907AESOBJS += ../src/crypto/aes-eax.o
bd4e9d03
JM
908NEED_AES_CTR=y
909endif
910ifdef NEED_AES_CTR
911AESOBJS += ../src/crypto/aes-ctr.o
912endif
913ifdef NEED_AES_ENCBLOCK
38b46286 914AESOBJS += ../src/crypto/aes-encblock.o
bd4e9d03
JM
915endif
916ifdef NEED_AES_OMAC1
279d859b 917NEED_AES_ENC=y
38b46286 918AESOBJS += ../src/crypto/aes-omac1.o
bd4e9d03
JM
919endif
920ifdef NEED_AES_WRAP
3afe7b61 921NEED_AES_ENC=y
38b46286
JM
922AESOBJS += ../src/crypto/aes-wrap.o
923endif
924ifdef NEED_AES_CBC
279d859b
MH
925NEED_AES_ENC=y
926AESOBJS += ../src/crypto/aes-cbc.o
927endif
928ifdef NEED_AES_ENC
38b46286
JM
929ifdef CONFIG_INTERNAL_AES
930AESOBJS += ../src/crypto/aes-internal-enc.o
931endif
38b46286
JM
932endif
933ifdef NEED_AES
934OBJS += $(AESOBJS)
38b46286
JM
935endif
936
937ifdef NEED_SHA1
938SHA1OBJS += ../src/crypto/sha1.o
6fc6879b 939ifdef CONFIG_INTERNAL_SHA1
928a50a3 940SHA1OBJS += ../src/crypto/sha1-internal.o
05edfe29
JB
941ifdef NEED_FIPS186_2_PRF
942SHA1OBJS += ../src/crypto/fips_prf_internal.o
943endif
6fc6879b 944endif
38b46286
JM
945ifndef CONFIG_NO_WPA_PASSPHRASE
946SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
947endif
948ifdef NEED_T_PRF
949SHA1OBJS += ../src/crypto/sha1-tprf.o
950endif
951ifdef NEED_TLS_PRF
952SHA1OBJS += ../src/crypto/sha1-tlsprf.o
953endif
954endif
955
956MD5OBJS = ../src/crypto/md5.o
957ifdef NEED_MD5
6fc6879b 958ifdef CONFIG_INTERNAL_MD5
ad01a531 959MD5OBJS += ../src/crypto/md5-internal.o
6fc6879b 960endif
38b46286
JM
961ifdef CONFIG_FIPS
962MD5OBJS += ../src/crypto/md5-non-fips.o
6fc6879b 963endif
38b46286 964OBJS += $(MD5OBJS)
3e91d242 965OBJS_p += $(MD5OBJS)
38b46286
JM
966endif
967
968ifdef NEED_MD4
969ifdef CONFIG_INTERNAL_MD4
970OBJS += ../src/crypto/md4-internal.o
971endif
972endif
bd4e2895 973
38b46286
JM
974DESOBJS = # none needed when not internal
975ifdef NEED_DES
6fc6879b 976ifdef CONFIG_INTERNAL_DES
657f0381 977DESOBJS += ../src/crypto/des-internal.o
6fc6879b 978endif
38b46286 979endif
6fc6879b 980
38b46286 981ifdef NEED_RC4
ac73690c
JM
982ifdef CONFIG_INTERNAL_RC4
983OBJS += ../src/crypto/rc4.o
984endif
1d8ce433
JM
985endif
986
38b46286 987SHA256OBJS = # none by default
6fc6879b 988ifdef NEED_SHA256
598a792d 989SHA256OBJS += ../src/crypto/sha256.o
598a792d
JB
990ifdef CONFIG_INTERNAL_SHA256
991SHA256OBJS += ../src/crypto/sha256-internal.o
992endif
598a792d 993OBJS += $(SHA256OBJS)
38b46286
JM
994endif
995
38b46286
JM
996ifdef NEED_DH_GROUPS
997OBJS += ../src/crypto/dh_groups.o
38b46286 998endif
38b46286 999ifdef NEED_DH_GROUPS_ALL
38b46286
JM
1000CFLAGS += -DALL_DH_GROUPS
1001endif
50ceddcf
JM
1002ifdef CONFIG_INTERNAL_DH_GROUP5
1003ifdef NEED_DH_GROUPS
1004OBJS += ../src/crypto/dh_group5.o
1005endif
38b46286 1006endif
6fc6879b 1007
6fc6879b
JM
1008ifdef CONFIG_CTRL_IFACE
1009ifeq ($(CONFIG_CTRL_IFACE), y)
1010ifdef CONFIG_NATIVE_WINDOWS
1011CONFIG_CTRL_IFACE=named_pipe
1012else
1013CONFIG_CTRL_IFACE=unix
1014endif
1015endif
1016CFLAGS += -DCONFIG_CTRL_IFACE
1017ifeq ($(CONFIG_CTRL_IFACE), unix)
1018CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1019endif
1020ifeq ($(CONFIG_CTRL_IFACE), udp)
1021CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1022endif
1023ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1024CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1025endif
1026OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
1027endif
1028
1029ifdef CONFIG_CTRL_IFACE_DBUS
8fc2fb56
WS
1030DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
1031DBUS_OBJS += ctrl_iface_dbus.o ctrl_iface_dbus_handlers.o
1032DBUS_OBJS += dbus_dict_helpers.o
6fc6879b
JM
1033ifndef DBUS_LIBS
1034DBUS_LIBS := $(shell pkg-config --libs dbus-1)
1035endif
6fc6879b
JM
1036ifndef DBUS_INCLUDE
1037DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1)
1038endif
1039dbus_version=$(subst ., ,$(shell pkg-config --modversion dbus-1))
1040DBUS_VERSION_MAJOR=$(word 1,$(dbus_version))
1041DBUS_VERSION_MINOR=$(word 2,$(dbus_version))
1042ifeq ($(DBUS_VERSION_MAJOR),)
1043DBUS_VERSION_MAJOR=0
1044endif
1045ifeq ($(DBUS_VERSION_MINOR),)
1046DBUS_VERSION_MINOR=0
1047endif
1048DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR)
1049DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR)
8fc2fb56
WS
1050DBUS_CFLAGS += $(DBUS_INCLUDE)
1051endif
1052
1053ifdef CONFIG_CTRL_IFACE_DBUS_NEW
1054DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
1055DBUS_OBJS ?= dbus_dict_helpers.o
1056DBUS_OBJS += ctrl_iface_dbus_new_helpers.o
1057DBUS_OBJS += ctrl_iface_dbus_new.o ctrl_iface_dbus_new_handlers.o
1058ifndef DBUS_LIBS
1059DBUS_LIBS := $(shell pkg-config --libs dbus-1)
1060endif
1061ifndef DBUS_INCLUDE
1062DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1)
1063endif
1064ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
1065DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
1066DBUS_INCLUDE += $(shell xml2-config --cflags)
1067DBUS_LIBS += $(shell xml2-config --libs)
6fc6879b 1068endif
8fc2fb56
WS
1069DBUS_CFLAGS += $(DBUS_INCLUDE)
1070endif
1071
1072OBJS += $(DBUS_OBJS)
1073CFLAGS += $(DBUS_CFLAGS)
1074LIBS += $(DBUS_LIBS)
6fc6879b
JM
1075
1076ifdef CONFIG_READLINE
1077CFLAGS += -DCONFIG_READLINE
1078LIBS_c += -lncurses -lreadline
1079endif
1080
1081ifdef CONFIG_NATIVE_WINDOWS
1082CFLAGS += -DCONFIG_NATIVE_WINDOWS
1083LIBS += -lws2_32 -lgdi32 -lcrypt32
1084LIBS_c += -lws2_32
1085LIBS_p += -lws2_32 -lgdi32
1086ifeq ($(CONFIG_CRYPTO), cryptoapi)
1087LIBS_p += -lcrypt32
1088endif
1089endif
1090
1091ifdef CONFIG_NO_STDOUT_DEBUG
1092CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1093ifndef CONFIG_CTRL_IFACE
1094CFLAGS += -DCONFIG_NO_WPA_MSG
1095endif
1096endif
1097
1098ifdef CONFIG_IPV6
1099# for eapol_test only
1100CFLAGS += -DCONFIG_IPV6
1101endif
1102
6fc6879b
JM
1103ifdef NEED_BASE64
1104OBJS += ../src/utils/base64.o
1105endif
1106
c2a04078
JM
1107ifdef NEED_SME
1108OBJS += sme.o
1109CFLAGS += -DCONFIG_SME
1110endif
1111
6fc6879b 1112ifdef CONFIG_CLIENT_MLME
26c9d7ea 1113OBJS += mlme.o
6fc6879b 1114CFLAGS += -DCONFIG_CLIENT_MLME
26c9d7ea
JM
1115NEED_80211_COMMON=y
1116endif
1117
1118ifdef NEED_80211_COMMON
1119OBJS += ../src/common/ieee802_11_common.o
6fc6879b
JM
1120endif
1121
1122ifndef CONFIG_MAIN
1123CONFIG_MAIN=main
1124endif
1125
cca87731
SL
1126ifdef CONFIG_DEBUG_SYSLOG
1127CFLAGS += -DCONFIG_DEBUG_SYSLOG
1128endif
1129
6fc6879b
JM
1130ifdef CONFIG_DEBUG_FILE
1131CFLAGS += -DCONFIG_DEBUG_FILE
1132endif
1133
46690a3b
JM
1134ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1135CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1136endif
1137
577072b1
JM
1138ifdef CONFIG_FIPS
1139CFLAGS += -DCONFIG_FIPS
577072b1
JM
1140endif
1141
6fc6879b 1142OBJS += ../src/drivers/scan_helpers.o
657f0381 1143OBJS += $(SHA1OBJS) $(DESOBJS)
928a50a3 1144
be473f3f 1145OBJS_p += $(SHA1OBJS)
6fc6879b 1146
60b94c98
JM
1147ifdef CONFIG_BGSCAN_SIMPLE
1148CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1149OBJS += bgscan_simple.o
1150NEED_BGSCAN=y
1151endif
1152
1153ifdef NEED_BGSCAN
1154CFLAGS += -DCONFIG_BGSCAN
1155OBJS += bgscan.o
1156endif
1157
6fc6879b
JM
1158OBJS_wpa_rm := ctrl_iface.o mlme.o ctrl_iface_unix.o
1159OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.o
1160ifdef CONFIG_AUTHENTICATOR
1161OBJS_wpa += tests/link_test.o
1162endif
1163OBJS_wpa += $(OBJS_l2)
1164OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o
74784010
JM
1165OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o
1166OBJS_t += ../src/radius/radius_client.o
a7baefda 1167OBJS_t += ../src/radius/radius.o
74784010 1168ifndef CONFIG_AP
6fc6879b 1169OBJS_t += ../src/utils/ip_addr.o
74784010 1170endif
6fc6879b
JM
1171OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
1172OBJS += $(CONFIG_MAIN).o
1173
1174ifdef CONFIG_PRIVSEP
1175OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o ../src/drivers/scan_helpers.o
1176OBJS_priv += $(OBJS_l2)
1177OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
1178OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
1179OBJS_priv += ../src/utils/common.o
1180OBJS_priv += ../src/utils/wpa_debug.o
716d543d 1181OBJS_priv += ../src/utils/wpabuf.o
6fc6879b
JM
1182OBJS_priv += wpa_priv.o
1183ifdef CONFIG_DRIVER_TEST
928a50a3 1184OBJS_priv += $(SHA1OBJS)
ad01a531 1185OBJS_priv += $(MD5OBJS)
6fc6879b
JM
1186ifeq ($(CONFIG_TLS), openssl)
1187OBJS_priv += ../src/crypto/crypto_openssl.o
1188endif
1189ifeq ($(CONFIG_TLS), gnutls)
1190OBJS_priv += ../src/crypto/crypto_gnutls.o
1191endif
289ffc2b
JM
1192ifeq ($(CONFIG_TLS), nss)
1193OBJS_priv += ../src/crypto/crypto_nss.o
1194endif
6fc6879b
JM
1195ifeq ($(CONFIG_TLS), internal)
1196ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1197OBJS_priv += ../src/crypto/crypto_libtomcrypt.o
1198else
1199OBJS_priv += ../src/crypto/crypto_internal.o
1200endif
1201endif
1202endif # CONFIG_DRIVER_TEST
1203OBJS += ../src/l2_packet/l2_packet_privsep.o
1204OBJS += ../src/drivers/driver_privsep.o
1205EXTRA_progs += wpa_priv
1206else
1207OBJS += $(OBJS_d) ../src/drivers/drivers.o
1208OBJS += $(OBJS_l2)
1209endif
1210
1211ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1212CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1213OBJS += ../src/drivers/ndis_events.o
1214EXTRALIBS += -loleaut32 -lole32 -luuid
1215ifdef PLATFORMSDKLIB
1216EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1217else
1218EXTRALIBS += WbemUuid.Lib
1219endif
1220endif
1221
1222ifndef LDO
1223LDO=$(CC)
1224endif
1225
1226dynamic_eap_methods: $(EAPDYN)
1227
ba30964b
JM
1228../src/drivers/build.wpa_supplicant:
1229 @if [ -e ../src/drivers/build.hostapd ]; then \
1230 $(MAKE) -C ../src/drivers clean; \
1231 fi
1232 @touch ../src/drivers/build.wpa_supplicant
1233
1234BCHECK=../src/drivers/build.wpa_supplicant
1235
1236wpa_priv: $(BCHECK) $(OBJS_priv)
6fc6879b
JM
1237 $(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS)
1238
ba30964b 1239wpa_supplicant: .config $(BCHECK) $(OBJS) $(EXTRA_progs)
6fc6879b
JM
1240 $(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
1241
1242eapol_test: .config $(OBJS_t)
1243 $(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
1244
1245preauth_test: .config $(OBJS_t2)
1246 $(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
1247
1248wpa_passphrase: $(OBJS_p)
1249 $(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
1250
1251wpa_cli: $(OBJS_c)
1252 $(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
1253
1254link_test: $(OBJS) $(OBJS_h) tests/link_test.o
1255 $(LDO) $(LDFLAGS) -o link_test $(OBJS) $(OBJS_h) tests/link_test.o $(LIBS)
1256
1257test_wpa: $(OBJS_wpa) $(OBJS_h)
1258 $(LDO) $(LDFLAGS) -o test_wpa $(OBJS_wpa) $(LIBS)
1259
6fc6879b
JM
1260win_if_list: win_if_list.c
1261 $(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
1262
1263eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
466940c5 1264 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1265 -Deap_peer_psk_register=eap_peer_method_dynamic_init
1266
1267eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
466940c5 1268 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1269 -Deap_peer_pax_register=eap_peer_method_dynamic_init
1270
1271eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
466940c5 1272 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1273 -Deap_peer_sake_register=eap_peer_method_dynamic_init
1274
ad08c363 1275eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c
466940c5 1276 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
ad08c363
JM
1277 -Deap_peer_wsc_register=eap_peer_method_dynamic_init
1278
6fc6879b 1279eap_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 1280 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1281 -Deap_peer_ikev2_register=eap_peer_method_dynamic_init
1282
1283%.so: %.c
466940c5 1284 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
4c2660c2 1285 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
6fc6879b 1286
b2840aaf
JB
1287Q=@
1288E=echo
1289ifeq ($(V), 1)
1290Q=
1291E=true
1292endif
1293
1294%.o: %.c
1295 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1296 @$(E) " CC " $<
6fc6879b
JM
1297
1298wpa_supplicant.exe: wpa_supplicant
1299 mv -f $< $@
1300wpa_cli.exe: wpa_cli
1301 mv -f $< $@
1302wpa_passphrase.exe: wpa_passphrase
1303 mv -f $< $@
1304win_if_list.exe: win_if_list
1305 mv -f $< $@
1306eapol_test.exe: eapol_test
1307 mv -f $< $@
1308
1309WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
1310
1311windows-bin: $(WINALL)
1312 $(STRIP) $(WINALL)
1313
1314wpa_gui/Makefile:
1315 qmake -o wpa_gui/Makefile wpa_gui/wpa_gui.pro
1316
1317wpa_gui: wpa_gui/Makefile
1318 $(MAKE) -C wpa_gui
1319
1320wpa_gui-qt4/Makefile:
1321 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro
1322
1323wpa_gui-qt4: wpa_gui-qt4/Makefile
1324 $(MAKE) -C wpa_gui-qt4
1325
ad01a531 1326TEST_EAP_SIM_COMMON_OBJS = $(SHA1OBJS) $(MD5OBJS) \
246157cb
JB
1327 ../src/utils/common.o ../src/utils/os_unix.o \
1328 ../src/utils/wpa_debug.o $(AESOBJS) \
6fc6879b
JM
1329 tests/test_eap_sim_common.o
1330test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS)
03da66bd 1331 $(LDO) $(LDFLAGS) -o $@ $(TEST_EAP_SIM_COMMON_OBJS) $(LIBS)
6fc6879b
JM
1332 ./test-eap_sim_common
1333 rm test-eap_sim_common
1334
f8cf3ce6 1335tests: test-eap_sim_common
6fc6879b
JM
1336
1337clean:
1338 $(MAKE) -C ../src clean
8055fb78 1339 rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL) eapol_test preauth_test
385f16c6 1340 rm -f wpa_priv
6fc6879b 1341
6fc6879b 1342-include $(OBJS:%.o=%.d)