6 CFLAGS
= -MMD
-O2
-Wall
-g
9 # define HOSTAPD_DUMP_STATE to include SIGUSR1 handler for dumping state to
10 # a file (undefine it, if you want to save in binary size)
11 CFLAGS
+= -DHOSTAPD_DUMP_STATE
14 CFLAGS
+= -I..
/src
/crypto
15 CFLAGS
+= -I..
/src
/utils
16 CFLAGS
+= -I..
/src
/common
18 # Uncomment following line and set the path to your kernel tree include
19 # directory if your C library does not include all header files.
20 # CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include
25 ifdef CONFIG_NATIVE_WINDOWS
32 ifeq ($(CONFIG_OS
), internal
)
33 CFLAGS
+= -DOS_NO_C_LIB_DEFINES
36 ifdef CONFIG_NATIVE_WINDOWS
37 CFLAGS
+= -DCONFIG_NATIVE_WINDOWS
41 OBJS
= hostapd.o ieee802_1x.o eapol_sm.o \
42 config.o ieee802_11_auth.o \
44 drivers.o preauth.o pmksa_cache.o \
46 tkip_countermeasures.o \
49 OBJS
+= ..
/src
/utils
/eloop.o
50 OBJS
+= ..
/src
/utils
/common.o
51 OBJS
+= ..
/src
/utils
/wpa_debug.o
52 OBJS
+= ..
/src
/utils
/wpabuf.o
53 OBJS
+= ..
/src
/utils
/os_
$(CONFIG_OS
).o
54 OBJS
+= ..
/src
/utils
/ip_addr.o
56 OBJS
+= ..
/src
/common
/ieee802_11_common.o
57 OBJS
+= ..
/src
/common
/wpa_common.o
59 ifdef CONFIG_NO_RADIUS
60 CFLAGS
+= -DCONFIG_NO_RADIUS
61 CONFIG_NO_ACCOUNTING
=y
63 OBJS
+= ..
/src
/radius
/radius.o
64 OBJS
+= ..
/src
/radius
/radius_client.o
67 ifdef CONFIG_NO_ACCOUNTING
68 CFLAGS
+= -DCONFIG_NO_ACCOUNTING
74 CFLAGS
+= -DCONFIG_NO_VLAN
79 ifdef CONFIG_NO_CTRL_IFACE
80 CFLAGS
+= -DCONFIG_NO_CTRL_IFACE
85 OBJS
+= ..
/src
/crypto
/md5.o
86 OBJS
+= ..
/src
/crypto
/rc4.o
87 OBJS
+= ..
/src
/crypto
/md4.o
88 OBJS
+= ..
/src
/crypto
/sha1.o
89 OBJS
+= ..
/src
/crypto
/des.o
90 OBJS
+= ..
/src
/crypto
/aes_wrap.o
91 OBJS
+= ..
/src
/crypto
/aes.o
93 HOBJS
=..
/src
/hlr_auc_gw
/hlr_auc_gw.o ..
/src
/utils
/common.o ..
/src
/utils
/wpa_debug.o ..
/src
/utils
/os_
$(CONFIG_OS
).o ..
/src
/hlr_auc_gw
/milenage.o ..
/src
/crypto
/aes_wrap.o ..
/src
/crypto
/aes.o
95 CFLAGS
+= -DCONFIG_CTRL_IFACE
-DCONFIG_CTRL_IFACE_UNIX
98 CFLAGS
+= -DCONFIG_IAPP
102 ifdef CONFIG_RSN_PREAUTH
103 CFLAGS
+= -DCONFIG_RSN_PREAUTH
108 CFLAGS
+= -DCONFIG_PEERKEY
112 ifdef CONFIG_IEEE80211W
113 CFLAGS
+= -DCONFIG_IEEE80211W
117 ifdef CONFIG_IEEE80211R
118 CFLAGS
+= -DCONFIG_IEEE80211R
123 ifdef CONFIG_IEEE80211N
124 CFLAGS
+= -DCONFIG_IEEE80211N
127 ifdef CONFIG_DRIVER_HOSTAP
129 CFLAGS
+= -DCONFIG_DRIVER_HOSTAP
130 OBJS
+= driver_hostap.o
133 ifdef CONFIG_DRIVER_WIRED
134 CFLAGS
+= -DCONFIG_DRIVER_WIRED
135 OBJS
+= driver_wired.o
138 ifdef CONFIG_DRIVER_MADWIFI
139 CFLAGS
+= -DCONFIG_DRIVER_MADWIFI
140 OBJS
+= driver_madwifi.o
144 ifdef CONFIG_DRIVER_ATHEROS
145 CFLAGS
+= -DCONFIG_DRIVER_ATHEROS
146 OBJS
+= driver_atheros.o
150 ifdef CONFIG_DRIVER_PRISM54
151 CFLAGS
+= -DCONFIG_DRIVER_PRISM54
152 OBJS
+= driver_prism54.o
155 ifdef CONFIG_DRIVER_NL80211
157 CFLAGS
+= -DCONFIG_DRIVER_NL80211
158 OBJS
+= driver_nl80211.o
159 OBJS
+= ..
/src
/utils
/radiotap.o
163 CFLAGS
+= -DCONFIG_LIBNL20
167 ifdef CONFIG_DRIVER_BSD
168 CFLAGS
+= -DCONFIG_DRIVER_BSD
175 ifdef CONFIG_DRIVER_TEST
177 CFLAGS
+= -DCONFIG_DRIVER_TEST
178 OBJS
+= driver_test.o
181 ifdef CONFIG_DRIVER_NONE
182 CFLAGS
+= -DCONFIG_DRIVER_NONE
183 OBJS
+= driver_none.o
186 ifdef CONFIG_L2_PACKET
187 ifdef CONFIG_DNET_PCAP
188 ifdef CONFIG_L2_FREEBSD
190 OBJS
+= ..
/src
/l2_packet
/l2_packet_freebsd.o
192 LIBS
+= -ldnet
-lpcap
193 OBJS
+= ..
/src
/l2_packet
/l2_packet_pcap.o
196 OBJS
+= ..
/src
/l2_packet
/l2_packet_linux.o
199 OBJS
+= ..
/src
/l2_packet
/l2_packet_none.o
205 OBJS
+= ..
/src
/eap_server
/eap_md5.o
211 OBJS
+= ..
/src
/eap_server
/eap_tls.o
215 ifdef CONFIG_EAP_PEAP
217 OBJS
+= ..
/src
/eap_server
/eap_peap.o
218 OBJS
+= ..
/src
/eap_common
/eap_peap_common.o
220 CONFIG_EAP_MSCHAPV2
=y
223 ifdef CONFIG_EAP_TTLS
225 OBJS
+= ..
/src
/eap_server
/eap_ttls.o
230 ifdef CONFIG_EAP_MSCHAPV2
231 CFLAGS
+= -DEAP_MSCHAPv2
232 OBJS
+= ..
/src
/eap_server
/eap_mschapv2.o
238 OBJS
+= ..
/src
/eap_server
/eap_gtc.o
243 OBJS
+= ..
/src
/eap_server
/eap_sim.o
244 CONFIG_EAP_SIM_COMMON
=y
249 OBJS
+= ..
/src
/eap_server
/eap_aka.o
250 CONFIG_EAP_SIM_COMMON
=y
253 ifdef CONFIG_EAP_AKA_PRIME
254 CFLAGS
+= -DEAP_AKA_PRIME
257 ifdef CONFIG_EAP_SIM_COMMON
258 OBJS
+= ..
/src
/eap_common
/eap_sim_common.o
259 # Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
260 # replaced with another file implementating the interface specified in
262 OBJS
+= ..
/src
/eap_server
/eap_sim_db.o
268 OBJS
+= ..
/src
/eap_server
/eap_pax.o ..
/src
/eap_common
/eap_pax_common.o
273 OBJS
+= ..
/src
/eap_server
/eap_psk.o ..
/src
/eap_common
/eap_psk_common.o
276 ifdef CONFIG_EAP_SAKE
278 OBJS
+= ..
/src
/eap_server
/eap_sake.o ..
/src
/eap_common
/eap_sake_common.o
281 ifdef CONFIG_EAP_GPSK
283 OBJS
+= ..
/src
/eap_server
/eap_gpsk.o ..
/src
/eap_common
/eap_gpsk_common.o
284 ifdef CONFIG_EAP_GPSK_SHA256
285 CFLAGS
+= -DEAP_GPSK_SHA256
290 ifdef CONFIG_EAP_VENDOR_TEST
291 CFLAGS
+= -DEAP_VENDOR_TEST
292 OBJS
+= ..
/src
/eap_server
/eap_vendor_test.o
295 ifdef CONFIG_EAP_FAST
297 OBJS
+= ..
/src
/eap_server
/eap_fast.o
298 OBJS
+= ..
/src
/eap_common
/eap_fast_common.o
304 CFLAGS
+= -DCONFIG_WPS
-DEAP_WSC
305 OBJS
+= ..
/src
/utils
/uuid.o
306 OBJS
+= wps_hostapd.o
307 OBJS
+= ..
/src
/eap_server
/eap_wsc.o ..
/src
/eap_common
/eap_wsc_common.o
308 OBJS
+= ..
/src
/wps
/wps.o
309 OBJS
+= ..
/src
/wps
/wps_common.o
310 OBJS
+= ..
/src
/wps
/wps_attr_parse.o
311 OBJS
+= ..
/src
/wps
/wps_attr_build.o
312 OBJS
+= ..
/src
/wps
/wps_attr_process.o
313 OBJS
+= ..
/src
/wps
/wps_dev_attr.o
314 OBJS
+= ..
/src
/wps
/wps_enrollee.o
315 OBJS
+= ..
/src
/wps
/wps_registrar.o
316 OBJS
+= ..
/src
/wps
/wps_ufd.o
322 ifdef CONFIG_WPS_UPNP
323 CFLAGS
+= -DCONFIG_WPS_UPNP
324 OBJS
+= ..
/src
/wps
/wps_upnp.o
325 OBJS
+= ..
/src
/wps
/wps_upnp_ssdp.o
326 OBJS
+= ..
/src
/wps
/wps_upnp_web.o
327 OBJS
+= ..
/src
/wps
/wps_upnp_event.o
328 OBJS
+= ..
/src
/wps
/httpread.o
333 ifdef CONFIG_EAP_IKEV2
334 CFLAGS
+= -DEAP_IKEV2
335 OBJS
+= ..
/src
/eap_server
/eap_ikev2.o ..
/src
/eap_server
/ikev2.o
336 OBJS
+= ..
/src
/eap_common
/eap_ikev2_common.o ..
/src
/eap_common
/ikev2_common.o
342 OBJS
+= ..
/src
/eap_server
/eap_tnc.o
343 OBJS
+= ..
/src
/eap_server
/tncs.o
348 # Basic EAP functionality is needed for EAPOL
349 OBJS
+= ..
/src
/eap_server
/eap.o
350 OBJS
+= ..
/src
/eap_common
/eap_common.o
351 OBJS
+= ..
/src
/eap_server
/eap_methods.o
352 OBJS
+= ..
/src
/eap_server
/eap_identity.o
355 CFLAGS
+= -DEAP_SERVER
362 ifeq ($(CONFIG_TLS
), internal
)
364 CONFIG_CRYPTO
=internal
367 ifeq ($(CONFIG_CRYPTO
), libtomcrypt
)
368 CFLAGS
+= -DCONFIG_INTERNAL_X509
370 ifeq ($(CONFIG_CRYPTO
), internal
)
371 CFLAGS
+= -DCONFIG_INTERNAL_X509
376 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
377 CFLAGS
+= -DEAP_TLS_FUNCS
378 OBJS
+= ..
/src
/eap_server
/eap_tls_common.o
380 ifeq ($(CONFIG_TLS
), openssl
)
381 OBJS
+= ..
/src
/crypto
/tls_openssl.o
382 LIBS
+= -lssl
-lcrypto
386 ifeq ($(CONFIG_TLS
), gnutls
)
387 OBJS
+= ..
/src
/crypto
/tls_gnutls.o
388 LIBS
+= -lgnutls
-lgcrypt
-lgpg-error
392 ifdef CONFIG_GNUTLS_EXTRA
393 CFLAGS
+= -DCONFIG_GNUTLS_EXTRA
394 LIBS
+= -lgnutls-extra
396 ifeq ($(CONFIG_TLS
), internal
)
397 OBJS
+= ..
/src
/crypto
/tls_internal.o
398 OBJS
+= ..
/src
/tls
/tlsv1_common.o ..
/src
/tls
/tlsv1_record.o
399 OBJS
+= ..
/src
/tls
/tlsv1_cred.o ..
/src
/tls
/tlsv1_server.o
400 OBJS
+= ..
/src
/tls
/tlsv1_server_write.o ..
/src
/tls
/tlsv1_server_read.o
401 OBJS
+= ..
/src
/tls
/asn1.o ..
/src
/tls
/x509v3.o
402 OBJS_p
+= ..
/src
/tls
/asn1.o
403 OBJS_p
+= ..
/src
/crypto
/rc4.o ..
/src
/crypto
/aes_wrap.o ..
/src
/crypto
/aes.o
405 CFLAGS
+= -DCONFIG_TLS_INTERNAL
406 CFLAGS
+= -DCONFIG_TLS_INTERNAL_SERVER
407 ifeq ($(CONFIG_CRYPTO
), internal
)
408 ifdef CONFIG_INTERNAL_LIBTOMMATH
409 CFLAGS
+= -DCONFIG_INTERNAL_LIBTOMMATH
415 ifeq ($(CONFIG_CRYPTO
), libtomcrypt
)
416 LIBS
+= -ltomcrypt
-ltfm
417 LIBS_p
+= -ltomcrypt
-ltfm
422 OBJS
+= ..
/src
/crypto
/tls_none.o
426 CFLAGS
+= -DPKCS12_FUNCS
430 OBJS
+= ..
/src
/crypto
/ms_funcs.o
435 OBJS
+= ..
/src
/eap_common
/chap.o
440 ifeq ($(CONFIG_TLS
), openssl
)
445 ifeq ($(CONFIG_TLS
), gnutls
)
450 ifeq ($(CONFIG_TLS
), internal
)
451 ifeq ($(CONFIG_CRYPTO
), libtomcrypt
)
452 LIBS
+= -ltomcrypt
-ltfm
453 LIBS_p
+= -ltomcrypt
-ltfm
457 ifeq ($(CONFIG_TLS
), openssl
)
458 OBJS
+= ..
/src
/crypto
/crypto_openssl.o
459 OBJS_p
+= ..
/src
/crypto
/crypto_openssl.o
460 HOBJS
+= ..
/src
/crypto
/crypto_openssl.o
461 CONFIG_INTERNAL_SHA256
=y
463 ifeq ($(CONFIG_TLS
), gnutls
)
464 OBJS
+= ..
/src
/crypto
/crypto_gnutls.o
465 OBJS_p
+= ..
/src
/crypto
/crypto_gnutls.o
466 HOBJS
+= ..
/src
/crypto
/crypto_gnutls.o
467 CONFIG_INTERNAL_SHA256
=y
469 ifeq ($(CONFIG_TLS
), internal
)
470 ifeq ($(CONFIG_CRYPTO
), libtomcrypt
)
471 OBJS
+= ..
/src
/crypto
/crypto_libtomcrypt.o
472 OBJS_p
+= ..
/src
/crypto
/crypto_libtomcrypt.o
473 CONFIG_INTERNAL_SHA256
=y
475 ifeq ($(CONFIG_CRYPTO
), internal
)
476 OBJS
+= ..
/src
/crypto
/crypto_internal.o ..
/src
/tls
/rsa.o ..
/src
/tls
/bignum.o
477 OBJS_p
+= ..
/src
/crypto
/crypto_internal.o ..
/src
/tls
/rsa.o ..
/src
/tls
/bignum.o
478 CFLAGS
+= -DCONFIG_CRYPTO_INTERNAL
479 CONFIG_INTERNAL_AES
=y
480 CONFIG_INTERNAL_DES
=y
481 CONFIG_INTERNAL_SHA1
=y
482 CONFIG_INTERNAL_MD4
=y
483 CONFIG_INTERNAL_MD5
=y
484 CONFIG_INTERNAL_SHA256
=y
488 CONFIG_INTERNAL_AES
=y
489 CONFIG_INTERNAL_SHA1
=y
490 CONFIG_INTERNAL_MD5
=y
491 CONFIG_INTERNAL_SHA256
=y
494 ifdef CONFIG_INTERNAL_AES
495 CFLAGS
+= -DINTERNAL_AES
497 ifdef CONFIG_INTERNAL_SHA1
498 CFLAGS
+= -DINTERNAL_SHA1
500 ifdef CONFIG_INTERNAL_SHA256
501 CFLAGS
+= -DINTERNAL_SHA256
503 ifdef CONFIG_INTERNAL_MD5
504 CFLAGS
+= -DINTERNAL_MD5
506 ifdef CONFIG_INTERNAL_MD4
507 CFLAGS
+= -DINTERNAL_MD4
509 ifdef CONFIG_INTERNAL_DES
510 CFLAGS
+= -DINTERNAL_DES
514 OBJS
+= ..
/src
/crypto
/sha256.o
518 OBJS
+= ..
/src
/crypto
/dh_groups.o
521 ifndef NEED_FIPS186_2_PRF
522 CFLAGS
+= -DCONFIG_NO_FIPS186_2_PRF
526 CFLAGS
+= -DCONFIG_NO_T_PRF
530 CFLAGS
+= -DCONFIG_NO_TLS_PRF
533 ifdef CONFIG_RADIUS_SERVER
534 CFLAGS
+= -DRADIUS_SERVER
535 OBJS
+= ..
/src
/radius
/radius_server.o
539 CFLAGS
+= -DCONFIG_IPV6
542 ifdef CONFIG_DRIVER_RADIUS_ACL
543 CFLAGS
+= -DCONFIG_DRIVER_RADIUS_ACL
546 ifdef CONFIG_FULL_DYNAMIC_VLAN
547 # define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
548 # and vlan interfaces for the vlan feature.
549 CFLAGS
+= -DCONFIG_FULL_DYNAMIC_VLAN
553 OBJS
+= ..
/src
/utils
/base64.o
557 OBJS
+= beacon.o wme.o ap_list.o ieee802_11.o
558 OBJS
+= hw_features.o
559 CFLAGS
+= -DNEED_MLME
562 ifdef CONFIG_NO_STDOUT_DEBUG
563 CFLAGS
+= -DCONFIG_NO_STDOUT_DEBUG
566 ifdef CONFIG_NO_AES_EXTRAS
567 CFLAGS
+= -DCONFIG_NO_AES_UNWRAP
568 CFLAGS
+= -DCONFIG_NO_AES_CTR
-DCONFIG_NO_AES_OMAC1
569 CFLAGS
+= -DCONFIG_NO_AES_EAX
-DCONFIG_NO_AES_CBC
570 CFLAGS
+= -DCONFIG_NO_AES_DECRYPT
571 CFLAGS
+= -DCONFIG_NO_AES_ENCRYPT_BLOCK
574 ALL
=hostapd hostapd_cli
576 all: verify_config
$(ALL
)
579 @if
[ ! -r .config
]; then \
580 echo
'Building hostapd requires a configuration file'; \
581 echo
'(.config). See README for more instructions. You can'; \
582 echo
'run "cp defconfig .config" to create an example'; \
583 echo
'configuration.'; \
588 for i in
$(ALL
); do cp
$$i /usr
/local
/bin
/$$i; done
591 $(CC
) -o hostapd
$(OBJS
) $(LIBS
)
593 OBJS_c
= hostapd_cli.o ..
/src
/common
/wpa_ctrl.o ..
/src
/utils
/os_
$(CONFIG_OS
).o
594 hostapd_cli
: $(OBJS_c
)
595 $(CC
) -o hostapd_cli
$(OBJS_c
)
597 NOBJS
= nt_password_hash.o ..
/src
/crypto
/ms_funcs.o ..
/src
/crypto
/sha1.o ..
/src
/crypto
/rc4.o ..
/src
/crypto
/md5.o
598 NOBJS
+= ..
/src
/crypto
/crypto_openssl.o ..
/src
/utils
/os_
$(CONFIG_OS
).o
603 nt_password_hash
: $(NOBJS
)
604 $(CC
) -o nt_password_hash
$(NOBJS
) $(LIBS_n
)
607 $(CC
) -o hlr_auc_gw
$(HOBJS
) $(LIBS_h
)
610 $(MAKE
) -C ..
/src
clean
611 rm -f core
*~
*.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
615 fig2dev
-L eps
$*.fig
$*.eps
618 fig2dev
-L png
-m
3 $*.fig | pngtopnm | pnmscale
0.4 | pnmtopng \
621 docs-pics
: doc
/hostapd.png doc
/hostapd.eps
624 (cd ..
; doxygen hostapd
/doc
/doxygen.full
; cd hostapd
)
626 cp doc
/latex
/refman.pdf hostapd-devel.pdf
629 (cd ..
; doxygen hostapd
/doc
/doxygen.fast
; cd hostapd
)
632 rm -rf doc
/latex doc
/html
633 rm -f doc
/hostapd.
{eps
,png
} hostapd-devel.pdf
635 TEST_SRC_MILENAGE
= ..
/src
/hlr_auc_gw
/milenage.c ..
/src
/crypto
/aes_wrap.c ..
/src
/crypto
/aes.c ..
/src
/utils
/common.c ..
/src
/utils
/wpa_debug.o ..
/src
/utils
/os_
$(CONFIG_OS
).c
636 test-milenage
: $(TEST_SRC_MILENAGE
)
637 $(CC
) -o test-milenage
-Wall
-Werror
$(TEST_SRC_MILENAGE
) \
638 -DTEST_MAIN_MILENAGE
-I.
-DINTERNAL_AES \
639 -I..
/src
/crypto
-I..
/src
/utils
643 -include $(OBJS
:%.o
=%.d
)