Просмотр исходного кода

cmake/utills: Config all files for build and install

- Config and install all kamctl related files
- Config and install all kamdb related files
- Format file
Xenofon Karamanos 8 месяцев назад
Родитель
Сommit
003a92942a
1 измененных файлов с 93 добавлено и 142 удалено
  1. 93 142
      utils/kamctl/CMakeLists.txt

+ 93 - 142
utils/kamctl/CMakeLists.txt

@@ -15,7 +15,20 @@ 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}")
 
-# Install kamctl
+set(KAMCTL_BASE_FILES
+    kamctl.base
+    kamctl.ctlbase
+    kamctl.db_berkeley
+    kamctl.dbtext
+    kamctl.mysql
+    kamctl.oracle
+    kamctl.pgsql
+    kamctl.rpcfifo
+    kamctl.ser
+    kamctl.sqlbase
+    kamctl.sqlite)
+
+# Install kamctl and it's database files
 add_custom_command(
   OUTPUT "${KAMCTL_TMP_DIR}/kamctl"
   COMMAND
@@ -23,93 +36,43 @@ add_custom_command(
     "s#/usr/local/lib/kamailio#${LIB_DIR}#g" -e
     "s#/usr/local/etc/kamailio#${CFG_DIR}#g" <
     ${CMAKE_CURRENT_SOURCE_DIR}/kamctl > ${KAMCTL_TMP_DIR}/kamctl
-  COMMENT "Processed kamctl with sed"
-)
+  COMMENT "Processed kamctl with sed")
 install(
   PROGRAMS ${KAMCTL_TMP_DIR}/kamctl
   DESTINATION ${CMAKE_INSTALL_SBINDIR}
-  COMPONENT kamailio-utils-bin
-)
-
-# Install kamctl.base
-add_custom_command(
-  OUTPUT "${KAMCTL_TMP_DIR}/kamctl.base"
-  COMMAND
-    sed -e "s#/usr/local/sbin#${BIN_DIR}#g" <
-    ${CMAKE_CURRENT_SOURCE_DIR}/kamctl.base > ${KAMCTL_TMP_DIR}/kamctl.base
-  COMMENT "Processed kamctl.base with sed"
-)
-install(
-  PROGRAMS ${KAMCTL_TMP_DIR}/kamctl.base
-  DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl
-  COMPONENT kamailio-utils-bin
-)
-
-# Install kamctl.ctlbase
-add_custom_command(
-  OUTPUT "${KAMCTL_TMP_DIR}/kamctl.ctlbase"
-  COMMAND
-    sed -e "s#/usr/local/sbin#${BIN_DIR}#g" <
-    ${CMAKE_CURRENT_SOURCE_DIR}/kamctl.ctlbase >
-    ${KAMCTL_TMP_DIR}/kamctl.ctlbase
-  COMMENT "Processed kamctl.ctlbase with sed"
-)
-install(
-  PROGRAMS ${KAMCTL_TMP_DIR}/kamctl.ctlbase
-  DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl
-  COMPONENT kamailio-utils-bin
-)
-
-# Install kamctl.rpcfifo
-add_custom_command(
-  OUTPUT "${KAMCTL_TMP_DIR}/kamctl.rpcfifo"
-  COMMAND
-    sed -e "s#/usr/local/sbin#${BIN_DIR}#g" <
-    ${CMAKE_CURRENT_SOURCE_DIR}/kamctl.rpcfifo >
-    ${KAMCTL_TMP_DIR}/kamctl.rpcfifo
-  COMMENT "Processed kamctl.rpcfifo with sed"
-)
-install(
-  PROGRAMS ${KAMCTL_TMP_DIR}/kamctl.rpcfifo
-  DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl
-  COMPONENT kamailio-utils-bin
-)
-
-# Install kamctl.ser
-add_custom_command(
-  OUTPUT "${KAMCTL_TMP_DIR}/kamctl.ser"
-  COMMAND sed -e "s#/usr/local/sbin#${BIN_DIR}#g" <
-          ${CMAKE_CURRENT_SOURCE_DIR}/kamctl.ser > ${KAMCTL_TMP_DIR}/kamctl.ser
-  COMMENT "Processed kamctl.ser with sed"
-)
-install(
-  PROGRAMS ${KAMCTL_TMP_DIR}/kamctl.ser
-  DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl
-  COMPONENT kamailio-utils-bin
-)
-
-# Install kamctl.sqlbase
-add_custom_command(
-  OUTPUT "${KAMCTL_TMP_DIR}/kamctl.sqlbase"
-  COMMAND
-    sed -e "s#/usr/local/sbin#${BIN_DIR}#g" <
-    ${CMAKE_CURRENT_SOURCE_DIR}/kamctl.sqlbase >
-    ${KAMCTL_TMP_DIR}/kamctl.sqlbase
-  COMMENT "Processed kamctl.sqlbase with sed"
-)
-install(
-  PROGRAMS ${KAMCTL_TMP_DIR}/kamctl.sqlbase
-  DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl
-  COMPONENT kamailio-utils-bin
-)
+  COMPONENT kamailio-utils-bin)
+
+# Create the depependencies list for the target kamctl
+set(KAMCTL_DEPENDENCIES "${KAMCTL_TMP_DIR}/kamctl")
+
+# Install kamctl.base and the rest
+foreach(FILE ${KAMCTL_BASE_FILES})
+  # Append to the depependencies list for the target kamctl
+  list(APPEND KAMCTL_DEPENDENCIES "${KAMCTL_TMP_DIR}/${FILE}")
+  add_custom_command(
+    OUTPUT "${KAMCTL_TMP_DIR}/${FILE}"
+    COMMAND sed -e "s#/usr/local/sbin#${BIN_DIR}#g" <
+            ${CMAKE_CURRENT_SOURCE_DIR}/${FILE} > ${KAMCTL_TMP_DIR}/${FILE}
+    COMMENT "Processed ${FILE} with sed")
+  install(
+    PROGRAMS ${KAMCTL_TMP_DIR}/${FILE}
+    DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl
+    COMPONENT kamailio-utils-bin)
+endforeach()
 
 # Kamctl target to depend on all kamctl files
-add_custom_target(
-  kamctl ALL
-  DEPENDS "${KAMCTL_TMP_DIR}/kamctl" "${KAMCTL_TMP_DIR}/kamctl.base"
-          "${KAMCTL_TMP_DIR}/kamctl.ctlbase" "${KAMCTL_TMP_DIR}/kamctl.rpcfifo"
-          "${KAMCTL_TMP_DIR}/kamctl.ser" "${KAMCTL_TMP_DIR}/kamctl.sqlbase"
-)
+add_custom_target(kamctl ALL DEPENDS ${KAMCTL_DEPENDENCIES})
+
+# Setup and install kamdbctl stuff
+set(KAMDB_BASE_FILES
+    kamdbctl.base
+    kamdbctl.db_berkeley
+    kamdbctl.dbtext
+    kamdbctl.mysql
+    kamdbctl.oracle
+    kamdbctl.pgsql
+    kamdbctl.sqlite
+    kamdbfunc.oracle)
 
 # Install kamdbctl
 add_custom_command(
@@ -119,33 +82,32 @@ add_custom_command(
     "s#/usr/local/lib/kamailio#${LIB_DIR}#g" -e
     "s#/usr/local/etc/kamailio#${CFG_DIR}#g" <
     ${CMAKE_CURRENT_SOURCE_DIR}/kamdbctl > ${KAMCTL_TMP_DIR}/kamdbctl
-  COMMENT "Processed kamdbctl with sed"
-)
+  COMMENT "Processed kamdbctl with sed")
 install(
   PROGRAMS ${KAMCTL_TMP_DIR}/kamdbctl
   DESTINATION ${CMAKE_INSTALL_SBINDIR}
-  COMPONENT kamailio-utils-bin
-)
-# Install db setup base script
-add_custom_command(
-  OUTPUT "${KAMCTL_TMP_DIR}/kamdbctl.base"
-  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}/kamdbctl.base > ${KAMCTL_TMP_DIR}/kamdbctl.base
-  COMMENT "Processed kamdbctl.base"
-)
-install(
-  PROGRAMS ${KAMCTL_TMP_DIR}/kamdbctl.base
-  DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl
-  COMPONENT kamailio-utils-bin
-)
-
-add_custom_target(
-  kamdbctl ALL DEPENDS "${KAMCTL_TMP_DIR}/kamdbctl"
-                       "${KAMCTL_TMP_DIR}/kamdbctl.base"
-)
+  COMPONENT kamailio-utils-bin)
+
+set(KAMDB_DEPENDENCIES "${KAMCTL_TMP_DIR}/kamdbctl")
+
+foreach(FILE ${KAMDB_BASE_FILES})
+  list(APPEND KAMDB_DEPENDENCIES "${KAMCTL_TMP_DIR}/${FILE}")
+  # Install db setup base script
+  add_custom_command(
+    OUTPUT "${KAMCTL_TMP_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} > ${KAMCTL_TMP_DIR}/${FILE}
+    COMMENT "Processed ${FILE}")
+  install(
+    PROGRAMS ${KAMCTL_TMP_DIR}/${FILE}
+    DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MAIN_NAME}/kamctl
+    COMPONENT kamailio-utils-bin)
+endforeach()
+
+add_custom_target(kamdbctl ALL DEPENDS ${KAMDB_DEPENDENCIES})
 
 # Install the configuration file (kamctlrc) using a CODE block to check
 # existence at install time instead of configure time
@@ -164,39 +126,33 @@ install(
             PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
     endif()
 "
-  COMPONENT kamailio-utils-cfg
-)
+  COMPONENT kamailio-utils-cfg)
 
 # Custom target for installing the kamailio-cfg component
 add_custom_target(
   install-kamailio-utils-cfg
   COMMAND ${CMAKE_COMMAND} --install . --component kamailio-utils-cfg
-  COMMENT "Installing kamailio-utils-cfg component"
-)
+  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 . --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 kamailio-utils-cfg and
                          # kamailio-utils-bin components"
-  DEPENDS install-kamailio-utils-cfg install-kamailio-utils-bin
-)
+  DEPENDS install-kamailio-utils-cfg install-kamailio-utils-bin)
 
 # ----------
-# dbschema target:
-# Old Makefiles: make dbschema declared in src/ Makefile
-# This was using the makefile found in src/lib/srdb1/schema folder.
+# dbschema target: Old Makefiles: make dbschema declared in src/ Makefile This
+# was using the makefile found in src/lib/srdb1/schema folder.
 #
-# TODO: Revise where we want the target declared.
-# New CMakelists.txt
-# Declare the target in srdb1 CMakeLists.txt file.
+# TODO: Revise where we want the target declared. New CMakelists.txt Declare the
+# target in srdb1 CMakeLists.txt file.
 
 find_program(XSLTPROC_EXECUTABLE xsltproc QUIET)
 
@@ -204,8 +160,7 @@ if(NOT XSLTPROC_EXECUTABLE)
   message(STATUS "xsltproc is not found. Skip dbschema target.")
 else()
   option(XSLT_VALIDATE, "Enable schema validation during XSL transformations"
-         ON
-  )
+         ON)
   option(XSLT_VERBOSE, "Enable verbose output for XSL transformations" OFF)
 
   set(XSLTPROC_FLAGS --xinclude)
@@ -232,15 +187,17 @@ else()
     list(APPEND EXTRACTED_TABLES "${TABLE_NAME}")
   endforeach()
   # Output the extracted table names
-  message(STATUS "Extracted Tables: ${EXTRACTED_TABLES}")
+  if(VERBOSE)
+    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 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"
-    )
+                                                "pi_framework_mod")
       set(db_name_folder xhttpi_pi)
     else()
       set(db_name_folder ${db_name})
@@ -249,8 +206,7 @@ else()
     add_custom_target(
       dbschema_${db_name}
       COMMAND ${CMAKE_COMMAND} -E make_directory "${db_name_folder}"
-      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-    )
+      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
 
     # Loop through each table and add a command for xsltproc
     foreach(TABLE ${EXTRACTED_TABLES})
@@ -258,8 +214,7 @@ 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 '')
       else()
         set(PREFIX "${TABLE}-")
@@ -274,19 +229,17 @@ else()
           --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()
 
     add_custom_target(
       dbschema_${db_name}_clean
       COMMAND ${CMAKE_COMMAND} -E remove_directory
-              "${CMAKE_CURRENT_BINARY_DIR}/${db_name_folder}"
-    )
+              "${CMAKE_CURRENT_BINARY_DIR}/${db_name_folder}")
   endfunction()
 
-  # Add targets for each database type
-  # Pi framework targets should combined into one
+  # Add targets for each database type Pi framework targets should combined into
+  # one
   add_db_target(pi_framework_table "${STYLESHEETS}/pi_framework_table.xsl")
   add_db_target(pi_framework_mod "${STYLESHEETS}/pi_framework_mod.xsl")
   add_db_target(mysql "${STYLESHEETS}/mysql.xsl")
@@ -309,8 +262,7 @@ else()
             dbschema_mongodb
             dbschema_db_redis
             dbschema_pi_framework_mod
-            dbschema_pi_framework_table
-  )
+            dbschema_pi_framework_table)
 
   add_custom_target(
     dbschema_clean
@@ -323,6 +275,5 @@ else()
             dbschema_mongodb_clean
             dbschema_db_redis_clean
             dbschema_pi_framework_mod_clean
-            dbschema_pi_framework_table_clean
-  )
+            dbschema_pi_framework_table_clean)
 endif()