Skip to content

Commit cdf9a47

Browse files
committed
cmake: Refactor packaging setup and improve installation paths
- Moved packaging configuration to a new deb-packaging.cmake file for better organization. - Updated installation paths in CMakeLists to use DESTDIR for flexibility. - Enhanced group handling for module packaging, allowing for "ALL_PACKAGED" option.
1 parent 201a2bd commit cdf9a47

File tree

6 files changed

+99
-81
lines changed

6 files changed

+99
-81
lines changed

CMakeLists.txt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,10 @@ add_subdirectory(utils/kamcmd)
8080
# and scirpts are using {CMAKE_BINARY_DIR} from where they where first included.
8181
include(${CMAKE_SOURCE_DIR}/cmake/dbschema.cmake)
8282

83-
# TODO: Packaging stuuf. These should be on different file propably
84-
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
85-
set(CPACK_PACKAGE_NAME kamailio)
86-
set(CPACK_GENERATOR DEB)
87-
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "test")
88-
89-
include(CPack)
83+
# ----------
84+
# Packaging
85+
# ----------
86+
include(${CMAKE_SOURCE_DIR}/cmake/deb-packaging.cmake)
9087

9188
# Add uninstall target
9289
if(NOT TARGET uninstall)
@@ -98,6 +95,6 @@ if(NOT TARGET uninstall)
9895
add_custom_target(
9996
uninstall
10097
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake-uninstall.cmake
101-
COMMENT "Uninstalling"
98+
COMMENT "Uninstalling ${PROJECT_NAME}-${PROJECT_VERSION} from ${CMAKE_INSTALL_PREFIX}"
10299
)
103100
endif()

cmake/deb-packaging.cmake

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Retrieve all defined components
2+
get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
3+
4+
message(STATUS "All components: ${CPACK_COMPONENTS_ALL}")
5+
# Optionally filter components
6+
# list(FILTER CPACK_COMPONENTS_ALL INCLUDE REGEX "^(core|tls)$")
7+
8+
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
9+
# set(CPACK_PACKAGE_NAME kamailio)
10+
set(CPACK_DEBIAN_PACKAGE_NAME kamailio)
11+
set(CPACK_GENERATOR DEB)
12+
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "test")
13+
set(CPACK_DEB_COMPONENT_INSTALL ON)
14+
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
15+
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
16+
17+
# Configure CPack with the selected components
18+
include(CPack)

cmake/groups.cmake

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -687,74 +687,74 @@ set(MODULE_GROUP_KRTP_MEDIA_SERVER ${MOD_LIST_RTP_MEDIA_SERVER})
687687
# list of static modules
688688
set(STATIC_MODULES "")
689689

690-
list(
691-
APPEND
692-
AVAILABLE_GROUPS
693-
KSTANDARD
694-
KMINI
695-
KPCRE
696-
KMYSQL
697-
KPOSTGRES
698-
KCPL
699-
KXML
700-
KRADIUS
701-
KUNIXODBC
702-
KPERL
703-
KSNMPSTATS
704-
KXMPP
705-
KBERKELEY
706-
KLDAP
707-
KUTILS
708-
KHTTP_ASYNC
709-
KMEMCACHED
710-
KTLS_BASIC
711-
KTLS
712-
KTLS_WOLFSSL
713-
KWEBSOCKET
714-
KPRESENCE
715-
KLUA
716-
KPYTHON
717-
KPYTHON3
718-
KRUBY
719-
KGEOIP
720-
KGEOIP2
721-
KSQLITE
722-
KJSON_BASIC
723-
KJSON
724-
KJANSSON_BASIC
725-
KJANSSON
726-
KREDIS
727-
KIMS
728-
KOUTBOUND
729-
KJAVA
730-
KDNSSEC
731-
KSCTP
732-
KAUTHEPH
733-
KGZCOMPRESS
734-
KUUID
735-
KEV
736-
KJWT
737-
KLWSC
738-
KSTIRSHAKEN
739-
KKAZOO
740-
KMONGODB
741-
KCNXCC
742-
KERLANG
743-
KSYSTEMD
744-
KNSQ
745-
KRABBITMQ
746-
KPHONENUM
747-
KKAFKA
748-
KMQTT
749-
KNATS
750-
KRUXC
751-
KMICROHTTPD
752-
KNGHTTP2
753-
KGCRYPT
754-
KSECSIPID
755-
KRT_MEDIA_SERVER
690+
set(MODULE_GROUP_PACKAGE_GROUPS
691+
KPCRE
692+
KMYSQL
693+
KPOSTGRES
694+
KCPL
695+
KXML
696+
KRADIUS
697+
KUNIXODBC
698+
KPERL
699+
KSNMPSTATS
700+
KXMPP
701+
KBERKELEY
702+
KLDAP
703+
KUTILS
704+
KHTTP_ASYNC
705+
KMEMCACHED
706+
KTLS_BASIC
707+
KTLS
708+
KTLS_WOLFSSL
709+
KWEBSOCKET
710+
KPRESENCE
711+
KLUA
712+
KPYTHON
713+
KPYTHON3
714+
KRUBY
715+
KGEOIP
716+
KGEOIP2
717+
KSQLITE
718+
KJSON_BASIC
719+
KJSON
720+
KJANSSON_BASIC
721+
KJANSSON
722+
KREDIS
723+
KIMS
724+
KOUTBOUND
725+
KJAVA
726+
KDNSSEC
727+
KSCTP
728+
KAUTHEPH
729+
KGZCOMPRESS
730+
KUUID
731+
KEV
732+
KJWT
733+
KLWSC
734+
KSTIRSHAKEN
735+
KKAZOO
736+
KMONGODB
737+
KCNXCC
738+
KERLANG
739+
KSYSTEMD
740+
KNSQ
741+
KRABBITMQ
742+
KPHONENUM
743+
KKAFKA
744+
KMQTT
745+
KNATS
746+
KRUXC
747+
KMICROHTTPD
748+
KNGHTTP2
749+
KGCRYPT
750+
KSECSIPID
751+
KRT_MEDIA_SERVER
756752
)
757753

754+
# Add group names to available group and provide "ALL_PACKAGED" as well
755+
# for easier packaging using components
756+
list(APPEND AVAILABLE_GROUPS ALL_PACKAGED ${MODULE_GROUP_PACKAGE_GROUPS})
757+
758758
# Find the group name for the target by checking if the module is in the
759759
# list of modules to be built and if so, use the group name of that module
760760
# group_name can be used afterwards.

src/CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,18 +227,17 @@ install(
227227
message(STATUS \"${CFG_NAME}.cfg already exists in \"
228228
\"\${dir}/${CFG_NAME}.cfg. Installing as ${CFG_NAME}.cfg.sample\")
229229
file(INSTALL \"${CMAKE_SOURCE_DIR}/etc/kamailio.cfg\"
230-
DESTINATION \"${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}\"
230+
DESTINATION \"$ENV{DESTDIR}${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}\"
231231
RENAME \"${CFG_NAME}.cfg.sample\"
232232
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
233233
)
234234
else()
235235
file(INSTALL \"${CMAKE_SOURCE_DIR}/etc/kamailio.cfg\"
236-
DESTINATION \"${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}\"
236+
DESTINATION \"$ENV{DESTDIR}${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}\"
237237
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
238238
RENAME \"${CFG_NAME}.cfg\"
239239
)
240240
endif()
241-
242241
"
243242
COMPONENT kamailio-core
244243
)

src/modules/CMakeLists.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,12 @@ set(MODULE_GROUP_NAME
1717
set_property(CACHE MODULE_GROUP_NAME PROPERTY STRINGS ${AVAILABLE_GROUP_NAMES})
1818

1919
# User may provide multiple groups seperated by space
20-
separate_arguments(MODULE_GROUP_LIST UNIX_COMMAND "${MODULE_GROUP_NAME}")
21-
message(STATUS "Building groups: ${MODULE_GROUP_LIST}")
20+
if(MODULE_GROUP_NAME STREQUAL "ALL_PACKAGED")
21+
set(MODULE_GROUP_LIST ${MODULE_GROUP_PACKAGE_GROUPS})
22+
else()
23+
separate_arguments(MODULE_GROUP_LIST UNIX_COMMAND "${MODULE_GROUP_NAME}")
24+
message(STATUS "Building groups: ${MODULE_GROUP_LIST}")
25+
endif()
2226

2327
# Check if elements in MODULE_GROUP_LIST are valid by checking against
2428
# AVAILABLE_GROUP_NAMES

utils/kamctl/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@ install(
7272
message(STATUS \"kamctlrc already exists in\${dir}/kamctlrc.
7373
Installing as kamctlrc.sample\")
7474
file(INSTALL \"${CMAKE_CURRENT_SOURCE_DIR}/kamctlrc\"
75-
DESTINATION \"${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}\"
75+
DESTINATION \"$ENV{DESTDIR}${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}\"
7676
RENAME \"kamctlrc.sample\"
7777
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
7878
)
7979
else()
8080
file(INSTALL \"${CMAKE_CURRENT_SOURCE_DIR}/kamctlrc\"
81-
DESTINATION \"${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}\"
81+
DESTINATION \"$ENV{DESTDIR}${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}\"
8282
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
8383
endif()
8484
"

0 commit comments

Comments
 (0)