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