]> git.ipfire.org Git - thirdparty/hostap.git/blame - wpa_supplicant/Android.mk
Fix CONFIG_EAP_UNAUTH_TLS without CONFIG_EAP_TLS build
[thirdparty/hostap.git] / wpa_supplicant / Android.mk
CommitLineData
9fc6aa9f
DS
1#
2# Copyright (C) 2008 The Android Open Source Project
3#
dfb42efb
DS
4# This software may be distributed under the terms of the BSD license.
5# See README for more details.
9fc6aa9f
DS
6#
7
8LOCAL_PATH := $(call my-dir)
572a171f 9PKG_CONFIG ?= pkg-config
9fc6aa9f 10
4482f1fb 11ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),)
4482f1fb 12 CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) := y
9fc6aa9f
DS
13endif
14
5db49892 15include $(LOCAL_PATH)/android.config
9fc6aa9f
DS
16
17# To ignore possible wrong network configurations
18L_CFLAGS = -DWPA_IGNORE_CONFIG_ERRORS
19
1e1411b0
DS
20L_CFLAGS += -DVERSION_STR_POSTFIX=\"-$(PLATFORM_VERSION)\"
21
8f5b9aa1
DS
22# Set Android log name
23L_CFLAGS += -DANDROID_LOG_NAME=\"wpa_supplicant\"
24
9176ec06
GH
25# Disable unused parameter warnings
26L_CFLAGS += -Wno-unused-parameter
27
959214b2
DS
28# Set Android extended P2P functionality
29L_CFLAGS += -DANDROID_P2P
30ifeq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),)
31L_CFLAGS += -DANDROID_P2P_STUB
32endif
33
e9af53ad
DS
34# Disable roaming in wpa_supplicant
35ifdef CONFIG_NO_ROAMING
36L_CFLAGS += -DCONFIG_NO_ROAMING
37endif
38
9fc6aa9f
DS
39# Use Android specific directory for control interface sockets
40L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\"
8e8f849f 41L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/system/wpa_supplicant\"
9fc6aa9f
DS
42
43# To force sizeof(enum) = 4
44ifeq ($(TARGET_ARCH),arm)
45L_CFLAGS += -mabi=aapcs-linux
46endif
47
9fc6aa9f
DS
48INCLUDES = $(LOCAL_PATH)
49INCLUDES += $(LOCAL_PATH)/src
50INCLUDES += $(LOCAL_PATH)/src/common
51# INCLUDES += $(LOCAL_PATH)/src/crypto # To force proper includes
52INCLUDES += $(LOCAL_PATH)/src/drivers
53INCLUDES += $(LOCAL_PATH)/src/eap_common
54INCLUDES += $(LOCAL_PATH)/src/eapol_supp
55INCLUDES += $(LOCAL_PATH)/src/eap_peer
56INCLUDES += $(LOCAL_PATH)/src/eap_server
57INCLUDES += $(LOCAL_PATH)/src/hlr_auc_gw
58INCLUDES += $(LOCAL_PATH)/src/l2_packet
59INCLUDES += $(LOCAL_PATH)/src/radius
60INCLUDES += $(LOCAL_PATH)/src/rsn_supp
61INCLUDES += $(LOCAL_PATH)/src/tls
62INCLUDES += $(LOCAL_PATH)/src/utils
63INCLUDES += $(LOCAL_PATH)/src/wps
64INCLUDES += external/openssl/include
736abfc1 65INCLUDES += system/security/keystore/include
9fc6aa9f 66ifdef CONFIG_DRIVER_NL80211
ac494fcc
DS
67ifneq ($(wildcard external/libnl),)
68INCLUDES += external/libnl/include
69else
7cb03b0e 70INCLUDES += external/libnl-headers
9fc6aa9f 71endif
ac494fcc 72endif
9fc6aa9f 73
982bafed
JM
74ifdef CONFIG_FIPS
75CONFIG_NO_RANDOM_POOL=
0b5e9855 76CONFIG_OPENSSL_CMAC=y
982bafed
JM
77endif
78
9fc6aa9f
DS
79OBJS = config.c
80OBJS += notify.c
81OBJS += bss.c
82OBJS += eap_register.c
83OBJS += src/utils/common.c
84OBJS += src/utils/wpa_debug.c
85OBJS += src/utils/wpabuf.c
a0413b17 86OBJS += wmm_ac.c
9fc6aa9f
DS
87OBJS_p = wpa_passphrase.c
88OBJS_p += src/utils/common.c
89OBJS_p += src/utils/wpa_debug.c
90OBJS_p += src/utils/wpabuf.c
91OBJS_c = wpa_cli.c src/common/wpa_ctrl.c
92OBJS_c += src/utils/wpa_debug.c
a624f20b 93OBJS_c += src/utils/common.c
9fc6aa9f
DS
94OBJS_d =
95OBJS_priv =
96
97ifndef CONFIG_OS
98ifdef CONFIG_NATIVE_WINDOWS
99CONFIG_OS=win32
100else
101CONFIG_OS=unix
102endif
103endif
104
105ifeq ($(CONFIG_OS), internal)
106L_CFLAGS += -DOS_NO_C_LIB_DEFINES
107endif
108
109OBJS += src/utils/os_$(CONFIG_OS).c
110OBJS_p += src/utils/os_$(CONFIG_OS).c
111OBJS_c += src/utils/os_$(CONFIG_OS).c
112
113ifdef CONFIG_WPA_TRACE
114L_CFLAGS += -DWPA_TRACE
115OBJS += src/utils/trace.c
116OBJS_p += src/utils/trace.c
117OBJS_c += src/utils/trace.c
118LDFLAGS += -rdynamic
119L_CFLAGS += -funwind-tables
120ifdef CONFIG_WPA_TRACE_BFD
121L_CFLAGS += -DWPA_TRACE_BFD
122LIBS += -lbfd
123LIBS_p += -lbfd
124LIBS_c += -lbfd
125endif
126endif
127
128ifndef CONFIG_ELOOP
129CONFIG_ELOOP=eloop
130endif
131OBJS += src/utils/$(CONFIG_ELOOP).c
132OBJS_c += src/utils/$(CONFIG_ELOOP).c
133
3b335329
JM
134ifdef CONFIG_ELOOP_POLL
135L_CFLAGS += -DCONFIG_ELOOP_POLL
136endif
9fc6aa9f 137
f0356ec8
MH
138ifdef CONFIG_ELOOP_EPOLL
139L_CFLAGS += -DCONFIG_ELOOP_EPOLL
140endif
141
9fc6aa9f
DS
142ifdef CONFIG_EAPOL_TEST
143L_CFLAGS += -Werror -DEAPOL_TEST
144endif
145
5139008b
JM
146ifdef CONFIG_HT_OVERRIDES
147L_CFLAGS += -DCONFIG_HT_OVERRIDES
148endif
149
150ifdef CONFIG_VHT_OVERRIDES
151L_CFLAGS += -DCONFIG_VHT_OVERRIDES
152endif
153
9fc6aa9f
DS
154ifndef CONFIG_BACKEND
155CONFIG_BACKEND=file
156endif
157
158ifeq ($(CONFIG_BACKEND), file)
159OBJS += config_file.c
160ifndef CONFIG_NO_CONFIG_BLOBS
161NEED_BASE64=y
162endif
163L_CFLAGS += -DCONFIG_BACKEND_FILE
164endif
165
166ifeq ($(CONFIG_BACKEND), winreg)
167OBJS += config_winreg.c
168endif
169
170ifeq ($(CONFIG_BACKEND), none)
171OBJS += config_none.c
172endif
173
174ifdef CONFIG_NO_CONFIG_WRITE
175L_CFLAGS += -DCONFIG_NO_CONFIG_WRITE
176endif
177
178ifdef CONFIG_NO_CONFIG_BLOBS
179L_CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
180endif
181
182ifdef CONFIG_NO_SCAN_PROCESSING
183L_CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
184endif
185
087a1f4e
JM
186ifdef CONFIG_SUITEB
187L_CFLAGS += -DCONFIG_SUITEB
188NEED_SHA256=y
189NEED_AES_OMAC1=y
190endif
191
5e3b5197
JM
192ifdef CONFIG_SUITEB192
193L_CFLAGS += -DCONFIG_SUITEB192
194NEED_SHA384=y
195endif
196
9fc6aa9f
DS
197ifdef CONFIG_IEEE80211W
198L_CFLAGS += -DCONFIG_IEEE80211W
199NEED_SHA256=y
200NEED_AES_OMAC1=y
201endif
202
203ifdef CONFIG_IEEE80211R
204L_CFLAGS += -DCONFIG_IEEE80211R
205OBJS += src/rsn_supp/wpa_ft.c
9fc6aa9f
DS
206NEED_SHA256=y
207NEED_AES_OMAC1=y
208endif
209
6c1664f6
BC
210ifdef CONFIG_MESH
211NEED_80211_COMMON=y
0f950df0
TP
212NEED_SHA256=y
213NEED_AES_SIV=y
214NEED_AES_OMAC1=y
215NEED_AES_CTR=y
216CONFIG_SAE=y
217CONFIG_AP=y
6c1664f6 218L_CFLAGS += -DCONFIG_MESH
8319e312 219OBJS += mesh.c
5f92659d 220OBJS += mesh_mpm.c
0f950df0 221OBJS += mesh_rsn.c
6c1664f6
BC
222endif
223
c10347f2
JM
224ifdef CONFIG_SAE
225L_CFLAGS += -DCONFIG_SAE
8e31e955 226OBJS += src/common/sae.c
aadabe70 227NEED_ECC=y
fbfb0e65 228NEED_DH_GROUPS=y
c10347f2
JM
229endif
230
ce9283a4 231ifdef CONFIG_WNM
e2396a68 232L_CFLAGS += -DCONFIG_WNM
3b335329
JM
233OBJS += wnm_sta.c
234endif
235
bcb90f75
DS
236ifdef CONFIG_TDLS
237L_CFLAGS += -DCONFIG_TDLS
67e838fd 238OBJS += src/rsn_supp/tdls.c
bcb90f75
DS
239NEED_SHA256=y
240NEED_AES_OMAC1=y
241endif
242
ba3936d9
AN
243ifdef CONFIG_TDLS_TESTING
244L_CFLAGS += -DCONFIG_TDLS_TESTING
245endif
246
9fc6aa9f
DS
247ifdef CONFIG_PEERKEY
248L_CFLAGS += -DCONFIG_PEERKEY
249endif
250
251ifndef CONFIG_NO_WPA
252OBJS += src/rsn_supp/wpa.c
253OBJS += src/rsn_supp/preauth.c
254OBJS += src/rsn_supp/pmksa_cache.c
255OBJS += src/rsn_supp/peerkey.c
256OBJS += src/rsn_supp/wpa_ie.c
257OBJS += src/common/wpa_common.c
258NEED_AES=y
259NEED_SHA1=y
260NEED_MD5=y
261NEED_RC4=y
262else
aa20e1a1 263L_CFLAGS += -DCONFIG_NO_WPA
9fc6aa9f
DS
264endif
265
266ifdef CONFIG_IBSS_RSN
267NEED_RSN_AUTHENTICATOR=y
268L_CFLAGS += -DCONFIG_IBSS_RSN
269OBJS += ibss_rsn.c
270endif
271
272ifdef CONFIG_P2P
273OBJS += p2p_supplicant.c
0f893285 274OBJS += p2p_supplicant_sd.c
9fc6aa9f
DS
275OBJS += src/p2p/p2p.c
276OBJS += src/p2p/p2p_utils.c
277OBJS += src/p2p/p2p_parse.c
278OBJS += src/p2p/p2p_build.c
279OBJS += src/p2p/p2p_go_neg.c
280OBJS += src/p2p/p2p_sd.c
281OBJS += src/p2p/p2p_pd.c
282OBJS += src/p2p/p2p_invitation.c
283OBJS += src/p2p/p2p_dev_disc.c
284OBJS += src/p2p/p2p_group.c
285OBJS += src/ap/p2p_hostapd.c
25ef8529 286OBJS += src/utils/bitfield.c
9fc6aa9f 287L_CFLAGS += -DCONFIG_P2P
67e838fd
JM
288NEED_GAS=y
289NEED_OFFCHANNEL=y
8271f14a
JM
290CONFIG_WPS=y
291CONFIG_AP=y
9fc6aa9f
DS
292ifdef CONFIG_P2P_STRICT
293L_CFLAGS += -DCONFIG_P2P_STRICT
294endif
295endif
296
55d834e1
JM
297ifdef CONFIG_WIFI_DISPLAY
298L_CFLAGS += -DCONFIG_WIFI_DISPLAY
299OBJS += wifi_display.c
300endif
301
43323e43
JM
302ifdef CONFIG_HS20
303OBJS += hs20_supplicant.c
304L_CFLAGS += -DCONFIG_HS20
305CONFIG_INTERWORKING=y
a5d75636 306NEED_AES_OMAC1=y
43323e43
JM
307endif
308
67e838fd
JM
309ifdef CONFIG_INTERWORKING
310OBJS += interworking.c
311L_CFLAGS += -DCONFIG_INTERWORKING
312NEED_GAS=y
313endif
314
9fc6aa9f
DS
315include $(LOCAL_PATH)/src/drivers/drivers.mk
316
317ifdef CONFIG_AP
318OBJS_d += $(DRV_BOTH_OBJS)
319L_CFLAGS += $(DRV_BOTH_CFLAGS)
320LDFLAGS += $(DRV_BOTH_LDFLAGS)
321LIBS += $(DRV_BOTH_LIBS)
322else
323NEED_AP_MLME=
324OBJS_d += $(DRV_WPA_OBJS)
325L_CFLAGS += $(DRV_WPA_CFLAGS)
326LDFLAGS += $(DRV_WPA_LDFLAGS)
327LIBS += $(DRV_WPA_LIBS)
328endif
329
330ifndef CONFIG_L2_PACKET
331CONFIG_L2_PACKET=linux
332endif
333
334OBJS_l2 += src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).c
335
336ifeq ($(CONFIG_L2_PACKET), pcap)
337ifdef CONFIG_WINPCAP
338L_CFLAGS += -DCONFIG_WINPCAP
339LIBS += -lwpcap -lpacket
340LIBS_w += -lwpcap
341else
342LIBS += -ldnet -lpcap
343endif
344endif
345
346ifeq ($(CONFIG_L2_PACKET), winpcap)
347LIBS += -lwpcap -lpacket
348LIBS_w += -lwpcap
349endif
350
351ifeq ($(CONFIG_L2_PACKET), freebsd)
352LIBS += -lpcap
353endif
354
02a8d45a
JM
355ifdef CONFIG_ERP
356L_CFLAGS += -DCONFIG_ERP
357NEED_SHA256=y
358NEED_HMAC_SHA256_KDF=y
359endif
360
9fc6aa9f
DS
361ifdef CONFIG_EAP_TLS
362# EAP-TLS
363ifeq ($(CONFIG_EAP_TLS), dyn)
364L_CFLAGS += -DEAP_TLS_DYNAMIC
365EAPDYN += src/eap_peer/eap_tls.so
366else
367L_CFLAGS += -DEAP_TLS
368OBJS += src/eap_peer/eap_tls.c
369OBJS_h += src/eap_server/eap_server_tls.c
370endif
371TLS_FUNCS=y
372CONFIG_IEEE8021X_EAPOL=y
373endif
374
4ba83096
DS
375ifdef CONFIG_EAP_UNAUTH_TLS
376# EAP-UNAUTH-TLS
377L_CFLAGS += -DEAP_UNAUTH_TLS
55e8f0ea 378ifndef CONFIG_EAP_TLS
4ba83096
DS
379OBJS += src/eap_peer/eap_tls.c
380OBJS_h += src/eap_server/eap_server_tls.c
381TLS_FUNCS=y
382endif
383CONFIG_IEEE8021X_EAPOL=y
384endif
385
9fc6aa9f
DS
386ifdef CONFIG_EAP_PEAP
387# EAP-PEAP
388ifeq ($(CONFIG_EAP_PEAP), dyn)
389L_CFLAGS += -DEAP_PEAP_DYNAMIC
390EAPDYN += src/eap_peer/eap_peap.so
391else
392L_CFLAGS += -DEAP_PEAP
393OBJS += src/eap_peer/eap_peap.c
394OBJS += src/eap_common/eap_peap_common.c
395OBJS_h += src/eap_server/eap_server_peap.c
396endif
397TLS_FUNCS=y
398CONFIG_IEEE8021X_EAPOL=y
399endif
400
401ifdef CONFIG_EAP_TTLS
402# EAP-TTLS
403ifeq ($(CONFIG_EAP_TTLS), dyn)
404L_CFLAGS += -DEAP_TTLS_DYNAMIC
405EAPDYN += src/eap_peer/eap_ttls.so
406else
407L_CFLAGS += -DEAP_TTLS
408OBJS += src/eap_peer/eap_ttls.c
409OBJS_h += src/eap_server/eap_server_ttls.c
410endif
411MS_FUNCS=y
412TLS_FUNCS=y
413CHAP=y
414CONFIG_IEEE8021X_EAPOL=y
415endif
416
417ifdef CONFIG_EAP_MD5
418# EAP-MD5
419ifeq ($(CONFIG_EAP_MD5), dyn)
420L_CFLAGS += -DEAP_MD5_DYNAMIC
421EAPDYN += src/eap_peer/eap_md5.so
422else
423L_CFLAGS += -DEAP_MD5
424OBJS += src/eap_peer/eap_md5.c
425OBJS_h += src/eap_server/eap_server_md5.c
426endif
427CHAP=y
428CONFIG_IEEE8021X_EAPOL=y
429endif
430
431# backwards compatibility for old spelling
432ifdef CONFIG_MSCHAPV2
433ifndef CONFIG_EAP_MSCHAPV2
434CONFIG_EAP_MSCHAPV2=y
435endif
436endif
437
438ifdef CONFIG_EAP_MSCHAPV2
439# EAP-MSCHAPv2
440ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
441L_CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
442EAPDYN += src/eap_peer/eap_mschapv2.so
443EAPDYN += src/eap_peer/mschapv2.so
444else
445L_CFLAGS += -DEAP_MSCHAPv2
446OBJS += src/eap_peer/eap_mschapv2.c
447OBJS += src/eap_peer/mschapv2.c
448OBJS_h += src/eap_server/eap_server_mschapv2.c
449endif
450MS_FUNCS=y
451CONFIG_IEEE8021X_EAPOL=y
452endif
453
454ifdef CONFIG_EAP_GTC
455# EAP-GTC
456ifeq ($(CONFIG_EAP_GTC), dyn)
457L_CFLAGS += -DEAP_GTC_DYNAMIC
458EAPDYN += src/eap_peer/eap_gtc.so
459else
460L_CFLAGS += -DEAP_GTC
461OBJS += src/eap_peer/eap_gtc.c
462OBJS_h += src/eap_server/eap_server_gtc.c
463endif
464CONFIG_IEEE8021X_EAPOL=y
465endif
466
467ifdef CONFIG_EAP_OTP
468# EAP-OTP
469ifeq ($(CONFIG_EAP_OTP), dyn)
470L_CFLAGS += -DEAP_OTP_DYNAMIC
471EAPDYN += src/eap_peer/eap_otp.so
472else
473L_CFLAGS += -DEAP_OTP
474OBJS += src/eap_peer/eap_otp.c
475endif
476CONFIG_IEEE8021X_EAPOL=y
477endif
478
479ifdef CONFIG_EAP_SIM
480# EAP-SIM
481ifeq ($(CONFIG_EAP_SIM), dyn)
482L_CFLAGS += -DEAP_SIM_DYNAMIC
483EAPDYN += src/eap_peer/eap_sim.so
484else
485L_CFLAGS += -DEAP_SIM
486OBJS += src/eap_peer/eap_sim.c
487OBJS_h += src/eap_server/eap_server_sim.c
488endif
489CONFIG_IEEE8021X_EAPOL=y
490CONFIG_EAP_SIM_COMMON=y
491NEED_AES_CBC=y
492endif
493
494ifdef CONFIG_EAP_LEAP
495# EAP-LEAP
496ifeq ($(CONFIG_EAP_LEAP), dyn)
497L_CFLAGS += -DEAP_LEAP_DYNAMIC
498EAPDYN += src/eap_peer/eap_leap.so
499else
500L_CFLAGS += -DEAP_LEAP
501OBJS += src/eap_peer/eap_leap.c
502endif
503MS_FUNCS=y
504CONFIG_IEEE8021X_EAPOL=y
505endif
506
507ifdef CONFIG_EAP_PSK
508# EAP-PSK
509ifeq ($(CONFIG_EAP_PSK), dyn)
510L_CFLAGS += -DEAP_PSK_DYNAMIC
511EAPDYN += src/eap_peer/eap_psk.so
512else
513L_CFLAGS += -DEAP_PSK
514OBJS += src/eap_peer/eap_psk.c src/eap_common/eap_psk_common.c
515OBJS_h += src/eap_server/eap_server_psk.c
516endif
517CONFIG_IEEE8021X_EAPOL=y
518NEED_AES=y
519NEED_AES_OMAC1=y
520NEED_AES_ENCBLOCK=y
521NEED_AES_EAX=y
522endif
523
524ifdef CONFIG_EAP_AKA
525# EAP-AKA
526ifeq ($(CONFIG_EAP_AKA), dyn)
527L_CFLAGS += -DEAP_AKA_DYNAMIC
528EAPDYN += src/eap_peer/eap_aka.so
529else
530L_CFLAGS += -DEAP_AKA
531OBJS += src/eap_peer/eap_aka.c
532OBJS_h += src/eap_server/eap_server_aka.c
533endif
534CONFIG_IEEE8021X_EAPOL=y
535CONFIG_EAP_SIM_COMMON=y
536NEED_AES_CBC=y
537endif
538
5e42035e
DS
539ifdef CONFIG_EAP_PROXY
540L_CFLAGS += -DCONFIG_EAP_PROXY
541OBJS += src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).c
f7579502 542include $(LOCAL_PATH)/eap_proxy_$(CONFIG_EAP_PROXY).mk
5e42035e
DS
543CONFIG_IEEE8021X_EAPOL=y
544endif
545
9fc6aa9f
DS
546ifdef CONFIG_EAP_AKA_PRIME
547# EAP-AKA'
548ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
549L_CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
550else
551L_CFLAGS += -DEAP_AKA_PRIME
552endif
553NEED_SHA256=y
554endif
555
556ifdef CONFIG_EAP_SIM_COMMON
557OBJS += src/eap_common/eap_sim_common.c
558OBJS_h += src/eap_server/eap_sim_db.c
559NEED_AES=y
560NEED_FIPS186_2_PRF=y
561endif
562
563ifdef CONFIG_EAP_FAST
564# EAP-FAST
565ifeq ($(CONFIG_EAP_FAST), dyn)
566L_CFLAGS += -DEAP_FAST_DYNAMIC
567EAPDYN += src/eap_peer/eap_fast.so
568EAPDYN += src/eap_common/eap_fast_common.c
569else
570L_CFLAGS += -DEAP_FAST
571OBJS += src/eap_peer/eap_fast.c src/eap_peer/eap_fast_pac.c
572OBJS += src/eap_common/eap_fast_common.c
573OBJS_h += src/eap_server/eap_server_fast.c
574endif
575TLS_FUNCS=y
576CONFIG_IEEE8021X_EAPOL=y
577NEED_T_PRF=y
578endif
579
580ifdef CONFIG_EAP_PAX
581# EAP-PAX
582ifeq ($(CONFIG_EAP_PAX), dyn)
583L_CFLAGS += -DEAP_PAX_DYNAMIC
584EAPDYN += src/eap_peer/eap_pax.so
585else
586L_CFLAGS += -DEAP_PAX
587OBJS += src/eap_peer/eap_pax.c src/eap_common/eap_pax_common.c
588OBJS_h += src/eap_server/eap_server_pax.c
589endif
590CONFIG_IEEE8021X_EAPOL=y
591endif
592
593ifdef CONFIG_EAP_SAKE
594# EAP-SAKE
595ifeq ($(CONFIG_EAP_SAKE), dyn)
596L_CFLAGS += -DEAP_SAKE_DYNAMIC
597EAPDYN += src/eap_peer/eap_sake.so
598else
599L_CFLAGS += -DEAP_SAKE
600OBJS += src/eap_peer/eap_sake.c src/eap_common/eap_sake_common.c
601OBJS_h += src/eap_server/eap_server_sake.c
602endif
603CONFIG_IEEE8021X_EAPOL=y
604endif
605
606ifdef CONFIG_EAP_GPSK
607# EAP-GPSK
608ifeq ($(CONFIG_EAP_GPSK), dyn)
609L_CFLAGS += -DEAP_GPSK_DYNAMIC
610EAPDYN += src/eap_peer/eap_gpsk.so
611else
612L_CFLAGS += -DEAP_GPSK
613OBJS += src/eap_peer/eap_gpsk.c src/eap_common/eap_gpsk_common.c
614OBJS_h += src/eap_server/eap_server_gpsk.c
615endif
616CONFIG_IEEE8021X_EAPOL=y
617ifdef CONFIG_EAP_GPSK_SHA256
618L_CFLAGS += -DEAP_GPSK_SHA256
619endif
620NEED_SHA256=y
621NEED_AES_OMAC1=y
622endif
623
624ifdef CONFIG_EAP_PWD
625L_CFLAGS += -DEAP_PWD
626OBJS += src/eap_peer/eap_pwd.c src/eap_common/eap_pwd_common.c
a13e1cc3 627OBJS_h += src/eap_server/eap_server_pwd.c
9fc6aa9f
DS
628CONFIG_IEEE8021X_EAPOL=y
629NEED_SHA256=y
7e7610d7
JM
630endif
631
632ifdef CONFIG_EAP_EKE
633# EAP-EKE
634ifeq ($(CONFIG_EAP_EKE), dyn)
635L_CFLAGS += -DEAP_EKE_DYNAMIC
636EAPDYN += src/eap_peer/eap_eke.so
637else
638L_CFLAGS += -DEAP_EKE
639OBJS += src/eap_peer/eap_eke.c src/eap_common/eap_eke_common.c
640OBJS_h += src/eap_server/eap_server_eke.c
641endif
642CONFIG_IEEE8021X_EAPOL=y
643NEED_DH_GROUPS=y
644NEED_DH_GROUPS_ALL=y
645NEED_SHA256=y
9fc6aa9f
DS
646endif
647
648ifdef CONFIG_WPS
9fc6aa9f
DS
649# EAP-WSC
650L_CFLAGS += -DCONFIG_WPS -DEAP_WSC
651OBJS += wps_supplicant.c
652OBJS += src/utils/uuid.c
653OBJS += src/eap_peer/eap_wsc.c src/eap_common/eap_wsc_common.c
654OBJS += src/wps/wps.c
655OBJS += src/wps/wps_common.c
656OBJS += src/wps/wps_attr_parse.c
657OBJS += src/wps/wps_attr_build.c
658OBJS += src/wps/wps_attr_process.c
659OBJS += src/wps/wps_dev_attr.c
660OBJS += src/wps/wps_enrollee.c
661OBJS += src/wps/wps_registrar.c
662OBJS_h += src/eap_server/eap_server_wsc.c
663CONFIG_IEEE8021X_EAPOL=y
664NEED_DH_GROUPS=y
665NEED_SHA256=y
666NEED_BASE64=y
9fc6aa9f
DS
667NEED_AES_CBC=y
668NEED_MODEXP=y
669
9fc6aa9f
DS
670ifdef CONFIG_WPS_NFC
671L_CFLAGS += -DCONFIG_WPS_NFC
672OBJS += src/wps/ndef.c
9fc6aa9f 673NEED_WPS_OOB=y
9fc6aa9f
DS
674endif
675
676ifdef NEED_WPS_OOB
677L_CFLAGS += -DCONFIG_WPS_OOB
678endif
679
680ifdef CONFIG_WPS_ER
681CONFIG_WPS_UPNP=y
682L_CFLAGS += -DCONFIG_WPS_ER
683OBJS += src/wps/wps_er.c
684OBJS += src/wps/wps_er_ssdp.c
685endif
686
687ifdef CONFIG_WPS_UPNP
688L_CFLAGS += -DCONFIG_WPS_UPNP
689OBJS += src/wps/wps_upnp.c
690OBJS += src/wps/wps_upnp_ssdp.c
691OBJS += src/wps/wps_upnp_web.c
692OBJS += src/wps/wps_upnp_event.c
693OBJS += src/wps/wps_upnp_ap.c
694OBJS += src/wps/upnp_xml.c
695OBJS += src/wps/httpread.c
696OBJS += src/wps/http_client.c
697OBJS += src/wps/http_server.c
698endif
699
700ifdef CONFIG_WPS_STRICT
701L_CFLAGS += -DCONFIG_WPS_STRICT
702OBJS += src/wps/wps_validate.c
703endif
704
705ifdef CONFIG_WPS_TESTING
706L_CFLAGS += -DCONFIG_WPS_TESTING
707endif
708
709ifdef CONFIG_WPS_REG_DISABLE_OPEN
710L_CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN
711endif
712
713endif
714
715ifdef CONFIG_EAP_IKEV2
716# EAP-IKEv2
717ifeq ($(CONFIG_EAP_IKEV2), dyn)
718L_CFLAGS += -DEAP_IKEV2_DYNAMIC
719EAPDYN += src/eap_peer/eap_ikev2.so src/eap_peer/ikev2.c
720EAPDYN += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
721else
722L_CFLAGS += -DEAP_IKEV2
723OBJS += src/eap_peer/eap_ikev2.c src/eap_peer/ikev2.c
724OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
725OBJS_h += src/eap_server/eap_server_ikev2.c
726OBJS_h += src/eap_server/ikev2.c
727endif
728CONFIG_IEEE8021X_EAPOL=y
729NEED_DH_GROUPS=y
730NEED_DH_GROUPS_ALL=y
731NEED_MODEXP=y
732NEED_CIPHER=y
733endif
734
735ifdef CONFIG_EAP_VENDOR_TEST
736ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
737L_CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
738EAPDYN += src/eap_peer/eap_vendor_test.so
739else
740L_CFLAGS += -DEAP_VENDOR_TEST
741OBJS += src/eap_peer/eap_vendor_test.c
742OBJS_h += src/eap_server/eap_server_vendor_test.c
743endif
744CONFIG_IEEE8021X_EAPOL=y
745endif
746
747ifdef CONFIG_EAP_TNC
748# EAP-TNC
749L_CFLAGS += -DEAP_TNC
750OBJS += src/eap_peer/eap_tnc.c
751OBJS += src/eap_peer/tncc.c
752OBJS_h += src/eap_server/eap_server_tnc.c
753OBJS_h += src/eap_server/tncs.c
754NEED_BASE64=y
755ifndef CONFIG_NATIVE_WINDOWS
756ifndef CONFIG_DRIVER_BSD
757LIBS += -ldl
758endif
759endif
760endif
761
762ifdef CONFIG_IEEE8021X_EAPOL
763# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
764L_CFLAGS += -DIEEE8021X_EAPOL
765OBJS += src/eapol_supp/eapol_supp_sm.c
766OBJS += src/eap_peer/eap.c src/eap_peer/eap_methods.c
767NEED_EAP_COMMON=y
768ifdef CONFIG_DYNAMIC_EAP_METHODS
769L_CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
770LIBS += -ldl -rdynamic
771endif
772endif
773
774ifdef CONFIG_AP
9fc6aa9f
DS
775NEED_EAP_COMMON=y
776NEED_RSN_AUTHENTICATOR=y
777L_CFLAGS += -DCONFIG_AP
778OBJS += ap.c
779L_CFLAGS += -DCONFIG_NO_RADIUS
780L_CFLAGS += -DCONFIG_NO_ACCOUNTING
781L_CFLAGS += -DCONFIG_NO_VLAN
782OBJS += src/ap/hostapd.c
783OBJS += src/ap/wpa_auth_glue.c
784OBJS += src/ap/utils.c
785OBJS += src/ap/authsrv.c
786OBJS += src/ap/ap_config.c
787OBJS += src/utils/ip_addr.c
788OBJS += src/ap/sta_info.c
789OBJS += src/ap/tkip_countermeasures.c
790OBJS += src/ap/ap_mlme.c
791OBJS += src/ap/ieee802_1x.c
792OBJS += src/eapol_auth/eapol_auth_sm.c
793OBJS += src/ap/ieee802_11_auth.c
67e838fd 794OBJS += src/ap/ieee802_11_shared.c
9fc6aa9f
DS
795OBJS += src/ap/drv_callbacks.c
796OBJS += src/ap/ap_drv_ops.c
67e838fd 797OBJS += src/ap/beacon.c
ec8f36af 798OBJS += src/ap/bss_load.c
16e38f2e 799OBJS += src/ap/eap_user_db.c
9fc6aa9f
DS
800ifdef CONFIG_IEEE80211N
801OBJS += src/ap/ieee802_11_ht.c
643fab30
DS
802ifdef CONFIG_IEEE80211AC
803OBJS += src/ap/ieee802_11_vht.c
9fc6aa9f 804endif
9fc6aa9f 805endif
e2396a68
VK
806ifdef CONFIG_WNM
807OBJS += src/ap/wnm_ap.c
808endif
643fab30
DS
809ifdef CONFIG_CTRL_IFACE
810OBJS += src/ap/ctrl_iface_ap.c
811endif
9fc6aa9f
DS
812
813L_CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
814OBJS += src/eap_server/eap_server.c
815OBJS += src/eap_server/eap_server_identity.c
816OBJS += src/eap_server/eap_server_methods.c
817
818ifdef CONFIG_IEEE80211N
819L_CFLAGS += -DCONFIG_IEEE80211N
643fab30
DS
820ifdef CONFIG_IEEE80211AC
821L_CFLAGS += -DCONFIG_IEEE80211AC
822endif
9fc6aa9f
DS
823endif
824
825ifdef NEED_AP_MLME
9fc6aa9f
DS
826OBJS += src/ap/wmm.c
827OBJS += src/ap/ap_list.c
828OBJS += src/ap/ieee802_11.c
829OBJS += src/ap/hw_features.c
f07bba32 830OBJS += src/ap/dfs.c
9fc6aa9f
DS
831L_CFLAGS += -DNEED_AP_MLME
832endif
833ifdef CONFIG_WPS
834L_CFLAGS += -DEAP_SERVER_WSC
835OBJS += src/ap/wps_hostapd.c
836OBJS += src/eap_server/eap_server_wsc.c
837endif
43323e43
JM
838ifdef CONFIG_INTERWORKING
839OBJS += src/ap/gas_serv.c
840endif
841ifdef CONFIG_HS20
842OBJS += src/ap/hs20.c
843endif
9fc6aa9f
DS
844endif
845
846ifdef NEED_RSN_AUTHENTICATOR
847L_CFLAGS += -DCONFIG_NO_RADIUS
848NEED_AES_WRAP=y
849OBJS += src/ap/wpa_auth.c
850OBJS += src/ap/wpa_auth_ie.c
851OBJS += src/ap/pmksa_cache_auth.c
852ifdef CONFIG_IEEE80211R
853OBJS += src/ap/wpa_auth_ft.c
854endif
855ifdef CONFIG_PEERKEY
856OBJS += src/ap/peerkey_auth.c
857endif
858endif
859
860ifdef CONFIG_EAP_SERVER
861L_CFLAGS += -DEAP_SERVER
862OBJS_h += src/eap_server/eap_server.c
863OBJS_h += src/eap_server/eap_server_identity.c
864OBJS_h += src/eap_server/eap_server_methods.c
865endif
866
867ifdef CONFIG_RADIUS_CLIENT
868OBJS_h += src/utils/ip_addr.c
869OBJS_h += src/radius/radius.c
870OBJS_h += src/radius/radius_client.c
871endif
872
873ifdef CONFIG_AUTHENTICATOR
874OBJS_h += src/eapol_auth/eapol_auth_sm.c
875OBJS_h += src/ap/ieee802_1x.c
876endif
877
878ifdef CONFIG_WPA_AUTHENTICATOR
879OBJS_h += src/ap/wpa_auth.c
880OBJS_h += src/ap/wpa_auth_ie.c
881OBJS_h += src/ap/pmksa_cache_auth.c
882ifdef CONFIG_IEEE80211R
883OBJS_h += src/ap/wpa_auth_ft.c
884endif
885ifdef CONFIG_PEERKEY
886OBJS_h += src/ap/peerkey_auth.c
887endif
888endif
889
890ifdef CONFIG_PCSC
891# PC/SC interface for smartcards (USIM, GSM SIM)
892L_CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
893OBJS += src/utils/pcsc_funcs.c
894# -lpthread may not be needed depending on how pcsc-lite was configured
895ifdef CONFIG_NATIVE_WINDOWS
896#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
897#dynamic symbol loading that is now used in pcsc_funcs.c
898#LIBS += -lwinscard
899else
900LIBS += -lpcsclite -lpthread
901endif
902endif
903
904ifdef CONFIG_SIM_SIMULATOR
905L_CFLAGS += -DCONFIG_SIM_SIMULATOR
906NEED_MILENAGE=y
907endif
908
909ifdef CONFIG_USIM_SIMULATOR
910L_CFLAGS += -DCONFIG_USIM_SIMULATOR
911NEED_MILENAGE=y
912endif
913
914ifdef NEED_MILENAGE
915OBJS += src/crypto/milenage.c
67e838fd 916NEED_AES_ENCBLOCK=y
9fc6aa9f
DS
917endif
918
919ifdef CONFIG_PKCS12
920L_CFLAGS += -DPKCS12_FUNCS
921endif
922
923ifdef CONFIG_SMARTCARD
924L_CFLAGS += -DCONFIG_SMARTCARD
925endif
926
927ifdef MS_FUNCS
928OBJS += src/crypto/ms_funcs.c
929NEED_DES=y
930NEED_MD4=y
931endif
932
933ifdef CHAP
934OBJS += src/eap_common/chap.c
935endif
936
937ifdef TLS_FUNCS
938NEED_DES=y
939# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
940OBJS += src/eap_peer/eap_tls_common.c
941OBJS_h += src/eap_server/eap_server_tls_common.c
41014724 942ifndef CONFIG_FIPS
9fc6aa9f 943NEED_TLS_PRF=y
41014724
JM
944NEED_SHA1=y
945NEED_MD5=y
946endif
9fc6aa9f
DS
947endif
948
949ifndef CONFIG_TLS
950CONFIG_TLS=openssl
951endif
952
67e838fd
JM
953ifdef CONFIG_TLSV11
954L_CFLAGS += -DCONFIG_TLSV11
955endif
956
3b335329
JM
957ifdef CONFIG_TLSV12
958L_CFLAGS += -DCONFIG_TLSV12
959NEED_SHA256=y
960endif
961
9fc6aa9f
DS
962ifeq ($(CONFIG_TLS), openssl)
963ifdef TLS_FUNCS
964L_CFLAGS += -DEAP_TLS_OPENSSL
965OBJS += src/crypto/tls_openssl.c
966LIBS += -lssl
967endif
968OBJS += src/crypto/crypto_openssl.c
969OBJS_p += src/crypto/crypto_openssl.c
970ifdef NEED_FIPS186_2_PRF
971OBJS += src/crypto/fips_prf_openssl.c
972endif
973LIBS += -lcrypto
974LIBS_p += -lcrypto
890b3a44
JM
975ifdef CONFIG_TLS_ADD_DL
976LIBS += -ldl
977LIBS_p += -ldl
978endif
9fc6aa9f
DS
979endif
980
981ifeq ($(CONFIG_TLS), gnutls)
982ifdef TLS_FUNCS
983OBJS += src/crypto/tls_gnutls.c
984LIBS += -lgnutls -lgpg-error
9fc6aa9f
DS
985endif
986OBJS += src/crypto/crypto_gnutls.c
987OBJS_p += src/crypto/crypto_gnutls.c
988ifdef NEED_FIPS186_2_PRF
09eef142
JM
989OBJS += src/crypto/fips_prf_internal.c
990OBJS += src/crypto/sha1-internal.c
9fc6aa9f
DS
991endif
992LIBS += -lgcrypt
993LIBS_p += -lgcrypt
994CONFIG_INTERNAL_SHA256=y
9fc6aa9f
DS
995CONFIG_INTERNAL_RC4=y
996CONFIG_INTERNAL_DH_GROUP5=y
997endif
998
9fc6aa9f
DS
999ifeq ($(CONFIG_TLS), internal)
1000ifndef CONFIG_CRYPTO
1001CONFIG_CRYPTO=internal
1002endif
1003ifdef TLS_FUNCS
1004OBJS += src/crypto/crypto_internal-rsa.c
1005OBJS += src/crypto/tls_internal.c
1006OBJS += src/tls/tlsv1_common.c
1007OBJS += src/tls/tlsv1_record.c
1008OBJS += src/tls/tlsv1_cred.c
1009OBJS += src/tls/tlsv1_client.c
1010OBJS += src/tls/tlsv1_client_write.c
1011OBJS += src/tls/tlsv1_client_read.c
1012OBJS += src/tls/asn1.c
1013OBJS += src/tls/rsa.c
1014OBJS += src/tls/x509v3.c
1015OBJS += src/tls/pkcs1.c
1016OBJS += src/tls/pkcs5.c
1017OBJS += src/tls/pkcs8.c
1018NEED_SHA256=y
1019NEED_BASE64=y
1020NEED_TLS_PRF=y
3b335329
JM
1021ifdef CONFIG_TLSV12
1022NEED_TLS_PRF_SHA256=y
1023endif
9fc6aa9f
DS
1024NEED_MODEXP=y
1025NEED_CIPHER=y
1026L_CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
1027endif
1028ifdef NEED_CIPHER
1029NEED_DES=y
1030OBJS += src/crypto/crypto_internal-cipher.c
1031endif
1032ifdef NEED_MODEXP
1033OBJS += src/crypto/crypto_internal-modexp.c
1034OBJS += src/tls/bignum.c
1035endif
1036ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1037OBJS += src/crypto/crypto_libtomcrypt.c
1038OBJS_p += src/crypto/crypto_libtomcrypt.c
1039LIBS += -ltomcrypt -ltfm
1040LIBS_p += -ltomcrypt -ltfm
1041CONFIG_INTERNAL_SHA256=y
1042CONFIG_INTERNAL_RC4=y
1043CONFIG_INTERNAL_DH_GROUP5=y
1044endif
1045ifeq ($(CONFIG_CRYPTO), internal)
1046OBJS += src/crypto/crypto_internal.c
1047OBJS_p += src/crypto/crypto_internal.c
1048NEED_AES_ENC=y
1049L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL
1050ifdef CONFIG_INTERNAL_LIBTOMMATH
1051L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
1052ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
1053L_CFLAGS += -DLTM_FAST
1054endif
1055else
1056LIBS += -ltommath
1057LIBS_p += -ltommath
1058endif
1059CONFIG_INTERNAL_AES=y
1060CONFIG_INTERNAL_DES=y
1061CONFIG_INTERNAL_SHA1=y
1062CONFIG_INTERNAL_MD4=y
1063CONFIG_INTERNAL_MD5=y
1064CONFIG_INTERNAL_SHA256=y
1065CONFIG_INTERNAL_RC4=y
1066CONFIG_INTERNAL_DH_GROUP5=y
1067endif
1068ifeq ($(CONFIG_CRYPTO), cryptoapi)
1069OBJS += src/crypto/crypto_cryptoapi.c
1070OBJS_p += src/crypto/crypto_cryptoapi.c
1071L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
1072CONFIG_INTERNAL_SHA256=y
1073CONFIG_INTERNAL_RC4=y
1074endif
1075endif
1076
1077ifeq ($(CONFIG_TLS), none)
1078ifdef TLS_FUNCS
1079OBJS += src/crypto/tls_none.c
1080L_CFLAGS += -DEAP_TLS_NONE
1081CONFIG_INTERNAL_AES=y
1082CONFIG_INTERNAL_SHA1=y
1083CONFIG_INTERNAL_MD5=y
1084endif
1085OBJS += src/crypto/crypto_none.c
1086OBJS_p += src/crypto/crypto_none.c
1087CONFIG_INTERNAL_SHA256=y
1088CONFIG_INTERNAL_RC4=y
1089endif
1090
1091ifdef TLS_FUNCS
1092ifdef CONFIG_SMARTCARD
1093ifndef CONFIG_NATIVE_WINDOWS
1094ifneq ($(CONFIG_L2_PACKET), freebsd)
1095LIBS += -ldl
1096endif
1097endif
1098endif
1099endif
1100
1101ifndef TLS_FUNCS
1102OBJS += src/crypto/tls_none.c
1103ifeq ($(CONFIG_TLS), internal)
1104CONFIG_INTERNAL_AES=y
1105CONFIG_INTERNAL_SHA1=y
1106CONFIG_INTERNAL_MD5=y
1107CONFIG_INTERNAL_RC4=y
1108endif
1109endif
1110
1111AESOBJS = # none so far (see below)
1112ifdef CONFIG_INTERNAL_AES
1113AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-dec.c
1114endif
1115
f19c9078 1116ifneq ($(CONFIG_TLS), openssl)
9fc6aa9f 1117AESOBJS += src/crypto/aes-unwrap.c
f19c9078 1118endif
9fc6aa9f
DS
1119ifdef NEED_AES_EAX
1120AESOBJS += src/crypto/aes-eax.c
1121NEED_AES_CTR=y
1122endif
1123ifdef NEED_AES_CTR
1124AESOBJS += src/crypto/aes-ctr.c
1125endif
1126ifdef NEED_AES_ENCBLOCK
1127AESOBJS += src/crypto/aes-encblock.c
1128endif
1129ifdef NEED_AES_OMAC1
1130NEED_AES_ENC=y
0b5e9855 1131ifdef CONFIG_OPENSSL_CMAC
d0b27352 1132L_CFLAGS += -DCONFIG_OPENSSL_CMAC
0b5e9855 1133else
9fc6aa9f
DS
1134AESOBJS += src/crypto/aes-omac1.c
1135endif
0b5e9855 1136endif
9fc6aa9f
DS
1137ifdef NEED_AES_WRAP
1138NEED_AES_ENC=y
f19c9078 1139ifneq ($(CONFIG_TLS), openssl)
9fc6aa9f
DS
1140AESOBJS += src/crypto/aes-wrap.c
1141endif
f19c9078 1142endif
9fc6aa9f
DS
1143ifdef NEED_AES_CBC
1144NEED_AES_ENC=y
1145AESOBJS += src/crypto/aes-cbc.c
1146endif
1147ifdef NEED_AES_ENC
1148ifdef CONFIG_INTERNAL_AES
1149AESOBJS += src/crypto/aes-internal-enc.c
1150endif
1151endif
f7072600
BC
1152ifdef NEED_AES_SIV
1153AESOBJS += src/crypto/aes-siv.c
1154endif
9fc6aa9f
DS
1155ifdef NEED_AES
1156OBJS += $(AESOBJS)
1157endif
1158
1159SHA1OBJS =
1160ifdef NEED_SHA1
030d062f 1161ifneq ($(CONFIG_TLS), openssl)
9fc6aa9f 1162SHA1OBJS += src/crypto/sha1.c
030d062f 1163endif
d6150094 1164SHA1OBJS += src/crypto/sha1-prf.c
9fc6aa9f
DS
1165ifdef CONFIG_INTERNAL_SHA1
1166SHA1OBJS += src/crypto/sha1-internal.c
1167ifdef NEED_FIPS186_2_PRF
1168SHA1OBJS += src/crypto/fips_prf_internal.c
1169endif
1170endif
67e838fd
JM
1171ifdef CONFIG_NO_WPA_PASSPHRASE
1172L_CFLAGS += -DCONFIG_NO_PBKDF2
1173else
e40c86ad 1174ifneq ($(CONFIG_TLS), openssl)
9fc6aa9f
DS
1175SHA1OBJS += src/crypto/sha1-pbkdf2.c
1176endif
e40c86ad 1177endif
9fc6aa9f
DS
1178ifdef NEED_T_PRF
1179SHA1OBJS += src/crypto/sha1-tprf.c
1180endif
1181ifdef NEED_TLS_PRF
1182SHA1OBJS += src/crypto/sha1-tlsprf.c
1183endif
1184endif
1185
58d6f91d 1186MD5OBJS =
3b335329 1187ifndef CONFIG_FIPS
983c6a60 1188ifneq ($(CONFIG_TLS), openssl)
3b335329
JM
1189MD5OBJS += src/crypto/md5.c
1190endif
983c6a60 1191endif
9fc6aa9f
DS
1192ifdef NEED_MD5
1193ifdef CONFIG_INTERNAL_MD5
1194MD5OBJS += src/crypto/md5-internal.c
1195endif
9fc6aa9f
DS
1196OBJS += $(MD5OBJS)
1197OBJS_p += $(MD5OBJS)
1198endif
1199
1200ifdef NEED_MD4
1201ifdef CONFIG_INTERNAL_MD4
1202OBJS += src/crypto/md4-internal.c
1203endif
1204endif
1205
1206DESOBJS = # none needed when not internal
1207ifdef NEED_DES
1208ifdef CONFIG_INTERNAL_DES
1209DESOBJS += src/crypto/des-internal.c
1210endif
1211endif
1212
1213ifdef NEED_RC4
1214ifdef CONFIG_INTERNAL_RC4
1215OBJS += src/crypto/rc4.c
1216endif
1217endif
1218
1219SHA256OBJS = # none by default
1220ifdef NEED_SHA256
1221L_CFLAGS += -DCONFIG_SHA256
26a37922 1222ifneq ($(CONFIG_TLS), openssl)
9fc6aa9f 1223SHA256OBJS += src/crypto/sha256.c
26a37922 1224endif
ab637dcb 1225SHA256OBJS += src/crypto/sha256-prf.c
9fc6aa9f
DS
1226ifdef CONFIG_INTERNAL_SHA256
1227SHA256OBJS += src/crypto/sha256-internal.c
1228endif
3b335329
JM
1229ifdef NEED_TLS_PRF_SHA256
1230SHA256OBJS += src/crypto/sha256-tlsprf.c
1231endif
02a8d45a
JM
1232ifdef NEED_HMAC_SHA256_KDF
1233SHA256OBJS += src/crypto/sha256-kdf.c
1234endif
9fc6aa9f
DS
1235OBJS += $(SHA256OBJS)
1236endif
97ae35a8
JM
1237ifdef NEED_SHA384
1238L_CFLAGS += -DCONFIG_SHA384
1239endif
9fc6aa9f
DS
1240
1241ifdef NEED_DH_GROUPS
1242OBJS += src/crypto/dh_groups.c
1243endif
1244ifdef NEED_DH_GROUPS_ALL
1245L_CFLAGS += -DALL_DH_GROUPS
1246endif
1247ifdef CONFIG_INTERNAL_DH_GROUP5
1248ifdef NEED_DH_GROUPS
1249OBJS += src/crypto/dh_group5.c
1250endif
1251endif
1252
aadabe70
JM
1253ifdef NEED_ECC
1254L_CFLAGS += -DCONFIG_ECC
1255endif
1256
9fc6aa9f
DS
1257ifdef CONFIG_NO_RANDOM_POOL
1258L_CFLAGS += -DCONFIG_NO_RANDOM_POOL
1259else
1260OBJS += src/crypto/random.c
1261endif
1262
1263ifdef CONFIG_CTRL_IFACE
1264ifeq ($(CONFIG_CTRL_IFACE), y)
1265ifdef CONFIG_NATIVE_WINDOWS
1266CONFIG_CTRL_IFACE=named_pipe
1267else
1268CONFIG_CTRL_IFACE=unix
1269endif
1270endif
1271L_CFLAGS += -DCONFIG_CTRL_IFACE
1272ifeq ($(CONFIG_CTRL_IFACE), unix)
1273L_CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1274endif
1275ifeq ($(CONFIG_CTRL_IFACE), udp)
1276L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1277endif
1278ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1279L_CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1280endif
afadf423
JD
1281ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
1282CONFIG_CTRL_IFACE=udp
1283L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1284L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
1285endif
9fc6aa9f
DS
1286OBJS += ctrl_iface.c ctrl_iface_$(CONFIG_CTRL_IFACE).c
1287endif
1288
1289ifdef CONFIG_CTRL_IFACE_DBUS
1290DBUS=y
1291DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
1292DBUS_OBJS += dbus/dbus_old.c dbus/dbus_old_handlers.c
1293ifdef CONFIG_WPS
1294DBUS_OBJS += dbus/dbus_old_handlers_wps.c
1295endif
1296DBUS_OBJS += dbus/dbus_dict_helpers.c
1297ifndef DBUS_LIBS
572a171f 1298DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
9fc6aa9f
DS
1299endif
1300ifndef DBUS_INCLUDE
572a171f 1301DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
9fc6aa9f 1302endif
9fc6aa9f
DS
1303DBUS_CFLAGS += $(DBUS_INCLUDE)
1304endif
1305
1306ifdef CONFIG_CTRL_IFACE_DBUS_NEW
1307DBUS=y
1308DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
1309DBUS_OBJS ?= dbus/dbus_dict_helpers.c
1310DBUS_OBJS += dbus/dbus_new_helpers.c
1311DBUS_OBJS += dbus/dbus_new.c dbus/dbus_new_handlers.c
1312ifdef CONFIG_WPS
1313DBUS_OBJS += dbus/dbus_new_handlers_wps.c
1314endif
c8444330
JM
1315ifdef CONFIG_P2P
1316DBUS_OBJS += dbus/dbus_new_handlers_p2p.c
1317endif
9fc6aa9f 1318ifndef DBUS_LIBS
572a171f 1319DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
9fc6aa9f
DS
1320endif
1321ifndef DBUS_INCLUDE
572a171f 1322DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
9fc6aa9f
DS
1323endif
1324ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
1325DBUS_OBJS += dbus/dbus_new_introspect.c
1326DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
1327endif
1328DBUS_CFLAGS += $(DBUS_INCLUDE)
1329endif
1330
1331ifdef DBUS
1332DBUS_CFLAGS += -DCONFIG_DBUS
1333DBUS_OBJS += dbus/dbus_common.c
1334endif
1335
1336OBJS += $(DBUS_OBJS)
1337L_CFLAGS += $(DBUS_CFLAGS)
1338LIBS += $(DBUS_LIBS)
1339
1340ifdef CONFIG_READLINE
1341OBJS_c += src/utils/edit_readline.c
1342LIBS_c += -lncurses -lreadline
1343else
1344ifdef CONFIG_WPA_CLI_EDIT
1345OBJS_c += src/utils/edit.c
1346else
1347OBJS_c += src/utils/edit_simple.c
1348endif
1349endif
1350
1351ifdef CONFIG_NATIVE_WINDOWS
1352L_CFLAGS += -DCONFIG_NATIVE_WINDOWS
1353LIBS += -lws2_32 -lgdi32 -lcrypt32
1354LIBS_c += -lws2_32
1355LIBS_p += -lws2_32 -lgdi32
1356ifeq ($(CONFIG_CRYPTO), cryptoapi)
1357LIBS_p += -lcrypt32
1358endif
1359endif
1360
1361ifdef CONFIG_NO_STDOUT_DEBUG
1362L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1363ifndef CONFIG_CTRL_IFACE
1364L_CFLAGS += -DCONFIG_NO_WPA_MSG
1365endif
1366endif
1367
1368ifdef CONFIG_ANDROID_LOG
1369L_CFLAGS += -DCONFIG_ANDROID_LOG
1370endif
1371
1372ifdef CONFIG_IPV6
1373# for eapol_test only
1374L_CFLAGS += -DCONFIG_IPV6
1375endif
1376
1377ifdef NEED_BASE64
1378OBJS += src/utils/base64.c
1379endif
1380
1381ifdef NEED_SME
9fc6aa9f
DS
1382OBJS += sme.c
1383L_CFLAGS += -DCONFIG_SME
1384endif
1385
9fc6aa9f 1386OBJS += src/common/ieee802_11_common.c
269dfe23 1387OBJS += src/common/hw_features_common.c
9fc6aa9f
DS
1388
1389ifdef NEED_EAP_COMMON
1390OBJS += src/eap_common/eap_common.c
1391endif
1392
1393ifndef CONFIG_MAIN
1394CONFIG_MAIN=main
1395endif
1396
1397ifdef CONFIG_DEBUG_SYSLOG
1398L_CFLAGS += -DCONFIG_DEBUG_SYSLOG
67e838fd
JM
1399ifdef CONFIG_DEBUG_SYSLOG_FACILITY
1400L_CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
1401endif
9fc6aa9f
DS
1402endif
1403
3b335329
JM
1404ifdef CONFIG_DEBUG_LINUX_TRACING
1405L_CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
1406endif
1407
9fc6aa9f
DS
1408ifdef CONFIG_DEBUG_FILE
1409L_CFLAGS += -DCONFIG_DEBUG_FILE
1410endif
1411
1412ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1413L_CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1414endif
1415
1416ifdef CONFIG_FIPS
1417L_CFLAGS += -DCONFIG_FIPS
1418endif
1419
1420OBJS += $(SHA1OBJS) $(DESOBJS)
1421
1422OBJS_p += $(SHA1OBJS)
3b335329 1423OBJS_p += $(SHA256OBJS)
9fc6aa9f
DS
1424
1425ifdef CONFIG_BGSCAN_SIMPLE
1426L_CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1427OBJS += bgscan_simple.c
1428NEED_BGSCAN=y
1429endif
1430
1431ifdef CONFIG_BGSCAN_LEARN
1432L_CFLAGS += -DCONFIG_BGSCAN_LEARN
1433OBJS += bgscan_learn.c
1434NEED_BGSCAN=y
1435endif
1436
1437ifdef NEED_BGSCAN
1438L_CFLAGS += -DCONFIG_BGSCAN
1439OBJS += bgscan.c
1440endif
1441
c0fba2b3
TB
1442ifdef CONFIG_AUTOSCAN_EXPONENTIAL
1443L_CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL
1444OBJS += autoscan_exponential.c
1445NEED_AUTOSCAN=y
1446endif
1447
e3659c89 1448ifdef CONFIG_AUTOSCAN_PERIODIC
d0b27352 1449L_CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC
e3659c89
TB
1450OBJS += autoscan_periodic.c
1451NEED_AUTOSCAN=y
1452endif
1453
7c865c68
TB
1454ifdef NEED_AUTOSCAN
1455L_CFLAGS += -DCONFIG_AUTOSCAN
1456OBJS += autoscan.c
1457endif
1458
306ae225 1459ifdef CONFIG_EXT_PASSWORD_TEST
3b335329 1460OBJS += src/utils/ext_password_test.c
306ae225
JM
1461L_CFLAGS += -DCONFIG_EXT_PASSWORD_TEST
1462NEED_EXT_PASSWORD=y
1463endif
1464
1465ifdef NEED_EXT_PASSWORD
3b335329 1466OBJS += src/utils/ext_password.c
306ae225
JM
1467L_CFLAGS += -DCONFIG_EXT_PASSWORD
1468endif
1469
67e838fd 1470ifdef NEED_GAS
3b335329 1471OBJS += src/common/gas.c
67e838fd
JM
1472OBJS += gas_query.c
1473L_CFLAGS += -DCONFIG_GAS
1474NEED_OFFCHANNEL=y
1475endif
1476
1477ifdef NEED_OFFCHANNEL
1478OBJS += offchannel.c
1479L_CFLAGS += -DCONFIG_OFFCHANNEL
1480endif
1481
aea855d7
JM
1482OBJS += src/drivers/driver_common.c
1483
17fbb751 1484OBJS_wpa_rm := ctrl_iface.c ctrl_iface_unix.c
9fc6aa9f
DS
1485OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.c
1486ifdef CONFIG_AUTHENTICATOR
1487OBJS_wpa += tests/link_test.c
1488endif
1489OBJS_wpa += $(OBJS_l2)
1490OBJS += wpa_supplicant.c events.c blacklist.c wpas_glue.c scan.c
1491OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.c
1492OBJS_t += src/radius/radius_client.c
1493OBJS_t += src/radius/radius.c
1494ifndef CONFIG_AP
1495OBJS_t += src/utils/ip_addr.c
1496endif
1497OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.c
1498OBJS += $(CONFIG_MAIN).c
1499
1500ifdef CONFIG_PRIVSEP
1501OBJS_priv += $(OBJS_d) src/drivers/drivers.c
1502OBJS_priv += $(OBJS_l2)
1503OBJS_priv += src/utils/os_$(CONFIG_OS).c
1504OBJS_priv += src/utils/$(CONFIG_ELOOP).c
1505OBJS_priv += src/utils/common.c
1506OBJS_priv += src/utils/wpa_debug.c
1507OBJS_priv += src/utils/wpabuf.c
1508OBJS_priv += wpa_priv.c
3b335329
JM
1509ifdef CONFIG_DRIVER_NL80211
1510OBJS_priv += src/common/ieee802_11_common.c
1511endif
9fc6aa9f
DS
1512OBJS += src/l2_packet/l2_packet_privsep.c
1513OBJS += src/drivers/driver_privsep.c
1514EXTRA_progs += wpa_priv
1515else
1516OBJS += $(OBJS_d) src/drivers/drivers.c
1517OBJS += $(OBJS_l2)
1518endif
1519
1520ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1521L_CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1522OBJS += src/drivers/ndis_events.c
1523EXTRALIBS += -loleaut32 -lole32 -luuid
1524ifdef PLATFORMSDKLIB
1525EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1526else
1527EXTRALIBS += WbemUuid.Lib
1528endif
1529endif
1530
1531ifndef LDO
1532LDO=$(CC)
1533endif
1534
9fc6aa9f
DS
1535########################
1536
1537include $(CLEAR_VARS)
1538LOCAL_MODULE := wpa_cli
1539LOCAL_MODULE_TAGS := debug
53414a7e 1540LOCAL_SHARED_LIBRARIES := libc libcutils liblog
9fc6aa9f
DS
1541LOCAL_CFLAGS := $(L_CFLAGS)
1542LOCAL_SRC_FILES := $(OBJS_c)
1543LOCAL_C_INCLUDES := $(INCLUDES)
1544include $(BUILD_EXECUTABLE)
1545
1546########################
1547include $(CLEAR_VARS)
1548LOCAL_MODULE := wpa_supplicant
1549ifdef CONFIG_DRIVER_CUSTOM
1550LOCAL_STATIC_LIBRARIES := libCustomWifi
1551endif
1552ifneq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),)
1553LOCAL_STATIC_LIBRARIES += $(BOARD_WPA_SUPPLICANT_PRIVATE_LIB)
1554endif
53414a7e 1555LOCAL_SHARED_LIBRARIES := libc libcutils liblog
f7579502
NJ
1556ifdef CONFIG_EAP_PROXY
1557LOCAL_STATIC_LIBRARIES += $(LIB_STATIC_EAP_PROXY)
1558LOCAL_SHARED_LIBRARIES += $(LIB_SHARED_EAP_PROXY)
1559endif
bf9d5518 1560ifeq ($(CONFIG_TLS), openssl)
1d415f1f 1561LOCAL_SHARED_LIBRARIES += libcrypto libssl libkeystore_binder
bf9d5518 1562endif
9fc6aa9f 1563ifdef CONFIG_DRIVER_NL80211
ac494fcc
DS
1564ifneq ($(wildcard external/libnl),)
1565LOCAL_SHARED_LIBRARIES += libnl
1566else
7cb03b0e 1567LOCAL_STATIC_LIBRARIES += libnl_2
9fc6aa9f 1568endif
ac494fcc 1569endif
9fc6aa9f
DS
1570LOCAL_CFLAGS := $(L_CFLAGS)
1571LOCAL_SRC_FILES := $(OBJS)
1572LOCAL_C_INCLUDES := $(INCLUDES)
1573include $(BUILD_EXECUTABLE)
1574
1575########################
1576#
1577#include $(CLEAR_VARS)
1578#LOCAL_MODULE := eapol_test
1579#ifdef CONFIG_DRIVER_CUSTOM
1580#LOCAL_STATIC_LIBRARIES := libCustomWifi
1581#endif
1582#LOCAL_SHARED_LIBRARIES := libc libcrypto libssl
1583#LOCAL_CFLAGS := $(L_CFLAGS)
1584#LOCAL_SRC_FILES := $(OBJS_t)
1585#LOCAL_C_INCLUDES := $(INCLUDES)
1586#include $(BUILD_EXECUTABLE)
1587#
1588########################
1589#
1590#local_target_dir := $(TARGET_OUT)/etc/wifi
1591#
1592#include $(CLEAR_VARS)
1593#LOCAL_MODULE := wpa_supplicant.conf
9fc6aa9f
DS
1594#LOCAL_MODULE_CLASS := ETC
1595#LOCAL_MODULE_PATH := $(local_target_dir)
1596#LOCAL_SRC_FILES := $(LOCAL_MODULE)
1597#include $(BUILD_PREBUILT)
1598#
1599########################
1600
9fc6aa9f
DS
1601include $(CLEAR_VARS)
1602LOCAL_MODULE = libwpa_client
1603LOCAL_CFLAGS = $(L_CFLAGS)
1604LOCAL_SRC_FILES = src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c
1605LOCAL_C_INCLUDES = $(INCLUDES)
53414a7e 1606LOCAL_SHARED_LIBRARIES := libcutils liblog
9fc6aa9f
DS
1607LOCAL_COPY_HEADERS_TO := libwpa_client
1608LOCAL_COPY_HEADERS := src/common/wpa_ctrl.h
38ce8e27 1609LOCAL_COPY_HEADERS += src/common/qca-vendor.h
9fc6aa9f 1610include $(BUILD_SHARED_LIBRARY)