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