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
204 CFLAGS
+= -DEAP_SERVER_MD5
205 OBJS
+= ..
/src
/eap_server
/eap_md5.o
210 CFLAGS
+= -DEAP_SERVER_TLS
211 OBJS
+= ..
/src
/eap_server
/eap_tls.o
215 ifdef CONFIG_EAP_PEAP
216 CFLAGS
+= -DEAP_SERVER_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
224 CFLAGS
+= -DEAP_SERVER_TTLS
225 OBJS
+= ..
/src
/eap_server
/eap_ttls.o
230 ifdef CONFIG_EAP_MSCHAPV2
231 CFLAGS
+= -DEAP_SERVER_MSCHAPV2
232 OBJS
+= ..
/src
/eap_server
/eap_mschapv2.o
237 CFLAGS
+= -DEAP_SERVER_GTC
238 OBJS
+= ..
/src
/eap_server
/eap_gtc.o
242 CFLAGS
+= -DEAP_SERVER_SIM
243 OBJS
+= ..
/src
/eap_server
/eap_sim.o
244 CONFIG_EAP_SIM_COMMON
=y
248 CFLAGS
+= -DEAP_SERVER_AKA
249 OBJS
+= ..
/src
/eap_server
/eap_aka.o
250 CONFIG_EAP_SIM_COMMON
=y
253 ifdef CONFIG_EAP_AKA_PRIME
254 CFLAGS
+= -DEAP_SERVER_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
267 CFLAGS
+= -DEAP_SERVER_PAX
268 OBJS
+= ..
/src
/eap_server
/eap_pax.o ..
/src
/eap_common
/eap_pax_common.o
272 CFLAGS
+= -DEAP_SERVER_PSK
273 OBJS
+= ..
/src
/eap_server
/eap_psk.o ..
/src
/eap_common
/eap_psk_common.o
276 ifdef CONFIG_EAP_SAKE
277 CFLAGS
+= -DEAP_SERVER_SAKE
278 OBJS
+= ..
/src
/eap_server
/eap_sake.o ..
/src
/eap_common
/eap_sake_common.o
281 ifdef CONFIG_EAP_GPSK
282 CFLAGS
+= -DEAP_SERVER_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_SERVER_GPSK_SHA256
290 ifdef CONFIG_EAP_VENDOR_TEST
291 CFLAGS
+= -DEAP_SERVER_VENDOR_TEST
292 OBJS
+= ..
/src
/eap_server
/eap_vendor_test.o
295 ifdef CONFIG_EAP_FAST
296 CFLAGS
+= -DEAP_SERVER_FAST
297 OBJS
+= ..
/src
/eap_server
/eap_fast.o
298 OBJS
+= ..
/src
/eap_common
/eap_fast_common.o
304 CFLAGS
+= -DCONFIG_WPS
-DEAP_SERVER_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
322 CFLAGS
+= -DCONFIG_WPS_UFD
323 OBJS
+= ..
/src
/wps
/wps_ufd.o
328 CFLAGS
+= -DCONFIG_WPS_NFC
329 OBJS
+= ..
/src
/wps
/ndef.o
330 OBJS
+= ..
/src
/wps
/wps_nfc.o
332 ifdef CONFIG_WPS_NFC_PN531
333 PN531_PATH ?
= /usr
/local
/src
/nfc
334 CFLAGS
+= -DCONFIG_WPS_NFC_PN531
335 CFLAGS
+= -I
${PN531_PATH}/inc
336 OBJS
+= ..
/src
/wps
/wps_nfc_pn531.o
337 LIBS
+= ${PN531_PATH}/lib
/wpsnfc.dll
338 LIBS
+= ${PN531_PATH}/lib
/libnfc_mapping_pn53x.dll
343 CFLAGS
+= -DCONFIG_WPS_OOB
346 ifdef CONFIG_WPS_UPNP
347 CFLAGS
+= -DCONFIG_WPS_UPNP
348 OBJS
+= ..
/src
/wps
/wps_upnp.o
349 OBJS
+= ..
/src
/wps
/wps_upnp_ssdp.o
350 OBJS
+= ..
/src
/wps
/wps_upnp_web.o
351 OBJS
+= ..
/src
/wps
/wps_upnp_event.o
352 OBJS
+= ..
/src
/wps
/httpread.o
357 ifdef CONFIG_EAP_IKEV2
358 CFLAGS
+= -DEAP_SERVER_IKEV2
359 OBJS
+= ..
/src
/eap_server
/eap_ikev2.o ..
/src
/eap_server
/ikev2.o
360 OBJS
+= ..
/src
/eap_common
/eap_ikev2_common.o ..
/src
/eap_common
/ikev2_common.o
365 CFLAGS
+= -DEAP_SERVER_TNC
366 OBJS
+= ..
/src
/eap_server
/eap_tnc.o
367 OBJS
+= ..
/src
/eap_server
/tncs.o
369 ifndef CONFIG_DRIVER_BSD
374 # Basic EAP functionality is needed for EAPOL
375 OBJS
+= ..
/src
/eap_server
/eap.o
376 OBJS
+= ..
/src
/eap_common
/eap_common.o
377 OBJS
+= ..
/src
/eap_server
/eap_methods.o
378 OBJS
+= ..
/src
/eap_server
/eap_identity.o
381 CFLAGS
+= -DEAP_SERVER
388 ifeq ($(CONFIG_TLS
), internal
)
390 CONFIG_CRYPTO
=internal
393 ifeq ($(CONFIG_CRYPTO
), libtomcrypt
)
394 CFLAGS
+= -DCONFIG_INTERNAL_X509
396 ifeq ($(CONFIG_CRYPTO
), internal
)
397 CFLAGS
+= -DCONFIG_INTERNAL_X509
402 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
403 CFLAGS
+= -DEAP_TLS_FUNCS
404 OBJS
+= ..
/src
/eap_server
/eap_tls_common.o
406 ifeq ($(CONFIG_TLS
), openssl
)
407 OBJS
+= ..
/src
/crypto
/tls_openssl.o
408 LIBS
+= -lssl
-lcrypto
412 ifeq ($(CONFIG_TLS
), gnutls
)
413 OBJS
+= ..
/src
/crypto
/tls_gnutls.o
414 LIBS
+= -lgnutls
-lgcrypt
-lgpg-error
418 ifdef CONFIG_GNUTLS_EXTRA
419 CFLAGS
+= -DCONFIG_GNUTLS_EXTRA
420 LIBS
+= -lgnutls-extra
422 ifeq ($(CONFIG_TLS
), internal
)
423 OBJS
+= ..
/src
/crypto
/tls_internal.o
424 OBJS
+= ..
/src
/tls
/tlsv1_common.o ..
/src
/tls
/tlsv1_record.o
425 OBJS
+= ..
/src
/tls
/tlsv1_cred.o ..
/src
/tls
/tlsv1_server.o
426 OBJS
+= ..
/src
/tls
/tlsv1_server_write.o ..
/src
/tls
/tlsv1_server_read.o
427 OBJS
+= ..
/src
/tls
/asn1.o ..
/src
/tls
/x509v3.o
428 OBJS_p
+= ..
/src
/tls
/asn1.o
429 OBJS_p
+= ..
/src
/crypto
/rc4.o ..
/src
/crypto
/aes_wrap.o ..
/src
/crypto
/aes.o
431 CFLAGS
+= -DCONFIG_TLS_INTERNAL
432 CFLAGS
+= -DCONFIG_TLS_INTERNAL_SERVER
433 ifeq ($(CONFIG_CRYPTO
), internal
)
434 ifdef CONFIG_INTERNAL_LIBTOMMATH
435 CFLAGS
+= -DCONFIG_INTERNAL_LIBTOMMATH
441 ifeq ($(CONFIG_CRYPTO
), libtomcrypt
)
442 LIBS
+= -ltomcrypt
-ltfm
443 LIBS_p
+= -ltomcrypt
-ltfm
448 OBJS
+= ..
/src
/crypto
/tls_none.o
452 CFLAGS
+= -DPKCS12_FUNCS
456 OBJS
+= ..
/src
/crypto
/ms_funcs.o
461 OBJS
+= ..
/src
/eap_common
/chap.o
466 ifeq ($(CONFIG_TLS
), openssl
)
471 ifeq ($(CONFIG_TLS
), gnutls
)
476 ifeq ($(CONFIG_TLS
), internal
)
477 ifeq ($(CONFIG_CRYPTO
), libtomcrypt
)
478 LIBS
+= -ltomcrypt
-ltfm
479 LIBS_p
+= -ltomcrypt
-ltfm
483 ifeq ($(CONFIG_TLS
), openssl
)
484 OBJS
+= ..
/src
/crypto
/crypto_openssl.o
485 OBJS_p
+= ..
/src
/crypto
/crypto_openssl.o
486 HOBJS
+= ..
/src
/crypto
/crypto_openssl.o
487 CONFIG_INTERNAL_SHA256
=y
489 ifeq ($(CONFIG_TLS
), gnutls
)
490 OBJS
+= ..
/src
/crypto
/crypto_gnutls.o
491 OBJS_p
+= ..
/src
/crypto
/crypto_gnutls.o
492 HOBJS
+= ..
/src
/crypto
/crypto_gnutls.o
493 CONFIG_INTERNAL_SHA256
=y
495 ifeq ($(CONFIG_TLS
), internal
)
496 ifeq ($(CONFIG_CRYPTO
), libtomcrypt
)
497 OBJS
+= ..
/src
/crypto
/crypto_libtomcrypt.o
498 OBJS_p
+= ..
/src
/crypto
/crypto_libtomcrypt.o
499 CONFIG_INTERNAL_SHA256
=y
501 ifeq ($(CONFIG_CRYPTO
), internal
)
502 OBJS
+= ..
/src
/crypto
/crypto_internal.o ..
/src
/tls
/rsa.o ..
/src
/tls
/bignum.o
503 OBJS_p
+= ..
/src
/crypto
/crypto_internal.o ..
/src
/tls
/rsa.o ..
/src
/tls
/bignum.o
504 CFLAGS
+= -DCONFIG_CRYPTO_INTERNAL
505 CONFIG_INTERNAL_AES
=y
506 CONFIG_INTERNAL_DES
=y
507 CONFIG_INTERNAL_SHA1
=y
508 CONFIG_INTERNAL_MD4
=y
509 CONFIG_INTERNAL_MD5
=y
510 CONFIG_INTERNAL_SHA256
=y
514 CONFIG_INTERNAL_AES
=y
515 CONFIG_INTERNAL_SHA1
=y
516 CONFIG_INTERNAL_MD5
=y
517 CONFIG_INTERNAL_SHA256
=y
520 ifdef CONFIG_INTERNAL_AES
521 CFLAGS
+= -DINTERNAL_AES
523 ifdef CONFIG_INTERNAL_SHA1
524 CFLAGS
+= -DINTERNAL_SHA1
526 ifdef CONFIG_INTERNAL_SHA256
527 CFLAGS
+= -DINTERNAL_SHA256
529 ifdef CONFIG_INTERNAL_MD5
530 CFLAGS
+= -DINTERNAL_MD5
532 ifdef CONFIG_INTERNAL_MD4
533 CFLAGS
+= -DINTERNAL_MD4
535 ifdef CONFIG_INTERNAL_DES
536 CFLAGS
+= -DINTERNAL_DES
540 OBJS
+= ..
/src
/crypto
/sha256.o
544 OBJS
+= ..
/src
/crypto
/dh_groups.o
547 ifndef NEED_FIPS186_2_PRF
548 CFLAGS
+= -DCONFIG_NO_FIPS186_2_PRF
552 CFLAGS
+= -DCONFIG_NO_T_PRF
556 CFLAGS
+= -DCONFIG_NO_TLS_PRF
559 ifdef CONFIG_RADIUS_SERVER
560 CFLAGS
+= -DRADIUS_SERVER
561 OBJS
+= ..
/src
/radius
/radius_server.o
565 CFLAGS
+= -DCONFIG_IPV6
568 ifdef CONFIG_DRIVER_RADIUS_ACL
569 CFLAGS
+= -DCONFIG_DRIVER_RADIUS_ACL
572 ifdef CONFIG_FULL_DYNAMIC_VLAN
573 # define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
574 # and vlan interfaces for the vlan feature.
575 CFLAGS
+= -DCONFIG_FULL_DYNAMIC_VLAN
579 OBJS
+= ..
/src
/utils
/base64.o
583 OBJS
+= beacon.o wme.o ap_list.o ieee802_11.o
584 OBJS
+= hw_features.o
585 CFLAGS
+= -DNEED_MLME
588 ifdef CONFIG_NO_STDOUT_DEBUG
589 CFLAGS
+= -DCONFIG_NO_STDOUT_DEBUG
592 ifdef CONFIG_NO_AES_EXTRAS
593 CFLAGS
+= -DCONFIG_NO_AES_UNWRAP
594 CFLAGS
+= -DCONFIG_NO_AES_CTR
-DCONFIG_NO_AES_OMAC1
595 CFLAGS
+= -DCONFIG_NO_AES_EAX
-DCONFIG_NO_AES_CBC
596 CFLAGS
+= -DCONFIG_NO_AES_DECRYPT
597 CFLAGS
+= -DCONFIG_NO_AES_ENCRYPT_BLOCK
600 ALL
=hostapd hostapd_cli
602 all: verify_config
$(ALL
)
605 @if
[ ! -r .config
]; then \
606 echo
'Building hostapd requires a configuration file'; \
607 echo
'(.config). See README for more instructions. You can'; \
608 echo
'run "cp defconfig .config" to create an example'; \
609 echo
'configuration.'; \
614 for i in
$(ALL
); do cp
$$i /usr
/local
/bin
/$$i; done
617 $(CC
) -o hostapd
$(OBJS
) $(LIBS
)
619 OBJS_c
= hostapd_cli.o ..
/src
/common
/wpa_ctrl.o ..
/src
/utils
/os_
$(CONFIG_OS
).o
620 hostapd_cli
: $(OBJS_c
)
621 $(CC
) -o hostapd_cli
$(OBJS_c
)
623 NOBJS
= nt_password_hash.o ..
/src
/crypto
/ms_funcs.o ..
/src
/crypto
/sha1.o ..
/src
/crypto
/rc4.o ..
/src
/crypto
/md5.o
624 NOBJS
+= ..
/src
/crypto
/crypto_openssl.o ..
/src
/utils
/os_
$(CONFIG_OS
).o
629 nt_password_hash
: $(NOBJS
)
630 $(CC
) -o nt_password_hash
$(NOBJS
) $(LIBS_n
)
633 $(CC
) -o hlr_auc_gw
$(HOBJS
) $(LIBS_h
)
636 $(MAKE
) -C ..
/src
clean
637 rm -f core
*~
*.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
641 fig2dev
-L eps
$*.fig
$*.eps
644 fig2dev
-L png
-m
3 $*.fig | pngtopnm | pnmscale
0.4 | pnmtopng \
647 docs-pics
: doc
/hostapd.png doc
/hostapd.eps
650 (cd ..
; doxygen hostapd
/doc
/doxygen.full
; cd hostapd
)
652 cp doc
/latex
/refman.pdf hostapd-devel.pdf
655 (cd ..
; doxygen hostapd
/doc
/doxygen.fast
; cd hostapd
)
658 rm -rf doc
/latex doc
/html
659 rm -f doc
/hostapd.
{eps
,png
} hostapd-devel.pdf
661 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
662 test-milenage
: $(TEST_SRC_MILENAGE
)
663 $(CC
) -o test-milenage
-Wall
-Werror
$(TEST_SRC_MILENAGE
) \
664 -DTEST_MAIN_MILENAGE
-I.
-DINTERNAL_AES \
665 -I..
/src
/crypto
-I..
/src
/utils
669 -include $(OBJS
:%.o
=%.d
)