blob: b97c9a3a533a807104f16baeaac75356e39a5e14 [file] [log] [blame]
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001#
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)
Dmitry Shmidtc55524a2011-07-07 11:18:38 -070019PKG_CONFIG ?= pkg-config
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070020
21WPA_BUILD_SUPPLICANT := false
Jeff Brownbbda6272011-07-11 22:12:15 -070022ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),)
23 WPA_BUILD_SUPPLICANT := true
24 CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) := y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070025endif
26
Dmitry Shmidte61a2d62011-06-27 10:59:51 -070027ifeq ($(WPA_BUILD_SUPPLICANT),true)
28
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070029include $(LOCAL_PATH)/.config
30
31# To ignore possible wrong network configurations
32L_CFLAGS = -DWPA_IGNORE_CONFIG_ERRORS
33
34# Use Android specific directory for control interface sockets
35L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\"
36L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/system/wpa_supplicant\"
37
38# To force sizeof(enum) = 4
39ifeq ($(TARGET_ARCH),arm)
40L_CFLAGS += -mabi=aapcs-linux
41endif
42
43# To allow non-ASCII characters in SSID
44L_CFLAGS += -DWPA_UNICODE_SSID
45
46# OpenSSL is configured without engines on Android
47L_CFLAGS += -DOPENSSL_NO_ENGINE
48
49INCLUDES = $(LOCAL_PATH)
50INCLUDES += $(LOCAL_PATH)/src
51INCLUDES += $(LOCAL_PATH)/src/common
52# INCLUDES += $(LOCAL_PATH)/src/crypto # To force proper includes
53INCLUDES += $(LOCAL_PATH)/src/drivers
54INCLUDES += $(LOCAL_PATH)/src/eap_common
55INCLUDES += $(LOCAL_PATH)/src/eapol_supp
56INCLUDES += $(LOCAL_PATH)/src/eap_peer
57INCLUDES += $(LOCAL_PATH)/src/eap_server
58INCLUDES += $(LOCAL_PATH)/src/hlr_auc_gw
59INCLUDES += $(LOCAL_PATH)/src/l2_packet
60INCLUDES += $(LOCAL_PATH)/src/radius
61INCLUDES += $(LOCAL_PATH)/src/rsn_supp
62INCLUDES += $(LOCAL_PATH)/src/tls
63INCLUDES += $(LOCAL_PATH)/src/utils
64INCLUDES += $(LOCAL_PATH)/src/wps
65INCLUDES += external/openssl/include
66INCLUDES += frameworks/base/cmds/keystore
67ifdef CONFIG_DRIVER_NL80211
Dmitry Shmidt13970b02011-06-30 16:51:41 -070068INCLUDES += system/core/libnl_2/include
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070069endif
70
71OBJS = config.c
72OBJS += notify.c
73OBJS += bss.c
74OBJS += eap_register.c
75OBJS += src/utils/common.c
76OBJS += src/utils/wpa_debug.c
77OBJS += src/utils/wpabuf.c
78OBJS_p = wpa_passphrase.c
79OBJS_p += src/utils/common.c
80OBJS_p += src/utils/wpa_debug.c
81OBJS_p += src/utils/wpabuf.c
82OBJS_c = wpa_cli.c src/common/wpa_ctrl.c
83OBJS_c += src/utils/wpa_debug.c
84OBJS_d =
85OBJS_priv =
86
87ifndef CONFIG_OS
88ifdef CONFIG_NATIVE_WINDOWS
89CONFIG_OS=win32
90else
91CONFIG_OS=unix
92endif
93endif
94
95ifeq ($(CONFIG_OS), internal)
96L_CFLAGS += -DOS_NO_C_LIB_DEFINES
97endif
98
99OBJS += src/utils/os_$(CONFIG_OS).c
100OBJS_p += src/utils/os_$(CONFIG_OS).c
101OBJS_c += src/utils/os_$(CONFIG_OS).c
102
103ifdef CONFIG_WPA_TRACE
104L_CFLAGS += -DWPA_TRACE
105OBJS += src/utils/trace.c
106OBJS_p += src/utils/trace.c
107OBJS_c += src/utils/trace.c
108LDFLAGS += -rdynamic
109L_CFLAGS += -funwind-tables
110ifdef CONFIG_WPA_TRACE_BFD
111L_CFLAGS += -DWPA_TRACE_BFD
112LIBS += -lbfd
113LIBS_p += -lbfd
114LIBS_c += -lbfd
115endif
116endif
117
118ifndef CONFIG_ELOOP
119CONFIG_ELOOP=eloop
120endif
121OBJS += src/utils/$(CONFIG_ELOOP).c
122OBJS_c += src/utils/$(CONFIG_ELOOP).c
123
124
125ifdef CONFIG_EAPOL_TEST
126L_CFLAGS += -Werror -DEAPOL_TEST
127endif
128
129ifndef CONFIG_BACKEND
130CONFIG_BACKEND=file
131endif
132
133ifeq ($(CONFIG_BACKEND), file)
134OBJS += config_file.c
135ifndef CONFIG_NO_CONFIG_BLOBS
136NEED_BASE64=y
137endif
138L_CFLAGS += -DCONFIG_BACKEND_FILE
139endif
140
141ifeq ($(CONFIG_BACKEND), winreg)
142OBJS += config_winreg.c
143endif
144
145ifeq ($(CONFIG_BACKEND), none)
146OBJS += config_none.c
147endif
148
149ifdef CONFIG_NO_CONFIG_WRITE
150L_CFLAGS += -DCONFIG_NO_CONFIG_WRITE
151endif
152
153ifdef CONFIG_NO_CONFIG_BLOBS
154L_CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
155endif
156
157ifdef CONFIG_NO_SCAN_PROCESSING
158L_CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
159endif
160
161ifdef CONFIG_IEEE80211W
162L_CFLAGS += -DCONFIG_IEEE80211W
163NEED_SHA256=y
164NEED_AES_OMAC1=y
165endif
166
167ifdef CONFIG_IEEE80211R
168L_CFLAGS += -DCONFIG_IEEE80211R
169OBJS += src/rsn_supp/wpa_ft.c
170NEED_80211_COMMON=y
171NEED_SHA256=y
172NEED_AES_OMAC1=y
173endif
174
Dmitry Shmidt405b5af2011-05-09 14:53:38 -0700175ifdef CONFIG_TDLS
176L_CFLAGS += -DCONFIG_TDLS
177OBJS += src/rsn_supp/tdls.o
178NEED_SHA256=y
179NEED_AES_OMAC1=y
180endif
181
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700182ifdef CONFIG_PEERKEY
183L_CFLAGS += -DCONFIG_PEERKEY
184endif
185
186ifndef CONFIG_NO_WPA
187OBJS += src/rsn_supp/wpa.c
188OBJS += src/rsn_supp/preauth.c
189OBJS += src/rsn_supp/pmksa_cache.c
190OBJS += src/rsn_supp/peerkey.c
191OBJS += src/rsn_supp/wpa_ie.c
192OBJS += src/common/wpa_common.c
193NEED_AES=y
194NEED_SHA1=y
195NEED_MD5=y
196NEED_RC4=y
197else
198L_CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2
199endif
200
201ifdef CONFIG_IBSS_RSN
202NEED_RSN_AUTHENTICATOR=y
203L_CFLAGS += -DCONFIG_IBSS_RSN
204OBJS += ibss_rsn.c
205endif
206
207ifdef CONFIG_P2P
208OBJS += p2p_supplicant.c
209OBJS += src/p2p/p2p.c
210OBJS += src/p2p/p2p_utils.c
211OBJS += src/p2p/p2p_parse.c
212OBJS += src/p2p/p2p_build.c
213OBJS += src/p2p/p2p_go_neg.c
214OBJS += src/p2p/p2p_sd.c
215OBJS += src/p2p/p2p_pd.c
216OBJS += src/p2p/p2p_invitation.c
217OBJS += src/p2p/p2p_dev_disc.c
218OBJS += src/p2p/p2p_group.c
219OBJS += src/ap/p2p_hostapd.c
220L_CFLAGS += -DCONFIG_P2P
221NEED_80211_COMMON=y
222ifdef CONFIG_P2P_STRICT
223L_CFLAGS += -DCONFIG_P2P_STRICT
224endif
225endif
226
227ifdef CONFIG_NO_WPA2
228L_CFLAGS += -DCONFIG_NO_WPA2
229endif
230
231include $(LOCAL_PATH)/src/drivers/drivers.mk
232
233ifdef CONFIG_AP
234OBJS_d += $(DRV_BOTH_OBJS)
235L_CFLAGS += $(DRV_BOTH_CFLAGS)
236LDFLAGS += $(DRV_BOTH_LDFLAGS)
237LIBS += $(DRV_BOTH_LIBS)
238else
239NEED_AP_MLME=
240OBJS_d += $(DRV_WPA_OBJS)
241L_CFLAGS += $(DRV_WPA_CFLAGS)
242LDFLAGS += $(DRV_WPA_LDFLAGS)
243LIBS += $(DRV_WPA_LIBS)
244endif
245
246ifndef CONFIG_L2_PACKET
247CONFIG_L2_PACKET=linux
248endif
249
250OBJS_l2 += src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).c
251
252ifeq ($(CONFIG_L2_PACKET), pcap)
253ifdef CONFIG_WINPCAP
254L_CFLAGS += -DCONFIG_WINPCAP
255LIBS += -lwpcap -lpacket
256LIBS_w += -lwpcap
257else
258LIBS += -ldnet -lpcap
259endif
260endif
261
262ifeq ($(CONFIG_L2_PACKET), winpcap)
263LIBS += -lwpcap -lpacket
264LIBS_w += -lwpcap
265endif
266
267ifeq ($(CONFIG_L2_PACKET), freebsd)
268LIBS += -lpcap
269endif
270
271ifdef CONFIG_EAP_TLS
272# EAP-TLS
273ifeq ($(CONFIG_EAP_TLS), dyn)
274L_CFLAGS += -DEAP_TLS_DYNAMIC
275EAPDYN += src/eap_peer/eap_tls.so
276else
277L_CFLAGS += -DEAP_TLS
278OBJS += src/eap_peer/eap_tls.c
279OBJS_h += src/eap_server/eap_server_tls.c
280endif
281TLS_FUNCS=y
282CONFIG_IEEE8021X_EAPOL=y
283endif
284
285ifdef CONFIG_EAP_PEAP
286# EAP-PEAP
287ifeq ($(CONFIG_EAP_PEAP), dyn)
288L_CFLAGS += -DEAP_PEAP_DYNAMIC
289EAPDYN += src/eap_peer/eap_peap.so
290else
291L_CFLAGS += -DEAP_PEAP
292OBJS += src/eap_peer/eap_peap.c
293OBJS += src/eap_common/eap_peap_common.c
294OBJS_h += src/eap_server/eap_server_peap.c
295endif
296TLS_FUNCS=y
297CONFIG_IEEE8021X_EAPOL=y
298endif
299
300ifdef CONFIG_EAP_TTLS
301# EAP-TTLS
302ifeq ($(CONFIG_EAP_TTLS), dyn)
303L_CFLAGS += -DEAP_TTLS_DYNAMIC
304EAPDYN += src/eap_peer/eap_ttls.so
305else
306L_CFLAGS += -DEAP_TTLS
307OBJS += src/eap_peer/eap_ttls.c
308OBJS_h += src/eap_server/eap_server_ttls.c
309endif
310MS_FUNCS=y
311TLS_FUNCS=y
312CHAP=y
313CONFIG_IEEE8021X_EAPOL=y
314endif
315
316ifdef CONFIG_EAP_MD5
317# EAP-MD5
318ifeq ($(CONFIG_EAP_MD5), dyn)
319L_CFLAGS += -DEAP_MD5_DYNAMIC
320EAPDYN += src/eap_peer/eap_md5.so
321else
322L_CFLAGS += -DEAP_MD5
323OBJS += src/eap_peer/eap_md5.c
324OBJS_h += src/eap_server/eap_server_md5.c
325endif
326CHAP=y
327CONFIG_IEEE8021X_EAPOL=y
328endif
329
330# backwards compatibility for old spelling
331ifdef CONFIG_MSCHAPV2
332ifndef CONFIG_EAP_MSCHAPV2
333CONFIG_EAP_MSCHAPV2=y
334endif
335endif
336
337ifdef CONFIG_EAP_MSCHAPV2
338# EAP-MSCHAPv2
339ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
340L_CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
341EAPDYN += src/eap_peer/eap_mschapv2.so
342EAPDYN += src/eap_peer/mschapv2.so
343else
344L_CFLAGS += -DEAP_MSCHAPv2
345OBJS += src/eap_peer/eap_mschapv2.c
346OBJS += src/eap_peer/mschapv2.c
347OBJS_h += src/eap_server/eap_server_mschapv2.c
348endif
349MS_FUNCS=y
350CONFIG_IEEE8021X_EAPOL=y
351endif
352
353ifdef CONFIG_EAP_GTC
354# EAP-GTC
355ifeq ($(CONFIG_EAP_GTC), dyn)
356L_CFLAGS += -DEAP_GTC_DYNAMIC
357EAPDYN += src/eap_peer/eap_gtc.so
358else
359L_CFLAGS += -DEAP_GTC
360OBJS += src/eap_peer/eap_gtc.c
361OBJS_h += src/eap_server/eap_server_gtc.c
362endif
363CONFIG_IEEE8021X_EAPOL=y
364endif
365
366ifdef CONFIG_EAP_OTP
367# EAP-OTP
368ifeq ($(CONFIG_EAP_OTP), dyn)
369L_CFLAGS += -DEAP_OTP_DYNAMIC
370EAPDYN += src/eap_peer/eap_otp.so
371else
372L_CFLAGS += -DEAP_OTP
373OBJS += src/eap_peer/eap_otp.c
374endif
375CONFIG_IEEE8021X_EAPOL=y
376endif
377
378ifdef CONFIG_EAP_SIM
379# EAP-SIM
380ifeq ($(CONFIG_EAP_SIM), dyn)
381L_CFLAGS += -DEAP_SIM_DYNAMIC
382EAPDYN += src/eap_peer/eap_sim.so
383else
384L_CFLAGS += -DEAP_SIM
385OBJS += src/eap_peer/eap_sim.c
386OBJS_h += src/eap_server/eap_server_sim.c
387endif
388CONFIG_IEEE8021X_EAPOL=y
389CONFIG_EAP_SIM_COMMON=y
390NEED_AES_CBC=y
391endif
392
393ifdef CONFIG_EAP_LEAP
394# EAP-LEAP
395ifeq ($(CONFIG_EAP_LEAP), dyn)
396L_CFLAGS += -DEAP_LEAP_DYNAMIC
397EAPDYN += src/eap_peer/eap_leap.so
398else
399L_CFLAGS += -DEAP_LEAP
400OBJS += src/eap_peer/eap_leap.c
401endif
402MS_FUNCS=y
403CONFIG_IEEE8021X_EAPOL=y
404endif
405
406ifdef CONFIG_EAP_PSK
407# EAP-PSK
408ifeq ($(CONFIG_EAP_PSK), dyn)
409L_CFLAGS += -DEAP_PSK_DYNAMIC
410EAPDYN += src/eap_peer/eap_psk.so
411else
412L_CFLAGS += -DEAP_PSK
413OBJS += src/eap_peer/eap_psk.c src/eap_common/eap_psk_common.c
414OBJS_h += src/eap_server/eap_server_psk.c
415endif
416CONFIG_IEEE8021X_EAPOL=y
417NEED_AES=y
418NEED_AES_OMAC1=y
419NEED_AES_ENCBLOCK=y
420NEED_AES_EAX=y
421endif
422
423ifdef CONFIG_EAP_AKA
424# EAP-AKA
425ifeq ($(CONFIG_EAP_AKA), dyn)
426L_CFLAGS += -DEAP_AKA_DYNAMIC
427EAPDYN += src/eap_peer/eap_aka.so
428else
429L_CFLAGS += -DEAP_AKA
430OBJS += src/eap_peer/eap_aka.c
431OBJS_h += src/eap_server/eap_server_aka.c
432endif
433CONFIG_IEEE8021X_EAPOL=y
434CONFIG_EAP_SIM_COMMON=y
435NEED_AES_CBC=y
436endif
437
438ifdef CONFIG_EAP_AKA_PRIME
439# EAP-AKA'
440ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
441L_CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
442else
443L_CFLAGS += -DEAP_AKA_PRIME
444endif
445NEED_SHA256=y
446endif
447
448ifdef CONFIG_EAP_SIM_COMMON
449OBJS += src/eap_common/eap_sim_common.c
450OBJS_h += src/eap_server/eap_sim_db.c
451NEED_AES=y
452NEED_FIPS186_2_PRF=y
453endif
454
455ifdef CONFIG_EAP_FAST
456# EAP-FAST
457ifeq ($(CONFIG_EAP_FAST), dyn)
458L_CFLAGS += -DEAP_FAST_DYNAMIC
459EAPDYN += src/eap_peer/eap_fast.so
460EAPDYN += src/eap_common/eap_fast_common.c
461else
462L_CFLAGS += -DEAP_FAST
463OBJS += src/eap_peer/eap_fast.c src/eap_peer/eap_fast_pac.c
464OBJS += src/eap_common/eap_fast_common.c
465OBJS_h += src/eap_server/eap_server_fast.c
466endif
467TLS_FUNCS=y
468CONFIG_IEEE8021X_EAPOL=y
469NEED_T_PRF=y
470endif
471
472ifdef CONFIG_EAP_PAX
473# EAP-PAX
474ifeq ($(CONFIG_EAP_PAX), dyn)
475L_CFLAGS += -DEAP_PAX_DYNAMIC
476EAPDYN += src/eap_peer/eap_pax.so
477else
478L_CFLAGS += -DEAP_PAX
479OBJS += src/eap_peer/eap_pax.c src/eap_common/eap_pax_common.c
480OBJS_h += src/eap_server/eap_server_pax.c
481endif
482CONFIG_IEEE8021X_EAPOL=y
483endif
484
485ifdef CONFIG_EAP_SAKE
486# EAP-SAKE
487ifeq ($(CONFIG_EAP_SAKE), dyn)
488L_CFLAGS += -DEAP_SAKE_DYNAMIC
489EAPDYN += src/eap_peer/eap_sake.so
490else
491L_CFLAGS += -DEAP_SAKE
492OBJS += src/eap_peer/eap_sake.c src/eap_common/eap_sake_common.c
493OBJS_h += src/eap_server/eap_server_sake.c
494endif
495CONFIG_IEEE8021X_EAPOL=y
496endif
497
498ifdef CONFIG_EAP_GPSK
499# EAP-GPSK
500ifeq ($(CONFIG_EAP_GPSK), dyn)
501L_CFLAGS += -DEAP_GPSK_DYNAMIC
502EAPDYN += src/eap_peer/eap_gpsk.so
503else
504L_CFLAGS += -DEAP_GPSK
505OBJS += src/eap_peer/eap_gpsk.c src/eap_common/eap_gpsk_common.c
506OBJS_h += src/eap_server/eap_server_gpsk.c
507endif
508CONFIG_IEEE8021X_EAPOL=y
509ifdef CONFIG_EAP_GPSK_SHA256
510L_CFLAGS += -DEAP_GPSK_SHA256
511endif
512NEED_SHA256=y
513NEED_AES_OMAC1=y
514endif
515
516ifdef CONFIG_EAP_PWD
517L_CFLAGS += -DEAP_PWD
518OBJS += src/eap_peer/eap_pwd.c src/eap_common/eap_pwd_common.c
519OBJS_h += src/eap_server/eap_pwd.c
520CONFIG_IEEE8021X_EAPOL=y
521NEED_SHA256=y
522endif
523
524ifdef CONFIG_WPS
525ifdef CONFIG_WPS2
526L_CFLAGS += -DCONFIG_WPS2
527endif
528
529# EAP-WSC
530L_CFLAGS += -DCONFIG_WPS -DEAP_WSC
531OBJS += wps_supplicant.c
532OBJS += src/utils/uuid.c
533OBJS += src/eap_peer/eap_wsc.c src/eap_common/eap_wsc_common.c
534OBJS += src/wps/wps.c
535OBJS += src/wps/wps_common.c
536OBJS += src/wps/wps_attr_parse.c
537OBJS += src/wps/wps_attr_build.c
538OBJS += src/wps/wps_attr_process.c
539OBJS += src/wps/wps_dev_attr.c
540OBJS += src/wps/wps_enrollee.c
541OBJS += src/wps/wps_registrar.c
542OBJS_h += src/eap_server/eap_server_wsc.c
543CONFIG_IEEE8021X_EAPOL=y
544NEED_DH_GROUPS=y
545NEED_SHA256=y
546NEED_BASE64=y
547NEED_80211_COMMON=y
548NEED_AES_CBC=y
549NEED_MODEXP=y
550
551ifdef CONFIG_WPS_UFD
552L_CFLAGS += -DCONFIG_WPS_UFD
553OBJS += src/wps/wps_ufd.c
554NEED_WPS_OOB=y
555endif
556
557ifdef CONFIG_WPS_NFC
558L_CFLAGS += -DCONFIG_WPS_NFC
559OBJS += src/wps/ndef.c
560OBJS += src/wps/wps_nfc.c
561NEED_WPS_OOB=y
562ifdef CONFIG_WPS_NFC_PN531
563PN531_PATH ?= /usr/local/src/nfc
564L_CFLAGS += -DCONFIG_WPS_NFC_PN531
565L_CFLAGS += -I${PN531_PATH}/inc
566OBJS += src/wps/wps_nfc_pn531.c
567LIBS += ${PN531_PATH}/lib/wpsnfc.dll
568LIBS += ${PN531_PATH}/lib/libnfc_mapping_pn53x.dll
569endif
570endif
571
572ifdef NEED_WPS_OOB
573L_CFLAGS += -DCONFIG_WPS_OOB
574endif
575
576ifdef CONFIG_WPS_ER
577CONFIG_WPS_UPNP=y
578L_CFLAGS += -DCONFIG_WPS_ER
579OBJS += src/wps/wps_er.c
580OBJS += src/wps/wps_er_ssdp.c
581endif
582
583ifdef CONFIG_WPS_UPNP
584L_CFLAGS += -DCONFIG_WPS_UPNP
585OBJS += src/wps/wps_upnp.c
586OBJS += src/wps/wps_upnp_ssdp.c
587OBJS += src/wps/wps_upnp_web.c
588OBJS += src/wps/wps_upnp_event.c
589OBJS += src/wps/wps_upnp_ap.c
590OBJS += src/wps/upnp_xml.c
591OBJS += src/wps/httpread.c
592OBJS += src/wps/http_client.c
593OBJS += src/wps/http_server.c
594endif
595
596ifdef CONFIG_WPS_STRICT
597L_CFLAGS += -DCONFIG_WPS_STRICT
598OBJS += src/wps/wps_validate.c
599endif
600
601ifdef CONFIG_WPS_TESTING
602L_CFLAGS += -DCONFIG_WPS_TESTING
603endif
604
605ifdef CONFIG_WPS_REG_DISABLE_OPEN
606L_CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN
607endif
608
609endif
610
611ifdef CONFIG_EAP_IKEV2
612# EAP-IKEv2
613ifeq ($(CONFIG_EAP_IKEV2), dyn)
614L_CFLAGS += -DEAP_IKEV2_DYNAMIC
615EAPDYN += src/eap_peer/eap_ikev2.so src/eap_peer/ikev2.c
616EAPDYN += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
617else
618L_CFLAGS += -DEAP_IKEV2
619OBJS += src/eap_peer/eap_ikev2.c src/eap_peer/ikev2.c
620OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
621OBJS_h += src/eap_server/eap_server_ikev2.c
622OBJS_h += src/eap_server/ikev2.c
623endif
624CONFIG_IEEE8021X_EAPOL=y
625NEED_DH_GROUPS=y
626NEED_DH_GROUPS_ALL=y
627NEED_MODEXP=y
628NEED_CIPHER=y
629endif
630
631ifdef CONFIG_EAP_VENDOR_TEST
632ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
633L_CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
634EAPDYN += src/eap_peer/eap_vendor_test.so
635else
636L_CFLAGS += -DEAP_VENDOR_TEST
637OBJS += src/eap_peer/eap_vendor_test.c
638OBJS_h += src/eap_server/eap_server_vendor_test.c
639endif
640CONFIG_IEEE8021X_EAPOL=y
641endif
642
643ifdef CONFIG_EAP_TNC
644# EAP-TNC
645L_CFLAGS += -DEAP_TNC
646OBJS += src/eap_peer/eap_tnc.c
647OBJS += src/eap_peer/tncc.c
648OBJS_h += src/eap_server/eap_server_tnc.c
649OBJS_h += src/eap_server/tncs.c
650NEED_BASE64=y
651ifndef CONFIG_NATIVE_WINDOWS
652ifndef CONFIG_DRIVER_BSD
653LIBS += -ldl
654endif
655endif
656endif
657
658ifdef CONFIG_IEEE8021X_EAPOL
659# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
660L_CFLAGS += -DIEEE8021X_EAPOL
661OBJS += src/eapol_supp/eapol_supp_sm.c
662OBJS += src/eap_peer/eap.c src/eap_peer/eap_methods.c
663NEED_EAP_COMMON=y
664ifdef CONFIG_DYNAMIC_EAP_METHODS
665L_CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
666LIBS += -ldl -rdynamic
667endif
668endif
669
670ifdef CONFIG_AP
671NEED_80211_COMMON=y
672NEED_EAP_COMMON=y
673NEED_RSN_AUTHENTICATOR=y
674L_CFLAGS += -DCONFIG_AP
675OBJS += ap.c
676L_CFLAGS += -DCONFIG_NO_RADIUS
677L_CFLAGS += -DCONFIG_NO_ACCOUNTING
678L_CFLAGS += -DCONFIG_NO_VLAN
679OBJS += src/ap/hostapd.c
680OBJS += src/ap/wpa_auth_glue.c
681OBJS += src/ap/utils.c
682OBJS += src/ap/authsrv.c
683OBJS += src/ap/ap_config.c
684OBJS += src/utils/ip_addr.c
685OBJS += src/ap/sta_info.c
686OBJS += src/ap/tkip_countermeasures.c
687OBJS += src/ap/ap_mlme.c
688OBJS += src/ap/ieee802_1x.c
689OBJS += src/eapol_auth/eapol_auth_sm.c
690OBJS += src/ap/ieee802_11_auth.c
691OBJS += src/ap/drv_callbacks.c
692OBJS += src/ap/ap_drv_ops.c
693ifdef CONFIG_IEEE80211N
694OBJS += src/ap/ieee802_11_ht.c
695endif
696ifdef CONFIG_CTRL_IFACE
697OBJS += src/ap/ctrl_iface_ap.c
698endif
699
700L_CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
701OBJS += src/eap_server/eap_server.c
702OBJS += src/eap_server/eap_server_identity.c
703OBJS += src/eap_server/eap_server_methods.c
704
705ifdef CONFIG_IEEE80211N
706L_CFLAGS += -DCONFIG_IEEE80211N
707endif
708
709ifdef NEED_AP_MLME
710OBJS += src/ap/beacon.c
711OBJS += src/ap/wmm.c
712OBJS += src/ap/ap_list.c
713OBJS += src/ap/ieee802_11.c
714OBJS += src/ap/hw_features.c
715L_CFLAGS += -DNEED_AP_MLME
716endif
717ifdef CONFIG_WPS
718L_CFLAGS += -DEAP_SERVER_WSC
719OBJS += src/ap/wps_hostapd.c
720OBJS += src/eap_server/eap_server_wsc.c
721endif
722endif
723
724ifdef NEED_RSN_AUTHENTICATOR
725L_CFLAGS += -DCONFIG_NO_RADIUS
726NEED_AES_WRAP=y
727OBJS += src/ap/wpa_auth.c
728OBJS += src/ap/wpa_auth_ie.c
729OBJS += src/ap/pmksa_cache_auth.c
730ifdef CONFIG_IEEE80211R
731OBJS += src/ap/wpa_auth_ft.c
732endif
733ifdef CONFIG_PEERKEY
734OBJS += src/ap/peerkey_auth.c
735endif
736endif
737
738ifdef CONFIG_EAP_SERVER
739L_CFLAGS += -DEAP_SERVER
740OBJS_h += src/eap_server/eap_server.c
741OBJS_h += src/eap_server/eap_server_identity.c
742OBJS_h += src/eap_server/eap_server_methods.c
743endif
744
745ifdef CONFIG_RADIUS_CLIENT
746OBJS_h += src/utils/ip_addr.c
747OBJS_h += src/radius/radius.c
748OBJS_h += src/radius/radius_client.c
749endif
750
751ifdef CONFIG_AUTHENTICATOR
752OBJS_h += src/eapol_auth/eapol_auth_sm.c
753OBJS_h += src/ap/ieee802_1x.c
754endif
755
756ifdef CONFIG_WPA_AUTHENTICATOR
757OBJS_h += src/ap/wpa_auth.c
758OBJS_h += src/ap/wpa_auth_ie.c
759OBJS_h += src/ap/pmksa_cache_auth.c
760ifdef CONFIG_IEEE80211R
761OBJS_h += src/ap/wpa_auth_ft.c
762endif
763ifdef CONFIG_PEERKEY
764OBJS_h += src/ap/peerkey_auth.c
765endif
766endif
767
768ifdef CONFIG_PCSC
769# PC/SC interface for smartcards (USIM, GSM SIM)
770L_CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
771OBJS += src/utils/pcsc_funcs.c
772# -lpthread may not be needed depending on how pcsc-lite was configured
773ifdef CONFIG_NATIVE_WINDOWS
774#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
775#dynamic symbol loading that is now used in pcsc_funcs.c
776#LIBS += -lwinscard
777else
778LIBS += -lpcsclite -lpthread
779endif
780endif
781
782ifdef CONFIG_SIM_SIMULATOR
783L_CFLAGS += -DCONFIG_SIM_SIMULATOR
784NEED_MILENAGE=y
785endif
786
787ifdef CONFIG_USIM_SIMULATOR
788L_CFLAGS += -DCONFIG_USIM_SIMULATOR
789NEED_MILENAGE=y
790endif
791
792ifdef NEED_MILENAGE
793OBJS += src/crypto/milenage.c
794endif
795
796ifdef CONFIG_PKCS12
797L_CFLAGS += -DPKCS12_FUNCS
798endif
799
800ifdef CONFIG_SMARTCARD
801L_CFLAGS += -DCONFIG_SMARTCARD
802endif
803
804ifdef MS_FUNCS
805OBJS += src/crypto/ms_funcs.c
806NEED_DES=y
807NEED_MD4=y
808endif
809
810ifdef CHAP
811OBJS += src/eap_common/chap.c
812endif
813
814ifdef TLS_FUNCS
815NEED_DES=y
816# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
817OBJS += src/eap_peer/eap_tls_common.c
818OBJS_h += src/eap_server/eap_server_tls_common.c
819NEED_TLS_PRF=y
820endif
821
822ifndef CONFIG_TLS
823CONFIG_TLS=openssl
824endif
825
826ifeq ($(CONFIG_TLS), openssl)
827ifdef TLS_FUNCS
828L_CFLAGS += -DEAP_TLS_OPENSSL
829OBJS += src/crypto/tls_openssl.c
830LIBS += -lssl
831endif
832OBJS += src/crypto/crypto_openssl.c
833OBJS_p += src/crypto/crypto_openssl.c
834ifdef NEED_FIPS186_2_PRF
835OBJS += src/crypto/fips_prf_openssl.c
836endif
837LIBS += -lcrypto
838LIBS_p += -lcrypto
839endif
840
841ifeq ($(CONFIG_TLS), gnutls)
842ifdef TLS_FUNCS
843OBJS += src/crypto/tls_gnutls.c
844LIBS += -lgnutls -lgpg-error
845ifdef CONFIG_GNUTLS_EXTRA
846L_CFLAGS += -DCONFIG_GNUTLS_EXTRA
847LIBS += -lgnutls-extra
848endif
849endif
850OBJS += src/crypto/crypto_gnutls.c
851OBJS_p += src/crypto/crypto_gnutls.c
852ifdef NEED_FIPS186_2_PRF
853OBJS += src/crypto/fips_prf_gnutls.c
854endif
855LIBS += -lgcrypt
856LIBS_p += -lgcrypt
857CONFIG_INTERNAL_SHA256=y
858CONFIG_INTERNAL_RC4=y
859CONFIG_INTERNAL_DH_GROUP5=y
860endif
861
862ifeq ($(CONFIG_TLS), schannel)
863ifdef TLS_FUNCS
864OBJS += src/crypto/tls_schannel.c
865endif
866OBJS += src/crypto/crypto_cryptoapi.c
867OBJS_p += src/crypto/crypto_cryptoapi.c
868ifdef NEED_FIPS186_2_PRF
869OBJS += src/crypto/fips_prf_cryptoapi.c
870endif
871CONFIG_INTERNAL_SHA256=y
872CONFIG_INTERNAL_RC4=y
873CONFIG_INTERNAL_DH_GROUP5=y
874endif
875
876ifeq ($(CONFIG_TLS), nss)
877ifdef TLS_FUNCS
878OBJS += src/crypto/tls_nss.c
879LIBS += -lssl3
880endif
881OBJS += src/crypto/crypto_nss.c
882OBJS_p += src/crypto/crypto_nss.c
883ifdef NEED_FIPS186_2_PRF
884OBJS += src/crypto/fips_prf_nss.c
885endif
886LIBS += -lnss3
887LIBS_p += -lnss3
888CONFIG_INTERNAL_MD4=y
889CONFIG_INTERNAL_DH_GROUP5=y
890endif
891
892ifeq ($(CONFIG_TLS), internal)
893ifndef CONFIG_CRYPTO
894CONFIG_CRYPTO=internal
895endif
896ifdef TLS_FUNCS
897OBJS += src/crypto/crypto_internal-rsa.c
898OBJS += src/crypto/tls_internal.c
899OBJS += src/tls/tlsv1_common.c
900OBJS += src/tls/tlsv1_record.c
901OBJS += src/tls/tlsv1_cred.c
902OBJS += src/tls/tlsv1_client.c
903OBJS += src/tls/tlsv1_client_write.c
904OBJS += src/tls/tlsv1_client_read.c
905OBJS += src/tls/asn1.c
906OBJS += src/tls/rsa.c
907OBJS += src/tls/x509v3.c
908OBJS += src/tls/pkcs1.c
909OBJS += src/tls/pkcs5.c
910OBJS += src/tls/pkcs8.c
911NEED_SHA256=y
912NEED_BASE64=y
913NEED_TLS_PRF=y
914NEED_MODEXP=y
915NEED_CIPHER=y
916L_CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
917endif
918ifdef NEED_CIPHER
919NEED_DES=y
920OBJS += src/crypto/crypto_internal-cipher.c
921endif
922ifdef NEED_MODEXP
923OBJS += src/crypto/crypto_internal-modexp.c
924OBJS += src/tls/bignum.c
925endif
926ifeq ($(CONFIG_CRYPTO), libtomcrypt)
927OBJS += src/crypto/crypto_libtomcrypt.c
928OBJS_p += src/crypto/crypto_libtomcrypt.c
929LIBS += -ltomcrypt -ltfm
930LIBS_p += -ltomcrypt -ltfm
931CONFIG_INTERNAL_SHA256=y
932CONFIG_INTERNAL_RC4=y
933CONFIG_INTERNAL_DH_GROUP5=y
934endif
935ifeq ($(CONFIG_CRYPTO), internal)
936OBJS += src/crypto/crypto_internal.c
937OBJS_p += src/crypto/crypto_internal.c
938NEED_AES_ENC=y
939L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL
940ifdef CONFIG_INTERNAL_LIBTOMMATH
941L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
942ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
943L_CFLAGS += -DLTM_FAST
944endif
945else
946LIBS += -ltommath
947LIBS_p += -ltommath
948endif
949CONFIG_INTERNAL_AES=y
950CONFIG_INTERNAL_DES=y
951CONFIG_INTERNAL_SHA1=y
952CONFIG_INTERNAL_MD4=y
953CONFIG_INTERNAL_MD5=y
954CONFIG_INTERNAL_SHA256=y
955CONFIG_INTERNAL_RC4=y
956CONFIG_INTERNAL_DH_GROUP5=y
957endif
958ifeq ($(CONFIG_CRYPTO), cryptoapi)
959OBJS += src/crypto/crypto_cryptoapi.c
960OBJS_p += src/crypto/crypto_cryptoapi.c
961L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
962CONFIG_INTERNAL_SHA256=y
963CONFIG_INTERNAL_RC4=y
964endif
965endif
966
967ifeq ($(CONFIG_TLS), none)
968ifdef TLS_FUNCS
969OBJS += src/crypto/tls_none.c
970L_CFLAGS += -DEAP_TLS_NONE
971CONFIG_INTERNAL_AES=y
972CONFIG_INTERNAL_SHA1=y
973CONFIG_INTERNAL_MD5=y
974endif
975OBJS += src/crypto/crypto_none.c
976OBJS_p += src/crypto/crypto_none.c
977CONFIG_INTERNAL_SHA256=y
978CONFIG_INTERNAL_RC4=y
979endif
980
981ifdef TLS_FUNCS
982ifdef CONFIG_SMARTCARD
983ifndef CONFIG_NATIVE_WINDOWS
984ifneq ($(CONFIG_L2_PACKET), freebsd)
985LIBS += -ldl
986endif
987endif
988endif
989endif
990
991ifndef TLS_FUNCS
992OBJS += src/crypto/tls_none.c
993ifeq ($(CONFIG_TLS), internal)
994CONFIG_INTERNAL_AES=y
995CONFIG_INTERNAL_SHA1=y
996CONFIG_INTERNAL_MD5=y
997CONFIG_INTERNAL_RC4=y
998endif
999endif
1000
1001AESOBJS = # none so far (see below)
1002ifdef CONFIG_INTERNAL_AES
1003AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-dec.c
1004endif
1005
1006AESOBJS += src/crypto/aes-unwrap.c
1007ifdef NEED_AES_EAX
1008AESOBJS += src/crypto/aes-eax.c
1009NEED_AES_CTR=y
1010endif
1011ifdef NEED_AES_CTR
1012AESOBJS += src/crypto/aes-ctr.c
1013endif
1014ifdef NEED_AES_ENCBLOCK
1015AESOBJS += src/crypto/aes-encblock.c
1016endif
1017ifdef NEED_AES_OMAC1
1018NEED_AES_ENC=y
1019AESOBJS += src/crypto/aes-omac1.c
1020endif
1021ifdef NEED_AES_WRAP
1022NEED_AES_ENC=y
1023AESOBJS += src/crypto/aes-wrap.c
1024endif
1025ifdef NEED_AES_CBC
1026NEED_AES_ENC=y
1027AESOBJS += src/crypto/aes-cbc.c
1028endif
1029ifdef NEED_AES_ENC
1030ifdef CONFIG_INTERNAL_AES
1031AESOBJS += src/crypto/aes-internal-enc.c
1032endif
1033endif
1034ifdef NEED_AES
1035OBJS += $(AESOBJS)
1036endif
1037
1038SHA1OBJS =
1039ifdef NEED_SHA1
1040SHA1OBJS += src/crypto/sha1.c
1041ifdef CONFIG_INTERNAL_SHA1
1042SHA1OBJS += src/crypto/sha1-internal.c
1043ifdef NEED_FIPS186_2_PRF
1044SHA1OBJS += src/crypto/fips_prf_internal.c
1045endif
1046endif
Dmitry Shmidt13970b02011-06-30 16:51:41 -07001047ifdef CONFIG_NO_WPA_PASSPHRASE
1048L_CFLAGS += -DCONFIG_NO_PBKDF2
1049else
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001050SHA1OBJS += src/crypto/sha1-pbkdf2.c
1051endif
1052ifdef NEED_T_PRF
1053SHA1OBJS += src/crypto/sha1-tprf.c
1054endif
1055ifdef NEED_TLS_PRF
1056SHA1OBJS += src/crypto/sha1-tlsprf.c
1057endif
1058endif
1059
1060MD5OBJS = src/crypto/md5.c
1061ifdef NEED_MD5
1062ifdef CONFIG_INTERNAL_MD5
1063MD5OBJS += src/crypto/md5-internal.c
1064endif
1065ifdef CONFIG_FIPS
1066MD5OBJS += src/crypto/md5-non-fips.c
1067endif
1068OBJS += $(MD5OBJS)
1069OBJS_p += $(MD5OBJS)
1070endif
1071
1072ifdef NEED_MD4
1073ifdef CONFIG_INTERNAL_MD4
1074OBJS += src/crypto/md4-internal.c
1075endif
1076endif
1077
1078DESOBJS = # none needed when not internal
1079ifdef NEED_DES
1080ifdef CONFIG_INTERNAL_DES
1081DESOBJS += src/crypto/des-internal.c
1082endif
1083endif
1084
1085ifdef NEED_RC4
1086ifdef CONFIG_INTERNAL_RC4
1087OBJS += src/crypto/rc4.c
1088endif
1089endif
1090
1091SHA256OBJS = # none by default
1092ifdef NEED_SHA256
1093L_CFLAGS += -DCONFIG_SHA256
1094SHA256OBJS += src/crypto/sha256.c
1095ifdef CONFIG_INTERNAL_SHA256
1096SHA256OBJS += src/crypto/sha256-internal.c
1097endif
1098OBJS += $(SHA256OBJS)
1099endif
1100
1101ifdef NEED_DH_GROUPS
1102OBJS += src/crypto/dh_groups.c
1103endif
1104ifdef NEED_DH_GROUPS_ALL
1105L_CFLAGS += -DALL_DH_GROUPS
1106endif
1107ifdef CONFIG_INTERNAL_DH_GROUP5
1108ifdef NEED_DH_GROUPS
1109OBJS += src/crypto/dh_group5.c
1110endif
1111endif
1112
1113ifdef CONFIG_NO_RANDOM_POOL
1114L_CFLAGS += -DCONFIG_NO_RANDOM_POOL
1115else
1116OBJS += src/crypto/random.c
1117endif
1118
1119ifdef CONFIG_CTRL_IFACE
1120ifeq ($(CONFIG_CTRL_IFACE), y)
1121ifdef CONFIG_NATIVE_WINDOWS
1122CONFIG_CTRL_IFACE=named_pipe
1123else
1124CONFIG_CTRL_IFACE=unix
1125endif
1126endif
1127L_CFLAGS += -DCONFIG_CTRL_IFACE
1128ifeq ($(CONFIG_CTRL_IFACE), unix)
1129L_CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1130endif
1131ifeq ($(CONFIG_CTRL_IFACE), udp)
1132L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1133endif
1134ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1135L_CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1136endif
1137OBJS += ctrl_iface.c ctrl_iface_$(CONFIG_CTRL_IFACE).c
1138endif
1139
1140ifdef CONFIG_CTRL_IFACE_DBUS
1141DBUS=y
1142DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
1143DBUS_OBJS += dbus/dbus_old.c dbus/dbus_old_handlers.c
1144ifdef CONFIG_WPS
1145DBUS_OBJS += dbus/dbus_old_handlers_wps.c
1146endif
1147DBUS_OBJS += dbus/dbus_dict_helpers.c
1148ifndef DBUS_LIBS
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001149DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001150endif
1151ifndef DBUS_INCLUDE
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001152DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001153endif
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001154dbus_version=$(subst ., ,$(shell $(PKG_CONFIG) --modversion dbus-1))
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001155DBUS_VERSION_MAJOR=$(word 1,$(dbus_version))
1156DBUS_VERSION_MINOR=$(word 2,$(dbus_version))
1157ifeq ($(DBUS_VERSION_MAJOR),)
1158DBUS_VERSION_MAJOR=0
1159endif
1160ifeq ($(DBUS_VERSION_MINOR),)
1161DBUS_VERSION_MINOR=0
1162endif
1163DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR)
1164DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR)
1165DBUS_CFLAGS += $(DBUS_INCLUDE)
1166endif
1167
1168ifdef CONFIG_CTRL_IFACE_DBUS_NEW
1169DBUS=y
1170DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
1171DBUS_OBJS ?= dbus/dbus_dict_helpers.c
1172DBUS_OBJS += dbus/dbus_new_helpers.c
1173DBUS_OBJS += dbus/dbus_new.c dbus/dbus_new_handlers.c
1174ifdef CONFIG_WPS
1175DBUS_OBJS += dbus/dbus_new_handlers_wps.c
1176endif
Dmitry Shmidt13970b02011-06-30 16:51:41 -07001177ifdef CONFIG_P2P
1178DBUS_OBJS += dbus/dbus_new_handlers_p2p.c
1179endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001180ifndef DBUS_LIBS
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001181DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001182endif
1183ifndef DBUS_INCLUDE
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001184DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001185endif
1186ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
1187DBUS_OBJS += dbus/dbus_new_introspect.c
1188DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
1189endif
1190DBUS_CFLAGS += $(DBUS_INCLUDE)
1191endif
1192
1193ifdef DBUS
1194DBUS_CFLAGS += -DCONFIG_DBUS
1195DBUS_OBJS += dbus/dbus_common.c
1196endif
1197
1198OBJS += $(DBUS_OBJS)
1199L_CFLAGS += $(DBUS_CFLAGS)
1200LIBS += $(DBUS_LIBS)
1201
1202ifdef CONFIG_READLINE
1203OBJS_c += src/utils/edit_readline.c
1204LIBS_c += -lncurses -lreadline
1205else
1206ifdef CONFIG_WPA_CLI_EDIT
1207OBJS_c += src/utils/edit.c
1208else
1209OBJS_c += src/utils/edit_simple.c
1210endif
1211endif
1212
1213ifdef CONFIG_NATIVE_WINDOWS
1214L_CFLAGS += -DCONFIG_NATIVE_WINDOWS
1215LIBS += -lws2_32 -lgdi32 -lcrypt32
1216LIBS_c += -lws2_32
1217LIBS_p += -lws2_32 -lgdi32
1218ifeq ($(CONFIG_CRYPTO), cryptoapi)
1219LIBS_p += -lcrypt32
1220endif
1221endif
1222
1223ifdef CONFIG_NO_STDOUT_DEBUG
1224L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1225ifndef CONFIG_CTRL_IFACE
1226L_CFLAGS += -DCONFIG_NO_WPA_MSG
1227endif
1228endif
1229
1230ifdef CONFIG_ANDROID_LOG
1231L_CFLAGS += -DCONFIG_ANDROID_LOG
1232endif
1233
1234ifdef CONFIG_IPV6
1235# for eapol_test only
1236L_CFLAGS += -DCONFIG_IPV6
1237endif
1238
1239ifdef NEED_BASE64
1240OBJS += src/utils/base64.c
1241endif
1242
1243ifdef NEED_SME
1244NEED_80211_COMMON=y
1245OBJS += sme.c
1246L_CFLAGS += -DCONFIG_SME
1247endif
1248
1249ifdef CONFIG_CLIENT_MLME
1250OBJS += mlme.c
1251L_CFLAGS += -DCONFIG_CLIENT_MLME
1252NEED_80211_COMMON=y
1253endif
1254
1255ifdef NEED_80211_COMMON
1256OBJS += src/common/ieee802_11_common.c
1257endif
1258
1259ifdef NEED_EAP_COMMON
1260OBJS += src/eap_common/eap_common.c
1261endif
1262
1263ifndef CONFIG_MAIN
1264CONFIG_MAIN=main
1265endif
1266
1267ifdef CONFIG_DEBUG_SYSLOG
1268L_CFLAGS += -DCONFIG_DEBUG_SYSLOG
Dmitry Shmidt13970b02011-06-30 16:51:41 -07001269ifdef CONFIG_DEBUG_SYSLOG_FACILITY
1270L_CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
1271endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001272endif
1273
1274ifdef CONFIG_DEBUG_FILE
1275L_CFLAGS += -DCONFIG_DEBUG_FILE
1276endif
1277
1278ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1279L_CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1280endif
1281
1282ifdef CONFIG_FIPS
1283L_CFLAGS += -DCONFIG_FIPS
1284endif
1285
1286OBJS += $(SHA1OBJS) $(DESOBJS)
1287
1288OBJS_p += $(SHA1OBJS)
1289
1290ifdef CONFIG_BGSCAN_SIMPLE
1291L_CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1292OBJS += bgscan_simple.c
1293NEED_BGSCAN=y
1294endif
1295
1296ifdef CONFIG_BGSCAN_LEARN
1297L_CFLAGS += -DCONFIG_BGSCAN_LEARN
1298OBJS += bgscan_learn.c
1299NEED_BGSCAN=y
1300endif
1301
1302ifdef NEED_BGSCAN
1303L_CFLAGS += -DCONFIG_BGSCAN
1304OBJS += bgscan.c
1305endif
1306
1307OBJS_wpa_rm := ctrl_iface.c mlme.c ctrl_iface_unix.c
1308OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.c
1309ifdef CONFIG_AUTHENTICATOR
1310OBJS_wpa += tests/link_test.c
1311endif
1312OBJS_wpa += $(OBJS_l2)
1313OBJS += wpa_supplicant.c events.c blacklist.c wpas_glue.c scan.c
1314OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.c
1315OBJS_t += src/radius/radius_client.c
1316OBJS_t += src/radius/radius.c
1317ifndef CONFIG_AP
1318OBJS_t += src/utils/ip_addr.c
1319endif
1320OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.c
1321OBJS += $(CONFIG_MAIN).c
1322
1323ifdef CONFIG_PRIVSEP
1324OBJS_priv += $(OBJS_d) src/drivers/drivers.c
1325OBJS_priv += $(OBJS_l2)
1326OBJS_priv += src/utils/os_$(CONFIG_OS).c
1327OBJS_priv += src/utils/$(CONFIG_ELOOP).c
1328OBJS_priv += src/utils/common.c
1329OBJS_priv += src/utils/wpa_debug.c
1330OBJS_priv += src/utils/wpabuf.c
1331OBJS_priv += wpa_priv.c
1332ifdef CONFIG_DRIVER_TEST
1333OBJS_priv += $(SHA1OBJS)
1334OBJS_priv += $(MD5OBJS)
1335ifeq ($(CONFIG_TLS), openssl)
1336OBJS_priv += src/crypto/crypto_openssl.c
1337endif
1338ifeq ($(CONFIG_TLS), gnutls)
1339OBJS_priv += src/crypto/crypto_gnutls.c
1340endif
1341ifeq ($(CONFIG_TLS), nss)
1342OBJS_priv += src/crypto/crypto_nss.c
1343endif
1344ifeq ($(CONFIG_TLS), internal)
1345ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1346OBJS_priv += src/crypto/crypto_libtomcrypt.c
1347else
1348OBJS_priv += src/crypto/crypto_internal.c
1349endif
1350endif
1351endif # CONFIG_DRIVER_TEST
1352OBJS += src/l2_packet/l2_packet_privsep.c
1353OBJS += src/drivers/driver_privsep.c
1354EXTRA_progs += wpa_priv
1355else
1356OBJS += $(OBJS_d) src/drivers/drivers.c
1357OBJS += $(OBJS_l2)
1358endif
1359
1360ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1361L_CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1362OBJS += src/drivers/ndis_events.c
1363EXTRALIBS += -loleaut32 -lole32 -luuid
1364ifdef PLATFORMSDKLIB
1365EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1366else
1367EXTRALIBS += WbemUuid.Lib
1368endif
1369endif
1370
1371ifndef LDO
1372LDO=$(CC)
1373endif
1374
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001375########################
1376
1377include $(CLEAR_VARS)
1378LOCAL_MODULE := wpa_cli
1379LOCAL_MODULE_TAGS := debug
1380LOCAL_SHARED_LIBRARIES := libc libcutils
1381LOCAL_CFLAGS := $(L_CFLAGS)
1382LOCAL_SRC_FILES := $(OBJS_c)
1383LOCAL_C_INCLUDES := $(INCLUDES)
1384include $(BUILD_EXECUTABLE)
1385
1386########################
1387include $(CLEAR_VARS)
1388LOCAL_MODULE := wpa_supplicant
1389ifdef CONFIG_DRIVER_CUSTOM
1390LOCAL_STATIC_LIBRARIES := libCustomWifi
1391endif
1392ifneq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),)
1393LOCAL_STATIC_LIBRARIES += $(BOARD_WPA_SUPPLICANT_PRIVATE_LIB)
1394endif
1395LOCAL_SHARED_LIBRARIES := libc libcutils libcrypto libssl
1396ifdef CONFIG_DRIVER_NL80211
1397LOCAL_STATIC_LIBRARIES += libnl_2
1398endif
1399LOCAL_CFLAGS := $(L_CFLAGS)
1400LOCAL_SRC_FILES := $(OBJS)
1401LOCAL_C_INCLUDES := $(INCLUDES)
1402include $(BUILD_EXECUTABLE)
1403
1404########################
1405#
1406#include $(CLEAR_VARS)
1407#LOCAL_MODULE := eapol_test
1408#ifdef CONFIG_DRIVER_CUSTOM
1409#LOCAL_STATIC_LIBRARIES := libCustomWifi
1410#endif
1411#LOCAL_SHARED_LIBRARIES := libc libcrypto libssl
1412#LOCAL_CFLAGS := $(L_CFLAGS)
1413#LOCAL_SRC_FILES := $(OBJS_t)
1414#LOCAL_C_INCLUDES := $(INCLUDES)
1415#include $(BUILD_EXECUTABLE)
1416#
1417########################
1418#
1419#local_target_dir := $(TARGET_OUT)/etc/wifi
1420#
1421#include $(CLEAR_VARS)
1422#LOCAL_MODULE := wpa_supplicant.conf
1423#LOCAL_MODULE_TAGS := user
1424#LOCAL_MODULE_CLASS := ETC
1425#LOCAL_MODULE_PATH := $(local_target_dir)
1426#LOCAL_SRC_FILES := $(LOCAL_MODULE)
1427#include $(BUILD_PREBUILT)
1428#
1429########################
1430
1431endif # ifeq ($(WPA_BUILD_SUPPLICANT),true)
1432
1433include $(CLEAR_VARS)
1434LOCAL_MODULE = libwpa_client
1435LOCAL_CFLAGS = $(L_CFLAGS)
1436LOCAL_SRC_FILES = src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c
1437LOCAL_C_INCLUDES = $(INCLUDES)
1438LOCAL_SHARED_LIBRARIES := libcutils
1439LOCAL_COPY_HEADERS_TO := libwpa_client
1440LOCAL_COPY_HEADERS := src/common/wpa_ctrl.h
1441include $(BUILD_SHARED_LIBRARY)