# Kamailio build system
# Module groups definitions
#

# lists are sets of modules that don't include modules that are in other lists
# - break the lists as needed in order to use them to build desired groups
#   and packages
#


# - basic used modules, with no extra dependency (widespread usage)
mod_list_basic=async auth benchmark blst cfg_rpc cfgutils corex counters \
				   ctl debugger diversion enum exec ipops kex mangler maxfwd \
				   mediaproxy mqueue \
				   nat_traversal nathelper path pike pv ratelimit rr rtimer \
				   rtpproxy sanity sdpops siputils sl statistics textops \
				   textopsx tm tmx topoh xlog rtpengine stun sipt tcpops \
				   auth_xkeys smsops tsilo cfgt statsc topos sipdump

# - extra used modules, with no extra dependency
mod_list_extra=avp auth_diameter call_control call_obj dmq domainpolicy msrp \
			carrierroute pdb qos sca seas sms sst timer tmrec uac_redirect \
			xhttp xhttp_rpc xprint jsonrpcs nosip dmq_usrloc statsd rtjson \
			log_custom keepalive ss7ops app_sqlang acc_diameter evrexec \
			sipjson

# - common modules depending on database
mod_list_db=acc alias_db auth_db avpops cfg_db db_text db_flatstore \
			  db_cluster dialog dispatcher domain drouting group \
			  htable imc matrix mohqueue msilo mtree p_usrloc pdt permissions \
			  pipelimit prefix_route registrar sipcapture siptrace speeddial \
			  sqlops uac uri_db userblacklist usrloc secfilter


# - common modules depending on database, using UID db schema
mod_list_dbuid=db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags \
				 uid_uri_db

# - modules for devel purposes
mod_list_devel=malloc_test print print_lib

# - modules depending on pcre3 library
mod_list_pcre=dialplan lcr regex

# - modules depending on radius client library
mod_list_radius=acc_radius auth_radius misc_radius peering

# - modules depending on ldap client library
mod_list_ldap=db2_ldap h350 ldap

# - modules depending on mysql client library
mod_list_mysql=db_mysql

# - modules depending on postgres client library
mod_list_postgres=db_postgres

# - modules depending on unixodbc library
mod_list_unixodbc=db_unixodbc

# - modules depending on mysql cassandra library
mod_list_cassandra=db_cassandra ndb_cassandra

# - modules depending on xml2 library
mod_list_cpl=cplc

# - modules depending on xml2 library
mod_list_xmldeps=xhttp_pi xmlrpc xmlops

# - modules depending on net-snmp library
mod_list_snmpstats=snmpstats

# - modules depending on expat library
mod_list_xmpp=xmpp

# - modules depending on bdb (db4) library
mod_list_berkeley=db_berkeley

# - modules depending on curl library
mod_list_utils=utils http_client

# - modules depending on curl and libevent2 library
mod_list_http_async=http_async_client

# - modules depending on memcache library
mod_list_memcached=memcached

# - modules depending on openssl library
mod_list_tlsdeps=crypto tls

# - modules depending on openssl (+curl) library
mod_list_tlsdeps_curl=auth_identity

# - modules depending on openssl library
mod_list_outbound=outbound

# - modules depending on openssl and unistring library
mod_list_websocket=websocket

# - modules depending on libval-threads libcrypto libsres libpthread
mod_list_dnssec=dnssec

# - modules depending on libsctp
mod_list_sctp=sctp

# - modules depending on openssl library
mod_list_autheph=auth_ephemeral

# - modules related to SIMPLE presence extensions
mod_list_presence=presence presence_conference presence_dialoginfo \
					   presence_mwi presence_profile presence_reginfo \
					   presence_xml \
					   pua pua_bla pua_dialoginfo pua_reginfo \
					   pua_rpc pua_usrloc pua_xmpp \
					   rls xcap_client xcap_server


# - modules depending on lua library
mod_list_lua=app_lua

# - modules depending on perl library
mod_list_perldeps=app_perl db_perlvdb

# - modules depending on python library
mod_list_python=app_python

# - modules depending on python3 library
mod_list_python3=app_python3

# - modules depending on libm (math library - standard system library)
mod_list_jsdt=app_jsdt

# - modules depending on ruby library
mod_list_ruby=app_ruby

# - modules depending on geoip library
mod_list_geoip=geoip

# - modules depending on new geoip library
mod_list_geoip2=geoip2

# - modules depending on sqlite library
mod_list_sqlite=db_sqlite

# - modules depending on oracle library
mod_list_oracle=db_oracle

# - modules depending on json library
mod_list_json=json pua_json

# - modules depending on json (+libevent) library
mod_list_json_event=jsonrpcc

# - modules depending on jansson library
mod_list_jansson=jansson acc_json

# - modules depending on jansson (+libevent) library
mod_list_jansson_event=janssonrpcc

# - modules depending on redis library
mod_list_redis=db_redis ndb_redis topos_redis

# - modules depending on mono library
mod_list_mono=app_mono

# - modules related to IMS extensions
mod_list_ims=cdp cdp_avp ims_dialog ims_auth ims_isc ims_icscf ims_qos \
			   ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf \
			   ims_usrloc_scscf ims_charging ims_ocs ims_diameter_server \
			   ims_ipsec_pcscf

# - modules depending on osp toolkit library
mod_list_osp=osp

# - modules depending on java library
mod_list_java=app_java

# - modules depending on gzip library
mod_list_gzcompress=gzcompress

# - modules depending on uuid library
mod_list_uuid=uuid

# - modules depending on ev library
mod_list_ev=evapi

# - modules depending on kazoo/rabbitmq
mod_list_kazoo=kazoo

# - modules depending on mongodb
mod_list_mongodb=db_mongodb ndb_mongodb

# - modules depending on redis and event library
mod_list_cnxcc=cnxcc

# - modules depending on erlang library
mod_list_erlang=erlang

# - modules depending on systemd library
mod_list_systemd=log_systemd

# - modules depending on libnsq (+libev libevbuffsock liblcurl libjson-c) library
mod_list_nsq=nsq

# - modules depending on librabbitmq library
mod_list_rabbitmq=rabbitmq

# - modules depending on libphonenumber library
mod_list_phonenum=phonenum

# - modules depending on oRTP and mediastreamer2 libraries
mod_list_rtp_media_server=rtp_media_server

# - all modules
mod_list_all=$(sort $(mod_list_basic) $(mod_list_extra) \
			   $(mod_list_db) $(mod_list_dbuid) \
			   $(mod_list_devel) $(mod_list_pcre) \
			   $(mod_list_radius) $(mod_list_ldap) \
			   $(mod_list_mysql) $(mod_list_postgres) \
			   $(mod_list_unixodbc) $(mod_list_xmldeps) \
			   $(mod_list_perldeps) $(mod_list_cpl) \
			   $(mod_list_xmpp) \
			   $(mod_list_berkeley) $(mod_list_utils) \
			   $(mod_list_memcached) \
			   $(mod_list_tlsdeps) $(mod_list_tlsdeps_curl) \
			   $(mod_list_websocket) \
			   $(mod_list_snmpstats) $(mod_list_presence) \
			   $(mod_list_lua) $(mod_list_python) \
			   $(mod_list_python3) $(mod_list_ruby) \
			   $(mod_list_geoip) $(mod_list_sqlite) \
			   $(mod_list_json) $(mod_list_json_event) \
			   $(mod_list_redis) \
			   $(mod_list_mono) $(mod_list_ims) \
			   $(mod_list_cassandra) $(mod_list_oracle) \
			   $(mod_list_outbound) $(mod_list_osp) \
			   $(mod_list_java) $(mod_list_dnssec) \
			   $(mod_list_sctp) $(mod_list_autheph) \
			   $(mod_list_gzcompress) $(mod_list_uuid) \
			   $(mod_list_ev) $(mod_list_kazoo) \
			   $(mod_list_mongodb) $(mod_list_cnxcc) \
			   $(mod_list_jansson) $(mod_list_jansson_event) \
			   $(mod_list_geoip2) \
			   $(mod_list_erlang) $(mod_list_systemd) \
			   $(mod_list_http_async) $(mod_list_nsq) \
			   $(mod_list_rabbitmq) $(mod_list_jsdt)) \
			   $(mod_list_phonenum) \
			   $(mod_list_rtp_media_server)



### --- Groups defined for source code compilation ###

# groups are sets of modules selected by compile target interest (should be
# built by combining lists)

# Modules in this group are the default compiled modules due to
# no external compile or link dependencies
module_group_default=$(mod_list_basic) $(mod_list_extra) \
					  $(mod_list_db) $(mod_list_dbuid) \
					  $(mod_list_devel) $(mod_list_jsdt)

# Modules in this group are the default compiled modules due to
# no internal/external compile or link dependencies
module_group_standard=$(mod_list_basic) $(mod_list_extra) \
					  $(mod_list_devel) $(mod_list_jsdt)

# Modules in this group are considered a standard part due to
# widespread usage, but they have dependencies that must be satisfied for
# compilation (e.g., lcr, radius, presence, tls, ...).
module_group_common=$(mod_list_db) $(mod_list_dbuid) \
					$(mod_list_pcre) $(mod_list_radius) \
					$(mod_list_xmldeps) $(mod_list_presence) \
					$(mod_list_tlsdeps) $(mod_list_tlsdeps_curl)

# For db use (db modules, excluding drivers)
module_group_db=$(mod_list_db)

# For mysql
module_group_mysql_driver=$(mod_list_mysql)
module_group_mysql=$(module_group_mysql_driver) $(module_group_db)

# For postgress
module_group_postgres_driver=$(mod_list_postgres)
module_group_postgres=$(module_group_postgres_driver) $(module_group_db)

# For radius
module_group_radius=$(mod_list_radius)

# For presence
# kamailio modules
module_group_presence=$(mod_list_presence)

# For cassandra
module_group_cassandra_driver=$(mod_list_cassandra)
module_group_cassandra=$(module_group_cassandra_driver) $(module_group_db)

# For all modules not compiled by default
module_group_ignore= $(sort $(filter-out $(module_group_default), $(mod_list_all)))



### --- Groups defined for pacKaging ###

# Standard modules in main pkg
module_group_kstandard=$(mod_list_basic) $(mod_list_extra) \
					  $(mod_list_db) $(mod_list_dbuid) \
					  $(mod_list_pcre) $(mod_list_jsdt)

# Standard modules without any dependencies (such as pcre)
module_group_kmini=$(mod_list_basic) $(mod_list_extra) \
					  $(mod_list_db) $(mod_list_dbuid) \
					  $(mod_list_jsdt)

# pkg pcre module
module_group_kpcre=$(mod_list_pcre)

# pkg mysql module
module_group_kmysql=$(mod_list_mysql)

# pkg postgress module
module_group_kpostgres=$(mod_list_postgres)

# pkg cpl module
module_group_kcpl=$(mod_list_cpl)

# pkg xml modules
module_group_kxml=$(mod_list_xmldeps)

# pkg radius modules
module_group_kradius=$(mod_list_radius)

# pkg unixodbc module
module_group_kunixodbc=$(mod_list_unixodbc)

# pkg perl module
module_group_kperl=$(mod_list_perldeps)

# pkg snmpstats module
module_group_ksnmpstats=$(mod_list_snmpstats)

# pkg xmpp module
module_group_kxmpp=$(mod_list_xmpp)

# pkg berkeley module
module_group_kberkeley=$(mod_list_berkeley)

# pkg ldap modules
module_group_kldap=$(mod_list_ldap)

# pkg utils module
module_group_kutils=$(mod_list_utils)

# pkg https_async module
module_group_khttp_async=$(mod_list_http_async)

# pkg memcached module
module_group_kmemcached=$(mod_list_memcached)

# pkg tls module
module_group_ktls_basic=$(mod_list_tlsdeps)

# pkg tls module with curl
module_group_ktls=$(mod_list_tlsdeps) $(mod_list_tlsdeps_curl)

# pkg websocket module
module_group_kwebsocket=$(mod_list_websocket)

# pkg presence modules
module_group_kpresence=$(mod_list_presence)

# pkg lua module
module_group_klua=$(mod_list_lua)

# pkg python module
module_group_kpython=$(mod_list_python)

# pkg python3 module
module_group_kpython3=$(mod_list_python3)

# pkg ruby module
module_group_kruby=$(mod_list_ruby)

# pkg geoip module
module_group_kgeoip=$(mod_list_geoip)

# pkg geoip2 module
module_group_kgeoip2=$(mod_list_geoip2)

# pkg sqlite module
module_group_ksqlite=$(mod_list_sqlite)

# K json modules
module_group_kjson_basic=$(mod_list_json)

# K json modules with libevent
module_group_kjson=$(mod_list_json) $(mod_list_json_event)

# K jansson modules
module_group_kjansson_basic=$(mod_list_jansson)

# K jansson modules with libevent
module_group_kjansson=$(mod_list_jansson) $(mod_list_jansson_event)

# pkg redis module
module_group_kredis=$(mod_list_redis)

# pkg mono module
module_group_kmono=$(mod_list_mono)

# pkg IMS modules
module_group_kims=$(mod_list_ims)

# pkg outbound module
module_group_koutbound=$(mod_list_outbound)

# pkg java module
module_group_kjava=$(mod_list_java)

# pkg dnssec module
module_group_kdnssec=$(mod_list_dnssec)

# pkg sctp module
module_group_ksctp=$(mod_list_sctp)

# pkg auth_ephemeral module
module_group_kautheph=$(mod_list_autheph)

# pkg gzcompress module
module_group_kgzcompress=$(mod_list_gzcompress)

# pkg uuid module
module_group_kuuid=$(mod_list_uuid)

# pkg libev modules
module_group_kev=$(mod_list_ev)

# pkg kazoo module
module_group_kkazoo=$(mod_list_kazoo)

# pkg mongodb modules
module_group_kmongodb=$(mod_list_mongodb)

# pkg cnxcc module
module_group_kcnxcc=$(mod_list_cnxcc)

# pkg erlang module
module_group_kerlang=$(mod_list_erlang)

# pkg systemd module
module_group_ksystemd=$(mod_list_systemd)

# K nsq modules
module_group_knsq=$(mod_list_nsq)

# K rabbitmq modules
module_group_krabbitmq=$(mod_list_rabbitmq)

# K phonenumber modules
module_group_kphonenum=$(mod_list_phonenum)

# K rtp_media_server modules
module_group_krtp_media_server=$(mod_list_rtp_media_server)

# list of static modules
#
static_modules:=