text: AUTOMAKE_OPTIONS = foreign
  
  DEFS += \
  	-DIRCD_UNIT \
  	-DIRCD_UNIT_MODULE \
  	###
  
  CXXFLAGS += \
  	$(EXTRA_CXXFLAGS) \
  	###
  
  AM_CXXFLAGS = \
  	-ftls-model=global-dynamic \
  	###
  
  AM_CPPFLAGS = \
  	-I$(top_srcdir)/include \
  	-include $(top_srcdir)/include/ircd/matrix.pic.h \
  	-include $(top_srcdir)/include/ircd/mods/mapi.h \
  	$(EXTRA_CPPFLAGS) \
  	###
  
  #TODO: split options for if LD_GOLD
  AM_LDFLAGS = \
  	-module \
  	-avoid-version \
  	-Wl,--allow-shlib-undefined \
  	-Wl,-z,lazy \
  	-L$(top_srcdir)/ircd \
  	-L$(top_srcdir)/matrix \
  	$(PLATFORM_LDFLAGS) \
  	$(EXTRA_LDFLAGS) \
  	###
  
  ###############################################################################
  #
  # /
  #
  
  moduledir = @moduledir@
  
  net_dns_cache_la_SOURCES = net_dns_cache.cc
  stats_la_SOURCES = stats.cc
  console_la_SOURCES = console.cc
  web_root_la_SOURCES = web_root.cc
  web_hook_la_SOURCES = web_hook.cc
  well_known_la_SOURCES = well_known.cc
  
  module_LTLIBRARIES = \
  	net_dns_cache.la \
  	stats.la \
  	console.la \
  	web_root.la \
  	web_hook.la \
  	well_known.la \
  	###
  
  #
  # LLVM
  #
  if LLVM
  
  llvm_la_SOURCES = llvm.cc
  llvm_la_CPPFLAGS = $(AM_CPPFLAGS) @LLVM_CPPFLAGS@
  llvm_la_LDFLAGS = $(AM_LDFLAGS) @LLVM_LDFLAGS@
  llvm_la_LIBADD = $(AM_LIBS) @LLVM_LIBS@
  module_LTLIBRARIES += llvm.la
  
  endif LLVM
  
  ###############################################################################
  #
  # Messages / protocol
  #
  
  m_moduledir = @moduledir@
  
  m_breadcrumbs_la_SOURCES = m_breadcrumbs.cc
  m_bridge_la_SOURCES = m_bridge.cc
  m_command_la_SOURCES = m_command.cc
  m_control_la_SOURCES = m_control.cc
  m_device_la_SOURCES = m_device.cc
  m_device_list_update_la_SOURCES = m_device_list_update.cc
  m_direct_la_SOURCES = m_direct.cc
  m_direct_to_device_la_SOURCES = m_direct_to_device.cc
  m_ignored_user_list_la_SOURCES = m_ignored_user_list.cc
  m_listen_la_SOURCES = m_listen.cc
  m_noop_la_SOURCES = m_noop.cc
  m_presence_la_SOURCES = m_presence.cc
  m_profile_la_SOURCES = m_profile.cc
  m_push_la_SOURCES = m_push.cc
  m_receipt_la_SOURCES = m_receipt.cc
  m_relation_la_SOURCES = m_relation.cc
  m_room_aliases_la_SOURCES = m_room_aliases.cc
  m_room_canonical_alias_la_SOURCES = m_room_canonical_alias.cc
  m_room_create_la_SOURCES = m_room_create.cc
  m_room_history_visibility_la_SOURCES = m_room_history_visibility.cc
  m_room_join_rules_la_SOURCES = m_room_join_rules.cc
  m_room_member_la_SOURCES = m_room_member.cc
  m_room_message_la_SOURCES = m_room_message.cc
  m_room_name_la_SOURCES = m_room_name.cc
  m_room_power_levels_la_SOURCES = m_room_power_levels.cc
  m_room_redaction_la_SOURCES = m_room_redaction.cc
  m_room_server_acl_la_SOURCES = m_room_server_acl.cc
  m_room_third_party_invite_la_SOURCES = m_room_third_party_invite.cc
  
  m_module_LTLIBRARIES = \
  	m_breadcrumbs.la \
  	m_bridge.la \
  	m_command.la \
  	m_control.la \
  	m_device.la \
  	m_device_list_update.la \
  	m_direct.la \
  	m_direct_to_device.la \
  	m_ignored_user_list.la \
  	m_listen.la \
  	m_noop.la \
  	m_presence.la \
  	m_profile.la \
  	m_push.la \
  	m_receipt.la \
  	m_relation.la \
  	m_room_aliases.la \
  	m_room_canonical_alias.la \
  	m_room_create.la \
  	m_room_history_visibility.la \
  	m_room_join_rules.la \
  	m_room_member.la \
  	m_room_message.la \
  	m_room_name.la \
  	m_room_power_levels.la \
  	m_room_redaction.la \
  	m_room_server_acl.la \
  	m_room_third_party_invite.la \
  	###
  
  ###############################################################################
  #
  # /_matrix/key/
  #
  
  key_moduledir = @moduledir@
  
  key_key_server_la_SOURCES = key/server.cc
  key_key_query_la_SOURCES = key/query.cc
  
  key_module_LTLIBRARIES = \
  	key/key_server.la \
  	key/key_query.la \
  	###
  
  ###############################################################################
  #
  # /_matrix/identity/
  #
  
  identity_moduledir = @moduledir@
  
  identity_identity_v1_la_SOURCES = identity/v1.cc
  identity_identity_pubkey_la_SOURCES = identity/pubkey.cc
  
  identity_module_LTLIBRARIES = \
  	identity/identity_v1.la \
  	identity/identity_pubkey.la \
  	###
  
  ###############################################################################
  #
  # /_matrix/media/
  #
  
  media_moduledir = @moduledir@
  
  media_media_media_la_SOURCES = \
  	media/media.cc \
  	media/config.cc \
  	media/upload.cc \
  	media/download.cc \
  	media/thumbnail.cc \
  	media/preview_url.cc \
  	###
  
  media_module_LTLIBRARIES = \
  	media/media_media.la \
  	###
  
  ###############################################################################
  #
  # /_matrix/federation/
  #
  
  federation_moduledir = @moduledir@
  
  federation_federation_send_la_SOURCES = federation/send.cc
  federation_federation_event_la_SOURCES = federation/event.cc
  federation_federation_get_missing_events_la_SOURCES = federation/get_missing_events.cc
  federation_federation_get_groups_publicised_la_SOURCES = federation/get_groups_publicised.cc
  federation_federation_version_la_SOURCES = federation/version.cc
  federation_federation_sender_la_SOURCES = federation/sender.cc
  federation_federation_query_la_SOURCES = federation/query.cc
  federation_federation_invite_la_SOURCES = federation/invite.cc
  federation_federation_invite2_la_SOURCES = federation/invite2.cc
  federation_federation_make_join_la_SOURCES = federation/make_join.cc
  federation_federation_send_join_la_SOURCES = federation/send_join.cc
  federation_federation_state_ids_la_SOURCES = federation/state_ids.cc
  federation_federation_state_la_SOURCES = federation/state.cc
  federation_federation_make_leave_la_SOURCES = federation/make_leave.cc
  federation_federation_send_leave_la_SOURCES = federation/send_leave.cc
  federation_federation_backfill_la_SOURCES = federation/backfill.cc
  federation_federation_backfill_ids_la_SOURCES = federation/backfill_ids.cc
  federation_federation_event_auth_la_SOURCES = federation/event_auth.cc
  federation_federation_query_auth_la_SOURCES = federation/query_auth.cc
  federation_federation_publicrooms_la_SOURCES = federation/publicrooms.cc
  federation_federation_user_devices_la_SOURCES = federation/user_devices.cc
  federation_federation_user_keys_query_la_SOURCES = federation/user_keys_query.cc
  federation_federation_user_keys_claim_la_SOURCES = federation/user_keys_claim.cc
  federation_federation_rooms_la_SOURCES = federation/rooms.cc
  
  federation_module_LTLIBRARIES = \
  	federation/federation_send.la \
  	federation/federation_event.la \
  	federation/federation_get_missing_events.la \
  	federation/federation_get_groups_publicised.la \
  	federation/federation_version.la \
  	federation/federation_sender.la \
  	federation/federation_query.la \
  	federation/federation_invite.la \
  	federation/federation_invite2.la \
  	federation/federation_make_join.la \
  	federation/federation_send_join.la \
  	federation/federation_state_ids.la \
  	federation/federation_state.la \
  	federation/federation_make_leave.la \
  	federation/federation_send_leave.la \
  	federation/federation_backfill.la \
  	federation/federation_backfill_ids.la \
  	federation/federation_event_auth.la \
  	federation/federation_query_auth.la \
  	federation/federation_publicrooms.la \
  	federation/federation_user_devices.la \
  	federation/federation_user_keys_query.la \
  	federation/federation_user_keys_claim.la \
  	federation/federation_rooms.la \
  	###
  
  ###############################################################################
  #
  # /_matrix/client/
  #
  
  # This puts the source in client/ but the installed
  # library is client_X.so in the main modules dir.
  client_moduledir = @moduledir@
  
  client_client_versions_la_SOURCES = client/versions.cc
  client_client_events_la_SOURCES = client/events.cc
  client_client_register_la_SOURCES = client/register.cc
  client_client_login_la_SOURCES = client/login.cc
  client_client_logout_la_SOURCES = client/logout.cc
  client_client_sync_la_SOURCES = client/sync.cc
  client_client_presence_la_SOURCES = client/presence.cc
  client_client_profile_la_SOURCES = client/profile.cc
  client_client_devices_la_SOURCES = client/devices.cc
  client_client_pushers_la_SOURCES = client/pushers.cc
  client_client_publicrooms_la_SOURCES = client/publicrooms.cc
  client_client_createroom_la_SOURCES = client/createroom.cc
  client_client_pushrules_la_SOURCES = client/pushrules.cc
  client_client_join_la_SOURCES = client/join.cc
  client_client_publicised_groups_la_SOURCES = client/publicised_groups.cc
  client_client_initialsync_la_SOURCES = client/initialsync.cc
  client_client_search_la_SOURCES = client/search.cc
  client_client_joined_groups_la_SOURCES = client/joined_groups.cc
  client_client_register_available_la_SOURCES = client/register_available.cc
  client_client_capabilities_la_SOURCES = client/capabilities.cc
  client_client_send_to_device_la_SOURCES = client/send_to_device.cc
  client_client_delete_devices_la_SOURCES = client/delete_devices.cc
  client_client_notifications_la_SOURCES = client/notifications.cc
  client_client_register_email_la_SOURCES = client/register_email.cc
  client_client_create_group_la_SOURCES = client/create_group.cc
  
  client_module_LTLIBRARIES = \
  	client/client_versions.la \
  	client/client_events.la \
  	client/client_register.la \
  	client/client_login.la \
  	client/client_logout.la \
  	client/client_sync.la \
  	client/client_presence.la \
  	client/client_profile.la \
  	client/client_devices.la \
  	client/client_pushers.la \
  	client/client_publicrooms.la \
  	client/client_createroom.la \
  	client/client_pushrules.la \
  	client/client_join.la \
  	client/client_publicised_groups.la \
  	client/client_initialsync.la \
  	client/client_search.la \
  	client/client_joined_groups.la \
  	client/client_register_available.la \
  	client/client_capabilities.la \
  	client/client_send_to_device.la \
  	client/client_delete_devices.la \
  	client/client_notifications.la \
  	client/client_register_email.la \
  	client/client_create_group.la \
  	###
  
  #
  # client/rooms/
  #
  
  client_client_rooms_la_SOURCES = \
  	client/rooms/messages.cc \
  	client/rooms/state.cc \
  	client/rooms/members.cc \
  	client/rooms/context.cc \
  	client/rooms/event.cc \
  	client/rooms/send.cc \
  	client/rooms/typing.cc \
  	client/rooms/redact.cc \
  	client/rooms/receipt.cc \
  	client/rooms/join.cc \
  	client/rooms/invite.cc \
  	client/rooms/leave.cc \
  	client/rooms/forget.cc \
  	client/rooms/kick.cc \
  	client/rooms/ban.cc \
  	client/rooms/unban.cc \
  	client/rooms/read_markers.cc \
  	client/rooms/initialsync.cc \
  	client/rooms/report.cc \
  	client/rooms/relations.cc \
  	client/rooms/upgrade.cc \
  	client/rooms/rooms.cc \
  	###
  
  client_module_LTLIBRARIES += \
  	client/client_rooms.la \
  	###
  
  #
  # client/user/
  #
  
  client_client_user_la_SOURCES = \
  	client/user/openid.cc \
  	client/user/filter.cc \
  	client/user/account_data.cc \
  	client/user/rooms.cc \
  	client/user/user.cc \
  	###
  
  client_module_LTLIBRARIES += \
  	client/client_user.la \
  	###
  
  #
  # client/account/
  #
  
  client_client_account_la_SOURCES = \
  	client/account/3pid.cc \
  	client/account/whoami.cc \
  	client/account/password.cc \
  	client/account/deactivate.cc \
  	client/account/account.cc \
  	###
  
  client_module_LTLIBRARIES += \
  	client/client_account.la \
  	###
  
  #
  # client/directory/
  #
  
  client_client_directory_room_la_SOURCES = client/directory/room.cc
  client_client_directory_user_la_SOURCES = client/directory/user.cc
  
  client_module_LTLIBRARIES += \
  	client/client_directory_room.la \
  	client/client_directory_user.la \
  	###
  
  #
  # client/directory/list
  #
  
  client_client_directory_list_room_la_SOURCES = client/directory/list/room.cc
  client_client_directory_list_appservice_la_SOURCES = client/directory/list/appservice.cc
  
  client_module_LTLIBRARIES += \
  	client/client_directory_list_room.la \
  	client/client_directory_list_appservice.la \
  	###
  
  #
  # client/voip/
  #
  
  client_client_voip_turnserver_la_SOURCES = client/voip/turnserver.cc
  
  client_module_LTLIBRARIES += \
  	client/client_voip_turnserver.la \
  	###
  
  #
  # client/thirdparty/
  #
  
  client_client_thirdparty_protocols_la_SOURCES = client/thirdparty/protocols.cc
  
  client_module_LTLIBRARIES += \
  	client/client_thirdparty_protocols.la \
  	###
  
  #
  # client/sync/
  #
  
  client_client_sync_account_data_la_SOURCES = client/sync/account_data.cc
  client_client_sync_presence_la_SOURCES = client/sync/presence.cc
  client_client_sync_rooms_la_SOURCES = client/sync/rooms.cc
  client_client_sync_groups_la_SOURCES = client/sync/groups.cc
  client_client_sync_to_device_la_SOURCES = client/sync/to_device.cc
  client_client_sync_device_lists_la_SOURCES = client/sync/device_lists.cc
  client_client_sync_device_one_time_keys_count_la_SOURCES = client/sync/device_one_time_keys_count.cc
  
  client_module_LTLIBRARIES += \
  	client/client_sync_account_data.la \
  	client/client_sync_presence.la \
  	client/client_sync_rooms.la \
  	client/client_sync_groups.la \
  	client/client_sync_to_device.la \
  	client/client_sync_device_lists.la \
  	client/client_sync_device_one_time_keys_count.la \
  	###
  
  # client/sync/rooms/
  
  client_client_sync_rooms_account_data_la_SOURCES = client/sync/rooms/account_data.cc
  client_client_sync_rooms_ephemeral_la_SOURCES = client/sync/rooms/ephemeral.cc
  client_client_sync_rooms_state_la_SOURCES = client/sync/rooms/state.cc
  client_client_sync_rooms_timeline_la_SOURCES = client/sync/rooms/timeline.cc
  client_client_sync_rooms_unread_notifications_la_SOURCES = client/sync/rooms/unread_notifications.cc
  client_client_sync_rooms_summary_la_SOURCES = client/sync/rooms/summary.cc
  
  client_module_LTLIBRARIES += \
  	client/client_sync_rooms_account_data.la \
  	client/client_sync_rooms_ephemeral.la \
  	client/client_sync_rooms_state.la \
  	client/client_sync_rooms_timeline.la \
  	client/client_sync_rooms_unread_notifications.la \
  	client/client_sync_rooms_summary.la \
  	###
  
  # client/sync/rooms/ephemeral/
  
  client_client_sync_rooms_ephemeral_receipt_la_SOURCES = client/sync/rooms/ephemeral/receipt.cc
  client_client_sync_rooms_ephemeral_typing_la_SOURCES = client/sync/rooms/ephemeral/typing.cc
  
  client_module_LTLIBRARIES += \
  	client/client_sync_rooms_ephemeral_receipt.la \
  	client/client_sync_rooms_ephemeral_typing.la \
  	###
  
  #
  # client/keys/
  #
  
  client_client_keys_upload_la_SOURCES = client/keys/upload.cc
  client_client_keys_query_la_SOURCES = client/keys/query.cc
  client_client_keys_claim_la_SOURCES = client/keys/claim.cc
  client_client_keys_changes_la_SOURCES = client/keys/changes.cc
  client_client_keys_signatures_upload_la_SOURCES = client/keys/signatures/upload.cc
  client_client_keys_device_signing_upload_la_SOURCES = client/keys/device_signing/upload.cc
  
  client_module_LTLIBRARIES += \
  	client/client_keys_upload.la \
  	client/client_keys_query.la \
  	client/client_keys_claim.la \
  	client/client_keys_changes.la \
  	client/client_keys_signatures_upload.la \
  	client/client_keys_device_signing_upload.la \
  	###
  
  #
  # client/room_keys/
  #
  
  client_client_room_keys_version_la_SOURCES = client/room_keys/version.cc
  client_client_room_keys_keys_la_SOURCES = client/room_keys/keys.cc
  
  client_module_LTLIBRARIES += \
  	client/client_room_keys_version.la \
  	client/client_room_keys_keys.la \
  	###
  
  #
  # client/groups
  #
  
  client_client_groups_la_SOURCES = \
  	client/groups/profile.cc \
  	client/groups/summary.cc \
  	client/groups/categories.cc \
  	client/groups/roles.cc \
  	client/groups/rooms.cc \
  	client/groups/users.cc \
  	client/groups/invited_users.cc \
  	client/groups/settings.cc \
  	client/groups/self.cc \
  	client/groups/groups.cc \
  	###
  
  client_module_LTLIBRARIES += \
  	client/client_groups.la \
  	###
  
  ###############################################################################
  #
  # /_synapse/admin/
  #
  
  admin_moduledir = @moduledir@
  
  admin_admin_users_la_SOURCES = admin/users.cc
  admin_admin_deactivate_la_SOURCES = admin/deactivate.cc
  
  admin_module_LTLIBRARIES = \
  	admin/admin_users.la \
  	admin/admin_deactivate.la \
  	###
  
  ###############################################################################
  #
  # JavaScript
  #
  
  if JS
  
  js_moduledir = @moduledir@
  
  js_js_console_la_SOURCES = js/console.cc
  js_js_listener_la_SOURCES = js/listener.cc
  js_js_kernel_la_SOURCES = js/kernel.cc
  
  js_module_LTLIBRARIES = \
  	js/js_console.la \
  	js/js_listener.la \
  	js/js_kernel.la \
  	###
  
  endif
  