Home | History | Annotate | Download | only in hostapd
      1 ifndef CC
      2 CC=gcc
      3 endif
      4 
      5 ifndef CFLAGS
      6 CFLAGS = -MMD -O2 -Wall -g
      7 endif
      8 
      9 CFLAGS += -I../src
     10 CFLAGS += -I../src/utils
     11 
     12 # Uncomment following line and set the path to your kernel tree include
     13 # directory if your C library does not include all header files.
     14 # CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include
     15 
     16 -include .config
     17 
     18 ifndef CONFIG_OS
     19 ifdef CONFIG_NATIVE_WINDOWS
     20 CONFIG_OS=win32
     21 else
     22 CONFIG_OS=unix
     23 endif
     24 endif
     25 
     26 ifeq ($(CONFIG_OS), internal)
     27 CFLAGS += -DOS_NO_C_LIB_DEFINES
     28 endif
     29 
     30 ifdef CONFIG_NATIVE_WINDOWS
     31 CFLAGS += -DCONFIG_NATIVE_WINDOWS
     32 LIBS += -lws2_32
     33 endif
     34 
     35 OBJS += main.o
     36 OBJS += config_file.o
     37 
     38 OBJS += ../src/ap/hostapd.o
     39 OBJS += ../src/ap/wpa_auth_glue.o
     40 OBJS += ../src/ap/drv_callbacks.o
     41 OBJS += ../src/ap/ap_drv_ops.o
     42 OBJS += ../src/ap/utils.o
     43 OBJS += ../src/ap/authsrv.o
     44 OBJS += ../src/ap/ieee802_1x.o
     45 OBJS += ../src/ap/ap_config.o
     46 OBJS += ../src/ap/ieee802_11_auth.o
     47 OBJS += ../src/ap/sta_info.o
     48 OBJS += ../src/ap/wpa_auth.o
     49 OBJS += ../src/ap/tkip_countermeasures.o
     50 OBJS += ../src/ap/ap_mlme.o
     51 OBJS += ../src/ap/wpa_auth_ie.o
     52 OBJS += ../src/ap/preauth_auth.o
     53 OBJS += ../src/ap/pmksa_cache_auth.o
     54 OBJS += ../src/ap/ieee802_11_shared.o
     55 OBJS += ../src/ap/beacon.o
     56 
     57 OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o
     58 
     59 NEED_RC4=y
     60 NEED_AES=y
     61 NEED_MD5=y
     62 NEED_SHA1=y
     63 
     64 OBJS += ../src/drivers/drivers.o
     65 CFLAGS += -DHOSTAPD
     66 
     67 ifdef CONFIG_WPA_TRACE
     68 CFLAGS += -DWPA_TRACE
     69 OBJS += ../src/utils/trace.o
     70 HOBJS += ../src/utils/trace.o
     71 LDFLAGS += -rdynamic
     72 CFLAGS += -funwind-tables
     73 ifdef CONFIG_WPA_TRACE_BFD
     74 CFLAGS += -DWPA_TRACE_BFD
     75 LIBS += -lbfd
     76 LIBS_c += -lbfd
     77 LIBS_h += -lbfd
     78 endif
     79 endif
     80 
     81 ifndef CONFIG_ELOOP
     82 CONFIG_ELOOP=eloop
     83 endif
     84 OBJS += ../src/utils/$(CONFIG_ELOOP).o
     85 OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
     86 OBJS += ../src/utils/common.o
     87 OBJS += ../src/utils/wpa_debug.o
     88 OBJS_c += ../src/utils/wpa_debug.o
     89 OBJS += ../src/utils/wpabuf.o
     90 OBJS += ../src/utils/os_$(CONFIG_OS).o
     91 OBJS += ../src/utils/ip_addr.o
     92 
     93 OBJS += ../src/common/ieee802_11_common.o
     94 OBJS += ../src/common/wpa_common.o
     95 
     96 OBJS += ../src/eapol_auth/eapol_auth_sm.o
     97 
     98 
     99 ifndef CONFIG_NO_DUMP_STATE
    100 # define HOSTAPD_DUMP_STATE to include SIGUSR1 handler for dumping state to
    101 # a file (undefine it, if you want to save in binary size)
    102 CFLAGS += -DHOSTAPD_DUMP_STATE
    103 OBJS += dump_state.o
    104 OBJS += ../src/eapol_auth/eapol_auth_dump.o
    105 endif
    106 
    107 ifdef CONFIG_NO_RADIUS
    108 CFLAGS += -DCONFIG_NO_RADIUS
    109 CONFIG_NO_ACCOUNTING=y
    110 else
    111 OBJS += ../src/radius/radius.o
    112 OBJS += ../src/radius/radius_client.o
    113 OBJS += ../src/radius/radius_das.o
    114 endif
    115 
    116 ifdef CONFIG_NO_ACCOUNTING
    117 CFLAGS += -DCONFIG_NO_ACCOUNTING
    118 else
    119 OBJS += ../src/ap/accounting.o
    120 endif
    121 
    122 ifdef CONFIG_NO_VLAN
    123 CFLAGS += -DCONFIG_NO_VLAN
    124 else
    125 OBJS += ../src/ap/vlan_init.o
    126 ifdef CONFIG_VLAN_NETLINK
    127 ifdef CONFIG_FULL_DYNAMIC_VLAN
    128 OBJS += ../src/ap/vlan_util.o
    129 endif
    130 CFLAGS += -DCONFIG_VLAN_NETLINK
    131 endif
    132 endif
    133 
    134 ifdef CONFIG_NO_CTRL_IFACE
    135 CFLAGS += -DCONFIG_NO_CTRL_IFACE
    136 else
    137 OBJS += ctrl_iface.o
    138 OBJS += ../src/ap/ctrl_iface_ap.o
    139 endif
    140 
    141 OBJS += ../src/crypto/md5.o
    142 
    143 CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX
    144 
    145 ifdef CONFIG_IAPP
    146 CFLAGS += -DCONFIG_IAPP
    147 OBJS += ../src/ap/iapp.o
    148 endif
    149 
    150 ifdef CONFIG_RSN_PREAUTH
    151 CFLAGS += -DCONFIG_RSN_PREAUTH
    152 CONFIG_L2_PACKET=y
    153 endif
    154 
    155 ifdef CONFIG_PEERKEY
    156 CFLAGS += -DCONFIG_PEERKEY
    157 OBJS += ../src/ap/peerkey_auth.o
    158 endif
    159 
    160 ifdef CONFIG_IEEE80211W
    161 CFLAGS += -DCONFIG_IEEE80211W
    162 NEED_SHA256=y
    163 NEED_AES_OMAC1=y
    164 endif
    165 
    166 ifdef CONFIG_IEEE80211R
    167 CFLAGS += -DCONFIG_IEEE80211R
    168 OBJS += ../src/ap/wpa_auth_ft.o
    169 NEED_SHA256=y
    170 NEED_AES_OMAC1=y
    171 NEED_AES_UNWRAP=y
    172 endif
    173 
    174 ifdef CONFIG_IEEE80211V
    175 CFLAGS += -DCONFIG_IEEE80211V
    176 OBJS += ../src/ap/wnm_ap.o
    177 endif
    178 
    179 ifdef CONFIG_IEEE80211N
    180 CFLAGS += -DCONFIG_IEEE80211N
    181 endif
    182 
    183 ifdef CONFIG_WNM
    184 CFLAGS += -DCONFIG_WNM
    185 endif
    186 
    187 ifdef CONFIG_IEEE80211AC
    188 CFLAGS += -DCONFIG_IEEE80211AC
    189 endif
    190 
    191 include ../src/drivers/drivers.mak
    192 OBJS += $(DRV_AP_OBJS)
    193 CFLAGS += $(DRV_AP_CFLAGS)
    194 LDFLAGS += $(DRV_AP_LDFLAGS)
    195 LIBS += $(DRV_AP_LIBS)
    196 
    197 ifdef CONFIG_L2_PACKET
    198 ifdef CONFIG_DNET_PCAP
    199 ifdef CONFIG_L2_FREEBSD
    200 LIBS += -lpcap
    201 OBJS += ../src/l2_packet/l2_packet_freebsd.o
    202 else
    203 LIBS += -ldnet -lpcap
    204 OBJS += ../src/l2_packet/l2_packet_pcap.o
    205 endif
    206 else
    207 OBJS += ../src/l2_packet/l2_packet_linux.o
    208 endif
    209 else
    210 OBJS += ../src/l2_packet/l2_packet_none.o
    211 endif
    212 
    213 
    214 ifdef CONFIG_EAP_MD5
    215 CFLAGS += -DEAP_SERVER_MD5
    216 OBJS += ../src/eap_server/eap_server_md5.o
    217 CHAP=y
    218 endif
    219 
    220 ifdef CONFIG_EAP_TLS
    221 CFLAGS += -DEAP_SERVER_TLS
    222 OBJS += ../src/eap_server/eap_server_tls.o
    223 TLS_FUNCS=y
    224 endif
    225 
    226 ifdef CONFIG_EAP_UNAUTH_TLS
    227 CFLAGS += -DEAP_SERVER_UNAUTH_TLS
    228 ifndef CONFIG_EAP_TLS
    229 OBJS += ../src/eap_server/eap_server_tls.o
    230 TLS_FUNCS=y
    231 endif
    232 endif
    233 
    234 ifdef CONFIG_EAP_PEAP
    235 CFLAGS += -DEAP_SERVER_PEAP
    236 OBJS += ../src/eap_server/eap_server_peap.o
    237 OBJS += ../src/eap_common/eap_peap_common.o
    238 TLS_FUNCS=y
    239 CONFIG_EAP_MSCHAPV2=y
    240 endif
    241 
    242 ifdef CONFIG_EAP_TTLS
    243 CFLAGS += -DEAP_SERVER_TTLS
    244 OBJS += ../src/eap_server/eap_server_ttls.o
    245 TLS_FUNCS=y
    246 CHAP=y
    247 endif
    248 
    249 ifdef CONFIG_EAP_MSCHAPV2
    250 CFLAGS += -DEAP_SERVER_MSCHAPV2
    251 OBJS += ../src/eap_server/eap_server_mschapv2.o
    252 MS_FUNCS=y
    253 endif
    254 
    255 ifdef CONFIG_EAP_GTC
    256 CFLAGS += -DEAP_SERVER_GTC
    257 OBJS += ../src/eap_server/eap_server_gtc.o
    258 endif
    259 
    260 ifdef CONFIG_EAP_SIM
    261 CFLAGS += -DEAP_SERVER_SIM
    262 OBJS += ../src/eap_server/eap_server_sim.o
    263 CONFIG_EAP_SIM_COMMON=y
    264 NEED_AES_CBC=y
    265 endif
    266 
    267 ifdef CONFIG_EAP_AKA
    268 CFLAGS += -DEAP_SERVER_AKA
    269 OBJS += ../src/eap_server/eap_server_aka.o
    270 CONFIG_EAP_SIM_COMMON=y
    271 NEED_SHA256=y
    272 NEED_AES_CBC=y
    273 endif
    274 
    275 ifdef CONFIG_EAP_AKA_PRIME
    276 CFLAGS += -DEAP_SERVER_AKA_PRIME
    277 endif
    278 
    279 ifdef CONFIG_EAP_SIM_COMMON
    280 OBJS += ../src/eap_common/eap_sim_common.o
    281 # Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
    282 # replaced with another file implementating the interface specified in
    283 # eap_sim_db.h.
    284 OBJS += ../src/eap_server/eap_sim_db.o
    285 NEED_FIPS186_2_PRF=y
    286 endif
    287 
    288 ifdef CONFIG_EAP_PAX
    289 CFLAGS += -DEAP_SERVER_PAX
    290 OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
    291 endif
    292 
    293 ifdef CONFIG_EAP_PSK
    294 CFLAGS += -DEAP_SERVER_PSK
    295 OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
    296 NEED_AES_OMAC1=y
    297 NEED_AES_ENCBLOCK=y
    298 NEED_AES_EAX=y
    299 endif
    300 
    301 ifdef CONFIG_EAP_SAKE
    302 CFLAGS += -DEAP_SERVER_SAKE
    303 OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
    304 endif
    305 
    306 ifdef CONFIG_EAP_GPSK
    307 CFLAGS += -DEAP_SERVER_GPSK
    308 OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
    309 ifdef CONFIG_EAP_GPSK_SHA256
    310 CFLAGS += -DEAP_SERVER_GPSK_SHA256
    311 endif
    312 NEED_SHA256=y
    313 NEED_AES_OMAC1=y
    314 endif
    315 
    316 ifdef CONFIG_EAP_PWD
    317 CFLAGS += -DEAP_SERVER_PWD
    318 OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
    319 NEED_SHA256=y
    320 endif
    321 
    322 ifdef CONFIG_EAP_VENDOR_TEST
    323 CFLAGS += -DEAP_SERVER_VENDOR_TEST
    324 OBJS += ../src/eap_server/eap_server_vendor_test.o
    325 endif
    326 
    327 ifdef CONFIG_EAP_FAST
    328 CFLAGS += -DEAP_SERVER_FAST
    329 OBJS += ../src/eap_server/eap_server_fast.o
    330 OBJS += ../src/eap_common/eap_fast_common.o
    331 TLS_FUNCS=y
    332 NEED_T_PRF=y
    333 NEED_AES_UNWRAP=y
    334 endif
    335 
    336 ifdef CONFIG_WPS
    337 ifdef CONFIG_WPS2
    338 CFLAGS += -DCONFIG_WPS2
    339 endif
    340 
    341 CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
    342 OBJS += ../src/utils/uuid.o
    343 OBJS += ../src/ap/wps_hostapd.o
    344 OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
    345 OBJS += ../src/wps/wps.o
    346 OBJS += ../src/wps/wps_common.o
    347 OBJS += ../src/wps/wps_attr_parse.o
    348 OBJS += ../src/wps/wps_attr_build.o
    349 OBJS += ../src/wps/wps_attr_process.o
    350 OBJS += ../src/wps/wps_dev_attr.o
    351 OBJS += ../src/wps/wps_enrollee.o
    352 OBJS += ../src/wps/wps_registrar.o
    353 NEED_DH_GROUPS=y
    354 NEED_SHA256=y
    355 NEED_BASE64=y
    356 NEED_AES_CBC=y
    357 NEED_MODEXP=y
    358 CONFIG_EAP=y
    359 
    360 ifdef CONFIG_WPS_UFD
    361 CFLAGS += -DCONFIG_WPS_UFD
    362 OBJS += ../src/wps/wps_ufd.o
    363 NEED_WPS_OOB=y
    364 endif
    365 
    366 ifdef CONFIG_WPS_NFC
    367 CFLAGS += -DCONFIG_WPS_NFC
    368 OBJS += ../src/wps/ndef.o
    369 OBJS += ../src/wps/wps_nfc.o
    370 NEED_WPS_OOB=y
    371 ifdef CONFIG_WPS_NFC_PN531
    372 PN531_PATH ?= /usr/local/src/nfc
    373 CFLAGS += -DCONFIG_WPS_NFC_PN531
    374 CFLAGS += -I${PN531_PATH}/inc
    375 OBJS += ../src/wps/wps_nfc_pn531.o
    376 LIBS += ${PN531_PATH}/lib/wpsnfc.dll
    377 LIBS += ${PN531_PATH}/lib/libnfc_mapping_pn53x.dll
    378 endif
    379 endif
    380 
    381 ifdef NEED_WPS_OOB
    382 CFLAGS += -DCONFIG_WPS_OOB
    383 endif
    384 
    385 ifdef CONFIG_WPS_UPNP
    386 CFLAGS += -DCONFIG_WPS_UPNP
    387 OBJS += ../src/wps/wps_upnp.o
    388 OBJS += ../src/wps/wps_upnp_ssdp.o
    389 OBJS += ../src/wps/wps_upnp_web.o
    390 OBJS += ../src/wps/wps_upnp_event.o
    391 OBJS += ../src/wps/wps_upnp_ap.o
    392 OBJS += ../src/wps/upnp_xml.o
    393 OBJS += ../src/wps/httpread.o
    394 OBJS += ../src/wps/http_client.o
    395 OBJS += ../src/wps/http_server.o
    396 endif
    397 
    398 ifdef CONFIG_WPS_STRICT
    399 CFLAGS += -DCONFIG_WPS_STRICT
    400 OBJS += ../src/wps/wps_validate.o
    401 endif
    402 
    403 ifdef CONFIG_WPS_TESTING
    404 CFLAGS += -DCONFIG_WPS_TESTING
    405 endif
    406 
    407 endif
    408 
    409 ifdef CONFIG_EAP_IKEV2
    410 CFLAGS += -DEAP_SERVER_IKEV2
    411 OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
    412 OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
    413 NEED_DH_GROUPS=y
    414 NEED_DH_GROUPS_ALL=y
    415 NEED_MODEXP=y
    416 NEED_CIPHER=y
    417 endif
    418 
    419 ifdef CONFIG_EAP_TNC
    420 CFLAGS += -DEAP_SERVER_TNC
    421 OBJS += ../src/eap_server/eap_server_tnc.o
    422 OBJS += ../src/eap_server/tncs.o
    423 NEED_BASE64=y
    424 ifndef CONFIG_DRIVER_BSD
    425 LIBS += -ldl
    426 endif
    427 endif
    428 
    429 # Basic EAP functionality is needed for EAPOL
    430 OBJS += eap_register.o
    431 OBJS += ../src/eap_server/eap_server.o
    432 OBJS += ../src/eap_common/eap_common.o
    433 OBJS += ../src/eap_server/eap_server_methods.o
    434 OBJS += ../src/eap_server/eap_server_identity.o
    435 CFLAGS += -DEAP_SERVER_IDENTITY
    436 
    437 ifdef CONFIG_EAP
    438 CFLAGS += -DEAP_SERVER
    439 endif
    440 
    441 ifdef CONFIG_PKCS12
    442 CFLAGS += -DPKCS12_FUNCS
    443 endif
    444 
    445 ifdef MS_FUNCS
    446 OBJS += ../src/crypto/ms_funcs.o
    447 NEED_DES=y
    448 NEED_MD4=y
    449 endif
    450 
    451 ifdef CHAP
    452 OBJS += ../src/eap_common/chap.o
    453 endif
    454 
    455 ifdef TLS_FUNCS
    456 NEED_DES=y
    457 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
    458 CFLAGS += -DEAP_TLS_FUNCS
    459 OBJS += ../src/eap_server/eap_server_tls_common.o
    460 NEED_TLS_PRF=y
    461 endif
    462 
    463 ifndef CONFIG_TLS
    464 CONFIG_TLS=openssl
    465 endif
    466 
    467 ifdef CONFIG_TLSV11
    468 CFLAGS += -DCONFIG_TLSV11
    469 endif
    470 
    471 ifdef CONFIG_TLSV12
    472 CFLAGS += -DCONFIG_TLSV12
    473 NEED_SHA256=y
    474 endif
    475 
    476 ifeq ($(CONFIG_TLS), openssl)
    477 ifdef TLS_FUNCS
    478 OBJS += ../src/crypto/tls_openssl.o
    479 LIBS += -lssl
    480 endif
    481 OBJS += ../src/crypto/crypto_openssl.o
    482 HOBJS += ../src/crypto/crypto_openssl.o
    483 ifdef NEED_FIPS186_2_PRF
    484 OBJS += ../src/crypto/fips_prf_openssl.o
    485 endif
    486 LIBS += -lcrypto
    487 LIBS_h += -lcrypto
    488 endif
    489 
    490 ifeq ($(CONFIG_TLS), gnutls)
    491 ifdef TLS_FUNCS
    492 OBJS += ../src/crypto/tls_gnutls.o
    493 LIBS += -lgnutls -lgpg-error
    494 endif
    495 OBJS += ../src/crypto/crypto_gnutls.o
    496 HOBJS += ../src/crypto/crypto_gnutls.o
    497 ifdef NEED_FIPS186_2_PRF
    498 OBJS += ../src/crypto/fips_prf_gnutls.o
    499 endif
    500 LIBS += -lgcrypt
    501 LIBS_h += -lgcrypt
    502 CONFIG_INTERNAL_SHA256=y
    503 CONFIG_INTERNAL_RC4=y
    504 CONFIG_INTERNAL_DH_GROUP5=y
    505 endif
    506 
    507 ifeq ($(CONFIG_TLS), schannel)
    508 ifdef TLS_FUNCS
    509 OBJS += ../src/crypto/tls_schannel.o
    510 endif
    511 OBJS += ../src/crypto/crypto_cryptoapi.o
    512 OBJS_p += ../src/crypto/crypto_cryptoapi.o
    513 CONFIG_INTERNAL_SHA256=y
    514 CONFIG_INTERNAL_RC4=y
    515 CONFIG_INTERNAL_DH_GROUP5=y
    516 endif
    517 
    518 ifeq ($(CONFIG_TLS), nss)
    519 ifdef TLS_FUNCS
    520 OBJS += ../src/crypto/tls_nss.o
    521 LIBS += -lssl3
    522 endif
    523 OBJS += ../src/crypto/crypto_nss.o
    524 ifdef NEED_FIPS186_2_PRF
    525 OBJS += ../src/crypto/fips_prf_nss.o
    526 endif
    527 LIBS += -lnss3
    528 LIBS_h += -lnss3
    529 CONFIG_INTERNAL_MD4=y
    530 CONFIG_INTERNAL_DH_GROUP5=y
    531 endif
    532 
    533 ifeq ($(CONFIG_TLS), internal)
    534 ifndef CONFIG_CRYPTO
    535 CONFIG_CRYPTO=internal
    536 endif
    537 ifdef TLS_FUNCS
    538 OBJS += ../src/crypto/crypto_internal-rsa.o
    539 OBJS += ../src/crypto/tls_internal.o
    540 OBJS += ../src/tls/tlsv1_common.o
    541 OBJS += ../src/tls/tlsv1_record.o
    542 OBJS += ../src/tls/tlsv1_cred.o
    543 OBJS += ../src/tls/tlsv1_server.o
    544 OBJS += ../src/tls/tlsv1_server_write.o
    545 OBJS += ../src/tls/tlsv1_server_read.o
    546 OBJS += ../src/tls/asn1.o
    547 OBJS += ../src/tls/rsa.o
    548 OBJS += ../src/tls/x509v3.o
    549 OBJS += ../src/tls/pkcs1.o
    550 OBJS += ../src/tls/pkcs5.o
    551 OBJS += ../src/tls/pkcs8.o
    552 NEED_SHA256=y
    553 NEED_BASE64=y
    554 NEED_TLS_PRF=y
    555 ifdef CONFIG_TLSV12
    556 NEED_TLS_PRF_SHA256=y
    557 endif
    558 NEED_MODEXP=y
    559 NEED_CIPHER=y
    560 CFLAGS += -DCONFIG_TLS_INTERNAL
    561 CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
    562 endif
    563 ifdef NEED_CIPHER
    564 NEED_DES=y
    565 OBJS += ../src/crypto/crypto_internal-cipher.o
    566 endif
    567 ifdef NEED_MODEXP
    568 OBJS += ../src/crypto/crypto_internal-modexp.o
    569 OBJS += ../src/tls/bignum.o
    570 endif
    571 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
    572 OBJS += ../src/crypto/crypto_libtomcrypt.o
    573 LIBS += -ltomcrypt -ltfm
    574 LIBS_h += -ltomcrypt -ltfm
    575 CONFIG_INTERNAL_SHA256=y
    576 CONFIG_INTERNAL_RC4=y
    577 CONFIG_INTERNAL_DH_GROUP5=y
    578 endif
    579 ifeq ($(CONFIG_CRYPTO), internal)
    580 OBJS += ../src/crypto/crypto_internal.o
    581 NEED_AES_DEC=y
    582 CFLAGS += -DCONFIG_CRYPTO_INTERNAL
    583 ifdef CONFIG_INTERNAL_LIBTOMMATH
    584 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
    585 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
    586 CFLAGS += -DLTM_FAST
    587 endif
    588 else
    589 LIBS += -ltommath
    590 LIBS_h += -ltommath
    591 endif
    592 CONFIG_INTERNAL_AES=y
    593 CONFIG_INTERNAL_DES=y
    594 CONFIG_INTERNAL_SHA1=y
    595 CONFIG_INTERNAL_MD4=y
    596 CONFIG_INTERNAL_MD5=y
    597 CONFIG_INTERNAL_SHA256=y
    598 CONFIG_INTERNAL_RC4=y
    599 CONFIG_INTERNAL_DH_GROUP5=y
    600 endif
    601 ifeq ($(CONFIG_CRYPTO), cryptoapi)
    602 OBJS += ../src/crypto/crypto_cryptoapi.o
    603 OBJS_p += ../src/crypto/crypto_cryptoapi.o
    604 CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
    605 CONFIG_INTERNAL_SHA256=y
    606 CONFIG_INTERNAL_RC4=y
    607 endif
    608 endif
    609 
    610 ifeq ($(CONFIG_TLS), none)
    611 ifdef TLS_FUNCS
    612 OBJS += ../src/crypto/tls_none.o
    613 CFLAGS += -DEAP_TLS_NONE
    614 CONFIG_INTERNAL_AES=y
    615 CONFIG_INTERNAL_SHA1=y
    616 CONFIG_INTERNAL_MD5=y
    617 endif
    618 OBJS += ../src/crypto/crypto_none.o
    619 OBJS_p += ../src/crypto/crypto_none.o
    620 CONFIG_INTERNAL_SHA256=y
    621 CONFIG_INTERNAL_RC4=y
    622 endif
    623 
    624 ifndef TLS_FUNCS
    625 OBJS += ../src/crypto/tls_none.o
    626 ifeq ($(CONFIG_TLS), internal)
    627 CONFIG_INTERNAL_AES=y
    628 CONFIG_INTERNAL_SHA1=y
    629 CONFIG_INTERNAL_MD5=y
    630 CONFIG_INTERNAL_RC4=y
    631 endif
    632 endif
    633 
    634 AESOBJS = # none so far
    635 ifdef CONFIG_INTERNAL_AES
    636 AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
    637 endif
    638 
    639 AESOBJS += ../src/crypto/aes-wrap.o
    640 ifdef NEED_AES_EAX
    641 AESOBJS += ../src/crypto/aes-eax.o
    642 NEED_AES_CTR=y
    643 endif
    644 ifdef NEED_AES_CTR
    645 AESOBJS += ../src/crypto/aes-ctr.o
    646 endif
    647 ifdef NEED_AES_ENCBLOCK
    648 AESOBJS += ../src/crypto/aes-encblock.o
    649 endif
    650 ifdef NEED_AES_OMAC1
    651 AESOBJS += ../src/crypto/aes-omac1.o
    652 endif
    653 ifdef NEED_AES_UNWRAP
    654 NEED_AES_DEC=y
    655 AESOBJS += ../src/crypto/aes-unwrap.o
    656 endif
    657 ifdef NEED_AES_CBC
    658 NEED_AES_DEC=y
    659 AESOBJS += ../src/crypto/aes-cbc.o
    660 endif
    661 ifdef NEED_AES_DEC
    662 ifdef CONFIG_INTERNAL_AES
    663 AESOBJS += ../src/crypto/aes-internal-dec.o
    664 endif
    665 endif
    666 ifdef NEED_AES
    667 OBJS += $(AESOBJS)
    668 endif
    669 
    670 ifdef NEED_SHA1
    671 ifneq ($(CONFIG_TLS), openssl)
    672 SHA1OBJS += ../src/crypto/sha1.o
    673 endif
    674 SHA1OBJS += ../src/crypto/sha1-prf.o
    675 ifdef CONFIG_INTERNAL_SHA1
    676 SHA1OBJS += ../src/crypto/sha1-internal.o
    677 ifdef NEED_FIPS186_2_PRF
    678 SHA1OBJS += ../src/crypto/fips_prf_internal.o
    679 endif
    680 endif
    681 ifneq ($(CONFIG_TLS), openssl)
    682 SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
    683 endif
    684 ifdef NEED_T_PRF
    685 SHA1OBJS += ../src/crypto/sha1-tprf.o
    686 endif
    687 ifdef NEED_TLS_PRF
    688 SHA1OBJS += ../src/crypto/sha1-tlsprf.o
    689 endif
    690 endif
    691 
    692 ifdef NEED_SHA1
    693 OBJS += $(SHA1OBJS)
    694 endif
    695 
    696 ifdef NEED_MD5
    697 ifdef CONFIG_INTERNAL_MD5
    698 OBJS += ../src/crypto/md5-internal.o
    699 HOBJS += ../src/crypto/md5-internal.o
    700 endif
    701 endif
    702 
    703 ifdef NEED_MD4
    704 ifdef CONFIG_INTERNAL_MD4
    705 OBJS += ../src/crypto/md4-internal.o
    706 endif
    707 endif
    708 
    709 ifdef NEED_DES
    710 ifdef CONFIG_INTERNAL_DES
    711 OBJS += ../src/crypto/des-internal.o
    712 endif
    713 endif
    714 
    715 ifdef NEED_RC4
    716 ifdef CONFIG_INTERNAL_RC4
    717 OBJS += ../src/crypto/rc4.o
    718 endif
    719 endif
    720 
    721 ifdef NEED_SHA256
    722 CFLAGS += -DCONFIG_SHA256
    723 ifneq ($(CONFIG_TLS), openssl)
    724 OBJS += ../src/crypto/sha256.o
    725 endif
    726 OBJS += ../src/crypto/sha256-prf.o
    727 ifdef CONFIG_INTERNAL_SHA256
    728 OBJS += ../src/crypto/sha256-internal.o
    729 endif
    730 ifdef NEED_TLS_PRF_SHA256
    731 OBJS += ../src/crypto/sha256-tlsprf.o
    732 endif
    733 endif
    734 
    735 ifdef NEED_DH_GROUPS
    736 OBJS += ../src/crypto/dh_groups.o
    737 endif
    738 ifdef NEED_DH_GROUPS_ALL
    739 CFLAGS += -DALL_DH_GROUPS
    740 endif
    741 ifdef CONFIG_INTERNAL_DH_GROUP5
    742 ifdef NEED_DH_GROUPS
    743 OBJS += ../src/crypto/dh_group5.o
    744 endif
    745 endif
    746 
    747 ifdef CONFIG_NO_RANDOM_POOL
    748 CFLAGS += -DCONFIG_NO_RANDOM_POOL
    749 else
    750 OBJS += ../src/crypto/random.o
    751 HOBJS += ../src/crypto/random.o
    752 HOBJS += ../src/utils/eloop.o
    753 HOBJS += $(SHA1OBJS)
    754 HOBJS += ../src/crypto/md5.o
    755 endif
    756 
    757 ifdef CONFIG_RADIUS_SERVER
    758 CFLAGS += -DRADIUS_SERVER
    759 OBJS += ../src/radius/radius_server.o
    760 endif
    761 
    762 ifdef CONFIG_IPV6
    763 CFLAGS += -DCONFIG_IPV6
    764 endif
    765 
    766 ifdef CONFIG_DRIVER_RADIUS_ACL
    767 CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
    768 endif
    769 
    770 ifdef CONFIG_FULL_DYNAMIC_VLAN
    771 # define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
    772 # and vlan interfaces for the vlan feature.
    773 CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
    774 endif
    775 
    776 ifdef NEED_BASE64
    777 OBJS += ../src/utils/base64.o
    778 endif
    779 
    780 ifdef NEED_AP_MLME
    781 OBJS += ../src/ap/wmm.o
    782 OBJS += ../src/ap/ap_list.o
    783 OBJS += ../src/ap/ieee802_11.o
    784 OBJS += ../src/ap/hw_features.o
    785 CFLAGS += -DNEED_AP_MLME
    786 endif
    787 ifdef CONFIG_IEEE80211N
    788 OBJS += ../src/ap/ieee802_11_ht.o
    789 endif
    790 
    791 ifdef CONFIG_IEEE80211AC
    792 OBJS += ../src/ap/ieee802_11_vht.o
    793 endif
    794 
    795 ifdef CONFIG_P2P_MANAGER
    796 CFLAGS += -DCONFIG_P2P_MANAGER
    797 OBJS += ../src/ap/p2p_hostapd.o
    798 endif
    799 
    800 ifdef CONFIG_HS20
    801 CFLAGS += -DCONFIG_HS20
    802 OBJS += ../src/ap/hs20.o
    803 CONFIG_INTERWORKING=y
    804 endif
    805 
    806 ifdef CONFIG_INTERWORKING
    807 CFLAGS += -DCONFIG_INTERWORKING
    808 OBJS += ../src/common/gas.o
    809 OBJS += ../src/ap/gas_serv.o
    810 endif
    811 
    812 OBJS += ../src/drivers/driver_common.o
    813 
    814 ifdef CONFIG_WPA_CLI_EDIT
    815 OBJS_c += ../src/utils/edit.o
    816 else
    817 OBJS_c += ../src/utils/edit_simple.o
    818 endif
    819 
    820 ifdef CONFIG_NO_STDOUT_DEBUG
    821 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
    822 endif
    823 
    824 ifdef CONFIG_DEBUG_FILE
    825 CFLAGS += -DCONFIG_DEBUG_FILE
    826 endif
    827 
    828 ifdef CONFIG_SQLITE
    829 CFLAGS += -DCONFIG_SQLITE
    830 LIBS += -lsqlite3
    831 LIBS_h += -lsqlite3
    832 endif
    833 
    834 ALL=hostapd hostapd_cli
    835 
    836 all: verify_config $(ALL)
    837 
    838 Q=@
    839 E=echo
    840 ifeq ($(V), 1)
    841 Q=
    842 E=true
    843 endif
    844 
    845 %.o: %.c
    846 	$(Q)$(CC) -c -o $@ $(CFLAGS) $<
    847 	@$(E) "  CC " $<
    848 
    849 verify_config:
    850 	@if [ ! -r .config ]; then \
    851 		echo 'Building hostapd requires a configuration file'; \
    852 		echo '(.config). See README for more instructions. You can'; \
    853 		echo 'run "cp defconfig .config" to create an example'; \
    854 		echo 'configuration.'; \
    855 		exit 1; \
    856 	fi
    857 
    858 install: all
    859 	mkdir -p $(DESTDIR)/usr/local/bin
    860 	for i in $(ALL); do cp -f $$i $(DESTDIR)/usr/local/bin/$$i; done
    861 
    862 ../src/drivers/build.hostapd:
    863 	@if [ -f ../src/drivers/build.wpa_supplicant ]; then \
    864 		$(MAKE) -C ../src/drivers clean; \
    865 	fi
    866 	@touch ../src/drivers/build.hostapd
    867 
    868 BCHECK=../src/drivers/build.hostapd
    869 
    870 hostapd: $(BCHECK) $(OBJS)
    871 	$(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
    872 	@$(E) "  LD " $@
    873 
    874 ifdef CONFIG_WPA_TRACE
    875 OBJS_c += ../src/utils/trace.o
    876 endif
    877 hostapd_cli: $(OBJS_c)
    878 	$(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
    879 	@$(E) "  LD " $@
    880 
    881 NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) ../src/crypto/md5.o
    882 ifdef NEED_RC4
    883 ifdef CONFIG_INTERNAL_RC4
    884 NOBJS += ../src/crypto/rc4.o
    885 endif
    886 endif
    887 ifdef CONFIG_INTERNAL_MD5
    888 NOBJS += ../src/crypto/md5-internal.o
    889 endif
    890 NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o
    891 NOBJS += ../src/utils/wpa_debug.o
    892 NOBJS += ../src/utils/wpabuf.o
    893 ifdef CONFIG_WPA_TRACE
    894 NOBJS += ../src/utils/trace.o
    895 LIBS_n += -lbfd
    896 endif
    897 ifdef TLS_FUNCS
    898 LIBS_n += -lcrypto
    899 endif
    900 
    901 HOBJS += hlr_auc_gw.o ../src/utils/common.o ../src/utils/wpa_debug.o ../src/utils/os_$(CONFIG_OS).o ../src/utils/wpabuf.o ../src/crypto/milenage.o
    902 HOBJS += ../src/crypto/aes-encblock.o
    903 ifdef CONFIG_INTERNAL_AES
    904 HOBJS += ../src/crypto/aes-internal.o
    905 HOBJS += ../src/crypto/aes-internal-enc.o
    906 endif
    907 
    908 nt_password_hash: $(NOBJS)
    909 	$(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
    910 	@$(E) "  LD " $@
    911 
    912 hlr_auc_gw: $(HOBJS)
    913 	$(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
    914 	@$(E) "  LD " $@
    915 
    916 clean:
    917 	$(MAKE) -C ../src clean
    918 	rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
    919 	rm -f *.d
    920 
    921 -include $(OBJS:%.o=%.d)
    922