libhydra: Move kernel interface to libcharon
[strongswan.git] / src / libcharon / Android.mk
index 68647db..7942286 100644 (file)
@@ -2,179 +2,181 @@ LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
 # copy-n-paste from Makefile.am
-LOCAL_SRC_FILES := \
-       bus/bus.c bus/bus.h \
-       bus/listeners/listener.h \
-       bus/listeners/file_logger.c bus/listeners/file_logger.h \
-       bus/listeners/sys_logger.c bus/listeners/sys_logger.h \
-       config/backend_manager.c config/backend_manager.h config/backend.h \
-       config/child_cfg.c config/child_cfg.h \
-       config/ike_cfg.c config/ike_cfg.h \
-       config/peer_cfg.c config/peer_cfg.h \
-       config/proposal.c config/proposal.h \
-       config/auth_cfg.c config/auth_cfg.h \
-       control/controller.c control/controller.h \
-       daemon.c daemon.h \
-       encoding/generator.c encoding/generator.h \
-       encoding/message.c encoding/message.h \
-       encoding/parser.c encoding/parser.h \
-       encoding/payloads/auth_payload.c encoding/payloads/auth_payload.h \
-       encoding/payloads/cert_payload.c encoding/payloads/cert_payload.h \
-       encoding/payloads/certreq_payload.c encoding/payloads/certreq_payload.h \
-       encoding/payloads/configuration_attribute.c encoding/payloads/configuration_attribute.h \
-       encoding/payloads/cp_payload.c encoding/payloads/cp_payload.h \
-       encoding/payloads/delete_payload.c encoding/payloads/delete_payload.h \
-       encoding/payloads/eap_payload.c encoding/payloads/eap_payload.h \
-       encoding/payloads/encodings.c encoding/payloads/encodings.h \
-       encoding/payloads/encryption_payload.c encoding/payloads/encryption_payload.h \
-       encoding/payloads/id_payload.c encoding/payloads/id_payload.h \
-       encoding/payloads/ike_header.c encoding/payloads/ike_header.h \
-       encoding/payloads/ke_payload.c  encoding/payloads/ke_payload.h \
-       encoding/payloads/nonce_payload.c encoding/payloads/nonce_payload.h \
-       encoding/payloads/notify_payload.c encoding/payloads/notify_payload.h \
-       encoding/payloads/payload.c encoding/payloads/payload.h \
-       encoding/payloads/proposal_substructure.c encoding/payloads/proposal_substructure.h \
-       encoding/payloads/sa_payload.c encoding/payloads/sa_payload.h \
-       encoding/payloads/traffic_selector_substructure.c encoding/payloads/traffic_selector_substructure.h \
-       encoding/payloads/transform_attribute.c encoding/payloads/transform_attribute.h \
-       encoding/payloads/transform_substructure.c encoding/payloads/transform_substructure.h \
-       encoding/payloads/ts_payload.c encoding/payloads/ts_payload.h \
-       encoding/payloads/unknown_payload.c encoding/payloads/unknown_payload.h \
-       encoding/payloads/vendor_id_payload.c encoding/payloads/vendor_id_payload.h \
-       kernel/kernel_interface.c kernel/kernel_interface.h \
-       kernel/kernel_ipsec.c kernel/kernel_ipsec.h \
-       kernel/kernel_net.h \
-       network/packet.c network/packet.h \
-       network/receiver.c network/receiver.h \
-       network/sender.c network/sender.h \
-       network/socket_manager.c network/socket_manager.h network/socket.h \
-       processing/jobs/job.h \
-       processing/jobs/acquire_job.c processing/jobs/acquire_job.h \
-       processing/jobs/callback_job.c processing/jobs/callback_job.h \
-       processing/jobs/delete_child_sa_job.c processing/jobs/delete_child_sa_job.h \
-       processing/jobs/delete_ike_sa_job.c processing/jobs/delete_ike_sa_job.h \
-       processing/jobs/migrate_job.c processing/jobs/migrate_job.h \
-       processing/jobs/process_message_job.c processing/jobs/process_message_job.h \
-       processing/jobs/rekey_child_sa_job.c processing/jobs/rekey_child_sa_job.h \
-       processing/jobs/rekey_ike_sa_job.c processing/jobs/rekey_ike_sa_job.h \
-       processing/jobs/retransmit_job.c processing/jobs/retransmit_job.h \
-       processing/jobs/send_dpd_job.c processing/jobs/send_dpd_job.h \
-       processing/jobs/send_keepalive_job.c processing/jobs/send_keepalive_job.h \
-       processing/jobs/roam_job.c processing/jobs/roam_job.h \
-       processing/jobs/update_sa_job.c processing/jobs/update_sa_job.h \
-       processing/jobs/inactivity_job.c processing/jobs/inactivity_job.h \
-       processing/scheduler.c processing/scheduler.h \
-       processing/processor.c processing/processor.h  \
-       sa/authenticators/authenticator.c sa/authenticators/authenticator.h \
-       sa/authenticators/eap_authenticator.c sa/authenticators/eap_authenticator.h \
-       sa/authenticators/eap/eap_method.c sa/authenticators/eap/eap_method.h \
-       sa/authenticators/eap/eap_manager.c sa/authenticators/eap/eap_manager.h \
-       sa/authenticators/eap/sim_manager.c sa/authenticators/eap/sim_manager.h \
-       sa/authenticators/psk_authenticator.c sa/authenticators/psk_authenticator.h \
-       sa/authenticators/pubkey_authenticator.c sa/authenticators/pubkey_authenticator.h \
-       sa/child_sa.c sa/child_sa.h \
-       sa/ike_sa.c sa/ike_sa.h \
-       sa/ike_sa_id.c sa/ike_sa_id.h \
-       sa/ike_sa_manager.c sa/ike_sa_manager.h \
-       sa/task_manager.c sa/task_manager.h \
-       sa/keymat.c sa/keymat.h \
-       sa/trap_manager.c sa/trap_manager.h \
-       sa/tasks/child_create.c sa/tasks/child_create.h \
-       sa/tasks/child_delete.c sa/tasks/child_delete.h \
-       sa/tasks/child_rekey.c sa/tasks/child_rekey.h \
-       sa/tasks/ike_auth.c sa/tasks/ike_auth.h \
-       sa/tasks/ike_cert_pre.c sa/tasks/ike_cert_pre.h \
-       sa/tasks/ike_cert_post.c sa/tasks/ike_cert_post.h \
-       sa/tasks/ike_config.c sa/tasks/ike_config.h \
-       sa/tasks/ike_delete.c sa/tasks/ike_delete.h \
-       sa/tasks/ike_dpd.c sa/tasks/ike_dpd.h \
-       sa/tasks/ike_init.c sa/tasks/ike_init.h \
-       sa/tasks/ike_natd.c sa/tasks/ike_natd.h \
-       sa/tasks/ike_mobike.c sa/tasks/ike_mobike.h \
-       sa/tasks/ike_rekey.c sa/tasks/ike_rekey.h \
-       sa/tasks/ike_reauth.c sa/tasks/ike_reauth.h \
-       sa/tasks/ike_auth_lifetime.c sa/tasks/ike_auth_lifetime.h \
-       sa/tasks/ike_vendor.c sa/tasks/ike_vendor.h \
-       sa/tasks/task.c sa/tasks/task.h \
-       credentials/credential_manager.c credentials/credential_manager.h \
-       credentials/sets/auth_cfg_wrapper.c credentials/sets/auth_cfg_wrapper.h \
-       credentials/sets/ocsp_response_wrapper.c credentials/sets/ocsp_response_wrapper.h \
-       credentials/sets/cert_cache.c credentials/sets/cert_cache.h \
-       credentials/credential_set.h
-
-# adding the plugin source files (copy-n-paste from Makefile.am)
-
-LOCAL_SRC_FILES += $(call add_plugin, android, \
-       android_plugin.c android_plugin.h \
-       android_handler.c android_handler.h \
-)
-ifneq ($(call plugin_enabled, android)),)
+libcharon_la_SOURCES := \
+attributes/attributes.c attributes/attributes.h \
+attributes/attribute_provider.h attributes/attribute_handler.h \
+attributes/attribute_manager.c attributes/attribute_manager.h \
+attributes/mem_pool.c attributes/mem_pool.h \
+bus/bus.c bus/bus.h \
+bus/listeners/listener.h \
+bus/listeners/logger.h \
+bus/listeners/file_logger.c bus/listeners/file_logger.h \
+config/backend_manager.c config/backend_manager.h config/backend.h \
+config/child_cfg.c config/child_cfg.h \
+config/ike_cfg.c config/ike_cfg.h \
+config/peer_cfg.c config/peer_cfg.h \
+config/proposal.c config/proposal.h \
+control/controller.c control/controller.h \
+daemon.c daemon.h \
+encoding/generator.c encoding/generator.h \
+encoding/message.c encoding/message.h \
+encoding/parser.c encoding/parser.h \
+encoding/payloads/auth_payload.c encoding/payloads/auth_payload.h \
+encoding/payloads/cert_payload.c encoding/payloads/cert_payload.h \
+encoding/payloads/certreq_payload.c encoding/payloads/certreq_payload.h \
+encoding/payloads/configuration_attribute.c encoding/payloads/configuration_attribute.h \
+encoding/payloads/cp_payload.c encoding/payloads/cp_payload.h \
+encoding/payloads/delete_payload.c encoding/payloads/delete_payload.h \
+encoding/payloads/eap_payload.c encoding/payloads/eap_payload.h \
+encoding/payloads/encodings.c encoding/payloads/encodings.h \
+encoding/payloads/encrypted_payload.c encoding/payloads/encrypted_payload.h \
+encoding/payloads/encrypted_fragment_payload.h \
+encoding/payloads/id_payload.c encoding/payloads/id_payload.h \
+encoding/payloads/ike_header.c encoding/payloads/ike_header.h \
+encoding/payloads/ke_payload.c  encoding/payloads/ke_payload.h \
+encoding/payloads/nonce_payload.c encoding/payloads/nonce_payload.h \
+encoding/payloads/notify_payload.c encoding/payloads/notify_payload.h \
+encoding/payloads/payload.c encoding/payloads/payload.h \
+encoding/payloads/proposal_substructure.c encoding/payloads/proposal_substructure.h \
+encoding/payloads/sa_payload.c encoding/payloads/sa_payload.h \
+encoding/payloads/traffic_selector_substructure.c encoding/payloads/traffic_selector_substructure.h \
+encoding/payloads/transform_attribute.c encoding/payloads/transform_attribute.h \
+encoding/payloads/transform_substructure.c encoding/payloads/transform_substructure.h \
+encoding/payloads/ts_payload.c encoding/payloads/ts_payload.h \
+encoding/payloads/unknown_payload.c encoding/payloads/unknown_payload.h \
+encoding/payloads/vendor_id_payload.c encoding/payloads/vendor_id_payload.h \
+encoding/payloads/hash_payload.c encoding/payloads/hash_payload.h \
+encoding/payloads/fragment_payload.c encoding/payloads/fragment_payload.h \
+kernel/kernel_interface.c kernel/kernel_interface.h \
+kernel/kernel_ipsec.c kernel/kernel_ipsec.h \
+kernel/kernel_net.c kernel/kernel_net.h \
+kernel/kernel_listener.h kernel/kernel_handler.c kernel/kernel_handler.h \
+network/receiver.c network/receiver.h network/sender.c network/sender.h \
+network/socket.c network/socket.h \
+network/socket_manager.c network/socket_manager.h \
+processing/jobs/acquire_job.c processing/jobs/acquire_job.h \
+processing/jobs/delete_child_sa_job.c processing/jobs/delete_child_sa_job.h \
+processing/jobs/delete_ike_sa_job.c processing/jobs/delete_ike_sa_job.h \
+processing/jobs/migrate_job.c processing/jobs/migrate_job.h \
+processing/jobs/process_message_job.c processing/jobs/process_message_job.h \
+processing/jobs/rekey_child_sa_job.c processing/jobs/rekey_child_sa_job.h \
+processing/jobs/rekey_ike_sa_job.c processing/jobs/rekey_ike_sa_job.h \
+processing/jobs/retransmit_job.c processing/jobs/retransmit_job.h \
+processing/jobs/retry_initiate_job.c processing/jobs/retry_initiate_job.h \
+processing/jobs/send_dpd_job.c processing/jobs/send_dpd_job.h \
+processing/jobs/send_keepalive_job.c processing/jobs/send_keepalive_job.h \
+processing/jobs/start_action_job.c processing/jobs/start_action_job.h \
+processing/jobs/roam_job.c processing/jobs/roam_job.h \
+processing/jobs/update_sa_job.c processing/jobs/update_sa_job.h \
+processing/jobs/inactivity_job.c processing/jobs/inactivity_job.h \
+processing/jobs/initiate_tasks_job.c processing/jobs/initiate_tasks_job.h \
+sa/eap/eap_method.c sa/eap/eap_method.h sa/eap/eap_inner_method.h \
+sa/eap/eap_manager.c sa/eap/eap_manager.h \
+sa/xauth/xauth_method.c sa/xauth/xauth_method.h \
+sa/xauth/xauth_manager.c sa/xauth/xauth_manager.h \
+sa/authenticator.c sa/authenticator.h \
+sa/child_sa.c sa/child_sa.h \
+sa/ike_sa.c sa/ike_sa.h \
+sa/ike_sa_id.c sa/ike_sa_id.h \
+sa/keymat.h sa/keymat.c \
+sa/ike_sa_manager.c sa/ike_sa_manager.h \
+sa/child_sa_manager.c sa/child_sa_manager.h \
+sa/task_manager.h sa/task_manager.c \
+sa/shunt_manager.c sa/shunt_manager.h \
+sa/trap_manager.c sa/trap_manager.h \
+sa/task.c sa/task.h
+
+libcharon_la_SOURCES += \
+sa/ikev2/keymat_v2.c sa/ikev2/keymat_v2.h \
+sa/ikev2/task_manager_v2.c sa/ikev2/task_manager_v2.h \
+sa/ikev2/authenticators/eap_authenticator.c sa/ikev2/authenticators/eap_authenticator.h \
+sa/ikev2/authenticators/psk_authenticator.c sa/ikev2/authenticators/psk_authenticator.h \
+sa/ikev2/authenticators/pubkey_authenticator.c sa/ikev2/authenticators/pubkey_authenticator.h \
+sa/ikev2/tasks/child_create.c sa/ikev2/tasks/child_create.h \
+sa/ikev2/tasks/child_delete.c sa/ikev2/tasks/child_delete.h \
+sa/ikev2/tasks/child_rekey.c sa/ikev2/tasks/child_rekey.h \
+sa/ikev2/tasks/ike_auth.c sa/ikev2/tasks/ike_auth.h \
+sa/ikev2/tasks/ike_cert_pre.c sa/ikev2/tasks/ike_cert_pre.h \
+sa/ikev2/tasks/ike_cert_post.c sa/ikev2/tasks/ike_cert_post.h \
+sa/ikev2/tasks/ike_config.c sa/ikev2/tasks/ike_config.h \
+sa/ikev2/tasks/ike_delete.c sa/ikev2/tasks/ike_delete.h \
+sa/ikev2/tasks/ike_dpd.c sa/ikev2/tasks/ike_dpd.h \
+sa/ikev2/tasks/ike_init.c sa/ikev2/tasks/ike_init.h \
+sa/ikev2/tasks/ike_natd.c sa/ikev2/tasks/ike_natd.h \
+sa/ikev2/tasks/ike_mobike.c sa/ikev2/tasks/ike_mobike.h \
+sa/ikev2/tasks/ike_rekey.c sa/ikev2/tasks/ike_rekey.h \
+sa/ikev2/tasks/ike_reauth.c sa/ikev2/tasks/ike_reauth.h \
+sa/ikev2/tasks/ike_reauth_complete.c sa/ikev2/tasks/ike_reauth_complete.h \
+sa/ikev2/tasks/ike_auth_lifetime.c sa/ikev2/tasks/ike_auth_lifetime.h \
+sa/ikev2/tasks/ike_vendor.c sa/ikev2/tasks/ike_vendor.h
+
+libcharon_la_SOURCES += \
+sa/ikev1/keymat_v1.c sa/ikev1/keymat_v1.h \
+sa/ikev1/task_manager_v1.c sa/ikev1/task_manager_v1.h \
+sa/ikev1/authenticators/psk_v1_authenticator.c sa/ikev1/authenticators/psk_v1_authenticator.h \
+sa/ikev1/authenticators/pubkey_v1_authenticator.c sa/ikev1/authenticators/pubkey_v1_authenticator.h \
+sa/ikev1/authenticators/hybrid_authenticator.c sa/ikev1/authenticators/hybrid_authenticator.h \
+sa/ikev1/phase1.c sa/ikev1/phase1.h \
+sa/ikev1/tasks/main_mode.c sa/ikev1/tasks/main_mode.h \
+sa/ikev1/tasks/aggressive_mode.c sa/ikev1/tasks/aggressive_mode.h \
+sa/ikev1/tasks/informational.c sa/ikev1/tasks/informational.h \
+sa/ikev1/tasks/isakmp_cert_pre.c sa/ikev1/tasks/isakmp_cert_pre.h \
+sa/ikev1/tasks/isakmp_cert_post.c sa/ikev1/tasks/isakmp_cert_post.h \
+sa/ikev1/tasks/isakmp_natd.c sa/ikev1/tasks/isakmp_natd.h \
+sa/ikev1/tasks/isakmp_vendor.c sa/ikev1/tasks/isakmp_vendor.h \
+sa/ikev1/tasks/isakmp_delete.c sa/ikev1/tasks/isakmp_delete.h \
+sa/ikev1/tasks/isakmp_dpd.c sa/ikev1/tasks/isakmp_dpd.h \
+sa/ikev1/tasks/xauth.c sa/ikev1/tasks/xauth.h \
+sa/ikev1/tasks/quick_mode.c sa/ikev1/tasks/quick_mode.h \
+sa/ikev1/tasks/quick_delete.c sa/ikev1/tasks/quick_delete.h \
+sa/ikev1/tasks/mode_config.c sa/ikev1/tasks/mode_config.h \
+processing/jobs/dpd_timeout_job.c processing/jobs/dpd_timeout_job.h \
+processing/jobs/adopt_children_job.c processing/jobs/adopt_children_job.h
+
+libcharon_la_SOURCES += \
+    bus/listeners/sys_logger.c bus/listeners/sys_logger.h
+
+LOCAL_SRC_FILES := $(filter %.c,$(libcharon_la_SOURCES))
+
+# adding the plugin source files
+
+LOCAL_SRC_FILES += $(call add_plugin, android-dns)
+ifneq ($(call plugin_enabled, android-dns),)
 LOCAL_SHARED_LIBRARIES += libcutils
 endif
 
-LOCAL_SRC_FILES += $(call add_plugin, attr, \
-       attr_plugin.h attr_plugin.c \
-       attr_provider.h attr_provider.c \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, eap-aka, \
-       eap_aka_plugin.h eap_aka_plugin.c \
-       eap_aka_peer.h eap_aka_peer.c \
-       eap_aka_server.h eap_aka_server.c \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, eap-aka-3gpp2, \
-       eap_aka_3gpp2_plugin.h eap_aka_3gpp2_plugin.c \
-       eap_aka_3gpp2_card.h eap_aka_3gpp2_card.c \
-       eap_aka_3gpp2_provider.h eap_aka_3gpp2_provider.c \
-       eap_aka_3gpp2_functions.h eap_aka_3gpp2_functions.c \
-)
-ifneq ($(call plugin_enabled, eap-aka-3gpp2)),)
+LOCAL_SRC_FILES += $(call add_plugin, android-log)
+ifneq ($(call plugin_enabled, android-log),)
+LOCAL_LDLIBS += -llog
+endif
+
+LOCAL_SRC_FILES += $(call add_plugin, attr)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-aka)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-aka-3gpp2)
+ifneq ($(call plugin_enabled, eap-aka-3gpp2),)
 LOCAL_C_INCLUDES += $(libgmp_PATH)
-LOCAL_STATIC_LIBRARIES += libgmp
+LOCAL_SHARED_LIBRARIES += libgmp
 endif
 
-LOCAL_SRC_FILES += $(call add_plugin, eap-gtc, \
-       eap_gtc_plugin.h eap_gtc_plugin.c eap_gtc.h eap_gtc.c \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, eap-identity, \
-       eap_identity_plugin.h eap_identity_plugin.c eap_identity.h eap_identity.c \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, eap-md5, \
-       eap_md5_plugin.h eap_md5_plugin.c eap_md5.h eap_md5.c \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, eap-mschapv2, \
-       eap_mschapv2_plugin.h eap_mschapv2_plugin.c \
-       eap_mschapv2.h eap_mschapv2.c \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, eap-sim, \
-       eap_sim_plugin.h eap_sim_plugin.c \
-       eap_sim_peer.h eap_sim_peer.c \
-       eap_sim_server.h eap_sim_server.c \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, eap-simaka-pseudonym, \
-       eap_simaka_pseudonym_plugin.h eap_simaka_pseudonym_plugin.c \
-       eap_simaka_pseudonym_card.h eap_simaka_pseudonym_card.c \
-       eap_simaka_pseudonym_provider.h eap_simaka_pseudonym_provider.c \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, eap-simaka-reauth, \
-       eap_simaka_reauth_plugin.h eap_simaka_reauth_plugin.c \
-       eap_simaka_reauth_card.h eap_simaka_reauth_card.c \
-       eap_simaka_reauth_provider.h eap_simaka_reauth_provider.c \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, eap-sim-file, \
-       eap_sim_file_plugin.h eap_sim_file_plugin.c \
-       eap_sim_file_card.h eap_sim_file_card.c \
-       eap_sim_file_provider.h eap_sim_file_provider.c \
-       eap_sim_file_triplets.h eap_sim_file_triplets.c \
-)
+LOCAL_SRC_FILES += $(call add_plugin, eap-gtc)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-identity)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-md5)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-mschapv2)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-sim)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-simaka-sql)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-simaka-pseudonym)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-simaka-reauth)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-sim-file)
 
 # adding libakasim if either eap-aka or eap-sim is enabled
 ifneq ($(or $(call plugin_enabled, eap-aka), $(call plugin_enabled, eap-sim)),)
@@ -182,53 +184,70 @@ LOCAL_C_INCLUDES += $(LOCAL_PATH)/../libsimaka/
 LOCAL_SRC_FILES += $(addprefix ../libsimaka/, \
                simaka_message.h simaka_message.c \
                simaka_crypto.h simaka_crypto.c \
+               simaka_manager.h simaka_manager.c \
+               simaka_card.h simaka_provider.h simaka_hooks.h \
        )
 endif
 
-LOCAL_SRC_FILES += $(call add_plugin, kernel-netlink, \
-       kernel_netlink_plugin.h kernel_netlink_plugin.c \
-       kernel_netlink_ipsec.h kernel_netlink_ipsec.c kernel_netlink_net.h kernel_netlink_net.c \
-       kernel_netlink_shared.h kernel_netlink_shared.c \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, load-tester, \
-       load_tester_plugin.c load_tester_plugin.h \
-       load_tester_config.c load_tester_config.h \
-       load_tester_creds.c load_tester_creds.h \
-       load_tester_ipsec.c load_tester_ipsec.h \
-       load_tester_listener.c load_tester_listener.h \
-       load_tester_diffie_hellman.c load_tester_diffie_hellman.h \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, socket-default, \
-       socket_default_socket.h socket_default_socket.c \
-       socket_default_plugin.h socket_default_plugin.c \
-)
-
-LOCAL_SRC_FILES += $(call add_plugin, socket-dynamic, \
-       socket_dynamic_plugin.h socket_dynamic_plugin.c \
-       socket_dynamic_socket.h socket_dynamic_socket.c \
-)
-
-# build charon -----------------------------------------------------------------
+LOCAL_SRC_FILES += $(call add_plugin, eap-tls)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-ttls)
+ifneq ($(call plugin_enabled, eap-ttls),)
+# for radius_message.h
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../libradius/
+endif
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-peap)
+
+LOCAL_SRC_FILES += $(call add_plugin, eap-tnc)
+ifneq ($(call plugin_enabled, eap-tnc),)
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../libtnccs/ $(LOCAL_PATH)/../libtncif/
+LOCAL_SHARED_LIBRARIES += libtnccs libtncif
+endif
+
+# adding libtls if any of the four plugins above is enabled
+ifneq ($(or $(call plugin_enabled, eap-tls), $(call plugin_enabled, eap-ttls), \
+                       $(call plugin_enabled, eap-peap), $(call plugin_enabled, eap-tnc)),)
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../libtls/
+LOCAL_SRC_FILES += $(addprefix ../libtls/, \
+               tls_protection.c tls_compression.c tls_fragmentation.c tls_alert.c \
+               tls_crypto.c tls_prf.c tls_socket.c tls_eap.c tls_cache.c tls_peer.c \
+               tls_aead_expl.c tls_aead_impl.c tls_aead_null.c tls_aead.c \
+               tls_server.c tls.c \
+       )
+endif
+
+LOCAL_SRC_FILES += $(call add_plugin, load-tester)
+
+LOCAL_SRC_FILES += $(call add_plugin, kernel-pfkey)
+
+LOCAL_SRC_FILES += $(call add_plugin, kernel-netlink)
+
+LOCAL_SRC_FILES += $(call add_plugin, socket-default)
+
+LOCAL_SRC_FILES += $(call add_plugin, socket-dynamic)
+
+LOCAL_SRC_FILES += $(call add_plugin, stroke)
+ifneq ($(call plugin_enabled, stroke),)
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../stroke/
+endif
+
+# build libcharon --------------------------------------------------------------
 
 LOCAL_C_INCLUDES += \
-       $(libvstr_PATH) \
-       $(strongswan_PATH)/src/include \
+       $(strongswan_PATH)/src/libhydra \
        $(strongswan_PATH)/src/libstrongswan
 
 LOCAL_CFLAGS := $(strongswan_CFLAGS)
 
-# this is required to be able load the plugins
-LOCAL_LDFLAGS := -Wl,--export-dynamic
+LOCAL_MODULE := libcharon
 
-LOCAL_MODULE := charon
+LOCAL_MODULE_TAGS := optional
 
 LOCAL_ARM_MODE := arm
 
 LOCAL_PRELINK_MODULE := false
 
-LOCAL_SHARED_LIBRARIES += libstrongswan
-
-include $(BUILD_EXECUTABLE)
+LOCAL_SHARED_LIBRARIES += libstrongswan libhydra
 
+include $(BUILD_SHARED_LIBRARY)