cmake: Fix formatting according to cmake-format config file.

This commit is contained in:
Xenofon Karamanos 2025-03-27 13:50:51 +00:00 committed by Victor Seva
parent b102e3f38a
commit 7c58b8a7fc
43 changed files with 483 additions and 547 deletions

View file

@ -7,7 +7,8 @@ project(
kamailio
VERSION 6.1.0
DESCRIPTION "Kamailio SIP Server"
HOMEPAGE_URL "https://www.kamailio.org")
HOMEPAGE_URL "https://www.kamailio.org"
)
# Set the version number
set(EXTRAVERSION "-dev0")
@ -41,12 +42,14 @@ include(${CMAKE_SOURCE_DIR}/cmake/BuildType.cmake)
# main binary name
set(MAIN_NAME
"kamailio"
CACHE STRING "Main binary name")
CACHE STRING "Main binary name"
)
# use kamailio config
set(CFG_NAME
"kamailio"
CACHE STRING "Config name")
CACHE STRING "Config name"
)
include(GNUInstallDirs)
include(${CMAKE_SOURCE_DIR}/cmake/defs.cmake)
@ -71,11 +74,12 @@ include(CPack)
if(NOT TARGET uninstall)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake-uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake-uninstall.cmake" IMMEDIATE @ONLY)
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake-uninstall.cmake" IMMEDIATE @ONLY
)
add_custom_target(
uninstall
COMMAND ${CMAKE_COMMAND} -P
${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake-uninstall.cmake
COMMENT "Uninstalling")
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake-uninstall.cmake
COMMENT "Uninstalling"
)
endif()

View file

@ -5,17 +5,13 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
endif()
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(
STATUS
"Setting build type to '${default_build_type}' as none was specified."
)
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
set(CMAKE_BUILD_TYPE
"${default_build_type}"
CACHE STRING "Choose the type of build." FORCE
)
# Set the possible values of build type for cmake-gui
set_property(
CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel"
"RelWithDebInfo"
CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo"
)
endif()

View file

@ -14,16 +14,16 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64")
target_compile_definitions(common_compiler_flags INTERFACE CC_GCC_LIKE_ASM)
target_compile_options(
common_compiler_flags
INTERFACE -Wall -funroll-loops -Wcast-align
-Werror=implicit-function-declaration -Werror=implicit-int)
common_compiler_flags INTERFACE -Wall -funroll-loops -Wcast-align
-Werror=implicit-function-declaration -Werror=implicit-int
)
# If GCC version is greater than 4.2.0, enable the following flags
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.2.0)
target_compile_options(
common_compiler_flags
INTERFACE -m64 -minline-all-stringops -falign-loops -ftree-vectorize
-fno-strict-overflow -mtune=generic)
common_compiler_flags INTERFACE -m64 -minline-all-stringops -falign-loops -ftree-vectorize
-fno-strict-overflow -mtune=generic
)
target_link_options(common_compiler_flags INTERFACE -m64)
endif()
elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
@ -38,16 +38,16 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i486|i586|i686")
target_compile_definitions(common_compiler_flags INTERFACE CC_GCC_LIKE_ASM)
target_compile_options(
common_compiler_flags
INTERFACE -Wall -funroll-loops -Wcast-align
-Werror=implicit-function-declaration -Werror=implicit-int)
common_compiler_flags INTERFACE -Wall -funroll-loops -Wcast-align
-Werror=implicit-function-declaration -Werror=implicit-int
)
# If GCC version is greater than 4.2.0, enable the following flags
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.2.0)
target_compile_options(
common_compiler_flags
INTERFACE -m32 -minline-all-stringops -falign-loops -ftree-vectorize
-fno-strict-overflow -mtune=generic)
common_compiler_flags INTERFACE -m32 -minline-all-stringops -falign-loops -ftree-vectorize
-fno-strict-overflow -mtune=generic
)
endif()
elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
target_compile_definitions(common_compiler_flags INTERFACE CC_GCC_LIKE_ASM)

View file

@ -43,7 +43,8 @@ message(STATUS "Target Processor Alias: ${TARGET_ARCH}")
set(flavours kamailio)
set(FLAVOUR
"kamailio"
CACHE STRING "Flavour of the project")
CACHE STRING "Flavour of the project"
)
set_property(CACHE FLAVOUR PROPERTY STRINGS ${flavours})
# Verbose option (for debugging purposes) (was quiet in Makefile.defs) Probably
@ -113,13 +114,10 @@ endif()
set(LIBSSL_SET_MUTEX_SHARED
ON
CACHE BOOL
"enable workaround for libssl 1.1+ to set shared mutex attribute")
CACHE BOOL "enable workaround for libssl 1.1+ to set shared mutex attribute"
)
if(NOT ${LIBSSL_SET_MUTEX_SHARED})
message(
STATUS
"Checking if can enable workaround for libssl 1.1+ to set shared mutex attribute"
)
message(STATUS "Checking if can enable workaround for libssl 1.1+ to set shared mutex attribute")
# TODO: This can probably be reduced to a just a find_package(OpenSSL) call
# and then check the version
@ -131,9 +129,7 @@ if(NOT ${LIBSSL_SET_MUTEX_SHARED})
if(OPENSSL_FOUND)
message(STATUS "OpenSSL version: ${OPENSSL_VERSION}")
if(${OPENSSL_VERSION} VERSION_GREATER_EQUAL "1.1.0")
message(
STATUS
"Enabling workaround for libssl 1.1+ to set shared mutex attribute")
message(STATUS "Enabling workaround for libssl 1.1+ to set shared mutex attribute")
set(LIBSSL_SET_MUTEX_SHARED ON)
endif()
endif()
@ -163,7 +159,8 @@ option(USE_FAST_LOCK "Use fast locking if available" ON)
# Check the system processor type and set USE_FAST_LOCK accordingly
if(USE_FAST_LOCK)
if(CMAKE_SYSTEM_PROCESSOR MATCHES
"i386|i486|i586|i686|x86_64|amd64|sparc64|sparc|ppc|ppc64|alpha|mips2|mips64")
"i386|i486|i586|i686|x86_64|amd64|sparc64|sparc|ppc|ppc64|alpha|mips2|mips64"
)
set(USE_FAST_LOCK YES)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
set(USE_FAST_LOCK NO)
@ -178,9 +175,7 @@ if(USE_FAST_LOCK)
target_compile_definitions(common INTERFACE MIPS_HAS_LLSC) # likely
target_compile_definitions(common INTERFACE NOSMP) # very likely
elseif()
message(
STATUS
"Fast locking not available for this platform, disabling USE_FAST_LOCK")
message(STATUS "Fast locking not available for this platform, disabling USE_FAST_LOCK")
set(USE_FAST_LOCK NO)
endif()
endif()
@ -190,8 +185,7 @@ message(STATUS "Fast lock available: ${USE_FAST_LOCK}")
if(USE_FAST_LOCK)
# If fast lock is available, add the definitions for it, else each OS will
# have its own locking method
target_compile_definitions(common INTERFACE FAST_LOCK ADAPTIVE_WAIT
ADAPTIVE_WAIT_LOOPS=1024)
target_compile_definitions(common INTERFACE FAST_LOCK ADAPTIVE_WAIT ADAPTIVE_WAIT_LOOPS=1024)
endif()
# set(LOCKING_DEFINITION "${locking_method}")
@ -342,7 +336,8 @@ target_compile_definitions(
# TODO: We can use the generator expression to define extra flags
# instead of checking the options each time
$<$<BOOL:${USE_SCTP}>:USE_SCTP>
$<$<BOOL:${STATISTICS}>:STATISTICS>)
$<$<BOOL:${STATISTICS}>:STATISTICS>
)
target_link_libraries(common INTERFACE common_compiler_flags)
# ----------------------

View file

@ -60,7 +60,8 @@ set(MOD_LIST_BASIC
topos_htable
sipdump
pv_headers
kemix)
kemix
)
# * extra used modules, with no extra dependency
set(MOD_LIST_EXTRA
@ -102,7 +103,8 @@ set(MOD_LIST_EXTRA
xhttp_prom
dlgs
sworker
influxdbc)
influxdbc
)
# * common modules depending on database
set(MOD_LIST_DB
@ -139,11 +141,11 @@ set(MOD_LIST_DB
uri_db
userblocklist
usrloc
secfilter)
secfilter
)
# * common modules depending on database, using UID db schema
set(MOD_LIST_DBUID db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags
uid_uri_db)
set(MOD_LIST_DBUID db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags uid_uri_db)
# * modules for devel purposes
set(MOD_LIST_DEVEL misctest)
@ -233,7 +235,8 @@ set(MOD_LIST_PRESENCE
pua_xmpp
rls
xcap_client
xcap_server)
xcap_server
)
# * modules depending on lua library
set(MOD_LIST_LUA app_lua)
@ -296,7 +299,8 @@ set(MOD_LIST_IMS
ims_charging
ims_ocs
ims_diameter_server
ims_ipsec_pcscf)
ims_ipsec_pcscf
)
# * modules depending on java library
set(MOD_LIST_JAVA app_java)
@ -439,7 +443,8 @@ set(MOD_LIST_ALL
${MOD_LIST_MICROHTTPD}
${MOD_LIST_NGHTTP2}
${MOD_LIST_GCRYPT}
${MOD_LIST_RTP_MEDIA_SERVER})
${MOD_LIST_RTP_MEDIA_SERVER}
)
# sort the list
list(SORT MOD_LIST_ALL)
@ -453,15 +458,15 @@ list(SORT MOD_LIST_ALL)
# compile or link dependencies
set(MODULE_GROUP_ALL ${MOD_LIST_ALL})
set(MODULE_GROUP_DEFAULT ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DB}
${MOD_LIST_DBUID} ${MOD_LIST_DEVEL} ${MOD_LIST_JSDT})
set(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)
set(MODULE_GROUP_STANDARD ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DEVEL}
${MOD_LIST_JSDT})
set(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,
@ -475,7 +480,8 @@ set(MODULE_GROUP_COMMON
${MOD_LIST_RADIUS}
${MOD_LIST_XMLDEPS}
${MOD_LIST_PRESENCE}
${MOD_LIST_TLSDEPS})
${MOD_LIST_TLSDEPS}
)
# For db use (db modules, excluding drivers) module_group_db=$(mod_list_db)
set(MODULE_GROUP_DB ${MOD_LIST_DB})
@ -513,12 +519,14 @@ set(AVAILABLE_GROUPS ALL DEFAULT STANDARD COMMON)
# --- Groups defined for pacKaging ###
# Standard modules in main pkg
set(MODULE_GROUP_KSTANDARD ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DB}
${MOD_LIST_DBUID} ${MOD_LIST_PCRE} ${MOD_LIST_JSDT})
set(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)
set(MODULE_GROUP_KMINI ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DB}
${MOD_LIST_DBUID} ${MOD_LIST_JSDT})
set(MODULE_GROUP_KMINI ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DB} ${MOD_LIST_DBUID}
${MOD_LIST_JSDT}
)
# pkg pcre module
set(MODULE_GROUP_KPCRE ${MOD_LIST_PCRE})
@ -775,7 +783,8 @@ list(
KNGHTTP2
KGCRYPT
KSECSIPID
KRT_MEDIA_SERVER)
KRT_MEDIA_SERVER
)
# # Option to allow the user to define which group to build
# set(SELECTED_PACKAGE_GROUP

View file

@ -16,28 +16,32 @@ if(BUILD_DOC AND (NOT DOCBOOK2X_EXECUTABLE))
endif()
option(DOCS_XSL_VAIDATION "Docbook document validation" OFF)
option(DOCS_NOCATALOG
"ON: Use standard catalog from OS | OFF: Use custom catalog " OFF)
option(DOCS_NOCATALOG "ON: Use standard catalog from OS | OFF: Use custom catalog " OFF)
set(DOCS_SOURCES
"index.html"
CACHE STRING "Documentation files list")
CACHE STRING "Documentation files list"
)
set(DOCS_README
${DOCS_SOURCES}
CACHE STRING "Readme Documentation files list")
CACHE STRING "Readme Documentation files list"
)
set(DOCS_HTML
${DOCS_SOURCES}
CACHE STRING "HTML Documentation files list")
CACHE STRING "HTML Documentation files list"
)
set(DOCS_TXT
${DOCS_SOURCES}
CACHE STRING "TXT Documentation files list")
CACHE STRING "TXT Documentation files list"
)
set(DOCS_OUTPUT_DIR
${CMAKE_BINARY_DIR}/doc/docbook
CACHE STRING "Path to build HTML docs")
CACHE STRING "Path to build HTML docs"
)
set(DOCBOOK_DIR ${CMAKE_SOURCE_DIR}/doc/docbook)
set(STYLESHEET_DIR ${CMAKE_SOURCE_DIR}/doc/stylesheets)
@ -49,7 +53,8 @@ set(README_XSL ${DOCBOOK_DIR}/readme.xsl)
set(DOCS_HTML_CSS
"/css/sr-doc.css"
CACHE STRING "Path to the CSS file")
CACHE STRING "Path to the CSS file"
)
set(CATALOG ${DOCBOOK_DIR}/catalog.xml)
@ -62,11 +67,13 @@ endif()
# Set flags for xtproc for generating documentation and allow user defined
set(DOCS_XSLTPROC_FLAGS
""
CACHE STRING "Xsltransform processor flags")
CACHE STRING "Xsltransform processor flags"
)
if(NOT DOCS_XSL_VAIDATION)
if(VERBOSE)
message(STATUS "DOCS_XSL_VAIDATION=OFF"
"Disabling xsl validation when generating documentation")
"Disabling xsl validation when generating documentation"
)
endif()
list(APPEND DOCS_XSLTPROC_FLAGS --novalid)
endif()
@ -74,7 +81,8 @@ endif()
# Set lynx flags for generating readmes and allow user defined
set(DOCS_LYNX_FLAGS
"-nolist"
CACHE STRING "Lynx readme generator flags")
CACHE STRING "Lynx readme generator flags"
)
# Function to add a module docs entry
function(docs_add_module module_name)
@ -85,31 +93,31 @@ function(docs_add_module module_name)
add_custom_target(
${module_name}_doc_text
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.txt
COMMENT "Processing target ${module_name}_doc_text")
COMMENT "Processing target ${module_name}_doc_text"
)
# This is essentialy an alias of doc_text target but with extra copy command
# to copy the text file to the source tree directory.
add_custom_target(${module_name}_readme
COMMENT "Processing target ${module_name}_readme")
add_custom_target(${module_name}_readme COMMENT "Processing target ${module_name}_readme")
add_dependencies(${module_name}_readme ${module_name}_doc_text)
add_dependencies(kamailio_docs_readme ${module_name}_readme)
add_custom_target(
${module_name}_doc_html
DEPENDS ${DOCS_OUTPUT_DIR}/${module_name}.html
COMMENT "Processing target ${module_name}_doc_html")
COMMENT "Processing target ${module_name}_doc_html"
)
add_custom_target(${module_name}_doc
COMMENT "Processing target ${module_name}_doc")
add_dependencies(${module_name}_doc ${module_name}_doc_text
${module_name}_doc_html)
add_custom_target(${module_name}_doc COMMENT "Processing target ${module_name}_doc")
add_dependencies(${module_name}_doc ${module_name}_doc_text ${module_name}_doc_html)
# Man docs only if author of module provided xml for man.
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/${module_name}.xml)
add_custom_target(
${module_name}_man
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/${module_name}.xml
COMMENT "Processing target ${module_name}_man")
COMMENT "Processing target ${module_name}_man"
)
add_dependencies(kamailio_docs_man ${module_name}_man)
endif()
@ -121,16 +129,14 @@ function(docs_add_module module_name)
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.txt
COMMAND
# TXT version - just plain text
${XMLCATATLOGX} ${XSLTPROC_EXECUTABLE} ${DOCS_XSLTPROC_FLAGS}
--xinclude ${TXT_XSL} ${module_name}.xml | ${LYNX_EXECUTABLE}
${DOCS_LYNX_FLAGS} -stdin -dump >
${XMLCATATLOGX} ${XSLTPROC_EXECUTABLE} ${DOCS_XSLTPROC_FLAGS} --xinclude ${TXT_XSL}
${module_name}.xml | ${LYNX_EXECUTABLE} ${DOCS_LYNX_FLAGS} -stdin -dump >
${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.txt
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc/${module_name}.xml
${TXT_XSL}
# ${SINGLE_HTML_XSL}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc/${module_name}.xml ${TXT_XSL}
# ${SINGLE_HTML_XSL}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc
COMMENT "Generating text documentation with for ${module_name}")
COMMENT "Generating text documentation with for ${module_name}"
)
# Add custom command to copy the README file after the readme target is
# built. The readme target depends on doc_text so it will regenerate if
@ -139,47 +145,47 @@ function(docs_add_module module_name)
TARGET ${module_name}_readme
POST_BUILD
COMMAND
${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.txt
${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.txt
${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/README
COMMENT "Copying README file to source tree for ${module_name}")
COMMENT "Copying README file to source tree for ${module_name}"
)
add_custom_command(
OUTPUT ${DOCS_OUTPUT_DIR}/${module_name}.html
COMMAND
# HTML version
${XMLCATATLOGX} ${XSLTPROC_EXECUTABLE} ${DOCS_XSLTPROC_FLAGS}
--xinclude --stringparam base.dir ${DOCS_OUTPUT_DIR} --stringparam
root.filename ${module_name} --stringparam html.stylesheet
${DOCS_HTML_CSS} --stringparam html.ext ".html" ${SINGLE_HTML_XSL}
${XMLCATATLOGX} ${XSLTPROC_EXECUTABLE} ${DOCS_XSLTPROC_FLAGS} --xinclude --stringparam
base.dir ${DOCS_OUTPUT_DIR} --stringparam root.filename ${module_name} --stringparam
html.stylesheet ${DOCS_HTML_CSS} --stringparam html.ext ".html" ${SINGLE_HTML_XSL}
${module_name}.xml
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc/${module_name}.xml
${SINGLE_HTML_XSL}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc/${module_name}.xml ${SINGLE_HTML_XSL}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc
COMMENT "Generating html documentation for ${module_name}")
COMMENT "Generating html documentation for ${module_name}"
)
endif()
add_custom_command(
# man version
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.7
COMMAND ${DOCBOOK2X_EXECUTABLE} -s ${STYLESHEET_DIR}/serdoc2man.xsl
${module_name}.xml
COMMAND ${DOCBOOK2X_EXECUTABLE} -s ${STYLESHEET_DIR}/serdoc2man.xsl ${module_name}.xml
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc/${module_name}.xml
${STYLESHEET_DIR}/serdoc2man.xsl
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}
COMMENT "Processing target ${module_name}_man")
COMMENT "Processing target ${module_name}_man"
)
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/README
RENAME README.${module_name}
DESTINATION ${CMAKE_INSTALL_DOCDIR}/modules
COMPONENT kamailio_docs)
COMPONENT kamailio_docs
)
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/${module_name}.7
DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man7
COMPONENT kamailio_docs
OPTIONAL)
OPTIONAL
)
endif()
endfunction()

View file

@ -38,7 +38,8 @@ if(CMAKE_HOST_APPLE)
execute_process(
COMMAND ${HOMEBREW_EXECUTABLE} --prefix berkeley-db@5.3
OUTPUT_VARIABLE _BerkeleyDB_homebrew_prefix
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
endif()
@ -55,7 +56,8 @@ find_path(
5.3
db5.3
5
db5)
db5
)
mark_as_advanced(BerkeleyDB_INCLUDE_DIR)
unset(_BerkeleyDB_homebrew_prefix)
@ -68,21 +70,22 @@ if(NOT BerkeleyDB_LIBRARY)
set(CMAKE_FIND_USE_CMAKE_PATH FALSE)
endif()
get_filename_component(_BerkeleyDB_lib_hint "${BerkeleyDB_INCLUDE_DIR}"
DIRECTORY)
get_filename_component(_BerkeleyDB_lib_hint "${BerkeleyDB_INCLUDE_DIR}" DIRECTORY)
find_library(
BerkeleyDB_LIBRARY_RELEASE
NAMES db48 db53 db NAMES_PER_DIR
HINTS ${_BerkeleyDB_lib_hint}
PATH_SUFFIXES lib)
PATH_SUFFIXES lib
)
mark_as_advanced(BerkeleyDB_LIBRARY_RELEASE)
find_library(
BerkeleyDB_LIBRARY_DEBUG
NAMES db48 db53 db NAMES_PER_DIR
HINTS ${_BerkeleyDB_lib_hint}
PATH_SUFFIXES debug/lib)
PATH_SUFFIXES debug/lib
)
mark_as_advanced(BerkeleyDB_LIBRARY_DEBUG)
unset(_BerkeleyDB_lib_hint)
@ -97,23 +100,23 @@ endif()
if(BerkeleyDB_INCLUDE_DIR)
file(STRINGS "${BerkeleyDB_INCLUDE_DIR}/db.h" _BerkeleyDB_version_strings
REGEX "^#define[\t ]+DB_VERSION_(MAJOR|MINOR|PATCH)[ \t]+[0-9]+.*")
string(REGEX
REPLACE ".*#define[\t ]+DB_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1"
_BerkeleyDB_version_major "${_BerkeleyDB_version_strings}")
string(REGEX
REPLACE ".*#define[\t ]+DB_VERSION_MINOR[ \t]+([0-9]+).*" "\\1"
_BerkeleyDB_version_minor "${_BerkeleyDB_version_strings}")
string(REGEX
REPLACE ".*#define[\t ]+DB_VERSION_PATCH[ \t]+([0-9]+).*" "\\1"
_BerkeleyDB_version_patch "${_BerkeleyDB_version_strings}")
REGEX "^#define[\t ]+DB_VERSION_(MAJOR|MINOR|PATCH)[ \t]+[0-9]+.*"
)
string(REGEX REPLACE ".*#define[\t ]+DB_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1"
_BerkeleyDB_version_major "${_BerkeleyDB_version_strings}"
)
string(REGEX REPLACE ".*#define[\t ]+DB_VERSION_MINOR[ \t]+([0-9]+).*" "\\1"
_BerkeleyDB_version_minor "${_BerkeleyDB_version_strings}"
)
string(REGEX REPLACE ".*#define[\t ]+DB_VERSION_PATCH[ \t]+([0-9]+).*" "\\1"
_BerkeleyDB_version_patch "${_BerkeleyDB_version_strings}"
)
unset(_BerkeleyDB_version_strings)
# The MAJOR.MINOR.PATCH version will be logged in the following find_package_handle_standard_args() command.
set(_BerkeleyDB_full_version
${_BerkeleyDB_version_major}.${_BerkeleyDB_version_minor}.${_BerkeleyDB_version_patch}
)
set(BerkeleyDB_VERSION
${_BerkeleyDB_version_major}.${_BerkeleyDB_version_minor})
set(BerkeleyDB_VERSION ${_BerkeleyDB_version_major}.${_BerkeleyDB_version_minor})
unset(_BerkeleyDB_version_major)
unset(_BerkeleyDB_version_minor)
unset(_BerkeleyDB_version_patch)
@ -123,30 +126,33 @@ include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
BerkeleyDB
REQUIRED_VARS BerkeleyDB_LIBRARY BerkeleyDB_INCLUDE_DIR
VERSION_VAR _BerkeleyDB_full_version)
VERSION_VAR _BerkeleyDB_full_version
)
unset(_BerkeleyDB_full_version)
if(BerkeleyDB_FOUND AND NOT TARGET BerkeleyDB::BerkeleyDB)
add_library(BerkeleyDB::BerkeleyDB UNKNOWN IMPORTED)
set_target_properties(
BerkeleyDB::BerkeleyDB PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
"${BerkeleyDB_INCLUDE_DIR}")
BerkeleyDB::BerkeleyDB PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${BerkeleyDB_INCLUDE_DIR}"
)
if(BerkeleyDB_LIBRARY_RELEASE)
set_property(
TARGET BerkeleyDB::BerkeleyDB
APPEND
PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
PROPERTY IMPORTED_CONFIGURATIONS RELEASE
)
set_target_properties(
BerkeleyDB::BerkeleyDB PROPERTIES IMPORTED_LOCATION_RELEASE
"${BerkeleyDB_LIBRARY_RELEASE}")
BerkeleyDB::BerkeleyDB PROPERTIES IMPORTED_LOCATION_RELEASE "${BerkeleyDB_LIBRARY_RELEASE}"
)
endif()
if(BerkeleyDB_LIBRARY_DEBUG)
set_property(
TARGET BerkeleyDB::BerkeleyDB
APPEND
PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
PROPERTY IMPORTED_CONFIGURATIONS DEBUG
)
set_target_properties(
BerkeleyDB::BerkeleyDB PROPERTIES IMPORTED_LOCATION_DEBUG
"${BerkeleyDB_LIBRARY_DEBUG}")
BerkeleyDB::BerkeleyDB PROPERTIES IMPORTED_LOCATION_DEBUG "${BerkeleyDB_LIBRARY_DEBUG}"
)
endif()
endif()

View file

@ -49,9 +49,7 @@ This will define the following variables:
#]=======================================================================]
include(FindPackageHandleStandardArgs)
set(Erlang_BIN_PATH $ENV{ERLANG_HOME}/bin /opt/bin /sw/bin /usr/bin
/usr/local/bin /opt/local/bin
)
set(Erlang_BIN_PATH $ENV{ERLANG_HOME}/bin /opt/bin /sw/bin /usr/bin /usr/local/bin /opt/local/bin)
find_program(
Erlang_RUNTIME
@ -66,28 +64,23 @@ find_program(
)
execute_process(
COMMAND erl -noshell -eval "io:format(\"~s\", [code:lib_dir()])" -s erlang
halt OUTPUT_VARIABLE Erlang_OTP_LIB_DIR
COMMAND erl -noshell -eval "io:format(\"~s\", [code:lib_dir()])" -s erlang halt
OUTPUT_VARIABLE Erlang_OTP_LIB_DIR
)
execute_process(
COMMAND erl -noshell -eval "io:format(\"~s\", [code:root_dir()])" -s erlang
halt OUTPUT_VARIABLE Erlang_OTP_ROOT_DIR
COMMAND erl -noshell -eval "io:format(\"~s\", [code:root_dir()])" -s erlang halt
OUTPUT_VARIABLE Erlang_OTP_ROOT_DIR
)
execute_process(
COMMAND
erl -noshell -eval
"io:format(\"~s\",[filename:basename(code:lib_dir('erl_interface'))])" -s
erlang halt
OUTPUT_VARIABLE Erlang_EI_DIR
COMMAND erl -noshell -eval "io:format(\"~s\",[filename:basename(code:lib_dir('erl_interface'))])"
-s erlang halt OUTPUT_VARIABLE Erlang_EI_DIR
)
execute_process(
COMMAND
erl -noshell -eval
"io:format(\"~s\",[filename:basename(code:lib_dir('erts'))])" -s erlang halt
OUTPUT_VARIABLE Erlang_ERTS_DIR
COMMAND erl -noshell -eval "io:format(\"~s\",[filename:basename(code:lib_dir('erts'))])" -s erlang
halt OUTPUT_VARIABLE Erlang_ERTS_DIR
)
set(Erlang_EI_PATH ${Erlang_OTP_LIB_DIR}/${Erlang_EI_DIR})
@ -113,39 +106,28 @@ if(Erlang_FOUND)
if(NOT TARGET Erlang::Erlang)
add_library(Erlang::Erlang INTERFACE IMPORTED)
set_target_properties(
Erlang::Erlang PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
${Erlang_OTP_ROOT_DIR}/usr/include
Erlang::Erlang PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${Erlang_OTP_ROOT_DIR}/usr/include
)
endif()
if(NOT TARGET Erlang::ERTS)
add_library(Erlang::ERTS STATIC IMPORTED)
set_target_properties(
Erlang::ERTS
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${Erlang_ERTS_INCLUDE_DIRS}
IMPORTED_LOCATION ${Erlang_ERTS_LIBRARY_PATH}/liberts.a
Erlang::ERTS PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${Erlang_ERTS_INCLUDE_DIRS}
IMPORTED_LOCATION ${Erlang_ERTS_LIBRARY_PATH}/liberts.a
)
endif()
if(NOT TARGET Erlang::EI)
add_library(erlang_ei STATIC IMPORTED)
set_property(
TARGET erlang_ei PROPERTY IMPORTED_LOCATION
${Erlang_EI_LIBRARY_PATH}/libei.a
)
set_property(TARGET erlang_ei PROPERTY IMPORTED_LOCATION ${Erlang_EI_LIBRARY_PATH}/libei.a)
add_library(erlang_erl_interface STATIC IMPORTED)
set_property(
TARGET erlang_erl_interface
PROPERTY IMPORTED_LOCATION ${Erlang_EI_LIBRARY_PATH}/liberl_interface.a
TARGET erlang_erl_interface PROPERTY IMPORTED_LOCATION
${Erlang_EI_LIBRARY_PATH}/liberl_interface.a
)
add_library(Erlang::EI INTERFACE IMPORTED)
set_property(
TARGET Erlang::EI PROPERTY INTERFACE_INCLUDE_DIRECTORIES
${Erlang_EI_INCLUDE_DIRS}
)
set_property(
TARGET Erlang::EI PROPERTY INTERFACE_LINK_LIBRARIES erlang_ei
erlang_erl_interface
)
set_property(TARGET Erlang::EI PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${Erlang_EI_INCLUDE_DIRS})
set_property(TARGET Erlang::EI PROPERTY INTERFACE_LINK_LIBRARIES erlang_ei erlang_erl_interface)
endif()
endif(Erlang_FOUND)

View file

@ -58,29 +58,21 @@ endif()
if(EXISTS ${Ldap_INCLUDE_DIRS}/ldap_features.h)
file(READ ${Ldap_INCLUDE_DIRS}/ldap_features.h LDAP_FEATURES_H_CONTENT)
string(REGEX MATCH "#define LDAP_VENDOR_VERSION_MAJOR[ ]+[0-9]+"
_LDAP_VERSION_MAJOR_MATCH ${LDAP_FEATURES_H_CONTENT}
string(REGEX MATCH "#define LDAP_VENDOR_VERSION_MAJOR[ ]+[0-9]+" _LDAP_VERSION_MAJOR_MATCH
${LDAP_FEATURES_H_CONTENT}
)
string(REGEX MATCH "#define LDAP_VENDOR_VERSION_MINOR[ ]+[0-9]+"
_LDAP_VERSION_MINOR_MATCH ${LDAP_FEATURES_H_CONTENT}
string(REGEX MATCH "#define LDAP_VENDOR_VERSION_MINOR[ ]+[0-9]+" _LDAP_VERSION_MINOR_MATCH
${LDAP_FEATURES_H_CONTENT}
)
string(REGEX MATCH "#define LDAP_VENDOR_VERSION_PATCH[ ]+[0-9]+"
_LDAP_VERSION_PATCH_MATCH ${LDAP_FEATURES_H_CONTENT}
string(REGEX MATCH "#define LDAP_VENDOR_VERSION_PATCH[ ]+[0-9]+" _LDAP_VERSION_PATCH_MATCH
${LDAP_FEATURES_H_CONTENT}
)
string(REGEX REPLACE ".*_MAJOR[ ]+(.*)" "\\1" LDAP_VERSION_MAJOR
${_LDAP_VERSION_MAJOR_MATCH}
)
string(REGEX REPLACE ".*_MINOR[ ]+(.*)" "\\1" LDAP_VERSION_MINOR
${_LDAP_VERSION_MINOR_MATCH}
)
string(REGEX REPLACE ".*_PATCH[ ]+(.*)" "\\1" LDAP_VERSION_PATCH
${_LDAP_VERSION_PATCH_MATCH}
)
string(REGEX REPLACE ".*_MAJOR[ ]+(.*)" "\\1" LDAP_VERSION_MAJOR ${_LDAP_VERSION_MAJOR_MATCH})
string(REGEX REPLACE ".*_MINOR[ ]+(.*)" "\\1" LDAP_VERSION_MINOR ${_LDAP_VERSION_MINOR_MATCH})
string(REGEX REPLACE ".*_PATCH[ ]+(.*)" "\\1" LDAP_VERSION_PATCH ${_LDAP_VERSION_PATCH_MATCH})
set(Ldap_VERSION
"${LDAP_VERSION_MAJOR}.${LDAP_VERSION_MINOR}.${LDAP_VERSION_PATCH}"
)
set(Ldap_VERSION "${LDAP_VERSION_MAJOR}.${LDAP_VERSION_MINOR}.${LDAP_VERSION_PATCH}")
endif()
include(FindPackageHandleStandardArgs)
@ -94,9 +86,7 @@ find_package_handle_standard_args(
if(Ldap_FOUND AND NOT TARGET Lber::Lber)
add_library(Lber::Lber UNKNOWN IMPORTED)
set_target_properties(
Lber::Lber PROPERTIES IMPORTED_LOCATION "${Lber_LIBRARY}"
)
set_target_properties(Lber::Lber PROPERTIES IMPORTED_LOCATION "${Lber_LIBRARY}")
endif()
if(Ldap_FOUND AND NOT TARGET Ldap::Ldap)

View file

@ -53,8 +53,6 @@ endif()
list(APPEND LIBEV_LIBRARIES "${LIBEV_LIBRARY}")
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
Libev REQUIRED_VARS LIBEV_LIBRARIES LIBEV_INCLUDE_DIR
)
find_package_handle_standard_args(Libev REQUIRED_VARS LIBEV_LIBRARIES LIBEV_INCLUDE_DIR)
mark_as_advanced(LIBEV_INCLUDE_DIR LIBEV_LIBRARIES LIBEV_LIBRARY)

View file

@ -14,7 +14,8 @@ find_path(LibfreeradiusClient_INCLUDE_DIR NAMES freeradius-client.h)
find_library(
LibfreeradiusClient_LIBRARY
NAMES freeradius-client freeradius-eap
PATH_SUFFIXES freeradius)
PATH_SUFFIXES freeradius
)
mark_as_advanced(LibfreeradiusClient_LIBRARY LibfreeradiusClient_INCLUDE_DIR)
@ -22,21 +23,23 @@ mark_as_advanced(LibfreeradiusClient_LIBRARY LibfreeradiusClient_INCLUDE_DIR)
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
LibfreeradiusClient REQUIRED_VARS LibfreeradiusClient_LIBRARY
LibfreeradiusClient_INCLUDE_DIR)
LibfreeradiusClient REQUIRED_VARS LibfreeradiusClient_LIBRARY LibfreeradiusClient_INCLUDE_DIR
)
if(LibfreeradiusClient_FOUND)
find_package_message(
LibfreeradiusClient "Found Libfreeradius: ${LibfreeradiusClient_LIBRARY}"
"[${LibfreeradiusClient_LIBRARY}][${LibfreeradiusClient_INCLUDE_DIR}]")
"[${LibfreeradiusClient_LIBRARY}][${LibfreeradiusClient_INCLUDE_DIR}]"
)
set(LibfreeradiusClient_INCLUDE_DIRS ${LibfreeradiusClient_INCLUDE_DIR})
set(LibfreeradiusClient_LIBRARIES ${LibfreeradiusClient_LIBRARY})
add_library(LibfreeradiusClient::LIBFREERADIUS UNKNOWN IMPORTED)
set_target_properties(
LibfreeradiusClient::LIBFREERADIUS
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
"${LibfreeradiusClient_INCLUDE_DIR}")
LibfreeradiusClient::LIBFREERADIUS PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
"${LibfreeradiusClient_INCLUDE_DIR}"
)
set_target_properties(
LibfreeradiusClient::LIBFREERADIUS
PROPERTIES IMPORTED_LOCATION "${LibfreeradiusClient_LIBRARY}")
LibfreeradiusClient::LIBFREERADIUS PROPERTIES IMPORTED_LOCATION
"${LibfreeradiusClient_LIBRARY}"
)
endif()

View file

@ -40,8 +40,7 @@ set(BAK_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX})
find_library(
MariaDBClient_LIBRARY
NAMES mariadb libmariadb mariadbclient libmariadbclient mysqlclient
libmysqlclient
NAMES mariadb libmariadb mariadbclient libmariadbclient mysqlclient libmysqlclient
PATH_SUFFIXES mariadb mysql
)
set(CMAKE_FIND_LIBRARY_SUFFIXES ${BAK_CMAKE_FIND_LIBRARY_SUFFIXES})

View file

@ -130,9 +130,7 @@ set(ENV_OR_OPT_VARS
)
# Mark the variable names that have values that are paths
set(ENV_OR_OPT_PATH_VARS MYSQL_DIR MYSQL_INCLUDE_DIR MYSQL_LIB_DIR
MYSQL_PLUGIN_DIR
)
set(ENV_OR_OPT_PATH_VARS MYSQL_DIR MYSQL_INCLUDE_DIR MYSQL_LIB_DIR MYSQL_PLUGIN_DIR)
foreach(_xvar ${ENV_OR_OPT_VARS})
@ -167,10 +165,8 @@ endforeach()
# were given
if(MYSQL_DIR AND (MYSQL_INCLUDE_DIR OR MYSQL_LIB_DIR))
message(
FATAL_ERROR
"Both MYSQL_DIR and MYSQL_INCLUDE_DIR/MYSQL_LIB_DIR were specified,"
" use either one or the other way of pointing at MySQL location."
message(FATAL_ERROR "Both MYSQL_DIR and MYSQL_INCLUDE_DIR/MYSQL_LIB_DIR were specified,"
" use either one or the other way of pointing at MySQL location."
)
endif()
@ -215,9 +211,7 @@ else()
add_definitions(-DNDEBUG) # FIXME what?!
endif()
set(_exe_fallback_path /usr/bin /usr/local/bin /opt/mysql/mysql/bin
/usr/local/mysql/bin
)
set(_exe_fallback_path /usr/bin /usr/local/bin /opt/mysql/mysql/bin /usr/local/mysql/bin)
set(_include_fallback_path
/usr/include/mysql
@ -322,10 +316,7 @@ string(REPLACE ";" " " _pp_include_fallback_path "${_include_fallback_path}")
message(STATUS "You will link ${_link_type}ally to the MySQL client"
" library (set with -DMYSQLCLIENT_STATIC_LINKING=<bool>)"
)
message(
STATUS
"Searching for ${_link_type} libraries with the base name(s) \"${_pp_search_libs}\""
)
message(STATUS "Searching for ${_link_type} libraries with the base name(s) \"${_pp_search_libs}\"")
##########################################################################
#
@ -367,20 +358,12 @@ endmacro()
macro(_mysql_config _var _regex _opt)
_mysql_conf(_mysql_config_output ${_opt})
string(REGEX MATCHALL "${_regex}([^ ]+)" _mysql_config_output
"${_mysql_config_output}"
)
string(REGEX REPLACE "^[ \t]+" "" _mysql_config_output
"${_mysql_config_output}"
)
string(REGEX MATCHALL "${_regex}([^ ]+)" _mysql_config_output "${_mysql_config_output}")
string(REGEX REPLACE "^[ \t]+" "" _mysql_config_output "${_mysql_config_output}")
if(CMAKE_SYSTEM_NAME MATCHES "SunOS")
string(REGEX REPLACE " -latomic" "" _mysql_config_output
"${_mysql_config_output}"
)
string(REGEX REPLACE " -latomic" "" _mysql_config_output "${_mysql_config_output}")
endif()
string(REGEX REPLACE "${_regex}" "" _mysql_config_output
"${_mysql_config_output}"
)
string(REGEX REPLACE "${_regex}" "" _mysql_config_output "${_mysql_config_output}")
separate_arguments(_mysql_config_output)
set(${_var} ${_mysql_config_output})
endmacro()
@ -403,23 +386,13 @@ endmacro()
macro(_mysql_config_replace _var _regex1 _replace _regex2 _opt)
_mysql_conf(_mysql_config_output ${_opt})
string(REGEX MATCHALL "${_regex2}([^ ]+)" _mysql_config_output
"${_mysql_config_output}"
)
string(REGEX REPLACE "^[ \t]+" "" _mysql_config_output
"${_mysql_config_output}"
)
string(REGEX MATCHALL "${_regex2}([^ ]+)" _mysql_config_output "${_mysql_config_output}")
string(REGEX REPLACE "^[ \t]+" "" _mysql_config_output "${_mysql_config_output}")
if(CMAKE_SYSTEM_NAME MATCHES "SunOS")
string(REGEX REPLACE " -latomic" "" _mysql_config_output
"${_mysql_config_output}"
)
string(REGEX REPLACE " -latomic" "" _mysql_config_output "${_mysql_config_output}")
endif()
string(REGEX REPLACE "${_regex2}" "" _mysql_config_output
"${_mysql_config_output}"
)
string(REGEX REPLACE "${_regex1}" "${_replace}" _mysql_config_output
"${_mysql_config_output}"
)
string(REGEX REPLACE "${_regex2}" "" _mysql_config_output "${_mysql_config_output}")
string(REGEX REPLACE "${_regex1}" "${_replace}" _mysql_config_output "${_mysql_config_output}")
separate_arguments(_mysql_config_output)
set(${_var} ${_mysql_config_output})
endmacro()
@ -442,10 +415,8 @@ macro(_check_lib_search_error _lib_dir_var _lib_var _exta_err_string)
message("_lib_dir_var \"${_lib_dir_var}\"")
endif()
set(_err_string
"Could not find ${_link_type} "
"\"${_pp_search_libs}\" in ${_lib_dir_var} "
"\"${_lib_dir}\" ${_exta_err_string}"
set(_err_string "Could not find ${_link_type} " "\"${_pp_search_libs}\" in ${_lib_dir_var} "
"\"${_lib_dir}\" ${_exta_err_string}"
)
if(NOT ${_lib_var})
@ -529,9 +500,7 @@ elseif(
set(MYSQL_INCLUDE_DIR "${MYSQL_DIR}/include")
if(NOT EXISTS "${MYSQL_INCLUDE_DIR}/mysql.h")
message(FATAL_ERROR "MYSQL_DIR given, but no \"mysql.h\" "
"in \"${MYSQL_INCLUDE_DIR}\""
)
message(FATAL_ERROR "MYSQL_DIR given, but no \"mysql.h\" " "in \"${MYSQL_INCLUDE_DIR}\"")
endif()
elseif(MYSQL_CONFIG_EXECUTABLE)
@ -550,9 +519,8 @@ elseif(MYSQL_CONFIG_EXECUTABLE)
endif()
if(NOT EXISTS "${MYSQL_INCLUDE_DIR}/mysql.h")
message(
FATAL_ERROR "Could not find \"mysql.h\" in \"${MYSQL_INCLUDE_DIR}\" "
"found from running \"${MYSQL_CONFIG_EXECUTABLE}\""
message(FATAL_ERROR "Could not find \"mysql.h\" in \"${MYSQL_INCLUDE_DIR}\" "
"found from running \"${MYSQL_CONFIG_EXECUTABLE}\""
)
endif()
@ -615,9 +583,7 @@ elseif(
)
if(FINDMYSQL_DEBUG)
message("DBG: Using find_library() searching "
"MYSQL_DIR and \"${_pp_lib_subdirs}\""
)
message("DBG: Using find_library() searching " "MYSQL_DIR and \"${_pp_lib_subdirs}\"")
endif()
find_library(
@ -631,9 +597,7 @@ elseif(
get_filename_component(MYSQL_LIB_DIR "${MYSQL_LIB}" PATH)
set(MYSQL_LIBRARIES "${MYSQL_LIB}")
if(((NOT DEFINED MYSQL_PLUGIN_DIR) OR (NOT ${MYSQL_PLUGIN_DIR}))
AND MYSQL_LIB_DIR
)
if(((NOT DEFINED MYSQL_PLUGIN_DIR) OR (NOT ${MYSQL_PLUGIN_DIR})) AND MYSQL_LIB_DIR)
if(EXISTS "${MYSQL_LIB_DIR}/plugin")
set(MYSQL_PLUGIN_DIR "${MYSQL_LIB_DIR}/plugin")
else()
@ -721,8 +685,7 @@ elseif(MYSQL_CONFIG_EXECUTABLE)
# Replace the current library references with the full path
# to the library, i.e. the -L will be ignored
_mysql_config_replace(
MYSQL_LIBRARIES "(mysqlclient|mysqlclient_r)" "${MYSQL_LIB}" "(^| )-l"
"--libs"
MYSQL_LIBRARIES "(mysqlclient|mysqlclient_r)" "${MYSQL_LIB}" "(^| )-l" "--libs"
)
else()
@ -798,11 +761,10 @@ endif()
list(LENGTH MYSQL_LIBRARIES len)
if(MYSQL_STATIC_LINKING AND (len LESS 2))
message(
WARNING
"Statically linking MySQL client library normally requires linking"
" additional libraries that the client library depends on. It seems"
" no extra libraries have been specified. Provide the list of required"
" dependencies through MYSQL_EXTRA_LIBRARIES."
WARNING "Statically linking MySQL client library normally requires linking"
" additional libraries that the client library depends on. It seems"
" no extra libraries have been specified. Provide the list of required"
" dependencies through MYSQL_EXTRA_LIBRARIES."
)
endif()
@ -819,9 +781,7 @@ set(MYSQL_CLIENT_LIBS ${MYSQL_LIBRARIES})
if(MYSQL_INCLUDE_DIR AND NOT MYSQL_VERSION)
# Write the C source file that will include the MySQL headers
set(GETMYSQLVERSION_SOURCEFILE
"${CMAKE_CURRENT_BINARY_DIR}/getmysqlversion.c"
)
set(GETMYSQLVERSION_SOURCEFILE "${CMAKE_CURRENT_BINARY_DIR}/getmysqlversion.c")
file(WRITE "${GETMYSQLVERSION_SOURCEFILE}"
"#include <mysql.h>\n" "#include <stdio.h>\n" "int main() {\n"
" printf(\"%s\", MYSQL_SERVER_VERSION);\n" "}\n"
@ -829,8 +789,7 @@ if(MYSQL_INCLUDE_DIR AND NOT MYSQL_VERSION)
# Compile and run the created executable, store output in MYSQL_VERSION
try_run(
_run_result _compile_result "${CMAKE_BINARY_DIR}"
"${GETMYSQLVERSION_SOURCEFILE}"
_run_result _compile_result "${CMAKE_BINARY_DIR}" "${GETMYSQLVERSION_SOURCEFILE}"
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${MYSQL_INCLUDE_DIR}"
RUN_OUTPUT_VARIABLE MYSQL_VERSION
)
@ -859,12 +818,8 @@ endif()
# Clean up so only numeric, in case of "-alpha" or similar
string(REGEX MATCHALL "([0-9]+.[0-9]+.[0-9]+)" MYSQL_VERSION "${MYSQL_VERSION}")
# To create a fully numeric version, first normalize so N.NN.NN
string(REGEX REPLACE "[.]([0-9])[.]" ".0\\1." MYSQL_VERSION_ID
"${MYSQL_VERSION}"
)
string(REGEX REPLACE "[.]([0-9])$" ".0\\1" MYSQL_VERSION_ID
"${MYSQL_VERSION_ID}"
)
string(REGEX REPLACE "[.]([0-9])[.]" ".0\\1." MYSQL_VERSION_ID "${MYSQL_VERSION}")
string(REGEX REPLACE "[.]([0-9])$" ".0\\1" MYSQL_VERSION_ID "${MYSQL_VERSION_ID}")
# Finally remove the dot
string(REGEX REPLACE "[.]" "" MYSQL_VERSION_ID "${MYSQL_VERSION_ID}")
set(MYSQL_NUM_VERSION ${MYSQL_VERSION_ID})
@ -933,10 +888,7 @@ endif()
#
##########################################################################
message(
STATUS
"MySQL client environment/cmake variables set that the user can override"
)
message(STATUS "MySQL client environment/cmake variables set that the user can override")
message(STATUS " MYSQL_DIR : ${MYSQL_DIR}")
message(STATUS " MYSQL_INCLUDE_DIR : ${MYSQL_INCLUDE_DIR}")
@ -949,9 +901,7 @@ message(STATUS " MYSQL_CXXFLAGS : ${MYSQL_CXXFLAGS}")
message(STATUS " MYSQLCLIENT_STATIC_LINKING : ${MYSQLCLIENT_STATIC_LINKING}")
message(STATUS " MYSQLCLIENT_NO_THREADS : ${MYSQLCLIENT_NO_THREADS}")
message(
STATUS "MySQL client optional environment/cmake variables set by the user"
)
message(STATUS "MySQL client optional environment/cmake variables set by the user")
message(STATUS " MYSQL_EXTRA_LIBRARIES : ${MYSQL_EXTRA_LIBRARIES}")
message(STATUS " MYSQL_LINK_FLAGS : ${MYSQL_LINK_FLAGS}")

View file

@ -38,12 +38,8 @@ endif(NETSNMP_LIBS)
find_program(NETSNMP_CONFIG_BIN net-snmp-config)
if(NETSNMP_CONFIG_BIN)
execute_process(
COMMAND ${NETSNMP_CONFIG_BIN} --cflags OUTPUT_VARIABLE _NETSNMP_CFLAGS
)
execute_process(
COMMAND ${NETSNMP_CONFIG_BIN} --libs OUTPUT_VARIABLE _NETSNMP_LIBS
)
execute_process(COMMAND ${NETSNMP_CONFIG_BIN} --cflags OUTPUT_VARIABLE _NETSNMP_CFLAGS)
execute_process(COMMAND ${NETSNMP_CONFIG_BIN} --libs OUTPUT_VARIABLE _NETSNMP_LIBS)
# Strip trailing and leading whitespaces
string(STRIP "${_NETSNMP_CFLAGS}" _NETSNMP_CFLAGS)
string(STRIP "${_NETSNMP_LIBS}" _NETSNMP_LIBS)
@ -60,14 +56,13 @@ if(NETSNMP_CONFIG_BIN)
add_library(NETSNMP::NETSNMP INTERFACE IMPORTED)
set_target_properties(
NETSNMP::NETSNMP PROPERTIES COMPILE_FLAGS "${NETSNMP_CFLAGS}"
INTERFACE_LINK_LIBRARIES "${NETSNMP_LIBS}"
NETSNMP::NETSNMP PROPERTIES COMPILE_FLAGS "${NETSNMP_CFLAGS}" INTERFACE_LINK_LIBRARIES
"${NETSNMP_LIBS}"
)
if(NOT TARGET NETSNMP::NETSNMP)
message(
FATAL_ERROR
"Failed to create NETSNMP::NETSNMP target, check the output of net-snmp-config"
FATAL_ERROR "Failed to create NETSNMP::NETSNMP target, check the output of net-snmp-config"
)
endif()
else()

View file

@ -56,8 +56,7 @@ set(ORACLE_VERSIONS
11
10
)
set(ORACLE_OCI_NAMES clntsh libclntsh oci
)# Dirty trick might help on OSX, see issues/89
set(ORACLE_OCI_NAMES clntsh libclntsh oci) # Dirty trick might help on OSX, see issues/89
set(ORACLE_OCCI_NAMES libocci occi)
set(ORACLE_NNZ_NAMES ociw32)
foreach(loop_var IN LISTS ORACLE_VERSIONS)
@ -91,9 +90,7 @@ find_library(
PATHS ${ORACLE_LIB_DIR}
)
set(ORACLE_LIBRARY ${ORACLE_OCI_LIBRARY} ${ORACLE_OCCI_LIBRARY}
${ORACLE_NNZ_LIBRARY}
)
set(ORACLE_LIBRARY ${ORACLE_OCI_LIBRARY} ${ORACLE_OCCI_LIBRARY} ${ORACLE_NNZ_LIBRARY})
if(NOT WIN32)
set(ORACLE_LIBRARY ${ORACLE_LIBRARY} ${ORACLE_CLNTSH_LIBRARY})
@ -104,9 +101,7 @@ set(ORACLE_LIBRARIES ${ORACLE_LIBRARY})
# Handle the QUIETLY and REQUIRED arguments and set ORACLE_FOUND to TRUE
# if all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
Oracle DEFAULT_MSG ORACLE_LIBRARY ORACLE_INCLUDE_DIR
)
find_package_handle_standard_args(Oracle DEFAULT_MSG ORACLE_LIBRARY ORACLE_INCLUDE_DIR)
if(NOT ORACLE_FOUND)
message(

View file

@ -14,7 +14,8 @@ find_package(PkgConfig)
set(RADIUSCLIENTS FREERADIUS RADCLI RADIUSCLIENT_NG)
set(RADIUSCLIENT
RADCLI
CACHE STRING "Radius Client to use")
CACHE STRING "Radius Client to use"
)
set_property(CACHE RADIUSCLIENT PROPERTY STRINGS ${RADIUSCLIENTS})
# option(FREERADIUS "Use freeradius-client library" OFF)
@ -37,8 +38,7 @@ if(${RADIUSCLIENT} STREQUAL "FREERADIUS")
# - freeradius-client library
set(RADIUSCLIENT_LIB USE_FREERADIUS)
find_package(LibfreeradiusClient REQUIRED)
add_library(RadiusClient::RadiusClient ALIAS
LibfreeradiusClient::LIBFREERADIUS)
add_library(RadiusClient::RadiusClient ALIAS LibfreeradiusClient::LIBFREERADIUS)
elseif(${RADIUSCLIENT} STREQUAL "RADCLI")
# - radcli library
set(RADIUSCLIENT_LIB USE_RADCLI)

View file

@ -1,7 +1,4 @@
message(
STATUS
"Configuring for Darwin (Apple stationary operating systems (macOS, OS X, etc.)"
)
message(STATUS "Configuring for Darwin (Apple stationary operating systems (macOS, OS X, etc.)")
target_compile_definitions(
common
@ -16,7 +13,8 @@ target_compile_definitions(
HAVE_CONNECT_ECONNRESET_BUG
HAVE_TIMEGM
USE_SIGWAIT
HAVE_IP_MREQN)
HAVE_IP_MREQN
)
target_link_libraries(common INTERFACE resolv)
target_link_libraries(common_utils INTERFACE resolv)
@ -25,20 +23,22 @@ if(NOT ${USE_FAST_LOCK})
target_compile_definitions(common INTERFACE USE_PTHREAD_MUTEX USE_SYSV_SEM)
endif()
if (CMAKE_HOST_SYSTEM_VERSION VERSION_LESS 24)
message(STATUS "Running on Big Sur")
set(CMAKE_MODULE_LINKER_FLAGS
"${CMAKE_MODULE_LINKER_FLAGS} -bundle -flat_namespace -undefined suppress")
set(CMAKE_SHARED_LINKER_FLAGS
"${CMAKE_SHARED_LINKER_FLAGS} -dynamiclib -flat_namespace -undefined suppress"
)
else ()
set(CMAKE_MODULE_LINKER_FLAGS
"${CMAKE_MODULE_LINKER_FLAGS} -bundle -flat_namespace -undefined dynamic_lookup")
set(CMAKE_SHARED_LINKER_FLAGS
"${CMAKE_SHARED_LINKER_FLAGS} -dynamiclib -flat_namespace -undefined dynamic_lookup"
)
endif ()
if(CMAKE_HOST_SYSTEM_VERSION VERSION_LESS 24)
message(STATUS "Running on Big Sur")
set(CMAKE_MODULE_LINKER_FLAGS
"${CMAKE_MODULE_LINKER_FLAGS} -bundle -flat_namespace -undefined suppress"
)
set(CMAKE_SHARED_LINKER_FLAGS
"${CMAKE_SHARED_LINKER_FLAGS} -dynamiclib -flat_namespace -undefined suppress"
)
else()
set(CMAKE_MODULE_LINKER_FLAGS
"${CMAKE_MODULE_LINKER_FLAGS} -bundle -flat_namespace -undefined dynamic_lookup"
)
set(CMAKE_SHARED_LINKER_FLAGS
"${CMAKE_SHARED_LINKER_FLAGS} -dynamiclib -flat_namespace -undefined dynamic_lookup"
)
endif()
if(NOT NO_SELECT)
target_compile_definitions(common INTERFACE HAVE_SELECT)

View file

@ -10,7 +10,8 @@ target_compile_definitions(
HAVE_ALLOCA_H
HAVE_TIMEGM
HAVE_SCHED_SETSCHEDULER
HAVE_IP_MREQN)
HAVE_IP_MREQN
)
if(${RAW_SOCKS})
target_compile_definitions(common INTERFACE USE_RAW_SOCKS)
@ -21,8 +22,7 @@ if(NOT ${USE_FAST_LOCK})
target_link_libraries(common INTERFACE pthread)
else()
# Check if lock_method is posix or pthread
if(LOCK_METHOD STREQUAL "USE_POSIX_SEM" OR LOCK_METHOD STREQUAL
"USE_PTHREAD_MUTEX")
if(LOCK_METHOD STREQUAL "USE_POSIX_SEM" OR LOCK_METHOD STREQUAL "USE_PTHREAD_MUTEX")
message(STATUS "Using ${LOCK_METHOD} for locks")
target_link_libraries(common INTERFACE pthread)
endif()
@ -38,6 +38,5 @@ if(NOT NO_EPOLL)
endif()
if(NOT NO_SIGIO_RT)
target_compile_definitions(common INTERFACE HAVE_SIGIO_RT
SIGINFO64_WORKAROUND)
target_compile_definitions(common INTERFACE HAVE_SIGIO_RT SIGINFO64_WORKAROUND)
endif()

View file

@ -9,7 +9,8 @@ target_compile_definitions(
HAVE_MSGHDR_MSG_CONTROL
HAVE_CONNECT_ECONNRESET_BUG
HAVE_TIMEGM
HAVE_IP_MREQN)
HAVE_IP_MREQN
)
if(${RAW_SOCKS})
target_compile_definitions(common INTERFACE USE_RAW_SOCKS)

View file

@ -11,7 +11,8 @@ target_compile_definitions(
HAVE_ALLOCA_H
HAVE_TIMEGM
HAVE_SCHED_SETSCHEDULER
HAVE_IP_MREQN)
HAVE_IP_MREQN
)
target_link_libraries(common INTERFACE ${CMAKE_DL_LIBS} resolv)
target_link_libraries(common_utils INTERFACE resolv)
@ -23,8 +24,7 @@ endif()
if(NOT ${USE_FAST_LOCK})
target_compile_definitions(common INTERFACE USE_PTHREAD_MUTEX)
target_link_libraries(common INTERFACE pthread)
message(
STATUS "FAST_LOCK not available on this platform, using: USE_PTHREAD_MUTEX")
message(STATUS "FAST_LOCK not available on this platform, using: USE_PTHREAD_MUTEX")
else()
# TODO: Check if this can be reached. Right now it is not possible to set
# LOCK_METHOD, only USE_FAST_LOCK. This branch is reached when USE_FAST_LOCK
@ -48,8 +48,7 @@ endif()
# TODO introduce check for sigio
if(NOT NO_SIGIO_RT)
target_compile_definitions(common INTERFACE HAVE_SIGIO_RT
SIGINFO64_WORKAROUND)
target_compile_definitions(common INTERFACE HAVE_SIGIO_RT SIGINFO64_WORKAROUND)
endif()
# TODO introduce check for futex

View file

@ -55,8 +55,7 @@ else()
endif()
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/core/autover.h.in"
"${CMAKE_CURRENT_SOURCE_DIR}/core/autover.h"
"${CMAKE_CURRENT_SOURCE_DIR}/core/autover.h.in" "${CMAKE_CURRENT_SOURCE_DIR}/core/autover.h"
)
# -----------------------
@ -70,8 +69,7 @@ if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.20)
cmake_policy(SET CMP0118 NEW)
else()
set_source_files_properties(
${CMAKE_CURRENT_BINARY_DIR}/core/lex.yy.c
${CMAKE_CURRENT_BINARY_DIR}/core/cfg.tab.c
${CMAKE_CURRENT_BINARY_DIR}/core/lex.yy.c ${CMAKE_CURRENT_BINARY_DIR}/core/cfg.tab.c
${CMAKE_CURRENT_BINARY_DIR}/core/cfg.tab.h PROPERTIES GENERATED TRUE
)
endif()
@ -82,13 +80,9 @@ add_executable(kamailio ${CMAKE_CURRENT_SOURCE_DIR}/main.c)
add_dependencies(kamailio GenerateParser)
# Enable ENABLE_EXPORTS property so modules can link from symbols found in
# kamailio executable.
set_target_properties(
kamailio PROPERTIES ENABLE_EXPORTS TRUE OUTPUT_NAME ${MAIN_NAME}
)
set_target_properties(kamailio PROPERTIES ENABLE_EXPORTS TRUE OUTPUT_NAME ${MAIN_NAME})
target_compile_options(
kamailio PUBLIC "-ffile-prefix-map=${CMAKE_SOURCE_DIR}/src/="
)
target_compile_options(kamailio PUBLIC "-ffile-prefix-map=${CMAKE_SOURCE_DIR}/src/=")
add_subdirectory(core)
add_subdirectory(lib)
@ -99,9 +93,8 @@ add_subdirectory(modules)
# from their own CMakeLists.txt
# Module subdiretory does not contribute to the Kamailio executable.
target_sources(
kamailio
PRIVATE ${kamailio_SRC_FILES} ${CMAKE_CURRENT_BINARY_DIR}/core/lex.yy.c
${CMAKE_CURRENT_BINARY_DIR}/core/cfg.tab.c
kamailio PRIVATE ${kamailio_SRC_FILES} ${CMAKE_CURRENT_BINARY_DIR}/core/lex.yy.c
${CMAKE_CURRENT_BINARY_DIR}/core/cfg.tab.c
)
target_include_directories(kamailio PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/core)
@ -134,7 +127,8 @@ install(
install(
FILES ${CMAKE_SOURCE_DIR}/README ${CMAKE_SOURCE_DIR}/INSTALL
DESTINATION ${CMAKE_INSTALL_DOCDIR}
COMPONENT kamailio-docs)
COMPONENT kamailio-docs
)
# ----------
# Create and install the man pages for kamailio
@ -148,7 +142,8 @@ add_custom_command(
"s#/usr/share/doc/${CFG_NAME}/#${CMAKE_INSTALL_FULL_DOCDIR}/#g" -e
"s#${SRC_NAME}#${MAIN_NAME}#g" < ${CMAKE_SOURCE_DIR}/doc/man/kamailio.8 >
${CMAKE_CURRENT_BINARY_DIR}/${MAIN_NAME}.8
DEPENDS ${CMAKE_SOURCE_DIR}/doc/man/kamailio.8)
DEPENDS ${CMAKE_SOURCE_DIR}/doc/man/kamailio.8
)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${MAIN_NAME}.cfg.5
@ -158,12 +153,15 @@ add_custom_command(
-e "s#/usr/sbin/#${CMAKE_INSTALL_FULL_SBINDIR}/#g" -e
"s#/usr/lib/${CFG_NAME}/#${CMAKE_INSTALL_FULL_LIBDIR}/${MAIN_NAME}/#g" -e
"s#/usr/share/doc/${CFG_NAME}/#${CMAKE_INSTALL_FULL_DOCDIR}/#g" -e
"s#${SRC_NAME}#${MAIN_NAME}#g" < ${CMAKE_SOURCE_DIR}/doc/man/kamailio.cfg.5
> ${CMAKE_CURRENT_BINARY_DIR}/${MAIN_NAME}.cfg.5
DEPENDS ${CMAKE_SOURCE_DIR}/doc/man/kamailio.cfg.5)
"s#${SRC_NAME}#${MAIN_NAME}#g" < ${CMAKE_SOURCE_DIR}/doc/man/kamailio.cfg.5 >
${CMAKE_CURRENT_BINARY_DIR}/${MAIN_NAME}.cfg.5
DEPENDS ${CMAKE_SOURCE_DIR}/doc/man/kamailio.cfg.5
)
add_custom_target(man DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${MAIN_NAME}.8
${CMAKE_CURRENT_BINARY_DIR}/${MAIN_NAME}.cfg.5)
add_custom_target(
man DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${MAIN_NAME}.8
${CMAKE_CURRENT_BINARY_DIR}/${MAIN_NAME}.cfg.5
)
add_dependencies(man kamctl_man)
add_dependencies(man kamcmd_man)
# These are the modules man pages if any exist
@ -173,13 +171,15 @@ install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/${MAIN_NAME}.8
DESTINATION ${CMAKE_INSTALL_MANDIR}/man8
COMPONENT kamailio_man
OPTIONAL)
OPTIONAL
)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/${MAIN_NAME}.cfg.5
DESTINATION ${CMAKE_INSTALL_MANDIR}/man5
COMPONENT kamailio_man
OPTIONAL)
OPTIONAL
)
# ----------
# Install the configuration file (kamailio.cfg) ${CFG_NAME} using a CODE block

View file

@ -1,8 +1,6 @@
# This is just for Debugging and print the compile definitions and options
# for the common target
get_target_property(
MY_INTERFACE_DEFINITIONS common INTERFACE_COMPILE_DEFINITIONS
)
get_target_property(MY_INTERFACE_DEFINITIONS common INTERFACE_COMPILE_DEFINITIONS)
message(STATUS "Compile definitions for common: ${MY_INTERFACE_DEFINITIONS}")
get_target_property(MY_INTERFACE_OPTIONS common INTERFACE_COMPILE_OPTIONS)
@ -23,15 +21,13 @@ add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex.yy.c
COMMAND ${FLEX_EXECUTABLE} -o ${CMAKE_CURRENT_BINARY_DIR}/lex.yy.c
${CMAKE_CURRENT_SOURCE_DIR}/cfg.lex
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cfg.lex
${CMAKE_CURRENT_BINARY_DIR}/cfg.tab.h
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cfg.lex ${CMAKE_CURRENT_BINARY_DIR}/cfg.tab.h
COMMENT "Generating lex.yy.c from cfg.lex"
)
# Generate cfg.tab.c and cfg.tab.h from cfg.y
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cfg.tab.c
${CMAKE_CURRENT_BINARY_DIR}/cfg.tab.h
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cfg.tab.c ${CMAKE_CURRENT_BINARY_DIR}/cfg.tab.h
COMMAND ${BISON_EXECUTABLE} -d -b cfg -o ${CMAKE_CURRENT_BINARY_DIR}/cfg.tab.c
${CMAKE_CURRENT_SOURCE_DIR}/cfg.y
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cfg.y
@ -41,8 +37,7 @@ add_custom_command(
# Add custom target for generating the 3 source files mentioned above
add_custom_target(
GenerateParser ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/lex.yy.c
${CMAKE_CURRENT_BINARY_DIR}/cfg.tab.c
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/lex.yy.c ${CMAKE_CURRENT_BINARY_DIR}/cfg.tab.c
${CMAKE_CURRENT_BINARY_DIR}/cfg.tab.h
COMMENT "Generating parser source files"
)
@ -51,7 +46,8 @@ add_custom_target(
file(GLOB_RECURSE kamailio_SRC "*.c")
list(REMOVE_ITEM kamailio_SRC ${CMAKE_CURRENT_SOURCE_DIR}/cfg.tab.c
${CMAKE_CURRENT_SOURCE_DIR}/lex.yy.c)
${CMAKE_CURRENT_SOURCE_DIR}/lex.yy.c
)
set(kamailio_SRC_FILES
${kamailio_SRC}
PARENT_SCOPE

View file

@ -12,8 +12,8 @@ include(${CMAKE_SOURCE_DIR}/cmake/groups.cmake)
set(AVAILABLE_GROUP_NAMES ${AVAILABLE_GROUPS})
set(MODULE_GROUP_NAME
"DEFAULT"
CACHE STRING
"Group of modules to build (one or multiple space seperated group)")
CACHE STRING "Group of modules to build (one or multiple space seperated group)"
)
set_property(CACHE MODULE_GROUP_NAME PROPERTY STRINGS ${AVAILABLE_GROUP_NAMES})
# User may provide multiple groups seperated by space
@ -27,7 +27,8 @@ foreach(group_name IN LISTS MODULE_GROUP_LIST)
list(FIND AVAILABLE_GROUP_NAMES "${group_name}" INDEX)
if(INDEX EQUAL -1)
message(FATAL_ERROR "Invalid module group specified: ${group_name}.
Available groups: ${AVAILABLE_GROUPS}")
Available groups: ${AVAILABLE_GROUPS}"
)
else()
list(APPEND FULL_MODULE_GROUP_NAMES "MODULE_GROUP_${group_name}")
# get_property(MODULE_GROUP VARIABLE PROPERTY "MODULE_GROUP_${GROUP_NAME}")
@ -40,11 +41,13 @@ endforeach()
# Allow users to specify extra modules to build
set(INCLUDE_MODULES
""
CACHE STRING "List of extra modules to build (space-separated)")
CACHE STRING "List of extra modules to build (space-separated)"
)
set(EXCLUDE_MODULES
""
CACHE STRING "List of modules to exclude from building (space-separated)")
CACHE STRING "List of modules to exclude from building (space-separated)"
)
include(${CMAKE_SOURCE_DIR}/cmake/modules-docs.cmake)
@ -54,8 +57,7 @@ function(add_module_group group_modules)
# Check if the module has already been added
get_property(ALREADY_ADDED GLOBAL PROPERTY ADDED_MODULES_LIST)
if("${module_name}" IN_LIST ALREADY_ADDED)
message(
STATUS "Module ${module_name} has already been added. Skipping...")
message(STATUS "Module ${module_name} has already been added. Skipping...")
elseif("${module_name}" IN_LIST EXCLUDED_MODULES_LIST)
message(STATUS "Module ${module_name} is excluded. Skipping...")
list(REMOVE_ITEM ADDED_MODULES_LIST ${module_name})
@ -80,31 +82,30 @@ function(add_module_group group_modules)
target_link_libraries(${module_name} PRIVATE common_modules)
target_compile_definitions(
${module_name} PRIVATE MOD_NAMEID=${module_name}
MOD_NAME=\"${module_name}\")
${module_name} PRIVATE MOD_NAMEID=${module_name} MOD_NAME=\"${module_name}\"
)
target_compile_options(
${module_name}
PRIVATE
"-ffile-prefix-map=${CMAKE_SOURCE_DIR}/src/modules/${module_name}/="
PRIVATE "-ffile-prefix-map=${CMAKE_SOURCE_DIR}/src/modules/${module_name}/="
)
# Set the RPATH of the module to include the installation directory of
set_target_properties(
${module_name} PROPERTIES INSTALL_RPATH
"${CMAKE_INSTALL_FULL_LIBDIR}/${MAIN_NAME}")
${module_name} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}/${MAIN_NAME}"
)
# Install the module to the appropriate directory under the installation
# prefix
install(
TARGETS ${module_name}
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/modules
COMPONENT kamailio_modules)
COMPONENT kamailio_modules
)
# Add the module to the list of added modules
set_property(GLOBAL APPEND PROPERTY ADDED_MODULES_LIST ${module_name})
docs_add_module(${module_name})
set_property(GLOBAL APPEND PROPERTY ALL_MODULE_DOC_TARGETS
${module_name}_doc)
set_property(GLOBAL APPEND PROPERTY ALL_MODULE_DOC_TARGETS ${module_name}_doc)
else()
message(FATAL_ERROR "Module directory ${module_path} does not exist.")
endif()
@ -116,23 +117,22 @@ endfunction()
# dependencies to them.
add_custom_target(
kamailio_docs_readme
COMMENT
"Generating modules readme. Note: This will overwrite REAMDEs found in source tree"
COMMENT "Generating modules readme. Note: This will overwrite REAMDEs found in source tree"
)
add_custom_target(kamailio_docs_man COMMENT "Generating man pages")
# Parse and add extra modules specified by the user
separate_arguments(INCLUDE_MODULES_LIST UNIX_COMMAND "${INCLUDE_MODULES}")
message(
STATUS
"Extra modules (if module already included already from group is ignored):
${INCLUDE_MODULES_LIST}")
message(STATUS "Extra modules (if module already included already from group is ignored):
${INCLUDE_MODULES_LIST}"
)
list(APPEND USER_MODULES_LIST ${INCLUDE_MODULES_LIST})
separate_arguments(EXCLUDED_MODULES_LIST UNIX_COMMAND "${EXCLUDE_MODULES}")
message(STATUS "Excluded modules (exlcude even if in included modules):
${EXCLUDED_MODULES_LIST}")
${EXCLUDED_MODULES_LIST}"
)
# Add each group of modules
foreach(group IN LISTS FULL_MODULE_GROUP_NAMES)
@ -158,11 +158,12 @@ get_property(ALL_MODULE_DOC_TARGETS GLOBAL PROPERTY ALL_MODULE_DOC_TARGETS)
add_custom_target(
kamailio_docs
DEPENDS ${ALL_MODULE_DOC_TARGETS}
COMMENT "Generating Kamailio documentation")
COMMENT "Generating Kamailio documentation"
)
add_custom_target(
install_kamailio_docs
COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --component
kamailio_docs
COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --component kamailio_docs
DEPENDS kamailio_docs
COMMENT "Installing Kamailio documentation")
COMMENT "Installing Kamailio documentation"
)

View file

@ -84,9 +84,8 @@ list(APPEND PERL_PODFILES ${PERL_PODFILES_PM})
# and we don't want to change them.
add_custom_command(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/kamailioxs.c
COMMAND
xsubpp -typemap ${PERL_TYPEMAP} -typemap ${CMAKE_CURRENT_SOURCE_DIR}/typemap
kamailioxs.xs > ${CMAKE_CURRENT_SOURCE_DIR}/kamailioxs.c
COMMAND xsubpp -typemap ${PERL_TYPEMAP} -typemap ${CMAKE_CURRENT_SOURCE_DIR}/typemap kamailioxs.xs
> ${CMAKE_CURRENT_SOURCE_DIR}/kamailioxs.c
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating kamailioxs.c"
VERBATIM
@ -96,8 +95,7 @@ add_custom_command(
target_sources(${module_name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/kamailioxs.c)
# Add the flag option only for the generated file
set_source_files_properties(
${CMAKE_CURRENT_SOURCE_DIR}/kamailioxs.c PROPERTIES COMPILE_OPTIONS
-Wno-unused
${CMAKE_CURRENT_SOURCE_DIR}/kamailioxs.c PROPERTIES COMPILE_OPTIONS -Wno-unused
)
# Doc target
@ -108,16 +106,13 @@ add_custom_target(perlpod)
# Requires libpod-2-docbook-perl packages
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doc/app_perl_pod.sgml
COMMAND cat ${PERL_PODFILES} | pod2docbook --doctype=chapter --title='Kamailio
Perl API' --no-header - ${CMAKE_CURRENT_BINARY_DIR}/app_perl_pod.sgml
COMMAND cat ${PERL_PODFILES} | pod2docbook --doctype=chapter --title='Kamailio Perl API'
--no-header - ${CMAKE_CURRENT_BINARY_DIR}/app_perl_pod.sgml
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating app_perl_pod.sgml"
)
add_custom_target(
${module_name}_pod.sgml
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doc/app_perl_pod.sgml
)
add_custom_target(${module_name}_pod.sgml DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doc/app_perl_pod.sgml)
# Install nessecary files
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib/perl

View file

@ -27,10 +27,11 @@ install(
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
endif()
"
COMPONENT ${module_name}-cfg)
COMPONENT ${module_name}-cfg
)
add_custom_target(
${module_name}-install-cfg
COMMENT "Installing auth_radius dictionary.${CFG_NAME} configuration file"
COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --component
${module_name}-cfg)
COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --component ${module_name}-cfg
)

View file

@ -13,5 +13,4 @@ find_package(Ldap REQUIRED)
# LDAP_DEPRECATED is required for LDAP support else it will throw compile error
target_compile_definitions(${module_name} PRIVATE LDAP_DEPRECATED)
target_include_directories(${module_name} PRIVATE ${Ldap_INCLUDE_DIRS})
target_link_libraries(${module_name} PRIVATE ${LDAP_LIBRARIES}
libsasl2::libsasl2)
target_link_libraries(${module_name} PRIVATE ${LDAP_LIBRARIES} libsasl2::libsasl2)

View file

@ -9,6 +9,5 @@ target_link_libraries(${module_name} PRIVATE BerkeleyDB::BerkeleyDB)
# Build also the util function found in utils/db_berkeley/
# This is needed to build the kamdb_recover utility
add_subdirectory(${CMAKE_SOURCE_DIR}/utils/db_berkeley
${CMAKE_BINARY_DIR}/utils/db_berkeley)
add_subdirectory(${CMAKE_SOURCE_DIR}/utils/db_berkeley ${CMAKE_BINARY_DIR}/utils/db_berkeley)
add_dependencies(${module_name} kamdb_recover)

View file

@ -7,5 +7,6 @@ find_package(Threads REQUIRED)
# TODO: library libval not foud on recent distributions: whichi library is sres?
# Consider depreciating this module?
target_link_libraries(${module_name} PRIVATE val-threads sres Threads::Threads
OpenSSL::SSL OpenSSL::Crypto)
target_link_libraries(
${module_name} PRIVATE val-threads sres Threads::Threads OpenSSL::SSL OpenSSL::Crypto
)

View file

@ -30,5 +30,4 @@ find_package(PkgConfig REQUIRED)
pkg_check_modules(UUID REQUIRED IMPORTED_TARGET uuid)
add_library(uuid::uuid ALIAS PkgConfig::UUID)
target_link_libraries(${module_name} PRIVATE json-c::json-c rabbitmq::rabbitmq
uuid::uuid)
target_link_libraries(${module_name} PRIVATE json-c::json-c rabbitmq::rabbitmq uuid::uuid)

View file

@ -11,5 +11,6 @@ add_library(nghttp2::nghttp2 ALIAS PkgConfig::nghttp2)
pkg_check_modules(event REQUIRED IMPORTED_TARGET libevent libevent_openssl)
add_library(event::event ALIAS PkgConfig::event)
target_link_libraries(${module_name} PRIVATE nghttp2::nghttp2 event::event
OpenSSL::SSL OpenSSL::Crypto)
target_link_libraries(
${module_name} PRIVATE nghttp2::nghttp2 event::event OpenSSL::SSL OpenSSL::Crypto
)

View file

@ -24,5 +24,6 @@ find_package(CURL REQUIRED)
# maintaned anymore - eprecate? -lnsq -levbuffsock
# TODO: verify if -l is required to avoid linking to itself
target_link_libraries(${module_name} PRIVATE json-c::json-c CURL::libcurl
Libev::Libev -lnsq evbuffsock)
target_link_libraries(
${module_name} PRIVATE json-c::json-c CURL::libcurl Libev::Libev -lnsq evbuffsock
)

View file

@ -18,12 +18,10 @@ else()
if(libphonenumber_LIBRARY AND libgeocoding_LIBRARY)
set(libphonenum_LIBRARY ${libphonenumber_LIBRARY} ${libgeocoding_LIBRARY})
find_path(libphonenumber_INCLUDE_DIR
phonenumbers/geocoding/phonenumber_offline_geocoder.h
phonenumbers/phonenumberutil.h)
message(
STATUS
"Found libphonenumber include directory: ${libphonenumber_INCLUDE_DIR}")
find_path(libphonenumber_INCLUDE_DIR phonenumbers/geocoding/phonenumber_offline_geocoder.h
phonenumbers/phonenumberutil.h
)
message(STATUS "Found libphonenumber include directory: ${libphonenumber_INCLUDE_DIR}")
message(STATUS "Found libphonenumber library: ${libphonenum_LIBRARY}")
else()
message(FATAL_ERROR "libphonenumber library not found")
@ -41,8 +39,8 @@ target_compile_options(
$<$<NOT:$<CONFIG:DEBUG>>:-Wno-deprecated>
$<$<NOT:$<CONFIG:DEBUG>>:-Wno-unused-function>
$<$<NOT:$<CONFIG:DEBUG>>:-Wno-sign-compare>
$<$<NOT:$<CONFIG:DEBUG>>:-Wno-strict-aliasing>)
$<$<NOT:$<CONFIG:DEBUG>>:-Wno-strict-aliasing>
)
target_include_directories(${module_name}
PRIVATE ${libphonenumber_INCLUDE_DIRS})
target_include_directories(${module_name} PRIVATE ${libphonenumber_INCLUDE_DIRS})
target_link_libraries(${module_name} PRIVATE ${libphonenum_LIBRARY})

View file

@ -7,7 +7,6 @@ pkg_check_modules(libruxc REQUIRED IMPORTED_TARGET libruxc)
add_library(libruxc::libruxc ALIAS PkgConfig::libruxc)
if(APPLE)
target_link_libraries(${module_name} PRIVATE "-framework CoreFoundation"
"-framework Security")
target_link_libraries(${module_name} PRIVATE "-framework CoreFoundation" "-framework Security")
endif()
target_link_libraries(${module_name} PRIVATE libruxc::libruxc)

View file

@ -6,7 +6,8 @@ add_library(${module_name} SHARED ${MODULE_SOURCES})
find_path(
SCTP_INCLUDE_DIR
NAMES sctp.h
PATHS /usr/include /usr/local/include /usr/include/netinet)
PATHS /usr/include /usr/local/include /usr/include/netinet
)
if(NOT SCTP_INCLUDE_DIR)
message(FATAL_ERROR "sctp.h not found. maybe missing libsctp-dev?")
@ -18,7 +19,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
find_library(
SCTP_LIBRARY
NAMES sctp
PATHS /usr/lib /usr/local/lib)
PATHS /usr/lib /usr/local/lib
)
target_link_libraries(${module_name} PRIVATE ${SCTP_LIBRARY})
endif()

View file

@ -9,8 +9,7 @@ pkg_check_modules(secsipid-1 REQUIRED IMPORTED_TARGET secsipid-1)
add_library(secsipid ALIAS PkgConfig::secsipid-1)
if(APPLE)
target_link_libraries(${module_name} PRIVATE "-framework CoreFoundation"
"-framework Security")
target_link_libraries(${module_name} PRIVATE "-framework CoreFoundation" "-framework Security")
endif()
target_link_libraries(${module_name} PRIVATE secsipid Threads::Threads)

View file

@ -11,4 +11,5 @@ target_link_libraries(${module_name} PRIVATE NETSNMP::NETSNMP)
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/mibs
DESTINATION ${CMAKE_INSTALL_DATADIR}/snmp/
OPTIONAL)
OPTIONAL
)

View file

@ -4,11 +4,11 @@ add_library(${module_name} SHARED ${MODULE_SOURCES})
# Options
option(LIBSSL_STATIC "Link with static libraries" OFF)
option(LIBSSL_STATIC_SRCLIB "Link with static libraries compiled from source"
OFF)
option(LIBSSL_STATIC_SRCLIB "Link with static libraries compiled from source" OFF)
set(LIBSSL_STATIC_SRCPATH
"/usr/local/src/openssl"
CACHE PATH "Path to the folder with static libraries compiled from source")
CACHE PATH "Path to the folder with static libraries compiled from source"
)
# Find packages
find_package(ZLIB REQUIRED)
@ -20,8 +20,7 @@ find_package(Threads REQUIRED)
if(LIBSSL_STATIC)
target_compile_definitions(${module_name} KSR_LIBSSL_STATIC)
if(LIBSSL_STATIC_SRCLIB)
target_include_directories(${module_name}
PRIVATE ${LIBSSL_STATIC_SRCPATH}/include)
target_include_directories(${module_name} PRIVATE ${LIBSSL_STATIC_SRCPATH}/include)
target_link_directories(${module_name} PRIVATE ${LIBSSL_STATIC_SRCPATH})
else()
# Static linking with system libraries Note: This assumes the static
@ -29,13 +28,13 @@ if(LIBSSL_STATIC)
set(OPENSSL_USE_STATIC_LIBS TRUE)
find_package(OpenSSL REQUIRED)
# TODO: Check if this is needed: -Wl,-Bstatic
target_link_libraries(${module_name} PRIVATE OpenSSL::SSL OpenSSL::Crypto
ZLIB::ZLIB)
target_link_libraries(${module_name} PRIVATE OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB)
endif()
else()
find_package(OpenSSL REQUIRED)
target_link_libraries(${module_name} PRIVATE OpenSSL::SSL OpenSSL::Crypto
ZLIB::ZLIB Threads::Threads)
target_link_libraries(
${module_name} PRIVATE OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB Threads::Threads
)
endif()
# Install the configuration file (tls.cfg) using a CODE block to check
@ -58,7 +57,8 @@ install(
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
endif()
"
COMPONENT tls-cfg)
COMPONENT tls-cfg
)
add_custom_command(
OUTPUT tls.cfg.sample
@ -66,7 +66,8 @@ add_custom_command(
sed -e "s#\/usr/local/etc/kamailio/#${CMAKE_INSTALL_FULL_SYSCONFDIR}#g" -e
"s#kamailio-selfsigned#${MAIN_NAME}-selfsigned#g" < tls.cfg >
${CMAKE_CURRENT_BINARY_DIR}/tls.cfg.sample
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
# Always build/generate tls.cfg.sample in the build directory
# This is needed for the default install target to pick it up
@ -75,7 +76,8 @@ add_custom_target(tls_cfg_sample ALL DEPENDS tls.cfg.sample)
add_custom_target(
tls-install-cfg
COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --component tls-cfg
COMMENT "Installing tls.cfg.sample to ${MAIN_NAME} config directory")
COMMENT "Installing tls.cfg.sample to ${MAIN_NAME} config directory"
)
add_dependencies(tls-install-cfg tls_cfg_sample)
# Add tls-cert target
@ -84,4 +86,5 @@ add_custom_target(
COMMAND ${CMAKE_COMMAND} -E env MAIN_NAME=${MAIN_NAME} ./tls_cert.sh -d
${CMAKE_INSTALL_FULL_SYSCONFDIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating self-signed certificates for ${MAIN_NAME}")
COMMENT "Generating self-signed certificates for ${MAIN_NAME}"
)

View file

@ -12,8 +12,7 @@ find_package(Threads REQUIRED)
if(LIBSSL_STATIC)
target_compile_definitions(${module_name} KSR_LIBSSL_STATIC)
if(LIBSSL_STATIC_SRCLIB)
target_include_directories(${module_name}
PRIVATE ${LIBSSL_STATIC_SRCPATH}/include)
target_include_directories(${module_name} PRIVATE ${LIBSSL_STATIC_SRCPATH}/include)
target_link_directories(${module_name} PRIVATE ${LIBSSL_STATIC_SRCPATH})
else()
# Static linking with system libraries Note: This assumes the static
@ -21,11 +20,11 @@ if(LIBSSL_STATIC)
set(OPENSSL_USE_STATIC_LIBS TRUE)
find_package(OpenSSL REQUIRED)
# TODO: Check if this is needed: -Wl,-Bstatic
target_link_libraries(${module_name} PRIVATE OpenSSL::SSL OpenSSL::Crypto
ZLIB::ZLIB)
target_link_libraries(${module_name} PRIVATE OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB)
endif()
else()
find_package(OpenSSL REQUIRED)
target_link_libraries(${module_name} PRIVATE OpenSSL::SSL OpenSSL::Crypto
ZLIB::ZLIB Threads::Threads)
target_link_libraries(
${module_name} PRIVATE OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB Threads::Threads
)
endif()

View file

@ -26,10 +26,11 @@ install(
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
endif()
"
COMPONENT xhttp_pi-cfg)
COMPONENT xhttp_pi-cfg
)
add_custom_target(
xhttp_pi-install-cfg
COMMENT "Installing pi_framework.xml"
COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --component
xhttp_pi-cfg)
COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --component xhttp_pi-cfg
)

View file

@ -2,11 +2,13 @@ file(
GLOB children
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
LIST_DIRECTORIES true
*)
*
)
foreach(child ${children})
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${child}
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${child}/CMakeLists.txt)
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${child}/CMakeLists.txt
)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${child})
endif()
endforeach()

View file

@ -9,4 +9,5 @@ target_link_libraries(kamdb_recover PRIVATE BerkeleyDB::BerkeleyDB)
install(
TARGETS kamdb_recover
DESTINATION ${CMAKE_INSTALL_SBINDIR}
OPTIONAL)
OPTIONAL
)

View file

@ -3,7 +3,8 @@ set(KAMCMD_UTIL_SRC_NAME "kamcmd")
set(KAMCMD_CUSTOM_NAME
""
CACHE STRING "Custom name for the kamcmd util")
CACHE STRING "Custom name for the kamcmd util"
)
if(NOT KAMCMD_CUSTOM_NAME)
set(NAME "kamcmd") # Hardcoded name if empty
@ -25,15 +26,16 @@ endif()
include(${CMAKE_SOURCE_DIR}/cmake/utils.cmake)
target_sources(${NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/kamcmd.c
${CMAKE_CURRENT_SOURCE_DIR}/parse_listen_id.c)
target_sources(
${NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/kamcmd.c
${CMAKE_CURRENT_SOURCE_DIR}/parse_listen_id.c
)
target_link_libraries(${NAME} PRIVATE common_utils)
target_compile_definitions(
${NAME}
PRIVATE NAME="${NAME}" SRNAME="${MAIN_NAME}" VERSION="${KAMCMD_RELEASE}"
RUN_DIR="/${CMAKE_INSTALL_LOCALSTATEDIR}/run/${MAIN_NAME}"
__OS_${OS_LOWER})
${NAME} PRIVATE NAME="${NAME}" SRNAME="${MAIN_NAME}" VERSION="${KAMCMD_RELEASE}"
RUN_DIR="/${CMAKE_INSTALL_LOCALSTATEDIR}/run/${MAIN_NAME}" __OS_${OS_LOWER}
)
install(TARGETS ${NAME} DESTINATION ${CMAKE_INSTALL_SBINDIR})
@ -44,11 +46,12 @@ add_custom_command(
sed -e
"s#/etc/${CFG_NAME}/${CFG_NAME}\.cfg#${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}/${MAIN_NAME}.cfg#g"
-e "s#/usr/sbin/#${CMAKE_INSTALL_FULL_SBINDIR}/#g" -e
"s#/usr/lib/${CFG_NAME}/modules/#${CMAKE_INSTALL_FULL_LIBDIR}/${MAIN_NAME}/#g"
-e "s#/usr/share/doc/${CFG_NAME}/#${CMAKE_INSTALL_FULL_DOCDIR}/#g" -e
"s#/usr/lib/${CFG_NAME}/modules/#${CMAKE_INSTALL_FULL_LIBDIR}/${MAIN_NAME}/#g" -e
"s#/usr/share/doc/${CFG_NAME}/#${CMAKE_INSTALL_FULL_DOCDIR}/#g" -e
"s#${SRC_NAME}#${MAIN_NAME}#g" < ${CMAKE_CURRENT_SOURCE_DIR}/kamcmd.8 >
${CMAKE_CURRENT_BINARY_DIR}/kamcmd.8
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kamcmd.8)
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kamcmd.8
)
add_custom_target(kamcmd_man DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/kamcmd.8)
@ -56,4 +59,5 @@ install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/kamcmd.8
DESTINATION ${CMAKE_INSTALL_MANDIR}/man8
COMPONENT kamailio_man
OPTIONAL)
OPTIONAL
)

View file

@ -7,8 +7,7 @@ set(LIB_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/${MAIN_NAME}")
set(CFG_DIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}")
set(SHARE_DIR "${CMAKE_INSTALL_FULL_DATADIR}/${MAIN_NAME}")
set(KAMCTL_BASE_FILES kamctl.base kamctl.ctlbase kamctl.rpcfifo kamctl.ser
kamctl.sqlbase)
set(KAMCTL_BASE_FILES kamctl.base kamctl.ctlbase kamctl.rpcfifo kamctl.ser kamctl.sqlbase)
if("db_berkeley" IN_LIST FINAL_MODULES_LIST)
set(KAMCTL_DB_FILES ${KAMCTL_DB_FILES} kamctl.db_berkeley)
@ -39,14 +38,15 @@ foreach(file IN LISTS KAMCTL_BASE_FILES KAMCTL_DB_FILES)
# Process the file with sed and install it
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${file}"
COMMAND
sed -e "s#/usr/local/sbin#${BIN_DIR}#g" <
${CMAKE_CURRENT_SOURCE_DIR}/${file} > ${CMAKE_CURRENT_BINARY_DIR}/${file}
COMMENT "Processed ${file} with sed")
COMMAND sed -e "s#/usr/local/sbin#${BIN_DIR}#g" < ${CMAKE_CURRENT_SOURCE_DIR}/${file} >
${CMAKE_CURRENT_BINARY_DIR}/${file}
COMMENT "Processed ${file} with sed"
)
install(
PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${file}
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl
COMPONENT kamailio-utils-bin)
COMPONENT kamailio-utils-bin
)
endforeach()
# Kamctl target to depend on all kamctl files
@ -54,17 +54,18 @@ endforeach()
add_custom_target(
kamctl ALL
COMMAND
sed -e "s#/usr/local/sbin#${BIN_DIR}#g" -e
"s#/usr/local/lib/kamailio#${LIB_DIR}#g" -e
"s#/usr/local/etc/kamailio#${CFG_DIR}#g" <
${CMAKE_CURRENT_SOURCE_DIR}/kamctl > ${CMAKE_CURRENT_BINARY_DIR}/kamctl
sed -e "s#/usr/local/sbin#${BIN_DIR}#g" -e "s#/usr/local/lib/kamailio#${LIB_DIR}#g" -e
"s#/usr/local/etc/kamailio#${CFG_DIR}#g" < ${CMAKE_CURRENT_SOURCE_DIR}/kamctl >
${CMAKE_CURRENT_BINARY_DIR}/kamctl
DEPENDS ${KAMCTL_DEPENDENCIES}
COMMENT "Build kamctl and its dependencies")
COMMENT "Build kamctl and its dependencies"
)
install(
PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/kamctl
DESTINATION ${CMAKE_INSTALL_SBINDIR}
COMPONENT kamailio-utils-bin)
COMPONENT kamailio-utils-bin
)
# Setup and install kamdbctl stuff
set(KAMDBCTL_BASE_FILES kamdbctl.base)
@ -75,7 +76,8 @@ endif()
if("db_text" IN_LIST FINAL_MODULES_LIST)
set(KAMDBCTL_DB_FILES ${KAMDBCTL_DB_FILES} kamdbctl.dbtext)
install(PROGRAMS dbtextdb/dbtextdb.py
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl/dbtextdb)
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl/dbtextdb
)
endif()
if("db_mysql" IN_LIST FINAL_MODULES_LIST)
set(KAMDBCTL_DB_FILES ${KAMDBCTL_DB_FILES} kamdbctl.mysql)
@ -99,31 +101,33 @@ foreach(file IN LISTS KAMDBCTL_BASE_FILES KAMDBCTL_DB_FILES)
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${file}"
COMMAND
sed -e "s#/usr/local/sbin#${BIN_DIR}#g" -e
"s#/usr/local/etc/kamailio#${CFG_DIR}#g" -e
"s#/usr/local/share/kamailio#${SHARE_DIR}#g" <
${CMAKE_CURRENT_SOURCE_DIR}/${file} > ${CMAKE_CURRENT_BINARY_DIR}/${file}
COMMENT "Processed ${file}")
sed -e "s#/usr/local/sbin#${BIN_DIR}#g" -e "s#/usr/local/etc/kamailio#${CFG_DIR}#g" -e
"s#/usr/local/share/kamailio#${SHARE_DIR}#g" < ${CMAKE_CURRENT_SOURCE_DIR}/${file} >
${CMAKE_CURRENT_BINARY_DIR}/${file}
COMMENT "Processed ${file}"
)
install(
PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${file}
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl
COMPONENT kamailio-utils-bin)
COMPONENT kamailio-utils-bin
)
endforeach()
add_custom_target(
kamdbctl ALL
COMMAND
sed -e "s#/usr/local/sbin#${BIN_DIR}#g" -e
"s#/usr/local/lib/kamailio#${LIB_DIR}#g" -e
"s#/usr/local/etc/kamailio#${CFG_DIR}#g" <
${CMAKE_CURRENT_SOURCE_DIR}/kamdbctl > ${CMAKE_CURRENT_BINARY_DIR}/kamdbctl
sed -e "s#/usr/local/sbin#${BIN_DIR}#g" -e "s#/usr/local/lib/kamailio#${LIB_DIR}#g" -e
"s#/usr/local/etc/kamailio#${CFG_DIR}#g" < ${CMAKE_CURRENT_SOURCE_DIR}/kamdbctl >
${CMAKE_CURRENT_BINARY_DIR}/kamdbctl
DEPENDS ${KAMDB_DEPENDENCIES}
COMMENT "Build kamdbctl and its dependencies")
COMMENT "Build kamdbctl and its dependencies"
)
install(
PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/kamdbctl
DESTINATION ${CMAKE_INSTALL_SBINDIR}
COMPONENT kamailio-utils-bin)
COMPONENT kamailio-utils-bin
)
# Install the configuration file (kamctlrc) using a CODE block to check
# existence at install time instead of configure time
@ -145,7 +149,8 @@ install(
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
endif()
"
COMPONENT kamailio-utils-cfg)
COMPONENT kamailio-utils-cfg
)
# Man pages generation and installation
add_custom_command(
@ -154,10 +159,11 @@ add_custom_command(
sed -e
"s#/etc/${CFG_NAME}/${CFG_NAME}\.cfg#${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}/${MAIN_NAME}.cfg#g"
-e "s#/usr/sbin/#${CMAKE_INSTALL_FULL_SBINDIR}/#g" -e
"s#/usr/lib/${CFG_NAME}/modules/#${CMAKE_INSTALL_FULL_LIBDIR}/${MAIN_NAME}/#g"
-e "s#/usr/share/doc/${CFG_NAME}/#${CMAKE_INSTALL_FULL_DOCDIR}/#g" <
"s#/usr/lib/${CFG_NAME}/modules/#${CMAKE_INSTALL_FULL_LIBDIR}/${MAIN_NAME}/#g" -e
"s#/usr/share/doc/${CFG_NAME}/#${CMAKE_INSTALL_FULL_DOCDIR}/#g" <
${CMAKE_CURRENT_SOURCE_DIR}/kamctl.8 > ${CMAKE_CURRENT_BINARY_DIR}/kamctl.8
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kamctl.8)
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kamctl.8
)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kamdbctl.8
@ -165,42 +171,42 @@ add_custom_command(
sed -e
"s#/etc/${CFG_NAME}/${CFG_NAME}\.cfg#${CMAKE_INSTALL_FULL_SYSCONFDIR}/${MAIN_NAME}/${MAIN_NAME}.cfg#g"
-e "s#/usr/sbin/#${CMAKE_INSTALL_FULL_SBINDIR}/#g" -e
"s#/usr/lib/${CFG_NAME}/modules/#${CMAKE_INSTALL_FULL_LIBDIR}/${MAIN_NAME}/#g"
-e "s#/usr/share/doc/${CFG_NAME}/#${CMAKE_INSTALL_FULL_DOCDIR}/#g" <
${CMAKE_CURRENT_SOURCE_DIR}/kamdbctl.8 >
${CMAKE_CURRENT_BINARY_DIR}/kamdbctl.8
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kamdbctl.8)
"s#/usr/lib/${CFG_NAME}/modules/#${CMAKE_INSTALL_FULL_LIBDIR}/${MAIN_NAME}/#g" -e
"s#/usr/share/doc/${CFG_NAME}/#${CMAKE_INSTALL_FULL_DOCDIR}/#g" <
${CMAKE_CURRENT_SOURCE_DIR}/kamdbctl.8 > ${CMAKE_CURRENT_BINARY_DIR}/kamdbctl.8
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kamdbctl.8
)
add_custom_target(kamctl_man DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/kamctl.8
${CMAKE_CURRENT_BINARY_DIR}/kamdbctl.8)
add_custom_target(
kamctl_man DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/kamctl.8 ${CMAKE_CURRENT_BINARY_DIR}/kamdbctl.8
)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/kamctl.8
${CMAKE_CURRENT_BINARY_DIR}/kamdbctl.8
FILES ${CMAKE_CURRENT_BINARY_DIR}/kamctl.8 ${CMAKE_CURRENT_BINARY_DIR}/kamdbctl.8
DESTINATION ${CMAKE_INSTALL_MANDIR}/man8
COMPONENT kamailio_man
OPTIONAL)
OPTIONAL
)
# Install targets
# Custom target for installing the kamailio-cfg component
add_custom_target(
install-kamailio-utils-cfg
COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --component
kamailio-utils-cfg
COMMENT "Installing kamailio-utils-cfg component")
COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --component kamailio-utils-cfg
COMMENT "Installing kamailio-utils-cfg component"
)
# Custom target for installing the kamailio-utils-bin component
add_custom_target(
install-kamailio-utils-bin
COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --component
kamailio-utils-bin
COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --component kamailio-utils-bin
COMMENT "Installing kamailio-utils-bin component"
DEPENDS kamctl kamdbctl)
DEPENDS kamctl kamdbctl
)
# Custom target for installing the kamailio-utils component
add_custom_target(install-kamailio-utils COMMENT "Installing utils components")
add_dependencies(install-kamailio-utils install-kamailio-utils-cfg
install-kamailio-utils-bin)
add_dependencies(install-kamailio-utils install-kamailio-utils-cfg install-kamailio-utils-bin)
# ----------
@ -216,8 +222,7 @@ find_program(XSLTPROC_EXECUTABLE xsltproc QUIET)
if(NOT XSLTPROC_EXECUTABLE)
message(STATUS "xsltproc is not found. Skip dbschema target.")
else()
option(XSLT_VALIDATE, "Enable schema validation during XSL transformations"
ON)
option(XSLT_VALIDATE, "Enable schema validation during XSL transformations" ON)
option(XSLT_VERBOSE, "Enable verbose output for XSL transformations" OFF)
set(XSLTPROC_FLAGS --xinclude)
@ -245,16 +250,14 @@ else()
endforeach()
# Output the extracted table names
if(VERBOSE)
message(
STATUS "Extracted Tables for DB schema generation: ${EXTRACTED_TABLES}")
message(STATUS "Extracted Tables for DB schema generation: ${EXTRACTED_TABLES}")
endif()
# Function to add a target for each database type prefix with dbschema ie
# db_name = redis -> target = dbschema_redis
function(add_db_target db_name xsl_file)
# Change name for the folder
if(db_name STREQUAL "pi_framework_table" OR db_name STREQUAL
"pi_framework_mod")
if(db_name STREQUAL "pi_framework_table" OR db_name STREQUAL "pi_framework_mod")
set(db_name_folder xhttp_pi)
else()
set(db_name_folder ${db_name})
@ -264,7 +267,8 @@ else()
dbschema_${db_name}
COMMAND ${CMAKE_COMMAND} -E make_directory "${db_name_folder}"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Creating schemas for ${db_name}")
COMMENT "Creating schemas for ${db_name}"
)
# Loop through each table and add a command for xsltproc
foreach(table ${EXTRACTED_TABLES})
@ -272,7 +276,8 @@ else()
if(db_name STREQUAL "db_berkeley"
OR db_name STREQUAL "db_redis"
OR db_name STREQUAL "dbtext"
OR db_name STREQUAL "mongodb")
OR db_name STREQUAL "mongodb"
)
set(prefix '')
set(folder_suffix "${MAIN_NAME}")
else()
@ -284,26 +289,26 @@ else()
TARGET dbschema_${db_name}
PRE_BUILD
COMMAND
XML_CATALOG_FILES=${CATALOG} ${XSLTPROC_EXECUTABLE} ${XSLTPROC_FLAGS}
--stringparam dir
${CMAKE_CURRENT_BINARY_DIR}/${db_name_folder}/${folder_suffix}
--stringparam prefix ${prefix} --stringparam db ${db_name} ${xsl_file}
"kamailio-${table}.xml"
XML_CATALOG_FILES=${CATALOG} ${XSLTPROC_EXECUTABLE} ${XSLTPROC_FLAGS} --stringparam dir
${CMAKE_CURRENT_BINARY_DIR}/${db_name_folder}/${folder_suffix} --stringparam prefix
${prefix} --stringparam db ${db_name} ${xsl_file} "kamailio-${table}.xml"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/src/lib/srdb1/schema"
COMMENT "Processing ${table} for ${db_name}")
COMMENT "Processing ${table} for ${db_name}"
)
endforeach()
# Before installing, ensure the target is built `dbschema_${db_name}`
install(
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${db_name_folder}
DESTINATION ${CMAKE_INSTALL_DATADIR}/${MAIN_NAME}
OPTIONAL)
OPTIONAL
)
add_custom_target(
dbschema_${db_name}_clean
COMMAND ${CMAKE_COMMAND} -E remove_directory
"${CMAKE_CURRENT_BINARY_DIR}/${db_name_folder}"
COMMENT "Cleaning ${db_name} schema files")
COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/${db_name_folder}"
COMMENT "Cleaning ${db_name} schema files"
)
endfunction()
# Add targets for each database type
@ -315,17 +320,17 @@ else()
add_db_target(pi_framework_table "${STYLESHEETS}/pi_framework_table.xsl")
add_db_target(pi_framework_mod "${STYLESHEETS}/pi_framework_mod.xsl")
add_custom_target(dbschema_xhttp_pi)
add_dependencies(dbschema_xhttp_pi dbschema_pi_framework_table
dbschema_pi_framework_mod)
add_dependencies(dbschema_xhttp_pi dbschema_pi_framework_table dbschema_pi_framework_mod)
add_custom_target(dbschema_xhttp_pi_clean)
add_dependencies(dbschema_xhttp_pi dbschema_pi_framework_table_clean
dbschema_pi_framework_mod_clean)
add_dependencies(
dbschema_xhttp_pi dbschema_pi_framework_table_clean dbschema_pi_framework_mod_clean
)
add_dependencies(dbschema dbschema_pi_framework_table
dbschema_pi_framework_mod)
add_dependencies(dbschema_clean dbschema_pi_framework_table_clean
dbschema_pi_framework_mod_clean)
add_dependencies(dbschema dbschema_pi_framework_table dbschema_pi_framework_mod)
add_dependencies(
dbschema_clean dbschema_pi_framework_table_clean dbschema_pi_framework_mod_clean
)
endif()
if("db_mysql" IN_LIST FINAL_MODULES_LIST)
add_db_target(mysql "${STYLESHEETS}/mysql.xsl")
@ -373,12 +378,14 @@ else()
bash ${CMAKE_CURRENT_SOURCE_DIR}/generate_version_create_mongo.sh
"${CMAKE_CURRENT_BINARY_DIR}/mongodb/kamailio/version-create.mongo"
"${CMAKE_CURRENT_BINARY_DIR}/mongodb/kamailio"
COMMENT "Creating version-create.mongo from JSON files")
COMMENT "Creating version-create.mongo from JSON files"
)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/mongodb/kamailio/version-create.mongo
DESTINATION ${CMAKE_INSTALL_DATADIR}/${MAIN_NAME}/mongodb/${MAIN_NAME}
COMPONENT KMONGODB)
COMPONENT KMONGODB
)
endif()
if("db_redis" IN_LIST FINAL_MODULES_LIST)
add_db_target(db_redis "${STYLESHEETS}/db_redis.xsl")