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