]> git.ipfire.org Git - thirdparty/hostap.git/blame - wpa_supplicant/Makefile
Move EAP-SIM DB conditional build into hostapd
[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
be473f3f 526NEED_CIPHER=y
6fc6879b
JM
527endif
528
529ifdef CONFIG_EAP_VENDOR_TEST
530ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
531CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
532EAPDYN += ../src/eap_peer/eap_vendor_test.so
533else
534CFLAGS += -DEAP_VENDOR_TEST
535OBJS += ../src/eap_peer/eap_vendor_test.o
536OBJS_h += ../src/eap_server/eap_vendor_test.o
537endif
538CONFIG_IEEE8021X_EAPOL=y
539endif
540
541ifdef CONFIG_EAP_TNC
542# EAP-TNC
543CFLAGS += -DEAP_TNC
544OBJS += ../src/eap_peer/eap_tnc.o
545OBJS += ../src/eap_peer/tncc.o
93ea8ed0
JM
546OBJS_h += ../src/eap_server/eap_tnc.o
547OBJS_h += ../src/eap_server/tncs.o
6fc6879b 548NEED_BASE64=y
53c256a4 549ifndef CONFIG_NATIVE_WINDOWS
7d737d6b 550ifndef CONFIG_DRIVER_BSD
b77eab28 551LIBS += -ldl
6fc6879b 552endif
53c256a4 553endif
7d737d6b 554endif
6fc6879b
JM
555
556ifdef CONFIG_IEEE8021X_EAPOL
557# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
558CFLAGS += -DIEEE8021X_EAPOL
559OBJS += ../src/eapol_supp/eapol_supp_sm.o ../src/eap_peer/eap.o ../src/eap_common/eap_common.o ../src/eap_peer/eap_methods.o
560ifdef CONFIG_DYNAMIC_EAP_METHODS
561CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
562LIBS += -ldl -rdynamic
563endif
564endif
565
1581b38b 566ifdef CONFIG_AP
3680a5db 567NEED_RSN_AUTHENTICATOR=y
1581b38b 568CFLAGS += -DCONFIG_AP
f1a48710
JM
569OBJS += ap.o
570CFLAGS += -DCONFIG_NO_RADIUS
571CFLAGS += -DCONFIG_NO_ACCOUNTING
572CFLAGS += -DCONFIG_NO_VLAN
2d5b792d
JM
573OBJS += ../hostapd/hostapd.o
574OBJS += ../hostapd/config.o
575OBJS += ../src/utils/ip_addr.o
f1a48710 576OBJS += ../hostapd/sta_info.o
f1a48710
JM
577OBJS += ../hostapd/tkip_countermeasures.o
578OBJS += ../hostapd/mlme.o
579OBJS += ../hostapd/ieee802_1x.o
281c950b 580OBJS += ../src/eapol_auth/eapol_auth_sm.o
f1a48710
JM
581OBJS += ../hostapd/ieee802_11_auth.o
582OBJS += ../hostapd/drv_callbacks.o
e653b622
JM
583ifdef CONFIG_CTRL_IFACE
584OBJS += ../hostapd/ctrl_iface_ap.o
585endif
f1a48710 586
12760815 587CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
f1a48710
JM
588OBJS += ../src/eap_server/eap.o
589OBJS += ../src/eap_server/eap_identity.o
590OBJS += ../src/eap_server/eap_methods.o
591
592ifdef NEED_AP_MLME
593OBJS += ../hostapd/beacon.o
594OBJS += ../hostapd/wme.o
595OBJS += ../hostapd/ap_list.o
596OBJS += ../hostapd/ieee802_11.o
597OBJS += ../hostapd/hw_features.o
fe6bdb77 598CFLAGS += -DNEED_AP_MLME
f1a48710
JM
599endif
600ifdef CONFIG_WPS
601CFLAGS += -DEAP_SERVER_WSC
602OBJS += ../hostapd/wps_hostapd.o
603OBJS += ../src/eap_server/eap_wsc.o
604endif
1581b38b
JM
605endif
606
3680a5db
JM
607ifdef NEED_RSN_AUTHENTICATOR
608CFLAGS += -DCONFIG_NO_RADIUS
609NEED_AES_WRAP=y
610OBJS += ../hostapd/wpa.o
611OBJS += ../hostapd/wpa_auth_ie.o
612OBJS += ../hostapd/pmksa_cache.o
613ifdef CONFIG_IEEE80211R
614OBJS += ../hostapd/wpa_ft.o
615endif
616ifdef CONFIG_PEERKEY
617OBJS += ../hostapd/peerkey.o
618endif
619endif
620
6fc6879b
JM
621ifdef CONFIG_EAP_SERVER
622CFLAGS += -DEAP_SERVER
623OBJS_h += ../src/eap_server/eap.o
624OBJS_h += ../src/eap_server/eap_identity.o
625OBJS_h += ../src/eap_server/eap_methods.o
626endif
627
628ifdef CONFIG_RADIUS_CLIENT
629OBJS_h += ../src/utils/ip_addr.o
630OBJS_h += ../src/radius/radius.o
631OBJS_h += ../src/radius/radius_client.o
632endif
633
634ifdef CONFIG_AUTHENTICATOR
281c950b 635OBJS_h += ../eapol_auth/eapol_auth_sm.o
6fc6879b
JM
636OBJS_h += ../hostapd/ieee802_1x.o
637endif
638
639ifdef CONFIG_WPA_AUTHENTICATOR
640OBJS_h += ../hostapd/wpa.o
641OBJS_h += ../hostapd/wpa_auth_ie.o
642ifdef CONFIG_IEEE80211R
643OBJS_h += ../hostapd/wpa_ft.o
644endif
645ifdef CONFIG_PEERKEY
646OBJS_h += ../hostapd/peerkey.o
647endif
648endif
649
650ifdef CONFIG_PCSC
651# PC/SC interface for smartcards (USIM, GSM SIM)
652CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
653OBJS += ../src/utils/pcsc_funcs.o
654# -lpthread may not be needed depending on how pcsc-lite was configured
655ifdef CONFIG_NATIVE_WINDOWS
656#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
657#dynamic symbol loading that is now used in pcsc_funcs.c
658#LIBS += -lwinscard
659else
660LIBS += -lpcsclite -lpthread
661endif
662endif
663
81eec387
JM
664ifdef CONFIG_SIM_SIMULATOR
665CFLAGS += -DCONFIG_SIM_SIMULATOR
666NEED_MILENAGE=y
667endif
668
2a24bb31
JM
669ifdef CONFIG_USIM_SIMULATOR
670CFLAGS += -DCONFIG_USIM_SIMULATOR
81eec387
JM
671NEED_MILENAGE=y
672endif
673
674ifdef NEED_MILENAGE
43df4cc2 675OBJS += ../src/crypto/milenage.o
2a24bb31
JM
676endif
677
71374569
JM
678ifdef CONFIG_PKCS12
679CFLAGS += -DPKCS12_FUNCS
680endif
681
682ifdef CONFIG_SMARTCARD
683CFLAGS += -DCONFIG_SMARTCARD
684endif
685
686ifdef MS_FUNCS
687OBJS += ../src/crypto/ms_funcs.o
38b46286
JM
688NEED_DES=y
689NEED_MD4=y
71374569
JM
690endif
691
692ifdef CHAP
693OBJS += ../src/eap_common/chap.o
694endif
695
6fc6879b 696ifdef TLS_FUNCS
38b46286 697NEED_DES=y
6fc6879b 698# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
6fc6879b
JM
699OBJS += ../src/eap_peer/eap_tls_common.o
700OBJS_h += ../src/eap_server/eap_tls_common.o
701NEED_TLS_PRF=y
000bbd77
JM
702endif
703
38b46286
JM
704ifndef CONFIG_TLS
705CONFIG_TLS=openssl
706endif
707
6fc6879b 708ifeq ($(CONFIG_TLS), openssl)
38b46286 709ifdef TLS_FUNCS
6fc6879b
JM
710CFLAGS += -DEAP_TLS_OPENSSL
711OBJS += ../src/crypto/tls_openssl.o
38b46286
JM
712LIBS += -lssl
713endif
714OBJS += ../src/crypto/crypto_openssl.o
715OBJS_p += ../src/crypto/crypto_openssl.o
716ifdef NEED_FIPS186_2_PRF
717OBJS += ../src/crypto/fips_prf_openssl.o
718endif
719LIBS += -lcrypto
6fc6879b
JM
720LIBS_p += -lcrypto
721endif
38b46286 722
6fc6879b 723ifeq ($(CONFIG_TLS), gnutls)
38b46286 724ifdef TLS_FUNCS
6fc6879b 725OBJS += ../src/crypto/tls_gnutls.o
38b46286 726LIBS += -lgnutls -lgpg-error
6fc6879b
JM
727ifdef CONFIG_GNUTLS_EXTRA
728CFLAGS += -DCONFIG_GNUTLS_EXTRA
729LIBS += -lgnutls-extra
730endif
731endif
6fc6879b
JM
732OBJS += ../src/crypto/crypto_gnutls.o
733OBJS_p += ../src/crypto/crypto_gnutls.o
05edfe29
JB
734ifdef NEED_FIPS186_2_PRF
735OBJS += ../src/crypto/fips_prf_gnutls.o
05edfe29 736endif
38b46286
JM
737LIBS += -lgcrypt
738LIBS_p += -lgcrypt
6fc6879b 739CONFIG_INTERNAL_SHA256=y
ac73690c 740CONFIG_INTERNAL_RC4=y
f042122a 741CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 742endif
38b46286 743
6fc6879b 744ifeq ($(CONFIG_TLS), schannel)
38b46286
JM
745ifdef TLS_FUNCS
746OBJS += ../src/crypto/tls_schannel.o
747endif
6fc6879b
JM
748OBJS += ../src/crypto/crypto_cryptoapi.o
749OBJS_p += ../src/crypto/crypto_cryptoapi.o
750CONFIG_INTERNAL_SHA256=y
ac73690c 751CONFIG_INTERNAL_RC4=y
f042122a 752CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 753endif
38b46286 754
289ffc2b 755ifeq ($(CONFIG_TLS), nss)
38b46286
JM
756ifdef TLS_FUNCS
757OBJS += ../src/crypto/tls_nss.o
758LIBS += -lssl3
759endif
289ffc2b
JM
760OBJS += ../src/crypto/crypto_nss.o
761OBJS_p += ../src/crypto/crypto_nss.o
289ffc2b
JM
762ifdef NEED_FIPS186_2_PRF
763OBJS += ../src/crypto/fips_prf_nss.o
764endif
38b46286
JM
765LIBS += -lnss3
766LIBS_p += -lnss3
767CONFIG_INTERNAL_MD4=y
f042122a 768CONFIG_INTERNAL_DH_GROUP5=y
289ffc2b 769endif
38b46286 770
6fc6879b 771ifeq ($(CONFIG_TLS), internal)
38b46286
JM
772ifndef CONFIG_CRYPTO
773CONFIG_CRYPTO=internal
774endif
775ifdef TLS_FUNCS
be473f3f 776OBJS += ../src/crypto/crypto_internal-rsa.o
38b46286
JM
777OBJS += ../src/crypto/tls_internal.o
778OBJS += ../src/tls/tlsv1_common.o
779OBJS += ../src/tls/tlsv1_record.o
780OBJS += ../src/tls/tlsv1_cred.o
781OBJS += ../src/tls/tlsv1_client.o
782OBJS += ../src/tls/tlsv1_client_write.o
783OBJS += ../src/tls/tlsv1_client_read.o
784OBJS += ../src/tls/asn1.o
785OBJS += ../src/tls/rsa.o
786OBJS += ../src/tls/x509v3.o
f1739bac
JM
787OBJS += ../src/tls/pkcs1.o
788OBJS += ../src/tls/pkcs5.o
789OBJS += ../src/tls/pkcs8.o
1a707778 790NEED_SHA256=y
38b46286
JM
791NEED_BASE64=y
792NEED_TLS_PRF=y
793NEED_MODEXP=y
be473f3f 794NEED_CIPHER=y
38b46286
JM
795CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
796endif
be473f3f
JM
797ifdef NEED_CIPHER
798NEED_DES=y
799OBJS += ../src/crypto/crypto_internal-cipher.o
800endif
38b46286 801ifdef NEED_MODEXP
be473f3f 802OBJS += ../src/crypto/crypto_internal-modexp.o
38b46286 803OBJS += ../src/tls/bignum.o
38b46286 804endif
6fc6879b
JM
805ifeq ($(CONFIG_CRYPTO), libtomcrypt)
806OBJS += ../src/crypto/crypto_libtomcrypt.o
807OBJS_p += ../src/crypto/crypto_libtomcrypt.o
38b46286
JM
808LIBS += -ltomcrypt -ltfm
809LIBS_p += -ltomcrypt -ltfm
6fc6879b 810CONFIG_INTERNAL_SHA256=y
ac73690c 811CONFIG_INTERNAL_RC4=y
f042122a 812CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
813endif
814ifeq ($(CONFIG_CRYPTO), internal)
38b46286
JM
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 880AESOBJS = # none so far (see below)
6fc6879b 881ifdef CONFIG_INTERNAL_AES
381fcbc9 882AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o
6fc6879b 883endif
38b46286
JM
884
885AESOBJS += ../src/crypto/aes-unwrap.o
bd4e9d03 886ifdef NEED_AES_EAX
38b46286 887AESOBJS += ../src/crypto/aes-eax.o
bd4e9d03
JM
888NEED_AES_CTR=y
889endif
890ifdef NEED_AES_CTR
891AESOBJS += ../src/crypto/aes-ctr.o
892endif
893ifdef NEED_AES_ENCBLOCK
38b46286 894AESOBJS += ../src/crypto/aes-encblock.o
bd4e9d03
JM
895endif
896ifdef NEED_AES_OMAC1
279d859b 897NEED_AES_ENC=y
38b46286 898AESOBJS += ../src/crypto/aes-omac1.o
bd4e9d03
JM
899endif
900ifdef NEED_AES_WRAP
3afe7b61 901NEED_AES_ENC=y
38b46286
JM
902AESOBJS += ../src/crypto/aes-wrap.o
903endif
904ifdef NEED_AES_CBC
279d859b
MH
905NEED_AES_ENC=y
906AESOBJS += ../src/crypto/aes-cbc.o
907endif
908ifdef NEED_AES_ENC
38b46286
JM
909ifdef CONFIG_INTERNAL_AES
910AESOBJS += ../src/crypto/aes-internal-enc.o
911endif
38b46286
JM
912endif
913ifdef NEED_AES
914OBJS += $(AESOBJS)
38b46286
JM
915endif
916
917ifdef NEED_SHA1
918SHA1OBJS += ../src/crypto/sha1.o
6fc6879b 919ifdef CONFIG_INTERNAL_SHA1
928a50a3 920SHA1OBJS += ../src/crypto/sha1-internal.o
05edfe29
JB
921ifdef NEED_FIPS186_2_PRF
922SHA1OBJS += ../src/crypto/fips_prf_internal.o
923endif
6fc6879b 924endif
38b46286
JM
925ifndef CONFIG_NO_WPA_PASSPHRASE
926SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
927endif
928ifdef NEED_T_PRF
929SHA1OBJS += ../src/crypto/sha1-tprf.o
930endif
931ifdef NEED_TLS_PRF
932SHA1OBJS += ../src/crypto/sha1-tlsprf.o
933endif
934endif
935
936MD5OBJS = ../src/crypto/md5.o
937ifdef NEED_MD5
6fc6879b 938ifdef CONFIG_INTERNAL_MD5
ad01a531 939MD5OBJS += ../src/crypto/md5-internal.o
6fc6879b 940endif
38b46286
JM
941ifdef CONFIG_FIPS
942MD5OBJS += ../src/crypto/md5-non-fips.o
6fc6879b 943endif
38b46286 944OBJS += $(MD5OBJS)
3e91d242 945OBJS_p += $(MD5OBJS)
38b46286
JM
946endif
947
948ifdef NEED_MD4
949ifdef CONFIG_INTERNAL_MD4
950OBJS += ../src/crypto/md4-internal.o
951endif
952endif
bd4e2895 953
38b46286
JM
954DESOBJS = # none needed when not internal
955ifdef NEED_DES
6fc6879b 956ifdef CONFIG_INTERNAL_DES
657f0381 957DESOBJS += ../src/crypto/des-internal.o
6fc6879b 958endif
38b46286 959endif
6fc6879b 960
38b46286 961ifdef NEED_RC4
ac73690c
JM
962ifdef CONFIG_INTERNAL_RC4
963OBJS += ../src/crypto/rc4.o
964endif
1d8ce433
JM
965endif
966
38b46286 967SHA256OBJS = # none by default
6fc6879b 968ifdef NEED_SHA256
598a792d 969SHA256OBJS += ../src/crypto/sha256.o
598a792d
JB
970ifdef CONFIG_INTERNAL_SHA256
971SHA256OBJS += ../src/crypto/sha256-internal.o
972endif
598a792d 973OBJS += $(SHA256OBJS)
38b46286
JM
974endif
975
976ifdef CONFIG_INTERNAL_DH_GROUP5
977ifdef NEED_DH_GROUPS
978OBJS += ../src/crypto/dh_groups.o
979OBJS += ../src/crypto/dh_group5.o
980ifdef NEED_DH_GROUPS_ALL
981CFLAGS += -DALL_DH_GROUPS
982endif
983endif
984else
985ifdef NEED_DH_GROUPS_ALL
986OBJS += ../src/crypto/dh_groups.o
987CFLAGS += -DALL_DH_GROUPS
988endif
989endif
6fc6879b 990
6fc6879b
JM
991ifdef CONFIG_CTRL_IFACE
992ifeq ($(CONFIG_CTRL_IFACE), y)
993ifdef CONFIG_NATIVE_WINDOWS
994CONFIG_CTRL_IFACE=named_pipe
995else
996CONFIG_CTRL_IFACE=unix
997endif
998endif
999CFLAGS += -DCONFIG_CTRL_IFACE
1000ifeq ($(CONFIG_CTRL_IFACE), unix)
1001CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1002endif
1003ifeq ($(CONFIG_CTRL_IFACE), udp)
1004CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1005endif
1006ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1007CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1008endif
1009OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
1010endif
1011
1012ifdef CONFIG_CTRL_IFACE_DBUS
8fc2fb56
WS
1013DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
1014DBUS_OBJS += ctrl_iface_dbus.o ctrl_iface_dbus_handlers.o
1015DBUS_OBJS += dbus_dict_helpers.o
6fc6879b
JM
1016ifndef DBUS_LIBS
1017DBUS_LIBS := $(shell pkg-config --libs dbus-1)
1018endif
6fc6879b
JM
1019ifndef DBUS_INCLUDE
1020DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1)
1021endif
1022dbus_version=$(subst ., ,$(shell pkg-config --modversion dbus-1))
1023DBUS_VERSION_MAJOR=$(word 1,$(dbus_version))
1024DBUS_VERSION_MINOR=$(word 2,$(dbus_version))
1025ifeq ($(DBUS_VERSION_MAJOR),)
1026DBUS_VERSION_MAJOR=0
1027endif
1028ifeq ($(DBUS_VERSION_MINOR),)
1029DBUS_VERSION_MINOR=0
1030endif
1031DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR)
1032DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR)
8fc2fb56
WS
1033DBUS_CFLAGS += $(DBUS_INCLUDE)
1034endif
1035
1036ifdef CONFIG_CTRL_IFACE_DBUS_NEW
1037DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
1038DBUS_OBJS ?= dbus_dict_helpers.o
1039DBUS_OBJS += ctrl_iface_dbus_new_helpers.o
1040DBUS_OBJS += ctrl_iface_dbus_new.o ctrl_iface_dbus_new_handlers.o
1041ifndef DBUS_LIBS
1042DBUS_LIBS := $(shell pkg-config --libs dbus-1)
1043endif
1044ifndef DBUS_INCLUDE
1045DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1)
1046endif
1047ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
1048DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
1049DBUS_INCLUDE += $(shell xml2-config --cflags)
1050DBUS_LIBS += $(shell xml2-config --libs)
6fc6879b 1051endif
8fc2fb56
WS
1052DBUS_CFLAGS += $(DBUS_INCLUDE)
1053endif
1054
1055OBJS += $(DBUS_OBJS)
1056CFLAGS += $(DBUS_CFLAGS)
1057LIBS += $(DBUS_LIBS)
6fc6879b
JM
1058
1059ifdef CONFIG_READLINE
1060CFLAGS += -DCONFIG_READLINE
1061LIBS_c += -lncurses -lreadline
1062endif
1063
1064ifdef CONFIG_NATIVE_WINDOWS
1065CFLAGS += -DCONFIG_NATIVE_WINDOWS
1066LIBS += -lws2_32 -lgdi32 -lcrypt32
1067LIBS_c += -lws2_32
1068LIBS_p += -lws2_32 -lgdi32
1069ifeq ($(CONFIG_CRYPTO), cryptoapi)
1070LIBS_p += -lcrypt32
1071endif
1072endif
1073
1074ifdef CONFIG_NO_STDOUT_DEBUG
1075CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1076ifndef CONFIG_CTRL_IFACE
1077CFLAGS += -DCONFIG_NO_WPA_MSG
1078endif
1079endif
1080
1081ifdef CONFIG_IPV6
1082# for eapol_test only
1083CFLAGS += -DCONFIG_IPV6
1084endif
1085
6fc6879b
JM
1086ifdef NEED_BASE64
1087OBJS += ../src/utils/base64.o
1088endif
1089
c2a04078
JM
1090ifdef NEED_SME
1091OBJS += sme.o
1092CFLAGS += -DCONFIG_SME
1093endif
1094
6fc6879b 1095ifdef CONFIG_CLIENT_MLME
26c9d7ea 1096OBJS += mlme.o
6fc6879b 1097CFLAGS += -DCONFIG_CLIENT_MLME
26c9d7ea
JM
1098NEED_80211_COMMON=y
1099endif
1100
1101ifdef NEED_80211_COMMON
1102OBJS += ../src/common/ieee802_11_common.o
6fc6879b
JM
1103endif
1104
1105ifndef CONFIG_MAIN
1106CONFIG_MAIN=main
1107endif
1108
cca87731
SL
1109ifdef CONFIG_DEBUG_SYSLOG
1110CFLAGS += -DCONFIG_DEBUG_SYSLOG
1111endif
1112
6fc6879b
JM
1113ifdef CONFIG_DEBUG_FILE
1114CFLAGS += -DCONFIG_DEBUG_FILE
1115endif
1116
46690a3b
JM
1117ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1118CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1119endif
1120
577072b1
JM
1121ifdef CONFIG_FIPS
1122CFLAGS += -DCONFIG_FIPS
577072b1
JM
1123endif
1124
6fc6879b 1125OBJS += ../src/drivers/scan_helpers.o
657f0381 1126OBJS += $(SHA1OBJS) $(DESOBJS)
928a50a3 1127
be473f3f 1128OBJS_p += $(SHA1OBJS)
6fc6879b 1129
60b94c98
JM
1130ifdef CONFIG_BGSCAN_SIMPLE
1131CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1132OBJS += bgscan_simple.o
1133NEED_BGSCAN=y
1134endif
1135
1136ifdef NEED_BGSCAN
1137CFLAGS += -DCONFIG_BGSCAN
1138OBJS += bgscan.o
1139endif
1140
6fc6879b
JM
1141OBJS_wpa_rm := ctrl_iface.o mlme.o ctrl_iface_unix.o
1142OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.o
1143ifdef CONFIG_AUTHENTICATOR
1144OBJS_wpa += tests/link_test.o
1145endif
1146OBJS_wpa += $(OBJS_l2)
1147OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o
74784010
JM
1148OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o
1149OBJS_t += ../src/radius/radius_client.o
a7baefda 1150OBJS_t += ../src/radius/radius.o
74784010 1151ifndef CONFIG_AP
6fc6879b 1152OBJS_t += ../src/utils/ip_addr.o
74784010 1153endif
6fc6879b
JM
1154OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
1155OBJS += $(CONFIG_MAIN).o
1156
1157ifdef CONFIG_PRIVSEP
1158OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o ../src/drivers/scan_helpers.o
1159OBJS_priv += $(OBJS_l2)
1160OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
1161OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
1162OBJS_priv += ../src/utils/common.o
1163OBJS_priv += ../src/utils/wpa_debug.o
716d543d 1164OBJS_priv += ../src/utils/wpabuf.o
6fc6879b
JM
1165OBJS_priv += wpa_priv.o
1166ifdef CONFIG_DRIVER_TEST
928a50a3 1167OBJS_priv += $(SHA1OBJS)
ad01a531 1168OBJS_priv += $(MD5OBJS)
6fc6879b
JM
1169ifeq ($(CONFIG_TLS), openssl)
1170OBJS_priv += ../src/crypto/crypto_openssl.o
1171endif
1172ifeq ($(CONFIG_TLS), gnutls)
1173OBJS_priv += ../src/crypto/crypto_gnutls.o
1174endif
289ffc2b
JM
1175ifeq ($(CONFIG_TLS), nss)
1176OBJS_priv += ../src/crypto/crypto_nss.o
1177endif
6fc6879b
JM
1178ifeq ($(CONFIG_TLS), internal)
1179ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1180OBJS_priv += ../src/crypto/crypto_libtomcrypt.o
1181else
1182OBJS_priv += ../src/crypto/crypto_internal.o
1183endif
1184endif
1185endif # CONFIG_DRIVER_TEST
1186OBJS += ../src/l2_packet/l2_packet_privsep.o
1187OBJS += ../src/drivers/driver_privsep.o
1188EXTRA_progs += wpa_priv
1189else
1190OBJS += $(OBJS_d) ../src/drivers/drivers.o
1191OBJS += $(OBJS_l2)
1192endif
1193
1194ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1195CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1196OBJS += ../src/drivers/ndis_events.o
1197EXTRALIBS += -loleaut32 -lole32 -luuid
1198ifdef PLATFORMSDKLIB
1199EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1200else
1201EXTRALIBS += WbemUuid.Lib
1202endif
1203endif
1204
1205ifndef LDO
1206LDO=$(CC)
1207endif
1208
1209dynamic_eap_methods: $(EAPDYN)
1210
ba30964b
JM
1211../src/drivers/build.wpa_supplicant:
1212 @if [ -e ../src/drivers/build.hostapd ]; then \
1213 $(MAKE) -C ../src/drivers clean; \
1214 fi
1215 @touch ../src/drivers/build.wpa_supplicant
1216
1217BCHECK=../src/drivers/build.wpa_supplicant
1218
1219wpa_priv: $(BCHECK) $(OBJS_priv)
6fc6879b
JM
1220 $(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS)
1221
ba30964b 1222wpa_supplicant: .config $(BCHECK) $(OBJS) $(EXTRA_progs)
6fc6879b
JM
1223 $(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
1224
1225eapol_test: .config $(OBJS_t)
1226 $(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
1227
1228preauth_test: .config $(OBJS_t2)
1229 $(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
1230
1231wpa_passphrase: $(OBJS_p)
1232 $(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
1233
1234wpa_cli: $(OBJS_c)
1235 $(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
1236
1237link_test: $(OBJS) $(OBJS_h) tests/link_test.o
1238 $(LDO) $(LDFLAGS) -o link_test $(OBJS) $(OBJS_h) tests/link_test.o $(LIBS)
1239
1240test_wpa: $(OBJS_wpa) $(OBJS_h)
1241 $(LDO) $(LDFLAGS) -o test_wpa $(OBJS_wpa) $(LIBS)
1242
6fc6879b
JM
1243win_if_list: win_if_list.c
1244 $(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
1245
1246eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
466940c5 1247 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1248 -Deap_peer_psk_register=eap_peer_method_dynamic_init
1249
1250eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
466940c5 1251 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1252 -Deap_peer_pax_register=eap_peer_method_dynamic_init
1253
1254eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
466940c5 1255 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1256 -Deap_peer_sake_register=eap_peer_method_dynamic_init
1257
ad08c363 1258eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c
466940c5 1259 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
ad08c363
JM
1260 -Deap_peer_wsc_register=eap_peer_method_dynamic_init
1261
6fc6879b 1262eap_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 1263 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1264 -Deap_peer_ikev2_register=eap_peer_method_dynamic_init
1265
1266%.so: %.c
466940c5 1267 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
4c2660c2 1268 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
6fc6879b 1269
b2840aaf
JB
1270Q=@
1271E=echo
1272ifeq ($(V), 1)
1273Q=
1274E=true
1275endif
1276
1277%.o: %.c
1278 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1279 @$(E) " CC " $<
6fc6879b
JM
1280
1281wpa_supplicant.exe: wpa_supplicant
1282 mv -f $< $@
1283wpa_cli.exe: wpa_cli
1284 mv -f $< $@
1285wpa_passphrase.exe: wpa_passphrase
1286 mv -f $< $@
1287win_if_list.exe: win_if_list
1288 mv -f $< $@
1289eapol_test.exe: eapol_test
1290 mv -f $< $@
1291
1292WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
1293
1294windows-bin: $(WINALL)
1295 $(STRIP) $(WINALL)
1296
1297wpa_gui/Makefile:
1298 qmake -o wpa_gui/Makefile wpa_gui/wpa_gui.pro
1299
1300wpa_gui: wpa_gui/Makefile
1301 $(MAKE) -C wpa_gui
1302
1303wpa_gui-qt4/Makefile:
1304 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro
1305
1306wpa_gui-qt4: wpa_gui-qt4/Makefile
1307 $(MAKE) -C wpa_gui-qt4
1308
ad01a531 1309TEST_EAP_SIM_COMMON_OBJS = $(SHA1OBJS) $(MD5OBJS) \
246157cb
JB
1310 ../src/utils/common.o ../src/utils/os_unix.o \
1311 ../src/utils/wpa_debug.o $(AESOBJS) \
6fc6879b
JM
1312 tests/test_eap_sim_common.o
1313test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS)
03da66bd 1314 $(LDO) $(LDFLAGS) -o $@ $(TEST_EAP_SIM_COMMON_OBJS) $(LIBS)
6fc6879b
JM
1315 ./test-eap_sim_common
1316 rm test-eap_sim_common
1317
f8cf3ce6 1318tests: test-eap_sim_common
6fc6879b
JM
1319
1320clean:
1321 $(MAKE) -C ../src clean
8055fb78 1322 rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL) eapol_test preauth_test
385f16c6 1323 rm -f wpa_priv
6fc6879b 1324
6fc6879b 1325-include $(OBJS:%.o=%.d)