groups.cmake 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796
  1. # Kamailio build system Module groups definitions
  2. #
  3. # lists are sets of modules that don't include modules that are in other lists -
  4. # break the lists as needed in order to use them to build desired groups and
  5. # packages
  6. #
  7. # * basic used modules, with no extra dependency (widespread usage)
  8. set(MOD_LIST_BASIC
  9. async
  10. auth
  11. benchmark
  12. blst
  13. cfg_rpc
  14. cfgutils
  15. corex
  16. counters
  17. ctl
  18. debugger
  19. diversion
  20. enum
  21. exec
  22. ipops
  23. kex
  24. mangler
  25. maxfwd
  26. mediaproxy
  27. mqueue
  28. nat_traversal
  29. nathelper
  30. path
  31. pike
  32. pv
  33. ratelimit
  34. rr
  35. rtimer
  36. rtpproxy
  37. sanity
  38. sdpops
  39. siputils
  40. sl
  41. statistics
  42. textops
  43. textopsx
  44. tm
  45. tmx
  46. topoh
  47. xlog
  48. rtpengine
  49. stun
  50. sipt
  51. tcpops
  52. auth_xkeys
  53. smsops
  54. tsilo
  55. cfgt
  56. statsc
  57. topos
  58. topos_htable
  59. sipdump
  60. pv_headers
  61. kemix
  62. )
  63. # * extra used modules, with no extra dependency
  64. set(MOD_LIST_EXTRA
  65. avp
  66. auth_diameter
  67. call_control
  68. call_obj
  69. dmq
  70. domainpolicy
  71. msrp
  72. carrierroute
  73. pdb
  74. qos
  75. sca
  76. seas
  77. sms
  78. sst
  79. timer
  80. tmrec
  81. uac_redirect
  82. xhttp
  83. xhttp_rpc
  84. xprint
  85. jsonrpcs
  86. nosip
  87. dmq_usrloc
  88. statsd
  89. rtjson
  90. log_custom
  91. keepalive
  92. ss7ops
  93. acc_diameter
  94. evrexec
  95. file_out
  96. sipjson
  97. lrkproxy
  98. math
  99. posops
  100. xhttp_prom
  101. dlgs
  102. sworker
  103. influxdbc
  104. )
  105. # * common modules depending on database
  106. set(MOD_LIST_DB
  107. acc
  108. alias_db
  109. auth_db
  110. avpops
  111. cfg_db
  112. db_text
  113. db_flatstore
  114. db_cluster
  115. dialog
  116. dispatcher
  117. domain
  118. drouting
  119. group
  120. htable
  121. imc
  122. matrix
  123. mohqueue
  124. msilo
  125. mtree
  126. p_usrloc
  127. pdt
  128. permissions
  129. pipelimit
  130. prefix_route
  131. registrar
  132. sipcapture
  133. siptrace
  134. speeddial
  135. sqlops
  136. uac
  137. uri_db
  138. userblocklist
  139. usrloc
  140. secfilter
  141. )
  142. # * common modules depending on database, using UID db schema
  143. set(MOD_LIST_DBUID db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags uid_uri_db)
  144. # * modules for devel purposes
  145. set(MOD_LIST_DEVEL misctest)
  146. # * modules depending on pcre3 library
  147. set(MOD_LIST_PCRE dialplan lcr regex)
  148. # * modules depending on radius client library
  149. set(MOD_LIST_RADIUS acc_radius auth_radius misc_radius peering)
  150. # * modules depending on ldap client library
  151. set(MOD_LIST_LDAP db2_ldap h350 ldap)
  152. # * modules depending on mysql client library
  153. set(MOD_LIST_MYSQL db_mysql)
  154. # * modules depending on postgres client library
  155. set(MOD_LIST_POSTGRES db_postgres)
  156. # * modules depending on unixodbc library
  157. set(MOD_LIST_UNIXODBC db_unixodbc)
  158. # * modules depending on xml2 library
  159. set(MOD_LIST_CPL cplc)
  160. # * modules depending on xml2 library
  161. set(MOD_LIST_XMLDEPS xhttp_pi xmlrpc xmlops)
  162. # * modules depending on net-snmp library
  163. set(MOD_LIST_SNMPSTATS snmpstats)
  164. # * modules depending on expat library
  165. set(MOD_LIST_XMPP xmpp)
  166. # * modules depending on bdb (db4) library
  167. set(MOD_LIST_BERKELEY db_berkeley)
  168. # * modules depending on curl library
  169. set(MOD_LIST_UTILS utils http_client lost slack)
  170. # * modules depending on curl and libevent2 library
  171. set(MOD_LIST_HTTP_ASYNC http_async_client)
  172. # * modules depending on memcache library
  173. set(MOD_LIST_MEMCACHED memcached)
  174. # * modules depending on openssl library
  175. set(MOD_LIST_TLSDEPS crypto tls)
  176. # * modules depending on static openssl library
  177. set(MOD_LIST_TLSA tlsa)
  178. # * modules depending on static wolfssl library
  179. set(MOD_LIST_TLS_WOLFSSL tls_wolfssl)
  180. # * modules depending on openssl library
  181. set(MOD_LIST_OUTBOUND outbound)
  182. # * modules depending on openssl and unistring library
  183. set(MOD_LIST_WEBSOCKET websocket)
  184. # * modules depending on libval-threads libcrypto libsres libpthread
  185. set(MOD_LIST_DNSSEC dnssec)
  186. # * modules depending on libsctp
  187. set(MOD_LIST_SCTP sctp)
  188. # * modules depending on openssl library
  189. set(MOD_LIST_AUTHEPH auth_ephemeral)
  190. # * modules related to SIMPLE presence extensions
  191. set(MOD_LIST_PRESENCE
  192. presence
  193. presence_conference
  194. presence_dfks
  195. presence_dialoginfo
  196. presence_mwi
  197. presence_profile
  198. presence_reginfo
  199. presence_xml
  200. pua
  201. pua_bla
  202. pua_dialoginfo
  203. pua_reginfo
  204. pua_rpc
  205. pua_usrloc
  206. pua_xmpp
  207. rls
  208. xcap_client
  209. xcap_server
  210. )
  211. # * modules depending on lua library
  212. set(MOD_LIST_LUA app_lua)
  213. # * modules depending on perl library
  214. set(MOD_LIST_PERLDEPS app_perl db_perlvdb)
  215. # * modules depending on python library
  216. set(MOD_LIST_PYTHON app_python)
  217. # * modules depending on python3 library
  218. set(MOD_LIST_PYTHON3 app_python3 app_python3s)
  219. # * modules depending on libm (math library - standard system library)
  220. set(MOD_LIST_JSDT app_jsdt)
  221. # * modules depending on ruby library
  222. set(MOD_LIST_RUBY app_ruby app_ruby_proc)
  223. # * modules depending on geoip library
  224. set(MOD_LIST_GEOIP geoip)
  225. # * modules depending on new geoip library
  226. set(MOD_LIST_GEOIP2 geoip2)
  227. # * modules depending on sqlite library
  228. set(MOD_LIST_SQLITE db_sqlite)
  229. # * modules depending on oracle library
  230. set(MOD_LIST_ORACLE db_oracle)
  231. # * modules depending on json library
  232. set(MOD_LIST_JSON json pua_json)
  233. # * modules depending on json (+libevent) library
  234. set(MOD_LIST_JSON_EVENT jsonrpcc)
  235. # * modules depending on jansson library
  236. set(MOD_LIST_JANSSON jansson acc_json)
  237. # * modules depending on jansson (+libevent) library
  238. set(MOD_LIST_JANSSON_EVENT janssonrpcc)
  239. # * modules depending on redis library
  240. set(MOD_LIST_REDIS db_redis ndb_redis topos_redis)
  241. # * modules related to IMS extensions
  242. set(MOD_LIST_IMS
  243. cdp
  244. cdp_avp
  245. ims_dialog
  246. ims_auth
  247. ims_isc
  248. ims_icscf
  249. ims_qos
  250. ims_registrar_pcscf
  251. ims_registrar_scscf
  252. ims_usrloc_pcscf
  253. ims_usrloc_scscf
  254. ims_charging
  255. ims_ocs
  256. ims_diameter_server
  257. ims_ipsec_pcscf
  258. )
  259. # * modules depending on java library
  260. set(MOD_LIST_JAVA app_java)
  261. # * modules depending on gzip library
  262. set(MOD_LIST_GZCOMPRESS gzcompress)
  263. # * modules depending on uuid library
  264. set(MOD_LIST_UUID uuid)
  265. # * modules depending on ev library
  266. set(MOD_LIST_EV evapi)
  267. # * modules depending on libjwt library
  268. set(MOD_LIST_JWT jwt)
  269. # * modules depending on libwebsockets library
  270. set(MOD_LIST_LWSC lwsc)
  271. # * modules depending on libstirshaken library
  272. set(MOD_LIST_STIRSHAKEN stirshaken)
  273. # * modules depending on kazoo/rabbitmq
  274. set(MOD_LIST_KAZOO kazoo)
  275. # * modules depending on mongodb
  276. set(MOD_LIST_MONGODB db_mongodb ndb_mongodb)
  277. # * modules depending on redis and event library
  278. set(MOD_LIST_CNXCC cnxcc)
  279. # * modules depending on erlang library
  280. set(MOD_LIST_ERLANG erlang)
  281. # * modules depending on systemd library
  282. set(MOD_LIST_SYSTEMD log_systemd systemdops)
  283. # * modules depending on libnsq (+libev libevbuffsock libcurl libjson-c) library
  284. set(MOD_LIST_NSQ nsq)
  285. # * modules depending on librabbitmq library
  286. set(MOD_LIST_RABBITMQ rabbitmq)
  287. # * modules depending on libphonenumber library
  288. set(MOD_LIST_PHONENUM phonenum)
  289. # * modules depending on rdkafka library
  290. set(MOD_LIST_KAFKA kafka)
  291. # * modules depending on mqtt mosquitto and ev library
  292. set(MOD_LIST_MQTT mqtt)
  293. # * modules depending on nats and ev library
  294. set(MOD_LIST_NATS nats)
  295. # * modules depending on ruxc library
  296. set(MOD_LIST_RUXC ruxc)
  297. # * modules depending on microhttpd library
  298. set(MOD_LIST_MICROHTTPD microhttpd)
  299. # * modules depending on nghttp2 library
  300. set(MOD_LIST_NGHTTP2 nghttp2)
  301. # * modules depending on libgcrypt library
  302. set(MOD_LIST_GCRYPT gcrypt)
  303. # * modules depending on secsipid library
  304. set(MOD_LIST_SECSIPID secsipid secsipid_proc)
  305. # * modules depending on oRTP and mediastreamer2 libraries
  306. set(MOD_LIST_RTP_MEDIA_SERVER rtp_media_server)
  307. # * all modules
  308. set(MOD_LIST_ALL
  309. ${MOD_LIST_BASIC}
  310. ${MOD_LIST_EXTRA}
  311. ${MOD_LIST_DB}
  312. ${MOD_LIST_DBUID}
  313. ${MOD_LIST_DEVEL}
  314. ${MOD_LIST_PCRE}
  315. ${MOD_LIST_RADIUS}
  316. ${MOD_LIST_LDAP}
  317. ${MOD_LIST_MYSQL}
  318. ${MOD_LIST_POSTGRES}
  319. ${MOD_LIST_UNIXODBC}
  320. ${MOD_LIST_XMLDEPS}
  321. ${MOD_LIST_PERLDEPS}
  322. ${MOD_LIST_CPL}
  323. ${MOD_LIST_XMPP}
  324. ${MOD_LIST_BERKELEY}
  325. ${MOD_LIST_UTILS}
  326. ${MOD_LIST_MEMCACHED}
  327. ${MOD_LIST_TLSDEPS}
  328. ${MOD_LIST_WEBSOCKET}
  329. ${MOD_LIST_SNMPSTATS}
  330. ${MOD_LIST_PRESENCE}
  331. ${MOD_LIST_LUA}
  332. ${MOD_LIST_PYTHON}
  333. ${MOD_LIST_PYTHON3}
  334. ${MOD_LIST_RUBY}
  335. ${MOD_LIST_GEOIP}
  336. ${MOD_LIST_SQLITE}
  337. ${MOD_LIST_JSON}
  338. ${MOD_LIST_JSON_EVENT}
  339. ${MOD_LIST_REDIS}
  340. ${MOD_LIST_IMS}
  341. ${MOD_LIST_ORACLE}
  342. ${MOD_LIST_OUTBOUND}
  343. ${MOD_LIST_JAVA}
  344. ${MOD_LIST_DNSSEC}
  345. ${MOD_LIST_SCTP}
  346. ${MOD_LIST_AUTHEPH}
  347. ${MOD_LIST_GZCOMPRESS}
  348. ${MOD_LIST_UUID}
  349. ${MOD_LIST_EV}
  350. ${MOD_LIST_KAZOO}
  351. ${MOD_LIST_MONGODB}
  352. ${MOD_LIST_CNXCC}
  353. ${MOD_LIST_JANSSON}
  354. ${MOD_LIST_JANSSON_EVENT}
  355. ${MOD_LIST_GEOIP2}
  356. ${MOD_LIST_ERLANG}
  357. ${MOD_LIST_SYSTEMD}
  358. ${MOD_LIST_HTTP_ASYNC}
  359. ${MOD_LIST_NSQ}
  360. ${MOD_LIST_RABBITMQ}
  361. ${MOD_LIST_JSDT}
  362. ${MOD_LIST_PHONENUM}
  363. ${MOD_LIST_KAFKA}
  364. ${MOD_LIST_MQTT}
  365. ${MOD_LIST_NATS}
  366. ${MOD_LIST_RUXC}
  367. ${MOD_LIST_SECSIPID}
  368. ${MOD_LIST_JWT}
  369. ${MOD_LIST_LWSC}
  370. ${MOD_LIST_STIRSHAKEN}
  371. ${MOD_LIST_TLSA}
  372. ${MOD_LIST_TLS_WOLFSSL}
  373. ${MOD_LIST_MICROHTTPD}
  374. ${MOD_LIST_NGHTTP2}
  375. ${MOD_LIST_GCRYPT}
  376. ${MOD_LIST_RTP_MEDIA_SERVER}
  377. )
  378. # sort the list
  379. list(SORT MOD_LIST_ALL)
  380. # --- Groups defined for source code compilation ###
  381. # groups are sets of modules selected by compile target interest (should be
  382. # built by combining lists)
  383. # Modules in this group are the default compiled modules due to no external
  384. # compile or link dependencies
  385. set(MODULE_GROUP_ALL ${MOD_LIST_ALL})
  386. set(MODULE_GROUP_DEFAULT ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DB} ${MOD_LIST_DBUID}
  387. ${MOD_LIST_DEVEL} ${MOD_LIST_JSDT}
  388. )
  389. # Modules in this group are the default compiled modules due to no
  390. # internal/external compile or link dependencies
  391. # module_group_standard=$(mod_list_basic) $(mod_list_extra) \ $(mod_list_devel)
  392. # $(mod_list_jsdt)
  393. set(MODULE_GROUP_STANDARD ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DEVEL} ${MOD_LIST_JSDT})
  394. # Modules in this group are considered a standard part due to widespread usage,
  395. # but they have dependencies that must be satisfied for compilation (e.g., lcr,
  396. # radius, presence, tls, ...). module_group_common=$(mod_list_db)
  397. # $(mod_list_dbuid) \ $(mod_list_pcre) $(mod_list_radius) \ $(mod_list_xmldeps)
  398. # $(mod_list_presence) \ $(mod_list_tlsdeps)
  399. set(MODULE_GROUP_COMMON
  400. ${MOD_LIST_DB}
  401. ${MOD_LIST_DBUID}
  402. ${MOD_LIST_PCRE}
  403. ${MOD_LIST_RADIUS}
  404. ${MOD_LIST_XMLDEPS}
  405. ${MOD_LIST_PRESENCE}
  406. ${MOD_LIST_TLSDEPS}
  407. )
  408. # for all protocols (excl. local ones such as unix, tcp, etc.)
  409. set(AVAILABLE_GROUPS ALL DEFAULT STANDARD COMMON)
  410. # --- Groups defined for pacKaging ###
  411. # Standard modules in main pkg
  412. set(MODULE_GROUP_KSTANDARD ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DB} ${MOD_LIST_DBUID}
  413. ${MOD_LIST_PCRE} ${MOD_LIST_JSDT}
  414. )
  415. # Standard modules without any dependencies (such as pcre)
  416. set(MODULE_GROUP_KMINI ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DB} ${MOD_LIST_DBUID}
  417. ${MOD_LIST_JSDT}
  418. )
  419. # pkg pcre module
  420. set(MODULE_GROUP_KPCRE ${MOD_LIST_PCRE})
  421. # pkg mysql module
  422. set(MODULE_GROUP_KMYSQL ${MOD_LIST_MYSQL})
  423. # pkg postgress module
  424. set(MODULE_GROUP_KPOSTGRES ${MOD_LIST_POSTGRES})
  425. # pkg cpl module
  426. set(MODULE_GROUP_KCPL ${MOD_LIST_CPL})
  427. # pkg xml modules
  428. set(MODULE_GROUP_KXML ${MOD_LIST_XMLDEPS})
  429. # pkg radius modules
  430. set(MODULE_GROUP_KRADIUS ${MOD_LIST_RADIUS})
  431. # pkg unixodbc module
  432. set(MODULE_GROUP_KUNIXODBC ${MOD_LIST_UNIXODBC})
  433. # pkg perl module
  434. set(MODULE_GROUP_KPERL ${MOD_LIST_PERLDEPS})
  435. # pkg snmpstats module
  436. set(MODULE_GROUP_KSNMPSTATS ${MOD_LIST_SNMPSTATS})
  437. # pkg xmpp module
  438. set(MODULE_GROUP_KXMPP ${MOD_LIST_XMPP})
  439. # pkg berkeley module
  440. set(MODULE_GROUP_KBERKELEY ${MOD_LIST_BERKELEY})
  441. # pkg ldap modules
  442. set(MODULE_GROUP_KLDAP ${MOD_LIST_LDAP})
  443. # pkg utils module
  444. set(MODULE_GROUP_KUTILS ${MOD_LIST_UTILS})
  445. # pkg https_async module
  446. set(MODULE_GROUP_KHTTP_ASYNC ${MOD_LIST_HTTP_ASYNC})
  447. # pkg memcached module
  448. set(MODULE_GROUP_KMEMCACHED ${MOD_LIST_MEMCACHED})
  449. # pkg tls module
  450. set(MODULE_GROUP_KTLS_BASIC ${MOD_LIST_TLSDEPS})
  451. # pkg tls module with curl
  452. if(KTLS_INCLUDE_TLSA)
  453. set(MODULE_GROUP_KTLS ${MOD_LIST_TLSDEPS} ${MOD_LIST_TLSA})
  454. else()
  455. set(MODULE_GROUP_KTLS ${MOD_LIST_TLSDEPS})
  456. set(MODULE_GROUP_KTLSA ${MOD_LIST_TLSA})
  457. endif()
  458. # pkg tls_wolfssl module
  459. set(MODULE_GROUP_KTLS_WOLFSSL ${MOD_LIST_TLS_WOLFSSL})
  460. # pkg websocket module
  461. set(MODULE_GROUP_KWEBSOCKET ${MOD_LIST_WEBSOCKET})
  462. # pkg presence modules
  463. set(MODULE_GROUP_KPRESENCE ${MOD_LIST_PRESENCE})
  464. # pkg lua module
  465. set(MODULE_GROUP_KLUA ${MOD_LIST_LUA})
  466. # pkg python module
  467. set(MODULE_GROUP_KPYTHON ${MOD_LIST_PYTHON})
  468. # pkg python3 module
  469. set(MODULE_GROUP_KPYTHON3 ${MOD_LIST_PYTHON3})
  470. # pkg ruby module
  471. set(MODULE_GROUP_KRUBY ${MOD_LIST_RUBY})
  472. # pkg geoip module
  473. set(MODULE_GROUP_KGEOIP ${MOD_LIST_GEOIP})
  474. # pkg geoip2 module
  475. set(MODULE_GROUP_KGEOIP2 ${MOD_LIST_GEOIP2})
  476. # pkg sqlite module
  477. set(MODULE_GROUP_KSQLITE ${MOD_LIST_SQLITE})
  478. # K json modules
  479. set(MODULE_GROUP_KJSON_BASIC ${MOD_LIST_JSON})
  480. # K json modules with libevent
  481. set(MODULE_GROUP_KJSON ${MOD_LIST_JSON} ${MOD_LIST_JSON_EVENT})
  482. # K jansson modules
  483. set(MODULE_GROUP_KJANSSON_BASIC ${MOD_LIST_JANSSON})
  484. # K jansson modules with libevent
  485. set(MODULE_GROUP_KJANSSON ${MOD_LIST_JANSSON} ${MOD_LIST_JANSSON_EVENT})
  486. # pkg redis module
  487. set(MODULE_GROUP_KREDIS ${MOD_LIST_REDIS})
  488. # pkg IMS modules
  489. set(MODULE_GROUP_KIMS ${MOD_LIST_IMS})
  490. # pkg outbound module
  491. set(MODULE_GROUP_KOUTBOUND ${MOD_LIST_OUTBOUND})
  492. # pkg java module
  493. set(MODULE_GROUP_KJAVA ${MOD_LIST_JAVA})
  494. # pkg dnssec module
  495. set(MODULE_GROUP_KDNSSEC ${MOD_LIST_DNSSEC})
  496. # pkg sctp module
  497. set(MODULE_GROUP_KSCTP ${MOD_LIST_SCTP})
  498. # pkg auth_ephemeral module
  499. set(MODULE_GROUP_KAUTHEPH ${MOD_LIST_AUTHEPH})
  500. # pkg gzcompress module
  501. set(MODULE_GROUP_KGZCOMPRESS ${MOD_LIST_GZCOMPRESS})
  502. # pkg uuid module
  503. set(MODULE_GROUP_KUUID ${MOD_LIST_UUID})
  504. # pkg libev modules
  505. set(MODULE_GROUP_KEV ${MOD_LIST_EV})
  506. # pkg jwt module
  507. set(MODULE_GROUP_KJWT ${MOD_LIST_JWT})
  508. # pkg lwsc module
  509. set(MODULE_GROUP_KLWSC ${MOD_LIST_LWSC})
  510. # pkg stirshaken module
  511. set(MODULE_GROUP_KSTIRSHAKEN ${MOD_LIST_STIRSHAKEN})
  512. # pkg kazoo module
  513. set(MODULE_GROUP_KKAZOO ${MOD_LIST_KAZOO})
  514. # pkg mongodb modules
  515. set(MODULE_GROUP_KMONGODB ${MOD_LIST_MONGODB})
  516. # pkg cnxcc module
  517. set(MODULE_GROUP_KCNXCC ${MOD_LIST_CNXCC})
  518. # pkg erlang module
  519. set(MODULE_GROUP_KERLANG ${MOD_LIST_ERLANG})
  520. # pkg systemd module
  521. set(MODULE_GROUP_KSYSTEMD ${MOD_LIST_SYSTEMD})
  522. # K nsq modules
  523. set(MODULE_GROUP_KNSQ ${MOD_LIST_NSQ})
  524. # K rabbitmq modules
  525. set(MODULE_GROUP_KRABBITMQ ${MOD_LIST_RABBITMQ})
  526. # K phonenumber modules
  527. set(MODULE_GROUP_KPHONENUM ${MOD_LIST_PHONENUM})
  528. # K kafka modules
  529. set(MODULE_GROUP_KKAFKA ${MOD_LIST_KAFKA})
  530. # K mqtt modules
  531. set(MODULE_GROUP_KMQTT ${MOD_LIST_MQTT})
  532. # K nats modules
  533. set(MODULE_GROUP_KNATS ${MOD_LIST_NATS})
  534. # K ruxc modules
  535. set(MODULE_GROUP_KRUXC ${MOD_LIST_RUXC})
  536. # K microhttpd module
  537. set(MODULE_GROUP_KMICROHTTPD ${MOD_LIST_MICROHTTPD})
  538. # K nghttp2 module
  539. set(MODULE_GROUP_KNGHTTP2 ${MOD_LIST_NGHTTP2})
  540. # K gcrypt module
  541. set(MODULE_GROUP_KGCRYPT ${MOD_LIST_GCRYPT})
  542. # K secsipid modules
  543. set(MODULE_GROUP_KSECSIPID ${MOD_LIST_SECSIPID})
  544. # K rtp_media_server modules
  545. set(MODULE_GROUP_KRTP_MEDIA_SERVER ${MOD_LIST_RTP_MEDIA_SERVER})
  546. # list of static modules
  547. set(STATIC_MODULES "")
  548. set(MODULE_GROUP_PACKAGE_GROUPS
  549. KSTANDARD
  550. KPCRE
  551. KMYSQL
  552. KPOSTGRES
  553. KCPL
  554. KXML
  555. KRADIUS
  556. KUNIXODBC
  557. KPERL
  558. KSNMPSTATS
  559. KXMPP
  560. KBERKELEY
  561. KLDAP
  562. KUTILS
  563. KHTTP_ASYNC
  564. KMEMCACHED
  565. KTLS_BASIC
  566. KTLS
  567. KTLS_WOLFSSL
  568. KWEBSOCKET
  569. KPRESENCE
  570. KLUA
  571. KPYTHON
  572. KPYTHON3
  573. KRUBY
  574. KGEOIP
  575. KGEOIP2
  576. KSQLITE
  577. KJSON_BASIC
  578. KJSON
  579. KJANSSON_BASIC
  580. KJANSSON
  581. KREDIS
  582. KIMS
  583. KOUTBOUND
  584. KJAVA
  585. KDNSSEC
  586. KSCTP
  587. KAUTHEPH
  588. KGZCOMPRESS
  589. KUUID
  590. KEV
  591. KJWT
  592. KLWSC
  593. KSTIRSHAKEN
  594. KKAZOO
  595. KMONGODB
  596. KCNXCC
  597. KERLANG
  598. KSYSTEMD
  599. KNSQ
  600. KRABBITMQ
  601. KPHONENUM
  602. KKAFKA
  603. KMQTT
  604. KNATS
  605. KRUXC
  606. KMICROHTTPD
  607. KNGHTTP2
  608. KGCRYPT
  609. KSECSIPID
  610. KRTP_MEDIA_SERVER
  611. )
  612. # Add group names to available group and provide "ALL_PACKAGED" as well
  613. # for easier packaging using components
  614. list(APPEND AVAILABLE_GROUPS ALL_PACKAGED KMINI ${MODULE_GROUP_PACKAGE_GROUPS})
  615. # Find the group name for the target by checking if the module is in the
  616. # list of modules to be built and if so, use the group name of that module
  617. # group_name can be used afterwards.
  618. function(find_group_name module)
  619. set(group_name
  620. ""
  621. PARENT_SCOPE
  622. )
  623. separate_arguments(groups_to_search_in UNIX_COMMAND ${MODULE_GROUP_NAME})
  624. list(FIND groups_to_search_in "ALL_PACKAGED" group_index)
  625. if(group_index GREATER -1)
  626. # Remove it from the list and append the package groups
  627. list(REMOVE_AT groups_to_search_in ${group_index})
  628. list(APPEND groups_to_search_in ${MODULE_GROUP_PACKAGE_GROUPS})
  629. endif()
  630. # message(WARNING "Groups provided by the user ${groups_to_search_in}")
  631. # message(WARNING "Looking for group for db ${module}")
  632. foreach(group IN LISTS groups_to_search_in)
  633. get_property(MODULES_IN_GROUP VARIABLE PROPERTY "MODULE_GROUP_${group}")
  634. # message(WARNING "Modules in group ${group}: ${MODULES_IN_GROUP}")
  635. if("${module}" IN_LIST MODULES_IN_GROUP)
  636. # message(WARNING "Found group ${group} for db ${module}")
  637. set(group_name
  638. "${group}"
  639. PARENT_SCOPE
  640. )
  641. return()
  642. endif()
  643. endforeach()
  644. message(STATUS "module ${module} not found in any group")
  645. # if not found in any group, it's probably in include_modules list
  646. # Use the group name "user_specified_list" associated with include_modules
  647. # list, otherwise it will generate Unknown group component
  648. set(group_name
  649. "user_specified_list"
  650. PARENT_SCOPE
  651. )
  652. endfunction()