blob: 4f58a92023f3dd4f50f1359062852a52126acf0e [file] [log] [blame]
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001#
2# Copyright (C) 2008 The Android Open Source Project
3#
Dmitry Shmidtc81d5b62012-05-14 13:35:02 -07004# This software may be distributed under the terms of the BSD license.
5# See README for more details.
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07006#
7
8LOCAL_PATH := $(call my-dir)
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07009PKG_CONFIG ?= pkg-config
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070010
Jeff Brownbbda6272011-07-11 22:12:15 -070011ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),)
Jeff Brownbbda6272011-07-11 22:12:15 -070012 CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) := y
Dmitry Shmidt1f42a6c2012-06-11 12:51:06 -070013else
14 CONFIG_DRIVER_TEST := y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070015endif
16
Dmitry Shmidt7dd0f202012-02-21 16:49:00 -080017include $(LOCAL_PATH)/android.config
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070018
19# To ignore possible wrong network configurations
20L_CFLAGS = -DWPA_IGNORE_CONFIG_ERRORS
21
Dmitry Shmidtea01dac2011-10-25 10:50:42 -070022L_CFLAGS += -DVERSION_STR_POSTFIX=\"-$(PLATFORM_VERSION)\"
23
Dmitry Shmidt648b7492011-09-30 15:03:42 -070024# Set Android log name
25L_CFLAGS += -DANDROID_LOG_NAME=\"wpa_supplicant\"
26
Dmitry Shmidt006dedf2012-02-21 16:30:45 -080027# Disable roaming in wpa_supplicant
28ifdef CONFIG_NO_ROAMING
29L_CFLAGS += -DCONFIG_NO_ROAMING
30endif
31
Dmitry Shmidtf6c92c42012-01-26 12:57:43 -080032ifeq ($(BOARD_WLAN_DEVICE), bcmdhd)
33L_CFLAGS += -DANDROID_P2P
34endif
35
Jeff Johnsone6c982c2012-08-13 16:54:58 -070036ifeq ($(BOARD_WLAN_DEVICE), qcwcn)
37L_CFLAGS += -DANDROID_QCOM_WCN
38L_CFLAGS += -DANDROID_P2P
39endif
40
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070041# Use Android specific directory for control interface sockets
42L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\"
43L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/system/wpa_supplicant\"
44
45# To force sizeof(enum) = 4
46ifeq ($(TARGET_ARCH),arm)
47L_CFLAGS += -mabi=aapcs-linux
48endif
49
50# To allow non-ASCII characters in SSID
51L_CFLAGS += -DWPA_UNICODE_SSID
52
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070053INCLUDES = $(LOCAL_PATH)
54INCLUDES += $(LOCAL_PATH)/src
55INCLUDES += $(LOCAL_PATH)/src/common
56# INCLUDES += $(LOCAL_PATH)/src/crypto # To force proper includes
57INCLUDES += $(LOCAL_PATH)/src/drivers
58INCLUDES += $(LOCAL_PATH)/src/eap_common
59INCLUDES += $(LOCAL_PATH)/src/eapol_supp
60INCLUDES += $(LOCAL_PATH)/src/eap_peer
61INCLUDES += $(LOCAL_PATH)/src/eap_server
62INCLUDES += $(LOCAL_PATH)/src/hlr_auc_gw
63INCLUDES += $(LOCAL_PATH)/src/l2_packet
64INCLUDES += $(LOCAL_PATH)/src/radius
65INCLUDES += $(LOCAL_PATH)/src/rsn_supp
66INCLUDES += $(LOCAL_PATH)/src/tls
67INCLUDES += $(LOCAL_PATH)/src/utils
68INCLUDES += $(LOCAL_PATH)/src/wps
69INCLUDES += external/openssl/include
Kenny Root07311dc2012-02-15 15:08:06 -080070INCLUDES += system/security/keystore
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070071ifdef CONFIG_DRIVER_NL80211
Jean-Baptiste Queru1d431242011-08-08 16:20:42 -070072INCLUDES += external/libnl-headers
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070073endif
74
Dmitry Shmidt61d9df32012-08-29 16:22:06 -070075ifdef CONFIG_FIPS
76CONFIG_NO_RANDOM_POOL=
77CONFIG_OPENSSL_CMAC=y
78endif
79
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070080OBJS = config.c
81OBJS += notify.c
82OBJS += bss.c
83OBJS += eap_register.c
84OBJS += src/utils/common.c
85OBJS += src/utils/wpa_debug.c
86OBJS += src/utils/wpabuf.c
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
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080093OBJS_c += src/utils/common.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070094OBJS_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
Dmitry Shmidtc5ec7f52012-03-06 16:33:24 -0800134ifdef CONFIG_ELOOP_POLL
135L_CFLAGS += -DCONFIG_ELOOP_POLL
136endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700137
138ifdef CONFIG_EAPOL_TEST
139L_CFLAGS += -Werror -DEAPOL_TEST
140endif
141
Dmitry Shmidtc5ec7f52012-03-06 16:33:24 -0800142ifdef CONFIG_HT_OVERRIDES
143L_CFLAGS += -DCONFIG_HT_OVERRIDES
144endif
145
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700146ifndef CONFIG_BACKEND
147CONFIG_BACKEND=file
148endif
149
150ifeq ($(CONFIG_BACKEND), file)
151OBJS += config_file.c
152ifndef CONFIG_NO_CONFIG_BLOBS
153NEED_BASE64=y
154endif
155L_CFLAGS += -DCONFIG_BACKEND_FILE
156endif
157
158ifeq ($(CONFIG_BACKEND), winreg)
159OBJS += config_winreg.c
160endif
161
162ifeq ($(CONFIG_BACKEND), none)
163OBJS += config_none.c
164endif
165
166ifdef CONFIG_NO_CONFIG_WRITE
167L_CFLAGS += -DCONFIG_NO_CONFIG_WRITE
168endif
169
170ifdef CONFIG_NO_CONFIG_BLOBS
171L_CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
172endif
173
174ifdef CONFIG_NO_SCAN_PROCESSING
175L_CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
176endif
177
178ifdef CONFIG_IEEE80211W
179L_CFLAGS += -DCONFIG_IEEE80211W
180NEED_SHA256=y
181NEED_AES_OMAC1=y
182endif
183
184ifdef CONFIG_IEEE80211R
185L_CFLAGS += -DCONFIG_IEEE80211R
186OBJS += src/rsn_supp/wpa_ft.c
187NEED_80211_COMMON=y
188NEED_SHA256=y
189NEED_AES_OMAC1=y
190endif
191
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700192ifdef CONFIG_IEEE80211V
193L_CFLAGS += -DCONFIG_IEEE80211V
194OBJS += wnm_sta.c
195endif
196
Dmitry Shmidt405b5af2011-05-09 14:53:38 -0700197ifdef CONFIG_TDLS
198L_CFLAGS += -DCONFIG_TDLS
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800199OBJS += src/rsn_supp/tdls.c
Dmitry Shmidt405b5af2011-05-09 14:53:38 -0700200NEED_SHA256=y
201NEED_AES_OMAC1=y
202endif
203
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800204ifdef CONFIG_TDLS_TESTING
205L_CFLAGS += -DCONFIG_TDLS_TESTING
206endif
207
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700208ifdef CONFIG_PEERKEY
209L_CFLAGS += -DCONFIG_PEERKEY
210endif
211
212ifndef CONFIG_NO_WPA
213OBJS += src/rsn_supp/wpa.c
214OBJS += src/rsn_supp/preauth.c
215OBJS += src/rsn_supp/pmksa_cache.c
216OBJS += src/rsn_supp/peerkey.c
217OBJS += src/rsn_supp/wpa_ie.c
218OBJS += src/common/wpa_common.c
219NEED_AES=y
220NEED_SHA1=y
221NEED_MD5=y
222NEED_RC4=y
223else
224L_CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2
225endif
226
227ifdef CONFIG_IBSS_RSN
228NEED_RSN_AUTHENTICATOR=y
229L_CFLAGS += -DCONFIG_IBSS_RSN
230OBJS += ibss_rsn.c
231endif
232
233ifdef CONFIG_P2P
234OBJS += p2p_supplicant.c
235OBJS += src/p2p/p2p.c
236OBJS += src/p2p/p2p_utils.c
237OBJS += src/p2p/p2p_parse.c
238OBJS += src/p2p/p2p_build.c
239OBJS += src/p2p/p2p_go_neg.c
240OBJS += src/p2p/p2p_sd.c
241OBJS += src/p2p/p2p_pd.c
242OBJS += src/p2p/p2p_invitation.c
243OBJS += src/p2p/p2p_dev_disc.c
244OBJS += src/p2p/p2p_group.c
245OBJS += src/ap/p2p_hostapd.c
246L_CFLAGS += -DCONFIG_P2P
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800247NEED_GAS=y
248NEED_OFFCHANNEL=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700249NEED_80211_COMMON=y
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800250CONFIG_WPS=y
251CONFIG_AP=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700252ifdef CONFIG_P2P_STRICT
253L_CFLAGS += -DCONFIG_P2P_STRICT
254endif
255endif
256
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700257ifdef CONFIG_WIFI_DISPLAY
258L_CFLAGS += -DCONFIG_WIFI_DISPLAY
259OBJS += wifi_display.c
260endif
261
262ifdef CONFIG_HS20
263OBJS += hs20_supplicant.c
264L_CFLAGS += -DCONFIG_HS20
265CONFIG_INTERWORKING=y
266endif
267
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800268ifdef CONFIG_INTERWORKING
269OBJS += interworking.c
270L_CFLAGS += -DCONFIG_INTERWORKING
271NEED_GAS=y
272endif
273
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700274ifdef CONFIG_NO_WPA2
275L_CFLAGS += -DCONFIG_NO_WPA2
276endif
277
278include $(LOCAL_PATH)/src/drivers/drivers.mk
279
280ifdef CONFIG_AP
281OBJS_d += $(DRV_BOTH_OBJS)
282L_CFLAGS += $(DRV_BOTH_CFLAGS)
283LDFLAGS += $(DRV_BOTH_LDFLAGS)
284LIBS += $(DRV_BOTH_LIBS)
285else
286NEED_AP_MLME=
287OBJS_d += $(DRV_WPA_OBJS)
288L_CFLAGS += $(DRV_WPA_CFLAGS)
289LDFLAGS += $(DRV_WPA_LDFLAGS)
290LIBS += $(DRV_WPA_LIBS)
291endif
292
293ifndef CONFIG_L2_PACKET
294CONFIG_L2_PACKET=linux
295endif
296
297OBJS_l2 += src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).c
298
299ifeq ($(CONFIG_L2_PACKET), pcap)
300ifdef CONFIG_WINPCAP
301L_CFLAGS += -DCONFIG_WINPCAP
302LIBS += -lwpcap -lpacket
303LIBS_w += -lwpcap
304else
305LIBS += -ldnet -lpcap
306endif
307endif
308
309ifeq ($(CONFIG_L2_PACKET), winpcap)
310LIBS += -lwpcap -lpacket
311LIBS_w += -lwpcap
312endif
313
314ifeq ($(CONFIG_L2_PACKET), freebsd)
315LIBS += -lpcap
316endif
317
318ifdef CONFIG_EAP_TLS
319# EAP-TLS
320ifeq ($(CONFIG_EAP_TLS), dyn)
321L_CFLAGS += -DEAP_TLS_DYNAMIC
322EAPDYN += src/eap_peer/eap_tls.so
323else
324L_CFLAGS += -DEAP_TLS
325OBJS += src/eap_peer/eap_tls.c
326OBJS_h += src/eap_server/eap_server_tls.c
327endif
328TLS_FUNCS=y
329CONFIG_IEEE8021X_EAPOL=y
330endif
331
332ifdef CONFIG_EAP_PEAP
333# EAP-PEAP
334ifeq ($(CONFIG_EAP_PEAP), dyn)
335L_CFLAGS += -DEAP_PEAP_DYNAMIC
336EAPDYN += src/eap_peer/eap_peap.so
337else
338L_CFLAGS += -DEAP_PEAP
339OBJS += src/eap_peer/eap_peap.c
340OBJS += src/eap_common/eap_peap_common.c
341OBJS_h += src/eap_server/eap_server_peap.c
342endif
343TLS_FUNCS=y
344CONFIG_IEEE8021X_EAPOL=y
345endif
346
347ifdef CONFIG_EAP_TTLS
348# EAP-TTLS
349ifeq ($(CONFIG_EAP_TTLS), dyn)
350L_CFLAGS += -DEAP_TTLS_DYNAMIC
351EAPDYN += src/eap_peer/eap_ttls.so
352else
353L_CFLAGS += -DEAP_TTLS
354OBJS += src/eap_peer/eap_ttls.c
355OBJS_h += src/eap_server/eap_server_ttls.c
356endif
357MS_FUNCS=y
358TLS_FUNCS=y
359CHAP=y
360CONFIG_IEEE8021X_EAPOL=y
361endif
362
363ifdef CONFIG_EAP_MD5
364# EAP-MD5
365ifeq ($(CONFIG_EAP_MD5), dyn)
366L_CFLAGS += -DEAP_MD5_DYNAMIC
367EAPDYN += src/eap_peer/eap_md5.so
368else
369L_CFLAGS += -DEAP_MD5
370OBJS += src/eap_peer/eap_md5.c
371OBJS_h += src/eap_server/eap_server_md5.c
372endif
373CHAP=y
374CONFIG_IEEE8021X_EAPOL=y
375endif
376
377# backwards compatibility for old spelling
378ifdef CONFIG_MSCHAPV2
379ifndef CONFIG_EAP_MSCHAPV2
380CONFIG_EAP_MSCHAPV2=y
381endif
382endif
383
384ifdef CONFIG_EAP_MSCHAPV2
385# EAP-MSCHAPv2
386ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
387L_CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
388EAPDYN += src/eap_peer/eap_mschapv2.so
389EAPDYN += src/eap_peer/mschapv2.so
390else
391L_CFLAGS += -DEAP_MSCHAPv2
392OBJS += src/eap_peer/eap_mschapv2.c
393OBJS += src/eap_peer/mschapv2.c
394OBJS_h += src/eap_server/eap_server_mschapv2.c
395endif
396MS_FUNCS=y
397CONFIG_IEEE8021X_EAPOL=y
398endif
399
400ifdef CONFIG_EAP_GTC
401# EAP-GTC
402ifeq ($(CONFIG_EAP_GTC), dyn)
403L_CFLAGS += -DEAP_GTC_DYNAMIC
404EAPDYN += src/eap_peer/eap_gtc.so
405else
406L_CFLAGS += -DEAP_GTC
407OBJS += src/eap_peer/eap_gtc.c
408OBJS_h += src/eap_server/eap_server_gtc.c
409endif
410CONFIG_IEEE8021X_EAPOL=y
411endif
412
413ifdef CONFIG_EAP_OTP
414# EAP-OTP
415ifeq ($(CONFIG_EAP_OTP), dyn)
416L_CFLAGS += -DEAP_OTP_DYNAMIC
417EAPDYN += src/eap_peer/eap_otp.so
418else
419L_CFLAGS += -DEAP_OTP
420OBJS += src/eap_peer/eap_otp.c
421endif
422CONFIG_IEEE8021X_EAPOL=y
423endif
424
425ifdef CONFIG_EAP_SIM
426# EAP-SIM
427ifeq ($(CONFIG_EAP_SIM), dyn)
428L_CFLAGS += -DEAP_SIM_DYNAMIC
429EAPDYN += src/eap_peer/eap_sim.so
430else
431L_CFLAGS += -DEAP_SIM
432OBJS += src/eap_peer/eap_sim.c
433OBJS_h += src/eap_server/eap_server_sim.c
434endif
435CONFIG_IEEE8021X_EAPOL=y
436CONFIG_EAP_SIM_COMMON=y
437NEED_AES_CBC=y
438endif
439
440ifdef CONFIG_EAP_LEAP
441# EAP-LEAP
442ifeq ($(CONFIG_EAP_LEAP), dyn)
443L_CFLAGS += -DEAP_LEAP_DYNAMIC
444EAPDYN += src/eap_peer/eap_leap.so
445else
446L_CFLAGS += -DEAP_LEAP
447OBJS += src/eap_peer/eap_leap.c
448endif
449MS_FUNCS=y
450CONFIG_IEEE8021X_EAPOL=y
451endif
452
453ifdef CONFIG_EAP_PSK
454# EAP-PSK
455ifeq ($(CONFIG_EAP_PSK), dyn)
456L_CFLAGS += -DEAP_PSK_DYNAMIC
457EAPDYN += src/eap_peer/eap_psk.so
458else
459L_CFLAGS += -DEAP_PSK
460OBJS += src/eap_peer/eap_psk.c src/eap_common/eap_psk_common.c
461OBJS_h += src/eap_server/eap_server_psk.c
462endif
463CONFIG_IEEE8021X_EAPOL=y
464NEED_AES=y
465NEED_AES_OMAC1=y
466NEED_AES_ENCBLOCK=y
467NEED_AES_EAX=y
468endif
469
470ifdef CONFIG_EAP_AKA
471# EAP-AKA
472ifeq ($(CONFIG_EAP_AKA), dyn)
473L_CFLAGS += -DEAP_AKA_DYNAMIC
474EAPDYN += src/eap_peer/eap_aka.so
475else
476L_CFLAGS += -DEAP_AKA
477OBJS += src/eap_peer/eap_aka.c
478OBJS_h += src/eap_server/eap_server_aka.c
479endif
480CONFIG_IEEE8021X_EAPOL=y
481CONFIG_EAP_SIM_COMMON=y
482NEED_AES_CBC=y
483endif
484
485ifdef CONFIG_EAP_AKA_PRIME
486# EAP-AKA'
487ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
488L_CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
489else
490L_CFLAGS += -DEAP_AKA_PRIME
491endif
492NEED_SHA256=y
493endif
494
495ifdef CONFIG_EAP_SIM_COMMON
496OBJS += src/eap_common/eap_sim_common.c
497OBJS_h += src/eap_server/eap_sim_db.c
498NEED_AES=y
499NEED_FIPS186_2_PRF=y
500endif
501
502ifdef CONFIG_EAP_FAST
503# EAP-FAST
504ifeq ($(CONFIG_EAP_FAST), dyn)
505L_CFLAGS += -DEAP_FAST_DYNAMIC
506EAPDYN += src/eap_peer/eap_fast.so
507EAPDYN += src/eap_common/eap_fast_common.c
508else
509L_CFLAGS += -DEAP_FAST
510OBJS += src/eap_peer/eap_fast.c src/eap_peer/eap_fast_pac.c
511OBJS += src/eap_common/eap_fast_common.c
512OBJS_h += src/eap_server/eap_server_fast.c
513endif
514TLS_FUNCS=y
515CONFIG_IEEE8021X_EAPOL=y
516NEED_T_PRF=y
517endif
518
519ifdef CONFIG_EAP_PAX
520# EAP-PAX
521ifeq ($(CONFIG_EAP_PAX), dyn)
522L_CFLAGS += -DEAP_PAX_DYNAMIC
523EAPDYN += src/eap_peer/eap_pax.so
524else
525L_CFLAGS += -DEAP_PAX
526OBJS += src/eap_peer/eap_pax.c src/eap_common/eap_pax_common.c
527OBJS_h += src/eap_server/eap_server_pax.c
528endif
529CONFIG_IEEE8021X_EAPOL=y
530endif
531
532ifdef CONFIG_EAP_SAKE
533# EAP-SAKE
534ifeq ($(CONFIG_EAP_SAKE), dyn)
535L_CFLAGS += -DEAP_SAKE_DYNAMIC
536EAPDYN += src/eap_peer/eap_sake.so
537else
538L_CFLAGS += -DEAP_SAKE
539OBJS += src/eap_peer/eap_sake.c src/eap_common/eap_sake_common.c
540OBJS_h += src/eap_server/eap_server_sake.c
541endif
542CONFIG_IEEE8021X_EAPOL=y
543endif
544
545ifdef CONFIG_EAP_GPSK
546# EAP-GPSK
547ifeq ($(CONFIG_EAP_GPSK), dyn)
548L_CFLAGS += -DEAP_GPSK_DYNAMIC
549EAPDYN += src/eap_peer/eap_gpsk.so
550else
551L_CFLAGS += -DEAP_GPSK
552OBJS += src/eap_peer/eap_gpsk.c src/eap_common/eap_gpsk_common.c
553OBJS_h += src/eap_server/eap_server_gpsk.c
554endif
555CONFIG_IEEE8021X_EAPOL=y
556ifdef CONFIG_EAP_GPSK_SHA256
557L_CFLAGS += -DEAP_GPSK_SHA256
558endif
559NEED_SHA256=y
560NEED_AES_OMAC1=y
561endif
562
563ifdef CONFIG_EAP_PWD
564L_CFLAGS += -DEAP_PWD
565OBJS += src/eap_peer/eap_pwd.c src/eap_common/eap_pwd_common.c
566OBJS_h += src/eap_server/eap_pwd.c
567CONFIG_IEEE8021X_EAPOL=y
568NEED_SHA256=y
569endif
570
571ifdef CONFIG_WPS
572ifdef CONFIG_WPS2
573L_CFLAGS += -DCONFIG_WPS2
574endif
575
576# EAP-WSC
577L_CFLAGS += -DCONFIG_WPS -DEAP_WSC
578OBJS += wps_supplicant.c
579OBJS += src/utils/uuid.c
580OBJS += src/eap_peer/eap_wsc.c src/eap_common/eap_wsc_common.c
581OBJS += src/wps/wps.c
582OBJS += src/wps/wps_common.c
583OBJS += src/wps/wps_attr_parse.c
584OBJS += src/wps/wps_attr_build.c
585OBJS += src/wps/wps_attr_process.c
586OBJS += src/wps/wps_dev_attr.c
587OBJS += src/wps/wps_enrollee.c
588OBJS += src/wps/wps_registrar.c
589OBJS_h += src/eap_server/eap_server_wsc.c
590CONFIG_IEEE8021X_EAPOL=y
591NEED_DH_GROUPS=y
592NEED_SHA256=y
593NEED_BASE64=y
594NEED_80211_COMMON=y
595NEED_AES_CBC=y
596NEED_MODEXP=y
597
598ifdef CONFIG_WPS_UFD
599L_CFLAGS += -DCONFIG_WPS_UFD
600OBJS += src/wps/wps_ufd.c
601NEED_WPS_OOB=y
602endif
603
604ifdef CONFIG_WPS_NFC
605L_CFLAGS += -DCONFIG_WPS_NFC
606OBJS += src/wps/ndef.c
607OBJS += src/wps/wps_nfc.c
608NEED_WPS_OOB=y
609ifdef CONFIG_WPS_NFC_PN531
610PN531_PATH ?= /usr/local/src/nfc
611L_CFLAGS += -DCONFIG_WPS_NFC_PN531
612L_CFLAGS += -I${PN531_PATH}/inc
613OBJS += src/wps/wps_nfc_pn531.c
614LIBS += ${PN531_PATH}/lib/wpsnfc.dll
615LIBS += ${PN531_PATH}/lib/libnfc_mapping_pn53x.dll
616endif
617endif
618
619ifdef NEED_WPS_OOB
620L_CFLAGS += -DCONFIG_WPS_OOB
621endif
622
623ifdef CONFIG_WPS_ER
624CONFIG_WPS_UPNP=y
625L_CFLAGS += -DCONFIG_WPS_ER
626OBJS += src/wps/wps_er.c
627OBJS += src/wps/wps_er_ssdp.c
628endif
629
630ifdef CONFIG_WPS_UPNP
631L_CFLAGS += -DCONFIG_WPS_UPNP
632OBJS += src/wps/wps_upnp.c
633OBJS += src/wps/wps_upnp_ssdp.c
634OBJS += src/wps/wps_upnp_web.c
635OBJS += src/wps/wps_upnp_event.c
636OBJS += src/wps/wps_upnp_ap.c
637OBJS += src/wps/upnp_xml.c
638OBJS += src/wps/httpread.c
639OBJS += src/wps/http_client.c
640OBJS += src/wps/http_server.c
641endif
642
643ifdef CONFIG_WPS_STRICT
644L_CFLAGS += -DCONFIG_WPS_STRICT
645OBJS += src/wps/wps_validate.c
646endif
647
648ifdef CONFIG_WPS_TESTING
649L_CFLAGS += -DCONFIG_WPS_TESTING
650endif
651
652ifdef CONFIG_WPS_REG_DISABLE_OPEN
653L_CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN
654endif
655
656endif
657
658ifdef CONFIG_EAP_IKEV2
659# EAP-IKEv2
660ifeq ($(CONFIG_EAP_IKEV2), dyn)
661L_CFLAGS += -DEAP_IKEV2_DYNAMIC
662EAPDYN += src/eap_peer/eap_ikev2.so src/eap_peer/ikev2.c
663EAPDYN += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
664else
665L_CFLAGS += -DEAP_IKEV2
666OBJS += src/eap_peer/eap_ikev2.c src/eap_peer/ikev2.c
667OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
668OBJS_h += src/eap_server/eap_server_ikev2.c
669OBJS_h += src/eap_server/ikev2.c
670endif
671CONFIG_IEEE8021X_EAPOL=y
672NEED_DH_GROUPS=y
673NEED_DH_GROUPS_ALL=y
674NEED_MODEXP=y
675NEED_CIPHER=y
676endif
677
678ifdef CONFIG_EAP_VENDOR_TEST
679ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
680L_CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
681EAPDYN += src/eap_peer/eap_vendor_test.so
682else
683L_CFLAGS += -DEAP_VENDOR_TEST
684OBJS += src/eap_peer/eap_vendor_test.c
685OBJS_h += src/eap_server/eap_server_vendor_test.c
686endif
687CONFIG_IEEE8021X_EAPOL=y
688endif
689
690ifdef CONFIG_EAP_TNC
691# EAP-TNC
692L_CFLAGS += -DEAP_TNC
693OBJS += src/eap_peer/eap_tnc.c
694OBJS += src/eap_peer/tncc.c
695OBJS_h += src/eap_server/eap_server_tnc.c
696OBJS_h += src/eap_server/tncs.c
697NEED_BASE64=y
698ifndef CONFIG_NATIVE_WINDOWS
699ifndef CONFIG_DRIVER_BSD
700LIBS += -ldl
701endif
702endif
703endif
704
705ifdef CONFIG_IEEE8021X_EAPOL
706# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
707L_CFLAGS += -DIEEE8021X_EAPOL
708OBJS += src/eapol_supp/eapol_supp_sm.c
709OBJS += src/eap_peer/eap.c src/eap_peer/eap_methods.c
710NEED_EAP_COMMON=y
711ifdef CONFIG_DYNAMIC_EAP_METHODS
712L_CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
713LIBS += -ldl -rdynamic
714endif
715endif
716
717ifdef CONFIG_AP
718NEED_80211_COMMON=y
719NEED_EAP_COMMON=y
720NEED_RSN_AUTHENTICATOR=y
721L_CFLAGS += -DCONFIG_AP
722OBJS += ap.c
723L_CFLAGS += -DCONFIG_NO_RADIUS
724L_CFLAGS += -DCONFIG_NO_ACCOUNTING
725L_CFLAGS += -DCONFIG_NO_VLAN
726OBJS += src/ap/hostapd.c
727OBJS += src/ap/wpa_auth_glue.c
728OBJS += src/ap/utils.c
729OBJS += src/ap/authsrv.c
730OBJS += src/ap/ap_config.c
731OBJS += src/utils/ip_addr.c
732OBJS += src/ap/sta_info.c
733OBJS += src/ap/tkip_countermeasures.c
734OBJS += src/ap/ap_mlme.c
735OBJS += src/ap/ieee802_1x.c
736OBJS += src/eapol_auth/eapol_auth_sm.c
737OBJS += src/ap/ieee802_11_auth.c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800738OBJS += src/ap/ieee802_11_shared.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700739OBJS += src/ap/drv_callbacks.c
740OBJS += src/ap/ap_drv_ops.c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800741OBJS += src/ap/beacon.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700742ifdef CONFIG_IEEE80211N
743OBJS += src/ap/ieee802_11_ht.c
744endif
745ifdef CONFIG_CTRL_IFACE
746OBJS += src/ap/ctrl_iface_ap.c
747endif
748
749L_CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
750OBJS += src/eap_server/eap_server.c
751OBJS += src/eap_server/eap_server_identity.c
752OBJS += src/eap_server/eap_server_methods.c
753
754ifdef CONFIG_IEEE80211N
755L_CFLAGS += -DCONFIG_IEEE80211N
756endif
757
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700758ifdef CONFIG_WNM
759L_CFLAGS += -DCONFIG_WNM
760endif
761
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700762ifdef NEED_AP_MLME
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700763OBJS += src/ap/wmm.c
764OBJS += src/ap/ap_list.c
765OBJS += src/ap/ieee802_11.c
766OBJS += src/ap/hw_features.c
767L_CFLAGS += -DNEED_AP_MLME
768endif
769ifdef CONFIG_WPS
770L_CFLAGS += -DEAP_SERVER_WSC
771OBJS += src/ap/wps_hostapd.c
772OBJS += src/eap_server/eap_server_wsc.c
773endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700774ifdef CONFIG_INTERWORKING
775OBJS += src/ap/gas_serv.c
776endif
777ifdef CONFIG_HS20
778OBJS += src/ap/hs20.c
779endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700780endif
781
782ifdef NEED_RSN_AUTHENTICATOR
783L_CFLAGS += -DCONFIG_NO_RADIUS
784NEED_AES_WRAP=y
785OBJS += src/ap/wpa_auth.c
786OBJS += src/ap/wpa_auth_ie.c
787OBJS += src/ap/pmksa_cache_auth.c
788ifdef CONFIG_IEEE80211R
789OBJS += src/ap/wpa_auth_ft.c
790endif
791ifdef CONFIG_PEERKEY
792OBJS += src/ap/peerkey_auth.c
793endif
794endif
795
796ifdef CONFIG_EAP_SERVER
797L_CFLAGS += -DEAP_SERVER
798OBJS_h += src/eap_server/eap_server.c
799OBJS_h += src/eap_server/eap_server_identity.c
800OBJS_h += src/eap_server/eap_server_methods.c
801endif
802
803ifdef CONFIG_RADIUS_CLIENT
804OBJS_h += src/utils/ip_addr.c
805OBJS_h += src/radius/radius.c
806OBJS_h += src/radius/radius_client.c
807endif
808
809ifdef CONFIG_AUTHENTICATOR
810OBJS_h += src/eapol_auth/eapol_auth_sm.c
811OBJS_h += src/ap/ieee802_1x.c
812endif
813
814ifdef CONFIG_WPA_AUTHENTICATOR
815OBJS_h += src/ap/wpa_auth.c
816OBJS_h += src/ap/wpa_auth_ie.c
817OBJS_h += src/ap/pmksa_cache_auth.c
818ifdef CONFIG_IEEE80211R
819OBJS_h += src/ap/wpa_auth_ft.c
820endif
821ifdef CONFIG_PEERKEY
822OBJS_h += src/ap/peerkey_auth.c
823endif
824endif
825
826ifdef CONFIG_PCSC
827# PC/SC interface for smartcards (USIM, GSM SIM)
828L_CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
829OBJS += src/utils/pcsc_funcs.c
830# -lpthread may not be needed depending on how pcsc-lite was configured
831ifdef CONFIG_NATIVE_WINDOWS
832#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
833#dynamic symbol loading that is now used in pcsc_funcs.c
834#LIBS += -lwinscard
835else
836LIBS += -lpcsclite -lpthread
837endif
838endif
839
840ifdef CONFIG_SIM_SIMULATOR
841L_CFLAGS += -DCONFIG_SIM_SIMULATOR
842NEED_MILENAGE=y
843endif
844
845ifdef CONFIG_USIM_SIMULATOR
846L_CFLAGS += -DCONFIG_USIM_SIMULATOR
847NEED_MILENAGE=y
848endif
849
850ifdef NEED_MILENAGE
851OBJS += src/crypto/milenage.c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800852NEED_AES_ENCBLOCK=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700853endif
854
855ifdef CONFIG_PKCS12
856L_CFLAGS += -DPKCS12_FUNCS
857endif
858
859ifdef CONFIG_SMARTCARD
860L_CFLAGS += -DCONFIG_SMARTCARD
861endif
862
863ifdef MS_FUNCS
864OBJS += src/crypto/ms_funcs.c
865NEED_DES=y
866NEED_MD4=y
867endif
868
869ifdef CHAP
870OBJS += src/eap_common/chap.c
871endif
872
873ifdef TLS_FUNCS
874NEED_DES=y
875# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
876OBJS += src/eap_peer/eap_tls_common.c
877OBJS_h += src/eap_server/eap_server_tls_common.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700878ifndef CONFIG_FIPS
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700879NEED_TLS_PRF=y
880endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700881endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700882
883ifndef CONFIG_TLS
884CONFIG_TLS=openssl
885endif
886
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800887ifdef CONFIG_TLSV11
888L_CFLAGS += -DCONFIG_TLSV11
889endif
890
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700891ifdef CONFIG_TLSV12
892L_CFLAGS += -DCONFIG_TLSV12
893NEED_SHA256=y
894endif
895
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700896ifeq ($(CONFIG_TLS), openssl)
897ifdef TLS_FUNCS
898L_CFLAGS += -DEAP_TLS_OPENSSL
899OBJS += src/crypto/tls_openssl.c
900LIBS += -lssl
901endif
902OBJS += src/crypto/crypto_openssl.c
903OBJS_p += src/crypto/crypto_openssl.c
904ifdef NEED_FIPS186_2_PRF
905OBJS += src/crypto/fips_prf_openssl.c
906endif
907LIBS += -lcrypto
908LIBS_p += -lcrypto
909endif
910
911ifeq ($(CONFIG_TLS), gnutls)
912ifdef TLS_FUNCS
913OBJS += src/crypto/tls_gnutls.c
914LIBS += -lgnutls -lgpg-error
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700915endif
916OBJS += src/crypto/crypto_gnutls.c
917OBJS_p += src/crypto/crypto_gnutls.c
918ifdef NEED_FIPS186_2_PRF
919OBJS += src/crypto/fips_prf_gnutls.c
920endif
921LIBS += -lgcrypt
922LIBS_p += -lgcrypt
923CONFIG_INTERNAL_SHA256=y
924CONFIG_INTERNAL_RC4=y
925CONFIG_INTERNAL_DH_GROUP5=y
926endif
927
928ifeq ($(CONFIG_TLS), schannel)
929ifdef TLS_FUNCS
930OBJS += src/crypto/tls_schannel.c
931endif
932OBJS += src/crypto/crypto_cryptoapi.c
933OBJS_p += src/crypto/crypto_cryptoapi.c
934ifdef NEED_FIPS186_2_PRF
935OBJS += src/crypto/fips_prf_cryptoapi.c
936endif
937CONFIG_INTERNAL_SHA256=y
938CONFIG_INTERNAL_RC4=y
939CONFIG_INTERNAL_DH_GROUP5=y
940endif
941
942ifeq ($(CONFIG_TLS), nss)
943ifdef TLS_FUNCS
944OBJS += src/crypto/tls_nss.c
945LIBS += -lssl3
946endif
947OBJS += src/crypto/crypto_nss.c
948OBJS_p += src/crypto/crypto_nss.c
949ifdef NEED_FIPS186_2_PRF
950OBJS += src/crypto/fips_prf_nss.c
951endif
952LIBS += -lnss3
953LIBS_p += -lnss3
954CONFIG_INTERNAL_MD4=y
955CONFIG_INTERNAL_DH_GROUP5=y
956endif
957
958ifeq ($(CONFIG_TLS), internal)
959ifndef CONFIG_CRYPTO
960CONFIG_CRYPTO=internal
961endif
962ifdef TLS_FUNCS
963OBJS += src/crypto/crypto_internal-rsa.c
964OBJS += src/crypto/tls_internal.c
965OBJS += src/tls/tlsv1_common.c
966OBJS += src/tls/tlsv1_record.c
967OBJS += src/tls/tlsv1_cred.c
968OBJS += src/tls/tlsv1_client.c
969OBJS += src/tls/tlsv1_client_write.c
970OBJS += src/tls/tlsv1_client_read.c
971OBJS += src/tls/asn1.c
972OBJS += src/tls/rsa.c
973OBJS += src/tls/x509v3.c
974OBJS += src/tls/pkcs1.c
975OBJS += src/tls/pkcs5.c
976OBJS += src/tls/pkcs8.c
977NEED_SHA256=y
978NEED_BASE64=y
979NEED_TLS_PRF=y
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700980ifdef CONFIG_TLSV12
981NEED_TLS_PRF_SHA256=y
982endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700983NEED_MODEXP=y
984NEED_CIPHER=y
985L_CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
986endif
987ifdef NEED_CIPHER
988NEED_DES=y
989OBJS += src/crypto/crypto_internal-cipher.c
990endif
991ifdef NEED_MODEXP
992OBJS += src/crypto/crypto_internal-modexp.c
993OBJS += src/tls/bignum.c
994endif
995ifeq ($(CONFIG_CRYPTO), libtomcrypt)
996OBJS += src/crypto/crypto_libtomcrypt.c
997OBJS_p += src/crypto/crypto_libtomcrypt.c
998LIBS += -ltomcrypt -ltfm
999LIBS_p += -ltomcrypt -ltfm
1000CONFIG_INTERNAL_SHA256=y
1001CONFIG_INTERNAL_RC4=y
1002CONFIG_INTERNAL_DH_GROUP5=y
1003endif
1004ifeq ($(CONFIG_CRYPTO), internal)
1005OBJS += src/crypto/crypto_internal.c
1006OBJS_p += src/crypto/crypto_internal.c
1007NEED_AES_ENC=y
1008L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL
1009ifdef CONFIG_INTERNAL_LIBTOMMATH
1010L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
1011ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
1012L_CFLAGS += -DLTM_FAST
1013endif
1014else
1015LIBS += -ltommath
1016LIBS_p += -ltommath
1017endif
1018CONFIG_INTERNAL_AES=y
1019CONFIG_INTERNAL_DES=y
1020CONFIG_INTERNAL_SHA1=y
1021CONFIG_INTERNAL_MD4=y
1022CONFIG_INTERNAL_MD5=y
1023CONFIG_INTERNAL_SHA256=y
1024CONFIG_INTERNAL_RC4=y
1025CONFIG_INTERNAL_DH_GROUP5=y
1026endif
1027ifeq ($(CONFIG_CRYPTO), cryptoapi)
1028OBJS += src/crypto/crypto_cryptoapi.c
1029OBJS_p += src/crypto/crypto_cryptoapi.c
1030L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
1031CONFIG_INTERNAL_SHA256=y
1032CONFIG_INTERNAL_RC4=y
1033endif
1034endif
1035
1036ifeq ($(CONFIG_TLS), none)
1037ifdef TLS_FUNCS
1038OBJS += src/crypto/tls_none.c
1039L_CFLAGS += -DEAP_TLS_NONE
1040CONFIG_INTERNAL_AES=y
1041CONFIG_INTERNAL_SHA1=y
1042CONFIG_INTERNAL_MD5=y
1043endif
1044OBJS += src/crypto/crypto_none.c
1045OBJS_p += src/crypto/crypto_none.c
1046CONFIG_INTERNAL_SHA256=y
1047CONFIG_INTERNAL_RC4=y
1048endif
1049
1050ifdef TLS_FUNCS
1051ifdef CONFIG_SMARTCARD
1052ifndef CONFIG_NATIVE_WINDOWS
1053ifneq ($(CONFIG_L2_PACKET), freebsd)
1054LIBS += -ldl
1055endif
1056endif
1057endif
1058endif
1059
1060ifndef TLS_FUNCS
1061OBJS += src/crypto/tls_none.c
1062ifeq ($(CONFIG_TLS), internal)
1063CONFIG_INTERNAL_AES=y
1064CONFIG_INTERNAL_SHA1=y
1065CONFIG_INTERNAL_MD5=y
1066CONFIG_INTERNAL_RC4=y
1067endif
1068endif
1069
1070AESOBJS = # none so far (see below)
1071ifdef CONFIG_INTERNAL_AES
1072AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-dec.c
1073endif
1074
1075AESOBJS += src/crypto/aes-unwrap.c
1076ifdef NEED_AES_EAX
1077AESOBJS += src/crypto/aes-eax.c
1078NEED_AES_CTR=y
1079endif
1080ifdef NEED_AES_CTR
1081AESOBJS += src/crypto/aes-ctr.c
1082endif
1083ifdef NEED_AES_ENCBLOCK
1084AESOBJS += src/crypto/aes-encblock.c
1085endif
1086ifdef NEED_AES_OMAC1
1087NEED_AES_ENC=y
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001088ifdef CONFIG_OPENSSL_CMAC
1089CFLAGS += -DCONFIG_OPENSSL_CMAC
1090else
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001091AESOBJS += src/crypto/aes-omac1.c
1092endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001093endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001094ifdef NEED_AES_WRAP
1095NEED_AES_ENC=y
1096AESOBJS += src/crypto/aes-wrap.c
1097endif
1098ifdef NEED_AES_CBC
1099NEED_AES_ENC=y
1100AESOBJS += src/crypto/aes-cbc.c
1101endif
1102ifdef NEED_AES_ENC
1103ifdef CONFIG_INTERNAL_AES
1104AESOBJS += src/crypto/aes-internal-enc.c
1105endif
1106endif
1107ifdef NEED_AES
1108OBJS += $(AESOBJS)
1109endif
1110
1111SHA1OBJS =
1112ifdef NEED_SHA1
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001113ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001114SHA1OBJS += src/crypto/sha1.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001115endif
1116SHA1OBJS += src/crypto/sha1-prf.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001117ifdef CONFIG_INTERNAL_SHA1
1118SHA1OBJS += src/crypto/sha1-internal.c
1119ifdef NEED_FIPS186_2_PRF
1120SHA1OBJS += src/crypto/fips_prf_internal.c
1121endif
1122endif
Dmitry Shmidt13970b02011-06-30 16:51:41 -07001123ifdef CONFIG_NO_WPA_PASSPHRASE
1124L_CFLAGS += -DCONFIG_NO_PBKDF2
1125else
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001126ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001127SHA1OBJS += src/crypto/sha1-pbkdf2.c
1128endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001129endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001130ifdef NEED_T_PRF
1131SHA1OBJS += src/crypto/sha1-tprf.c
1132endif
1133ifdef NEED_TLS_PRF
1134SHA1OBJS += src/crypto/sha1-tlsprf.c
1135endif
1136endif
1137
Dmitry Shmidt4530cfd2012-09-09 15:20:40 -07001138MD5OBJS =
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001139ifndef CONFIG_FIPS
1140MD5OBJS += src/crypto/md5.c
1141endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001142ifdef NEED_MD5
1143ifdef CONFIG_INTERNAL_MD5
1144MD5OBJS += src/crypto/md5-internal.c
1145endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001146OBJS += $(MD5OBJS)
1147OBJS_p += $(MD5OBJS)
1148endif
1149
1150ifdef NEED_MD4
1151ifdef CONFIG_INTERNAL_MD4
1152OBJS += src/crypto/md4-internal.c
1153endif
1154endif
1155
1156DESOBJS = # none needed when not internal
1157ifdef NEED_DES
1158ifdef CONFIG_INTERNAL_DES
1159DESOBJS += src/crypto/des-internal.c
1160endif
1161endif
1162
1163ifdef NEED_RC4
1164ifdef CONFIG_INTERNAL_RC4
1165OBJS += src/crypto/rc4.c
1166endif
1167endif
1168
1169SHA256OBJS = # none by default
1170ifdef NEED_SHA256
1171L_CFLAGS += -DCONFIG_SHA256
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001172ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001173SHA256OBJS += src/crypto/sha256.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001174endif
1175SHA256OBJS += src/crypto/sha256-prf.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001176ifdef CONFIG_INTERNAL_SHA256
1177SHA256OBJS += src/crypto/sha256-internal.c
1178endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001179ifdef NEED_TLS_PRF_SHA256
1180SHA256OBJS += src/crypto/sha256-tlsprf.c
1181endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001182OBJS += $(SHA256OBJS)
1183endif
1184
1185ifdef NEED_DH_GROUPS
1186OBJS += src/crypto/dh_groups.c
1187endif
1188ifdef NEED_DH_GROUPS_ALL
1189L_CFLAGS += -DALL_DH_GROUPS
1190endif
1191ifdef CONFIG_INTERNAL_DH_GROUP5
1192ifdef NEED_DH_GROUPS
1193OBJS += src/crypto/dh_group5.c
1194endif
1195endif
1196
1197ifdef CONFIG_NO_RANDOM_POOL
1198L_CFLAGS += -DCONFIG_NO_RANDOM_POOL
1199else
1200OBJS += src/crypto/random.c
1201endif
1202
1203ifdef CONFIG_CTRL_IFACE
1204ifeq ($(CONFIG_CTRL_IFACE), y)
1205ifdef CONFIG_NATIVE_WINDOWS
1206CONFIG_CTRL_IFACE=named_pipe
1207else
1208CONFIG_CTRL_IFACE=unix
1209endif
1210endif
1211L_CFLAGS += -DCONFIG_CTRL_IFACE
1212ifeq ($(CONFIG_CTRL_IFACE), unix)
1213L_CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1214endif
1215ifeq ($(CONFIG_CTRL_IFACE), udp)
1216L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1217endif
1218ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1219L_CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1220endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001221ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
1222CONFIG_CTRL_IFACE=udp
1223L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1224L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
1225endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001226OBJS += ctrl_iface.c ctrl_iface_$(CONFIG_CTRL_IFACE).c
1227endif
1228
1229ifdef CONFIG_CTRL_IFACE_DBUS
1230DBUS=y
1231DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
1232DBUS_OBJS += dbus/dbus_old.c dbus/dbus_old_handlers.c
1233ifdef CONFIG_WPS
1234DBUS_OBJS += dbus/dbus_old_handlers_wps.c
1235endif
1236DBUS_OBJS += dbus/dbus_dict_helpers.c
1237ifndef DBUS_LIBS
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001238DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001239endif
1240ifndef DBUS_INCLUDE
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001241DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001242endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001243DBUS_CFLAGS += $(DBUS_INCLUDE)
1244endif
1245
1246ifdef CONFIG_CTRL_IFACE_DBUS_NEW
1247DBUS=y
1248DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
1249DBUS_OBJS ?= dbus/dbus_dict_helpers.c
1250DBUS_OBJS += dbus/dbus_new_helpers.c
1251DBUS_OBJS += dbus/dbus_new.c dbus/dbus_new_handlers.c
1252ifdef CONFIG_WPS
1253DBUS_OBJS += dbus/dbus_new_handlers_wps.c
1254endif
Dmitry Shmidt13970b02011-06-30 16:51:41 -07001255ifdef CONFIG_P2P
1256DBUS_OBJS += dbus/dbus_new_handlers_p2p.c
1257endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001258ifndef DBUS_LIBS
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001259DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001260endif
1261ifndef DBUS_INCLUDE
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001262DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001263endif
1264ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
1265DBUS_OBJS += dbus/dbus_new_introspect.c
1266DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
1267endif
1268DBUS_CFLAGS += $(DBUS_INCLUDE)
1269endif
1270
1271ifdef DBUS
1272DBUS_CFLAGS += -DCONFIG_DBUS
1273DBUS_OBJS += dbus/dbus_common.c
1274endif
1275
1276OBJS += $(DBUS_OBJS)
1277L_CFLAGS += $(DBUS_CFLAGS)
1278LIBS += $(DBUS_LIBS)
1279
1280ifdef CONFIG_READLINE
1281OBJS_c += src/utils/edit_readline.c
1282LIBS_c += -lncurses -lreadline
1283else
1284ifdef CONFIG_WPA_CLI_EDIT
1285OBJS_c += src/utils/edit.c
1286else
1287OBJS_c += src/utils/edit_simple.c
1288endif
1289endif
1290
1291ifdef CONFIG_NATIVE_WINDOWS
1292L_CFLAGS += -DCONFIG_NATIVE_WINDOWS
1293LIBS += -lws2_32 -lgdi32 -lcrypt32
1294LIBS_c += -lws2_32
1295LIBS_p += -lws2_32 -lgdi32
1296ifeq ($(CONFIG_CRYPTO), cryptoapi)
1297LIBS_p += -lcrypt32
1298endif
1299endif
1300
1301ifdef CONFIG_NO_STDOUT_DEBUG
1302L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1303ifndef CONFIG_CTRL_IFACE
1304L_CFLAGS += -DCONFIG_NO_WPA_MSG
1305endif
1306endif
1307
1308ifdef CONFIG_ANDROID_LOG
1309L_CFLAGS += -DCONFIG_ANDROID_LOG
1310endif
1311
1312ifdef CONFIG_IPV6
1313# for eapol_test only
1314L_CFLAGS += -DCONFIG_IPV6
1315endif
1316
1317ifdef NEED_BASE64
1318OBJS += src/utils/base64.c
1319endif
1320
1321ifdef NEED_SME
1322NEED_80211_COMMON=y
1323OBJS += sme.c
1324L_CFLAGS += -DCONFIG_SME
1325endif
1326
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001327ifdef NEED_80211_COMMON
1328OBJS += src/common/ieee802_11_common.c
1329endif
1330
1331ifdef NEED_EAP_COMMON
1332OBJS += src/eap_common/eap_common.c
1333endif
1334
1335ifndef CONFIG_MAIN
1336CONFIG_MAIN=main
1337endif
1338
1339ifdef CONFIG_DEBUG_SYSLOG
1340L_CFLAGS += -DCONFIG_DEBUG_SYSLOG
Dmitry Shmidt13970b02011-06-30 16:51:41 -07001341ifdef CONFIG_DEBUG_SYSLOG_FACILITY
1342L_CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
1343endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001344endif
1345
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001346ifdef CONFIG_DEBUG_LINUX_TRACING
1347L_CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
1348endif
1349
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001350ifdef CONFIG_DEBUG_FILE
1351L_CFLAGS += -DCONFIG_DEBUG_FILE
1352endif
1353
1354ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1355L_CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1356endif
1357
1358ifdef CONFIG_FIPS
1359L_CFLAGS += -DCONFIG_FIPS
1360endif
1361
1362OBJS += $(SHA1OBJS) $(DESOBJS)
1363
1364OBJS_p += $(SHA1OBJS)
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001365OBJS_p += $(SHA256OBJS)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001366
1367ifdef CONFIG_BGSCAN_SIMPLE
1368L_CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1369OBJS += bgscan_simple.c
1370NEED_BGSCAN=y
1371endif
1372
1373ifdef CONFIG_BGSCAN_LEARN
1374L_CFLAGS += -DCONFIG_BGSCAN_LEARN
1375OBJS += bgscan_learn.c
1376NEED_BGSCAN=y
1377endif
1378
1379ifdef NEED_BGSCAN
1380L_CFLAGS += -DCONFIG_BGSCAN
1381OBJS += bgscan.c
1382endif
1383
Dmitry Shmidt04949592012-07-19 12:16:46 -07001384ifdef CONFIG_AUTOSCAN_EXPONENTIAL
1385L_CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL
1386OBJS += autoscan_exponential.c
1387NEED_AUTOSCAN=y
1388endif
1389
1390ifdef CONFIG_AUTOSCAN_PERIODIC
1391CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC
1392OBJS += autoscan_periodic.c
1393NEED_AUTOSCAN=y
1394endif
1395
1396ifdef NEED_AUTOSCAN
1397L_CFLAGS += -DCONFIG_AUTOSCAN
1398OBJS += autoscan.c
1399endif
1400
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001401ifdef CONFIG_EXT_PASSWORD_TEST
1402OBJS += src/utils/ext_password_test.c
1403L_CFLAGS += -DCONFIG_EXT_PASSWORD_TEST
1404NEED_EXT_PASSWORD=y
1405endif
1406
1407ifdef NEED_EXT_PASSWORD
1408OBJS += src/utils/ext_password.c
1409L_CFLAGS += -DCONFIG_EXT_PASSWORD
1410endif
1411
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001412ifdef NEED_GAS
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001413OBJS += src/common/gas.c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001414OBJS += gas_query.c
1415L_CFLAGS += -DCONFIG_GAS
1416NEED_OFFCHANNEL=y
1417endif
1418
1419ifdef NEED_OFFCHANNEL
1420OBJS += offchannel.c
1421L_CFLAGS += -DCONFIG_OFFCHANNEL
1422endif
1423
1424OBJS += src/drivers/driver_common.c
1425
1426OBJS_wpa_rm := ctrl_iface.c ctrl_iface_unix.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001427OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.c
1428ifdef CONFIG_AUTHENTICATOR
1429OBJS_wpa += tests/link_test.c
1430endif
1431OBJS_wpa += $(OBJS_l2)
1432OBJS += wpa_supplicant.c events.c blacklist.c wpas_glue.c scan.c
1433OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.c
1434OBJS_t += src/radius/radius_client.c
1435OBJS_t += src/radius/radius.c
1436ifndef CONFIG_AP
1437OBJS_t += src/utils/ip_addr.c
1438endif
1439OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.c
1440OBJS += $(CONFIG_MAIN).c
1441
1442ifdef CONFIG_PRIVSEP
1443OBJS_priv += $(OBJS_d) src/drivers/drivers.c
1444OBJS_priv += $(OBJS_l2)
1445OBJS_priv += src/utils/os_$(CONFIG_OS).c
1446OBJS_priv += src/utils/$(CONFIG_ELOOP).c
1447OBJS_priv += src/utils/common.c
1448OBJS_priv += src/utils/wpa_debug.c
1449OBJS_priv += src/utils/wpabuf.c
1450OBJS_priv += wpa_priv.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001451ifdef CONFIG_DRIVER_NL80211
1452OBJS_priv += src/common/ieee802_11_common.c
1453endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001454ifdef CONFIG_DRIVER_TEST
1455OBJS_priv += $(SHA1OBJS)
1456OBJS_priv += $(MD5OBJS)
1457ifeq ($(CONFIG_TLS), openssl)
1458OBJS_priv += src/crypto/crypto_openssl.c
1459endif
1460ifeq ($(CONFIG_TLS), gnutls)
1461OBJS_priv += src/crypto/crypto_gnutls.c
1462endif
1463ifeq ($(CONFIG_TLS), nss)
1464OBJS_priv += src/crypto/crypto_nss.c
1465endif
1466ifeq ($(CONFIG_TLS), internal)
1467ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1468OBJS_priv += src/crypto/crypto_libtomcrypt.c
1469else
1470OBJS_priv += src/crypto/crypto_internal.c
1471endif
1472endif
1473endif # CONFIG_DRIVER_TEST
1474OBJS += src/l2_packet/l2_packet_privsep.c
1475OBJS += src/drivers/driver_privsep.c
1476EXTRA_progs += wpa_priv
1477else
1478OBJS += $(OBJS_d) src/drivers/drivers.c
1479OBJS += $(OBJS_l2)
1480endif
1481
1482ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1483L_CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1484OBJS += src/drivers/ndis_events.c
1485EXTRALIBS += -loleaut32 -lole32 -luuid
1486ifdef PLATFORMSDKLIB
1487EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1488else
1489EXTRALIBS += WbemUuid.Lib
1490endif
1491endif
1492
1493ifndef LDO
1494LDO=$(CC)
1495endif
1496
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001497########################
1498
1499include $(CLEAR_VARS)
1500LOCAL_MODULE := wpa_cli
1501LOCAL_MODULE_TAGS := debug
1502LOCAL_SHARED_LIBRARIES := libc libcutils
1503LOCAL_CFLAGS := $(L_CFLAGS)
1504LOCAL_SRC_FILES := $(OBJS_c)
1505LOCAL_C_INCLUDES := $(INCLUDES)
1506include $(BUILD_EXECUTABLE)
1507
1508########################
1509include $(CLEAR_VARS)
1510LOCAL_MODULE := wpa_supplicant
1511ifdef CONFIG_DRIVER_CUSTOM
1512LOCAL_STATIC_LIBRARIES := libCustomWifi
1513endif
1514ifneq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),)
1515LOCAL_STATIC_LIBRARIES += $(BOARD_WPA_SUPPLICANT_PRIVATE_LIB)
1516endif
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001517LOCAL_SHARED_LIBRARIES := libc libcutils
1518ifeq ($(CONFIG_TLS), openssl)
1519LOCAL_SHARED_LIBRARIES += libcrypto libssl
1520endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001521ifdef CONFIG_DRIVER_NL80211
1522LOCAL_STATIC_LIBRARIES += libnl_2
1523endif
1524LOCAL_CFLAGS := $(L_CFLAGS)
1525LOCAL_SRC_FILES := $(OBJS)
1526LOCAL_C_INCLUDES := $(INCLUDES)
1527include $(BUILD_EXECUTABLE)
1528
1529########################
1530#
1531#include $(CLEAR_VARS)
1532#LOCAL_MODULE := eapol_test
1533#ifdef CONFIG_DRIVER_CUSTOM
1534#LOCAL_STATIC_LIBRARIES := libCustomWifi
1535#endif
1536#LOCAL_SHARED_LIBRARIES := libc libcrypto libssl
1537#LOCAL_CFLAGS := $(L_CFLAGS)
1538#LOCAL_SRC_FILES := $(OBJS_t)
1539#LOCAL_C_INCLUDES := $(INCLUDES)
1540#include $(BUILD_EXECUTABLE)
1541#
1542########################
1543#
1544#local_target_dir := $(TARGET_OUT)/etc/wifi
1545#
1546#include $(CLEAR_VARS)
1547#LOCAL_MODULE := wpa_supplicant.conf
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001548#LOCAL_MODULE_CLASS := ETC
1549#LOCAL_MODULE_PATH := $(local_target_dir)
1550#LOCAL_SRC_FILES := $(LOCAL_MODULE)
1551#include $(BUILD_PREBUILT)
1552#
1553########################
1554
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001555include $(CLEAR_VARS)
1556LOCAL_MODULE = libwpa_client
1557LOCAL_CFLAGS = $(L_CFLAGS)
1558LOCAL_SRC_FILES = src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c
1559LOCAL_C_INCLUDES = $(INCLUDES)
1560LOCAL_SHARED_LIBRARIES := libcutils
1561LOCAL_COPY_HEADERS_TO := libwpa_client
1562LOCAL_COPY_HEADERS := src/common/wpa_ctrl.h
1563include $(BUILD_SHARED_LIBRARY)