• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright (C) 2008 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16#
17
18LOCAL_PATH := $(call my-dir)
19
20WPA_BUILD_SUPPLICANT := false
21ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),)
22  WPA_BUILD_SUPPLICANT := true
23  CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) = y
24endif
25
26include $(LOCAL_PATH)/android.config
27
28# To force sizeof(enum) = 4
29ifeq ($(TARGET_ARCH),arm)
30L_CFLAGS += -mabi=aapcs-linux
31endif
32
33# To ignore possible wrong network configurations
34L_CFLAGS += -DWPA_IGNORE_CONFIG_ERRORS
35
36# To allow non-ASCII characters in SSID
37L_CFLAGS += -DWPA_UNICODE_SSID
38
39# OpenSSL is configured without engines on Android
40L_CFLAGS += -DOPENSSL_NO_ENGINE
41
42INCLUDES = $(LOCAL_PATH)
43INCLUDES += $(LOCAL_PATH)/src
44INCLUDES += $(LOCAL_PATH)/src/common
45# INCLUDES += $(LOCAL_PATH)/src/crypto # To force proper includes
46INCLUDES += $(LOCAL_PATH)/src/drivers
47INCLUDES += $(LOCAL_PATH)/src/eap_common
48INCLUDES += $(LOCAL_PATH)/src/eapol_supp
49INCLUDES += $(LOCAL_PATH)/src/eap_peer
50INCLUDES += $(LOCAL_PATH)/src/eap_server
51INCLUDES += $(LOCAL_PATH)/src/hlr_auc_gw
52INCLUDES += $(LOCAL_PATH)/src/l2_packet
53INCLUDES += $(LOCAL_PATH)/src/radius
54INCLUDES += $(LOCAL_PATH)/src/rsn_supp
55INCLUDES += $(LOCAL_PATH)/src/tls
56INCLUDES += $(LOCAL_PATH)/src/utils
57INCLUDES += $(LOCAL_PATH)/src/wps
58INCLUDES += external/openssl/include
59INCLUDES += system/security/keystore
60
61OBJS = config.c
62OBJS += src/utils/common.c
63OBJS += src/utils/wpa_debug.c
64OBJS += src/utils/wpabuf.c
65OBJS += src/crypto/md5.c
66OBJS += src/crypto/rc4.c
67OBJS += src/crypto/md4.c
68OBJS += src/crypto/sha1.c
69OBJS += src/crypto/des.c
70OBJS_p = wpa_passphrase.c
71OBJS_p += src/utils/common.c
72OBJS_p += src/utils/wpa_debug.c
73OBJS_p += src/crypto/md5.c
74OBJS_p += src/crypto/md4.c
75OBJS_p += src/crypto/sha1.c
76OBJS_p += src/crypto/des.c
77OBJS_c = wpa_cli.c
78OBJS_c += src/common/wpa_ctrl.c
79OBJS_d =
80
81ifndef CONFIG_OS
82ifdef CONFIG_NATIVE_WINDOWS
83CONFIG_OS=win32
84else
85CONFIG_OS=unix
86endif
87endif
88
89ifeq ($(CONFIG_OS), internal)
90L_CFLAGS += -DOS_NO_C_LIB_DEFINES
91endif
92
93OBJS += src/utils/os_$(CONFIG_OS).c
94OBJS_p += src/utils/os_$(CONFIG_OS).c
95OBJS_c += src/utils/os_$(CONFIG_OS).c
96
97ifndef CONFIG_ELOOP
98CONFIG_ELOOP=eloop
99endif
100OBJS += src/utils/$(CONFIG_ELOOP).c
101
102
103ifdef CONFIG_EAPOL_TEST
104L_CFLAGS += -Werror -DEAPOL_TEST
105endif
106
107ifndef CONFIG_BACKEND
108CONFIG_BACKEND=file
109endif
110
111ifeq ($(CONFIG_BACKEND), file)
112OBJS += config_file.c
113ifndef CONFIG_NO_CONFIG_BLOBS
114NEED_BASE64=y
115endif
116L_CFLAGS += -DCONFIG_BACKEND_FILE
117endif
118
119ifeq ($(CONFIG_BACKEND), winreg)
120OBJS += config_winreg.c
121endif
122
123ifeq ($(CONFIG_BACKEND), none)
124OBJS += config_none.c
125endif
126
127ifdef CONFIG_NO_CONFIG_WRITE
128L_CFLAGS += -DCONFIG_NO_CONFIG_WRITE
129endif
130
131ifdef CONFIG_NO_CONFIG_BLOBS
132L_CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
133endif
134
135ifdef CONFIG_NO_SCAN_PROCESSING
136L_CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
137endif
138
139ifdef CONFIG_DRIVER_HOSTAP
140L_CFLAGS += -DCONFIG_DRIVER_HOSTAP
141OBJS_d += src/drivers/driver_hostap.c
142CONFIG_WIRELESS_EXTENSION=y
143endif
144
145ifdef CONFIG_DRIVER_WEXT
146L_CFLAGS += -DCONFIG_DRIVER_WEXT
147CONFIG_WIRELESS_EXTENSION=y
148endif
149
150ifdef CONFIG_DRIVER_NL80211
151L_CFLAGS += -DCONFIG_DRIVER_NL80211
152OBJS_d += src/drivers/driver_nl80211.c
153LIBS += -lnl
154ifdef CONFIG_CLIENT_MLME
155OBJS_d += src/drivers/radiotap.c
156endif
157endif
158
159ifdef CONFIG_DRIVER_PRISM54
160L_CFLAGS += -DCONFIG_DRIVER_PRISM54
161OBJS_d += src/drivers/driver_prism54.c
162CONFIG_WIRELESS_EXTENSION=y
163endif
164
165ifdef CONFIG_DRIVER_HERMES
166L_CFLAGS += -DCONFIG_DRIVER_HERMES
167OBJS_d += src/drivers/driver_hermes.c
168CONFIG_WIRELESS_EXTENSION=y
169endif
170
171ifdef CONFIG_DRIVER_MADWIFI
172L_CFLAGS += -DCONFIG_DRIVER_MADWIFI
173OBJS_d += src/drivers/driver_madwifi.c
174CONFIG_WIRELESS_EXTENSION=y
175endif
176
177ifdef CONFIG_DRIVER_ATMEL
178L_CFLAGS += -DCONFIG_DRIVER_ATMEL
179OBJS_d += src/drivers/driver_atmel.c
180CONFIG_WIRELESS_EXTENSION=y
181endif
182
183ifdef CONFIG_DRIVER_NDISWRAPPER
184L_CFLAGS += -DCONFIG_DRIVER_NDISWRAPPER
185OBJS_d += src/drivers/driver_ndiswrapper.c
186CONFIG_WIRELESS_EXTENSION=y
187endif
188
189ifdef CONFIG_DRIVER_RALINK
190L_CFLAGS += -DCONFIG_DRIVER_RALINK
191OBJS_d += src/drivers/driver_ralink.c
192endif
193
194ifdef CONFIG_DRIVER_BROADCOM
195L_CFLAGS += -DCONFIG_DRIVER_BROADCOM
196OBJS_d += src/drivers/driver_broadcom.c
197endif
198
199ifdef CONFIG_DRIVER_IPW
200L_CFLAGS += -DCONFIG_DRIVER_IPW
201OBJS_d += src/drivers/driver_ipw.c
202CONFIG_WIRELESS_EXTENSION=y
203endif
204
205ifdef CONFIG_DRIVER_BSD
206L_CFLAGS += -DCONFIG_DRIVER_BSD
207OBJS_d += src/drivers/driver_bsd.c
208ifndef CONFIG_L2_PACKET
209CONFIG_L2_PACKET=freebsd
210endif
211endif
212
213ifdef CONFIG_DRIVER_NDIS
214L_CFLAGS += -DCONFIG_DRIVER_NDIS
215OBJS_d += src/drivers/driver_ndis.c
216ifdef CONFIG_NDIS_EVENTS_INTEGRATED
217OBJS_d += src/drivers/driver_ndis_.c
218endif
219ifndef CONFIG_L2_PACKET
220CONFIG_L2_PACKET=pcap
221endif
222CONFIG_WINPCAP=y
223ifdef CONFIG_USE_NDISUIO
224L_CFLAGS += -DCONFIG_USE_NDISUIO
225endif
226endif
227
228ifdef CONFIG_DRIVER_WIRED
229L_CFLAGS += -DCONFIG_DRIVER_WIRED
230OBJS_d += src/drivers/driver_wired.c
231endif
232
233ifdef CONFIG_DRIVER_TEST
234L_CFLAGS += -DCONFIG_DRIVER_TEST
235OBJS_d += src/drivers/driver_test.c
236endif
237
238ifdef CONFIG_DRIVER_CUSTOM
239L_CFLAGS += -DCONFIG_DRIVER_CUSTOM
240endif
241
242ifdef CONFIG_DRIVER_OSX
243L_CFLAGS += -DCONFIG_DRIVER_OSX
244OBJS_d += src/drivers/driver_osx.c
245LDFLAGS += -framework CoreFoundation
246LDFLAGS += -F/System/Library/PrivateFrameworks -framework Apple80211
247endif
248
249ifdef CONFIG_DRIVER_PS3
250L_CFLAGS += -DCONFIG_DRIVER_PS3 -m64
251OBJS_d += src/drivers/driver_ps3.c
252LDFLAGS += -m64
253endif
254
255ifdef CONFIG_DRIVER_IPHONE
256L_CFLAGS += -DCONFIG_DRIVER_IPHONE
257OBJS_d += src/drivers/driver_iphone.c
258OBJS_d += src/drivers/MobileApple80211.c
259LIBS += -framework CoreFoundation
260endif
261
262ifdef CONFIG_DRIVER_ROBOSWITCH
263L_CFLAGS += -DCONFIG_DRIVER_ROBOSWITCH
264OBJS_d += src/drivers/driver_roboswitch.c
265endif
266
267ifndef CONFIG_L2_PACKET
268CONFIG_L2_PACKET=linux
269endif
270
271OBJS_l2 += src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).c
272
273ifeq ($(CONFIG_L2_PACKET), pcap)
274ifdef CONFIG_WINPCAP
275L_CFLAGS += -DCONFIG_WINPCAP
276LIBS += -lwpcap -lpacket
277LIBS_w += -lwpcap
278else
279LIBS += -ldnet -lpcap
280endif
281endif
282
283ifeq ($(CONFIG_L2_PACKET), winpcap)
284LIBS += -lwpcap -lpacket
285LIBS_w += -lwpcap
286endif
287
288ifeq ($(CONFIG_L2_PACKET), freebsd)
289LIBS += -lpcap
290endif
291
292ifdef CONFIG_EAP_TLS
293# EAP-TLS
294ifeq ($(CONFIG_EAP_TLS), dyn)
295L_CFLAGS += -DEAP_TLS_DYNAMIC
296EAPDYN += src/eap_peer/eap_tls.so
297else
298L_CFLAGS += -DEAP_TLS
299OBJS += src/eap_peer/eap_tls.c
300OBJS_h += src/eap_server/eap_tls.c
301endif
302TLS_FUNCS=y
303CONFIG_IEEE8021X_EAPOL=y
304endif
305
306ifdef CONFIG_EAP_PEAP
307# EAP-PEAP
308ifeq ($(CONFIG_EAP_PEAP), dyn)
309L_CFLAGS += -DEAP_PEAP_DYNAMIC
310EAPDYN += src/eap_peer/eap_peap.so
311else
312L_CFLAGS += -DEAP_PEAP
313OBJS += src/eap_peer/eap_peap.c
314OBJS += src/eap_common/eap_peap_common.c
315OBJS_h += src/eap_server/eap_peap.c
316endif
317TLS_FUNCS=y
318CONFIG_IEEE8021X_EAPOL=y
319endif
320
321ifdef CONFIG_EAP_TTLS
322# EAP-TTLS
323ifeq ($(CONFIG_EAP_TTLS), dyn)
324L_CFLAGS += -DEAP_TTLS_DYNAMIC
325EAPDYN += src/eap_peer/eap_ttls.so
326else
327L_CFLAGS += -DEAP_TTLS
328OBJS += src/eap_peer/eap_ttls.c
329OBJS_h += src/eap_server/eap_ttls.c
330endif
331MS_FUNCS=y
332TLS_FUNCS=y
333CHAP=y
334CONFIG_IEEE8021X_EAPOL=y
335endif
336
337ifdef CONFIG_EAP_MD5
338# EAP-MD5
339ifeq ($(CONFIG_EAP_MD5), dyn)
340L_CFLAGS += -DEAP_MD5_DYNAMIC
341EAPDYN += src/eap_peer/eap_md5.so
342else
343L_CFLAGS += -DEAP_MD5
344OBJS += src/eap_peer/eap_md5.c
345OBJS_h += src/eap_server/eap_md5.c
346endif
347CHAP=y
348CONFIG_IEEE8021X_EAPOL=y
349endif
350
351# backwards compatibility for old spelling
352ifdef CONFIG_MSCHAPV2
353ifndef CONFIG_EAP_MSCHAPV2
354CONFIG_EAP_MSCHAPV2=y
355endif
356endif
357
358ifdef CONFIG_EAP_MSCHAPV2
359# EAP-MSCHAPv2
360ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
361L_CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
362EAPDYN += src/eap_peer/eap_mschapv2.so
363EAPDYN += src/eap_peer/mschapv2.so
364else
365L_CFLAGS += -DEAP_MSCHAPv2
366OBJS += src/eap_peer/eap_mschapv2.c
367OBJS += src/eap_peer/mschapv2.c
368OBJS_h += src/eap_server/eap_mschapv2.c
369endif
370MS_FUNCS=y
371CONFIG_IEEE8021X_EAPOL=y
372endif
373
374ifdef CONFIG_EAP_GTC
375# EAP-GTC
376ifeq ($(CONFIG_EAP_GTC), dyn)
377L_CFLAGS += -DEAP_GTC_DYNAMIC
378EAPDYN += src/eap_peer/eap_gtc.so
379else
380L_CFLAGS += -DEAP_GTC
381OBJS += src/eap_peer/eap_gtc.c
382OBJS_h += src/eap_server/eap_gtc.c
383endif
384CONFIG_IEEE8021X_EAPOL=y
385endif
386
387ifdef CONFIG_EAP_OTP
388# EAP-OTP
389ifeq ($(CONFIG_EAP_OTP), dyn)
390L_CFLAGS += -DEAP_OTP_DYNAMIC
391EAPDYN += src/eap_peer/eap_otp.so
392else
393L_CFLAGS += -DEAP_OTP
394OBJS += src/eap_peer/eap_otp.c
395endif
396CONFIG_IEEE8021X_EAPOL=y
397endif
398
399ifdef CONFIG_EAP_SIM
400# EAP-SIM
401ifeq ($(CONFIG_EAP_SIM), dyn)
402L_CFLAGS += -DEAP_SIM_DYNAMIC
403EAPDYN += src/eap_peer/eap_sim.so
404else
405L_CFLAGS += -DEAP_SIM
406OBJS += src/eap_peer/eap_sim.c
407OBJS_h += src/eap_server/eap_sim.c
408endif
409CONFIG_IEEE8021X_EAPOL=y
410CONFIG_EAP_SIM_COMMON=y
411endif
412
413ifdef CONFIG_EAP_LEAP
414# EAP-LEAP
415ifeq ($(CONFIG_EAP_LEAP), dyn)
416L_CFLAGS += -DEAP_LEAP_DYNAMIC
417EAPDYN += src/eap_peer/eap_leap.so
418else
419L_CFLAGS += -DEAP_LEAP
420OBJS += src/eap_peer/eap_leap.c
421endif
422MS_FUNCS=y
423CONFIG_IEEE8021X_EAPOL=y
424endif
425
426ifdef CONFIG_EAP_PSK
427# EAP-PSK
428ifeq ($(CONFIG_EAP_PSK), dyn)
429L_CFLAGS += -DEAP_PSK_DYNAMIC
430EAPDYN += src/eap_peer/eap_psk.so
431else
432L_CFLAGS += -DEAP_PSK
433OBJS += src/eap_peer/eap_psk.c src/eap_common/eap_psk_common.c
434OBJS_h += src/eap_server/eap_psk.c
435endif
436CONFIG_IEEE8021X_EAPOL=y
437NEED_AES=y
438endif
439
440ifdef CONFIG_EAP_AKA
441# EAP-AKA
442ifeq ($(CONFIG_EAP_AKA), dyn)
443L_CFLAGS += -DEAP_AKA_DYNAMIC
444EAPDYN += src/eap_peer/eap_aka.so
445else
446L_CFLAGS += -DEAP_AKA
447OBJS += src/eap_peer/eap_aka.c
448OBJS_h += src/eap_server/eap_aka.c
449endif
450CONFIG_IEEE8021X_EAPOL=y
451CONFIG_EAP_SIM_COMMON=y
452endif
453
454ifdef CONFIG_EAP_AKA_PRIME
455# EAP-AKA'
456ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
457L_CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
458else
459L_CFLAGS += -DEAP_AKA_PRIME
460endif
461NEED_SHA256=y
462endif
463
464ifdef CONFIG_EAP_SIM_COMMON
465OBJS += src/eap_common/eap_sim_common.c
466OBJS_h += src/eap_server/eap_sim_db.c
467NEED_AES=y
468NEED_FIPS186_2_PRF=y
469endif
470
471ifdef CONFIG_EAP_FAST
472# EAP-FAST
473ifeq ($(CONFIG_EAP_FAST), dyn)
474L_CFLAGS += -DEAP_FAST_DYNAMIC
475EAPDYN += src/eap_peer/eap_fast.so
476EAPDYN += src/eap_common/eap_fast_common.c
477else
478L_CFLAGS += -DEAP_FAST
479OBJS += src/eap_peer/eap_fast.c src/eap_peer/eap_fast_pac.c
480OBJS += src/eap_common/eap_fast_common.c
481OBJS_h += src/eap_server/eap_fast.c
482endif
483TLS_FUNCS=y
484CONFIG_IEEE8021X_EAPOL=y
485NEED_T_PRF=y
486endif
487
488ifdef CONFIG_EAP_PAX
489# EAP-PAX
490ifeq ($(CONFIG_EAP_PAX), dyn)
491L_CFLAGS += -DEAP_PAX_DYNAMIC
492EAPDYN += src/eap_peer/eap_pax.so
493else
494L_CFLAGS += -DEAP_PAX
495OBJS += src/eap_peer/eap_pax.c src/eap_common/eap_pax_common.c
496OBJS_h += src/eap_server/eap_pax.c
497endif
498CONFIG_IEEE8021X_EAPOL=y
499endif
500
501ifdef CONFIG_EAP_SAKE
502# EAP-SAKE
503ifeq ($(CONFIG_EAP_SAKE), dyn)
504L_CFLAGS += -DEAP_SAKE_DYNAMIC
505EAPDYN += src/eap_peer/eap_sake.so
506else
507L_CFLAGS += -DEAP_SAKE
508OBJS += src/eap_peer/eap_sake.c src/eap_common/eap_sake_common.c
509OBJS_h += src/eap_server/eap_sake.c
510endif
511CONFIG_IEEE8021X_EAPOL=y
512endif
513
514ifdef CONFIG_EAP_GPSK
515# EAP-GPSK
516ifeq ($(CONFIG_EAP_GPSK), dyn)
517L_CFLAGS += -DEAP_GPSK_DYNAMIC
518EAPDYN += src/eap_peer/eap_gpsk.so
519else
520L_CFLAGS += -DEAP_GPSK
521OBJS += src/eap_peer/eap_gpsk.c src/eap_common/eap_gpsk_common.c
522OBJS_h += src/eap_server/eap_gpsk.c
523endif
524CONFIG_IEEE8021X_EAPOL=y
525ifdef CONFIG_EAP_GPSK_SHA256
526CFLAGS += -DEAP_GPSK_SHA256
527endif
528NEED_SHA256=y
529endif
530
531ifdef CONFIG_WPS
532# EAP-WSC
533L_CFLAGS += -DCONFIG_WPS -DEAP_WSC
534OBJS += wps_supplicant.c
535OBJS += src/utils/uuid.c
536OBJS += src/eap_peer/eap_wsc.c src/eap_common/eap_wsc_common.c
537OBJS += src/wps/wps.c
538OBJS += src/wps/wps_common.c
539OBJS += src/wps/wps_attr_parse.c
540OBJS += src/wps/wps_attr_build.c
541OBJS += src/wps/wps_attr_process.c
542OBJS += src/wps/wps_dev_attr.c
543OBJS += src/wps/wps_enrollee.c
544OBJS += src/wps/wps_registrar.c
545OBJS_h += src/eap_server/eap_wsc.c
546CONFIG_IEEE8021X_EAPOL=y
547NEED_DH_GROUPS=y
548NEED_SHA256=y
549NEED_BASE64=y
550NEED_CRYPTO=y
551NEED_80211_COMMON=y
552
553ifdef CONFIG_WPS_UPNP
554L_CFLAGS += -DCONFIG_WPS_UPNP
555OBJS += src/wps/wps_upnp.c
556OBJS += src/wps/wps_upnp_ssdp.c
557OBJS += src/wps/wps_upnp_web.c
558OBJS += src/wps/wps_upnp_event.c
559OBJS += src/wps/httpread.c
560endif
561
562endif
563
564ifdef CONFIG_EAP_IKEV2
565# EAP-IKEv2
566ifeq ($(CONFIG_EAP_IKEV2), dyn)
567L_CFLAGS += -DEAP_IKEV2_DYNAMIC
568EAPDYN += src/eap_peer/eap_ikev2.so src/eap_peer/ikev2.c
569EAPDYN += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
570else
571L_CFLAGS += -DEAP_IKEV2
572OBJS += src/eap_peer/eap_ikev2.c src/eap_peer/ikev2.c
573OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
574OBJS_h += src/eap_server/eap_ikev2.c
575OBJS_h += src/eap_server/ikev2.c
576endif
577CONFIG_IEEE8021X_EAPOL=y
578NEED_DH_GROUPS=y
579NEED_DH_GROUPS_ALL=y
580endif
581
582ifdef CONFIG_EAP_VENDOR_TEST
583ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
584L_CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
585EAPDYN += src/eap_peer/eap_vendor_test.so
586else
587L_CFLAGS += -DEAP_VENDOR_TEST
588OBJS += src/eap_peer/eap_vendor_test.c
589OBJS_h += src/eap_server/eap_vendor_test.c
590endif
591CONFIG_IEEE8021X_EAPOL=y
592endif
593
594ifdef CONFIG_EAP_TNC
595# EAP-TNC
596L_CFLAGS += -DEAP_TNC
597OBJS += src/eap_peer/eap_tnc.c
598OBJS += src/eap_peer/tncc.c
599NEED_BASE64=y
600ifndef CONFIG_NATIVE_WINDOWS
601ifndef CONFIG_DRIVER_BSD
602LIBS += -ldl
603endif
604endif
605endif
606
607ifdef CONFIG_IEEE8021X_EAPOL
608# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
609L_CFLAGS += -DIEEE8021X_EAPOL
610OBJS += src/eapol_supp/eapol_supp_sm.c src/eap_peer/eap.c src/eap_common/eap_common.c src/eap_peer/eap_methods.c
611ifdef CONFIG_DYNAMIC_EAP_METHODS
612L_CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
613LIBS += -ldl -rdynamic
614endif
615endif
616
617ifdef CONFIG_EAP_SERVER
618L_CFLAGS += -DEAP_SERVER
619OBJS_h += src/eap_server/eap.c
620OBJS_h += src/eap_server/eap_identity.c
621OBJS_h += src/eap_server/eap_methods.c
622endif
623
624ifdef CONFIG_RADIUS_CLIENT
625OBJS_h += src/utils/ip_addr.c
626OBJS_h += src/radius/radius.c
627OBJS_h += src/radius/radius_client.c
628endif
629
630ifdef CONFIG_AUTHENTICATOR
631OBJS_h += hostapd/eapol_sm.c
632OBJS_h += hostapd/ieee802_1x.c
633endif
634
635ifdef CONFIG_WPA_AUTHENTICATOR
636OBJS_h += hostapd/wpa.c
637OBJS_h += hostapd/wpa_auth_ie.c
638ifdef CONFIG_IEEE80211R
639OBJS_h += hostapd/wpa_ft.c
640endif
641ifdef CONFIG_PEERKEY
642OBJS_h += hostapd/peerkey.c
643endif
644endif
645
646ifdef CONFIG_PCSC
647# PC/SC interface for smartcards (USIM, GSM SIM)
648L_CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
649OBJS += src/utils/pcsc_funcs.c
650# -lpthread may not be needed depending on how pcsc-lite was configured
651ifdef CONFIG_NATIVE_WINDOWS
652#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
653#dynamic symbol loading that is now used in pcsc_funcs.c
654#LIBS += -lwinscard
655else
656LIBS += -lpcsclite -lpthread
657endif
658endif
659
660ifdef CONFIG_SIM_SIMULATOR
661L_CFLAGS += -DCONFIG_SIM_SIMULATOR
662NEED_MILENAGE=y
663endif
664
665ifdef CONFIG_USIM_SIMULATOR
666L_CFLAGS += -DCONFIG_USIM_SIMULATOR
667NEED_MILENAGE=y
668endif
669
670ifdef NEED_MILENAGE
671OBJS += src/hlr_auc_gw/milenage.c
672endif
673
674ifndef CONFIG_TLS
675CONFIG_TLS=openssl
676endif
677
678ifeq ($(CONFIG_TLS), internal)
679ifndef CONFIG_CRYPTO
680CONFIG_CRYPTO=internal
681endif
682endif
683ifeq ($(CONFIG_CRYPTO), libtomcrypt)
684L_CFLAGS += -DCONFIG_INTERNAL_X509
685endif
686ifeq ($(CONFIG_CRYPTO), internal)
687L_CFLAGS += -DCONFIG_INTERNAL_X509
688endif
689
690
691ifdef TLS_FUNCS
692# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
693L_CFLAGS += -DEAP_TLS_FUNCS
694OBJS += src/eap_peer/eap_tls_common.c
695OBJS_h += src/eap_server/eap_tls_common.c
696NEED_TLS_PRF=y
697ifeq ($(CONFIG_TLS), openssl)
698L_CFLAGS += -DEAP_TLS_OPENSSL
699OBJS += src/crypto/tls_openssl.c
700LIBS += -lssl -lcrypto
701LIBS_p += -lcrypto
702endif
703ifeq ($(CONFIG_TLS), gnutls)
704OBJS += src/crypto/tls_gnutls.c
705LIBS += -lgnutls -lgcrypt -lgpg-error
706LIBS_p += -lgcrypt
707ifdef CONFIG_GNUTLS_EXTRA
708L_CFLAGS += -DCONFIG_GNUTLS_EXTRA
709LIBS += -lgnutls-extra
710endif
711endif
712ifeq ($(CONFIG_TLS), schannel)
713OBJS += src/crypto/tls_schannel.c
714endif
715ifeq ($(CONFIG_TLS), internal)
716OBJS += src/crypto/tls_internal.c
717OBJS += src/tls/tlsv1_common.c src/tls/tlsv1_record.c
718OBJS += src/tls/tlsv1_cred.c src/tls/tlsv1_client.c
719OBJS += src/tls/tlsv1_client_write.c src/tls/tlsv1_client_read.c
720OBJS += src/tls/asn1.c src/tls/rsa.c src/tls/x509v3.c
721OBJS_p += src/tls/asn1.c src/tls/rsa.c
722OBJS_p += src/crypto/rc4.c src/crypto/aes_wrap.c src/crypto/aes.c
723NEED_BASE64=y
724NEED_TLS_PRF=y
725L_CFLAGS += -DCONFIG_TLS_INTERNAL
726L_CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
727ifeq ($(CONFIG_CRYPTO), internal)
728endif
729ifeq ($(CONFIG_CRYPTO), libtomcrypt)
730LIBS += -ltomcrypt -ltfm
731LIBS_p += -ltomcrypt -ltfm
732endif
733endif
734ifeq ($(CONFIG_TLS), none)
735OBJS += src/crypto/tls_none.c
736L_CFLAGS += -DEAP_TLS_NONE
737CONFIG_INTERNAL_AES=y
738CONFIG_INTERNAL_SHA1=y
739CONFIG_INTERNAL_MD5=y
740CONFIG_INTERNAL_SHA256=y
741endif
742ifdef CONFIG_SMARTCARD
743ifndef CONFIG_NATIVE_WINDOWS
744ifneq ($(CONFIG_L2_PACKET), freebsd)
745LIBS += -ldl
746endif
747endif
748endif
749NEED_CRYPTO=y
750else
751OBJS += src/crypto/tls_none.c
752endif
753
754ifdef CONFIG_PKCS12
755L_CFLAGS += -DPKCS12_FUNCS
756endif
757
758ifdef CONFIG_SMARTCARD
759L_CFLAGS += -DCONFIG_SMARTCARD
760endif
761
762ifdef MS_FUNCS
763OBJS += src/crypto/ms_funcs.c
764NEED_CRYPTO=y
765endif
766
767ifdef CHAP
768OBJS += src/eap_common/chap.c
769endif
770
771ifdef NEED_CRYPTO
772ifndef TLS_FUNCS
773ifeq ($(CONFIG_TLS), openssl)
774LIBS += -lcrypto
775LIBS_p += -lcrypto
776endif
777ifeq ($(CONFIG_TLS), gnutls)
778LIBS += -lgcrypt
779LIBS_p += -lgcrypt
780endif
781ifeq ($(CONFIG_TLS), schannel)
782endif
783ifeq ($(CONFIG_TLS), internal)
784ifeq ($(CONFIG_CRYPTO), libtomcrypt)
785LIBS += -ltomcrypt -ltfm
786LIBS_p += -ltomcrypt -ltfm
787endif
788endif
789endif
790ifeq ($(CONFIG_TLS), openssl)
791OBJS += src/crypto/crypto_openssl.c
792OBJS_p += src/crypto/crypto_openssl.c
793CONFIG_INTERNAL_SHA256=y
794endif
795ifeq ($(CONFIG_TLS), gnutls)
796OBJS += src/crypto/crypto_gnutls.c
797OBJS_p += src/crypto/crypto_gnutls.c
798CONFIG_INTERNAL_SHA256=y
799endif
800ifeq ($(CONFIG_TLS), schannel)
801OBJS += src/crypto/crypto_cryptoapi.c
802OBJS_p += src/crypto/crypto_cryptoapi.c
803CONFIG_INTERNAL_SHA256=y
804endif
805ifeq ($(CONFIG_TLS), internal)
806ifeq ($(CONFIG_CRYPTO), libtomcrypt)
807OBJS += src/crypto/crypto_libtomcrypt.c
808OBJS_p += src/crypto/crypto_libtomcrypt.c
809CONFIG_INTERNAL_SHA256=y
810endif
811ifeq ($(CONFIG_CRYPTO), internal)
812OBJS += src/crypto/crypto_internal.c src/tls/bignum.c
813OBJS_p += src/crypto/crypto_internal.c src/tls/bignum.c
814L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL
815ifdef CONFIG_INTERNAL_LIBTOMMATH
816L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
817ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
818L_CFLAGS += -DLTM_FAST
819endif
820else
821LIBS += -ltommath
822LIBS_p += -ltommath
823endif
824CONFIG_INTERNAL_AES=y
825CONFIG_INTERNAL_DES=y
826CONFIG_INTERNAL_SHA1=y
827CONFIG_INTERNAL_MD4=y
828CONFIG_INTERNAL_MD5=y
829CONFIG_INTERNAL_SHA256=y
830endif
831ifeq ($(CONFIG_CRYPTO), cryptoapi)
832OBJS += src/crypto/crypto_cryptoapi.c
833OBJS_p += src/crypto/crypto_cryptoapi.c
834L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
835CONFIG_INTERNAL_SHA256=y
836endif
837endif
838ifeq ($(CONFIG_TLS), none)
839OBJS += src/crypto/crypto_none.c
840OBJS_p += src/crypto/crypto_none.c
841CONFIG_INTERNAL_SHA256=y
842endif
843else
844CONFIG_INTERNAL_AES=y
845CONFIG_INTERNAL_SHA1=y
846CONFIG_INTERNAL_MD5=y
847endif
848
849ifdef CONFIG_INTERNAL_AES
850L_CFLAGS += -DINTERNAL_AES
851endif
852ifdef CONFIG_INTERNAL_SHA1
853L_CFLAGS += -DINTERNAL_SHA1
854endif
855ifdef CONFIG_INTERNAL_SHA256
856L_CFLAGS += -DINTERNAL_SHA256
857endif
858ifdef CONFIG_INTERNAL_MD5
859L_CFLAGS += -DINTERNAL_MD5
860endif
861ifdef CONFIG_INTERNAL_MD4
862L_CFLAGS += -DINTERNAL_MD4
863endif
864ifdef CONFIG_INTERNAL_DES
865L_CFLAGS += -DINTERNAL_DES
866endif
867
868ifdef CONFIG_IEEE80211R
869NEED_SHA256=y
870endif
871
872ifdef CONFIG_IEEE80211W
873L_CFLAGS += -DCONFIG_IEEE80211W
874NEED_SHA256=y
875endif
876
877ifdef NEED_SHA256
878OBJS += src/crypto/sha256.c
879L_CFLAGS += -DNEED_SHA256
880endif
881
882ifdef CONFIG_WIRELESS_EXTENSION
883OBJS_d += src/drivers/driver_wext.c
884endif
885
886ifdef CONFIG_CTRL_IFACE
887ifeq ($(CONFIG_CTRL_IFACE), y)
888ifdef CONFIG_NATIVE_WINDOWS
889CONFIG_CTRL_IFACE=named_pipe
890else
891CONFIG_CTRL_IFACE=unix
892endif
893endif
894L_CFLAGS += -DCONFIG_CTRL_IFACE
895ifeq ($(CONFIG_CTRL_IFACE), unix)
896L_CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
897endif
898ifeq ($(CONFIG_CTRL_IFACE), udp)
899L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP
900endif
901ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
902L_CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
903endif
904OBJS += ctrl_iface.c ctrl_iface_$(CONFIG_CTRL_IFACE).c
905endif
906
907ifdef CONFIG_CTRL_IFACE_DBUS
908L_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
909OBJS += ctrl_iface_dbus.c ctrl_iface_dbus_handlers.c dbus_dict_helpers.c
910ifndef DBUS_LIBS
911DBUS_LIBS := $(shell pkg-config --libs dbus-1)
912endif
913LIBS += $(DBUS_LIBS)
914ifndef DBUS_INCLUDE
915DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1)
916endif
917dbus_version=$(subst ., ,$(shell pkg-config --modversion dbus-1))
918DBUS_VERSION_MAJOR=$(word 1,$(dbus_version))
919DBUS_VERSION_MINOR=$(word 2,$(dbus_version))
920ifeq ($(DBUS_VERSION_MAJOR),)
921DBUS_VERSION_MAJOR=0
922endif
923ifeq ($(DBUS_VERSION_MINOR),)
924DBUS_VERSION_MINOR=0
925endif
926DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR)
927DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR)
928L_CFLAGS += $(DBUS_INCLUDE)
929endif
930
931ifdef CONFIG_READLINE
932L_CFLAGS += -DCONFIG_READLINE
933LIBS_c += -lncurses -lreadline
934endif
935
936ifdef CONFIG_NATIVE_WINDOWS
937L_CFLAGS += -DCONFIG_NATIVE_WINDOWS
938LIBS += -lws2_32 -lgdi32 -lcrypt32
939LIBS_c += -lws2_32
940LIBS_p += -lws2_32 -lgdi32
941ifeq ($(CONFIG_CRYPTO), cryptoapi)
942LIBS_p += -lcrypt32
943endif
944endif
945
946ifdef CONFIG_NO_STDOUT_DEBUG
947L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
948ifndef CONFIG_CTRL_IFACE
949L_CFLAGS += -DCONFIG_NO_WPA_MSG
950endif
951endif
952
953ifdef CONFIG_IPV6
954# for eapol_test only
955L_CFLAGS += -DCONFIG_IPV6
956endif
957
958ifdef CONFIG_PEERKEY
959L_CFLAGS += -DCONFIG_PEERKEY
960endif
961
962ifdef CONFIG_IEEE80211R
963L_CFLAGS += -DCONFIG_IEEE80211R
964OBJS += src/rsn_supp/wpa_ft.c
965endif
966
967ifndef CONFIG_NO_WPA
968OBJS += src/rsn_supp/wpa.c
969OBJS += src/rsn_supp/preauth.c
970OBJS += src/rsn_supp/pmksa_cache.c
971OBJS += src/rsn_supp/peerkey.c
972OBJS += src/rsn_supp/wpa_ie.c
973OBJS += src/common/wpa_common.c
974NEED_AES=y
975else
976L_CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2
977endif
978
979ifdef CONFIG_NO_WPA2
980L_CFLAGS += -DCONFIG_NO_WPA2
981endif
982
983ifdef CONFIG_NO_WPA_PASSPHRASE
984L_CFLAGS += -DCONFIG_NO_PBKDF2
985endif
986
987ifdef CONFIG_NO_AES_EXTRAS
988L_CFLAGS += -DCONFIG_NO_AES_WRAP
989L_CFLAGS += -DCONFIG_NO_AES_CTR -DCONFIG_NO_AES_OMAC1
990L_CFLAGS += -DCONFIG_NO_AES_EAX -DCONFIG_NO_AES_CBC
991L_CFLAGS += -DCONFIG_NO_AES_ENCRYPT
992L_CFLAGS += -DCONFIG_NO_AES_ENCRYPT_BLOCK
993endif
994
995ifdef NEED_AES
996OBJS += src/crypto/aes_wrap.c src/crypto/aes.c
997endif
998
999ifdef NEED_DH_GROUPS
1000OBJS += src/crypto/dh_groups.c
1001ifdef NEED_DH_GROUPS_ALL
1002L_CFLAGS += -DALL_DH_GROUPS
1003endif
1004endif
1005
1006ifndef NEED_FIPS186_2_PRF
1007L_CFLAGS += -DCONFIG_NO_FIPS186_2_PRF
1008endif
1009
1010ifndef NEED_T_PRF
1011L_CFLAGS += -DCONFIG_NO_T_PRF
1012endif
1013
1014ifndef NEED_TLS_PRF
1015L_CFLAGS += -DCONFIG_NO_TLS_PRF
1016endif
1017
1018ifdef NEED_BASE64
1019OBJS += src/utils/base64.c
1020endif
1021
1022ifdef CONFIG_CLIENT_MLME
1023OBJS += mlme.c src/common/ieee802_11_common.c
1024L_CFLAGS += -DCONFIG_CLIENT_MLME
1025endif
1026
1027ifndef CONFIG_MAIN
1028CONFIG_MAIN=main
1029endif
1030
1031ifdef CONFIG_DEBUG_FILE
1032L_CFLAGS += -DCONFIG_DEBUG_FILE
1033endif
1034
1035ifdef CONFIG_ANDROID_LOG
1036L_CFLAGS += -DCONFIG_ANDROID_LOG
1037endif
1038
1039ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1040L_CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1041endif
1042
1043OBJS += src/drivers/scan_helpers.c
1044
1045OBJS_wpa_rm := ctrl_iface.c mlme.c ctrl_iface_unix.c
1046OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.c
1047ifdef CONFIG_AUTHENTICATOR
1048OBJS_wpa += tests/link_test.c
1049endif
1050OBJS_wpa += $(OBJS_l2)
1051OBJS += wpa_supplicant.c events.c blacklist.c wpas_glue.c scan.c
1052OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.c src/radius/radius.c src/radius/radius_client.c
1053OBJS_t += src/utils/ip_addr.c
1054OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.c
1055OBJS += $(CONFIG_MAIN).c
1056
1057ifdef CONFIG_PRIVSEP
1058OBJS_priv += $(OBJS_d) src/drivers/drivers.c src/drivers/scan_helpers.c
1059OBJS_priv += $(OBJS_l2)
1060OBJS_priv += src/utils/os_$(CONFIG_OS).c
1061OBJS_priv += src/utils/$(CONFIG_ELOOP).c
1062OBJS_priv += src/utils/common.c
1063OBJS_priv += src/utils/wpa_debug.c
1064OBJS_priv += src/utils/wpabuf.c
1065OBJS_priv += wpa_priv.c
1066ifdef CONFIG_DRIVER_TEST
1067OBJS_priv += src/crypto/sha1.c
1068OBJS_priv += src/crypto/md5.c
1069ifeq ($(CONFIG_TLS), openssl)
1070OBJS_priv += src/crypto/crypto_openssl.c
1071endif
1072ifeq ($(CONFIG_TLS), gnutls)
1073OBJS_priv += src/crypto/crypto_gnutls.c
1074endif
1075ifeq ($(CONFIG_TLS), internal)
1076ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1077OBJS_priv += src/crypto/crypto_libtomcrypt.c
1078else
1079OBJS_priv += src/crypto/crypto_internal.c
1080endif
1081endif
1082endif # CONFIG_DRIVER_TEST
1083OBJS += src/l2_packet/l2_packet_privsep.c
1084OBJS += src/drivers/driver_privsep.c
1085EXTRA_progs += wpa_priv
1086else
1087OBJS += $(OBJS_d) src/drivers/drivers.c
1088OBJS += $(OBJS_l2)
1089endif
1090
1091ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1092L_CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1093OBJS += src/drivers/ndis_events.c
1094EXTRALIBS += -loleaut32 -lole32 -luuid
1095ifdef PLATFORMSDKLIB
1096EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1097else
1098EXTRALIBS += WbemUuid.Lib
1099endif
1100endif
1101
1102ifndef LDO
1103LDO=$(CC)
1104endif
1105
1106ifeq ($(WPA_BUILD_SUPPLICANT),true)
1107
1108########################
1109
1110include $(CLEAR_VARS)
1111LOCAL_MODULE := wpa_cli
1112LOCAL_MODULE_TAGS := debug
1113LOCAL_SHARED_LIBRARIES := libc libcutils
1114LOCAL_CFLAGS := $(L_CFLAGS)
1115LOCAL_SRC_FILES := $(OBJS_c)
1116LOCAL_C_INCLUDES := $(INCLUDES)
1117include $(BUILD_EXECUTABLE)
1118
1119########################
1120include $(CLEAR_VARS)
1121LOCAL_MODULE := wpa_supplicant
1122ifdef CONFIG_DRIVER_CUSTOM
1123LOCAL_STATIC_LIBRARIES := libCustomWifi
1124endif
1125ifneq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),)
1126LOCAL_STATIC_LIBRARIES += $(BOARD_WPA_SUPPLICANT_PRIVATE_LIB)
1127endif
1128LOCAL_SHARED_LIBRARIES := libc libcutils libcrypto libssl
1129LOCAL_CFLAGS := $(L_CFLAGS)
1130LOCAL_SRC_FILES := $(OBJS)
1131LOCAL_C_INCLUDES := $(INCLUDES)
1132include $(BUILD_EXECUTABLE)
1133
1134########################
1135#
1136#include $(CLEAR_VARS)
1137#LOCAL_MODULE := eapol_test
1138#ifdef CONFIG_DRIVER_CUSTOM
1139#LOCAL_STATIC_LIBRARIES := libCustomWifi
1140#endif
1141#LOCAL_SHARED_LIBRARIES := libc libcrypto libssl
1142#LOCAL_CFLAGS := $(L_CFLAGS)
1143#LOCAL_SRC_FILES := $(OBJS_t)
1144#LOCAL_C_INCLUDES := $(INCLUDES)
1145#include $(BUILD_EXECUTABLE)
1146#
1147########################
1148#
1149#local_target_dir := $(TARGET_OUT)/etc/wifi
1150#
1151#include $(CLEAR_VARS)
1152#LOCAL_MODULE := wpa_supplicant.conf
1153#LOCAL_MODULE_CLASS := ETC
1154#LOCAL_MODULE_PATH := $(local_target_dir)
1155#LOCAL_SRC_FILES := $(LOCAL_MODULE)
1156#include $(BUILD_PREBUILT)
1157#
1158########################
1159
1160endif # ifeq ($(WPA_BUILD_SUPPLICANT),true)
1161
1162include $(CLEAR_VARS)
1163LOCAL_MODULE = libwpa_client
1164LOCAL_CFLAGS = $(L_CFLAGS)
1165LOCAL_SRC_FILES = src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c
1166LOCAL_C_INCLUDES = $(INCLUDES)
1167LOCAL_SHARED_LIBRARIES := libcutils
1168LOCAL_COPY_HEADERS_TO := libwpa_client
1169LOCAL_COPY_HEADERS := src/common/wpa_ctrl.h
1170include $(BUILD_SHARED_LIBRARY)
1171