1# 2# 3# 4 5# Kamailio database descriptions for modules 6TABLES := $(patsubst kamailio-%.xml,%,$(wildcard kamailio-*.xml)) 7 8ROOTDIR=../../../.. 9ROOTDOC=../../.. 10STYLESHEETS=$(ROOTDIR)/doc/stylesheets/dbschema_k/xsl 11SCHEME=$(ROOTDIR)/utils/kamctl/ 12 13#Stylesheet used to generate db_table nodes for pi_framework XML schema 14PI_FRAMEWORK_TABLE_XSL = $(STYLESHEETS)/pi_framework_table.xsl 15 16# Stylesheet used to generate mod nodes for pi_framework XML schema 17PI_FRAMEWORK_MOD_XSL = $(STYLESHEETS)/pi_framework_mod.xsl 18 19# Stylesheet used to generate MySQL database schema 20MYSQL_XSL = $(STYLESHEETS)/mysql.xsl 21 22# Stylesheet used to generate Postgres database schema 23POSTGRES_XSL = $(STYLESHEETS)/postgres.xsl 24 25# Stylesheet used to generate dbtext database schema 26DBTEXT_XSL = $(STYLESHEETS)/dbtext.xsl 27 28# Stylesheet used to generate berkeley database schema 29DB_BERKELEY_XSL = $(STYLESHEETS)/db_berkeley.xsl 30 31# Stylesheet used to generate sqlite database schema 32DB_SQLITE_XSL = $(STYLESHEETS)/db_sqlite.xsl 33 34# Stylesheet used to generate oracle database schema 35ORACLE_XSL = $(STYLESHEETS)/oracle.xsl 36 37# Stylesheet used to generate mongodb database schema 38MONGODB_XSL = $(STYLESHEETS)/mongodb.xsl 39 40# Stylesheet used to generate Redis database schema 41DB_REDIS_XSL = $(STYLESHEETS)/db_redis.xsl 42 43# Stylesheet used to generate docbook documentation 44DOCBOOK_XSL = $(STYLESHEETS)/docbook.xsl 45 46# Stylesheet used to generate modules templates header 47MODULES_H_XSL = $(STYLESHEETS)/modules_h.xsl 48 49# Stylesheet used to generate modules templates implementation 50MODULES_C_XSL = $(STYLESHEETS)/modules_c.xsl 51 52# Stylesheet used to generate modules documentation 53DBDOC_XSL = $(STYLESHEETS)/dbdoc.xsl 54 55# Enable/disable DTD validation 56VALIDATE = 0 57 58# Enable/disable verbose output (and DTD validation) 59VERBOSE = 0 60 61# XML Catalog used to resolve entities 62CATALOG = $(ROOTDIR)/doc/stylesheets/dbschema_k/catalog.xml 63 64XSLTPROC = /usr/bin/xsltproc 65XSLTPROC_FLAGS = --xinclude 66 67ifeq ($(VALIDATE), 0) 68 override XSLTPROC := $(XSLTPROC) --novalid 69endif 70 71ifeq ($(VERBOSE), 1) 72 override XSLTPROC := $(XSLTPROC) --verbose 73endif 74 75all: mysql postgres dbtext db_berkeley db_sqlite oracle mongodb db_redis pi_framework 76 77.PHONY: pi_framework pi_framework_clean 78pi_framework: 79 for FILE in $(TABLES); do \ 80 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 81 --stringparam dir "$(SCHEME)/xhttp_pi" \ 82 --stringparam prefix "$$FILE-" \ 83 $(PI_FRAMEWORK_TABLE_XSL) kamailio-"$$FILE".xml ; \ 84 done 85 for FILE in $(TABLES); do \ 86 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 87 --stringparam dir "$(SCHEME)/xhttp_pi" \ 88 --stringparam prefix "$$FILE-" \ 89 $(PI_FRAMEWORK_MOD_XSL) kamailio-"$$FILE".xml ; \ 90 done 91 cat $(SCHEME)/xhttp_pi/pi_framework-00 \ 92 $(SCHEME)/xhttp_pi/*-table \ 93 $(SCHEME)/xhttp_pi/pi_framework-01 \ 94 $(SCHEME)/xhttp_pi/*-mod \ 95 $(SCHEME)/xhttp_pi/pi_framework-02 > \ 96 $(SCHEME)/xhttp_pi/pi_framework.xml 97 98pi_framework_clean: 99 -@rm -f $(ROOTDIR)/scripts/xhttp_pi/*-table 100 -@rm -f $(ROOTDIR)/scripts/xhttp_pi/*-mod 101 102.PHONY: mysql mysql_clean 103mysql: 104 for FILE in $(TABLES); do \ 105 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 106 --stringparam dir "$(SCHEME)/mysql" \ 107 --stringparam prefix "$$FILE-" \ 108 --stringparam db "mysql" \ 109 $(MYSQL_XSL) kamailio-"$$FILE".xml ; \ 110 done 111 112mysql_clean: 113 -@rm -f $(SCHEME)/mysql/* 114 115.PHONY: postgres postgres_clean 116postgres: 117 for FILE in $(TABLES); do \ 118 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 119 --stringparam dir "$(SCHEME)/postgres" \ 120 --stringparam prefix "$$FILE-" \ 121 --stringparam db "postgres" \ 122 $(POSTGRES_XSL) kamailio-"$$FILE".xml ; \ 123 done 124 125postgres_clean: 126 -@rm -f $(SCHEME)/postgres/* 127 128.PHONY: oracle oracle_clean 129oracle: 130 for FILE in $(TABLES); do \ 131 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 132 --stringparam dir "$(SCHEME)/oracle" \ 133 --stringparam prefix "$$FILE-" \ 134 --stringparam db "oracle" \ 135 $(ORACLE_XSL) kamailio-"$$FILE".xml ; \ 136 done 137 138oracle_clean: 139 -@rm -f $(SCHEME)/oracle/*.sql 140 141.PHONY: dbtext dbtext_clean 142dbtext: 143 for FILE in $(TABLES); do \ 144 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 145 --stringparam dir "$(SCHEME)/dbtext/kamailio" \ 146 --stringparam prefix "" \ 147 --stringparam db "dbtext" \ 148 $(DBTEXT_XSL) kamailio-"$$FILE".xml ; \ 149 done 150 TMPFILE=`mktemp -t kamailio-test.XXXXXXXXXX` 151 # small hack to create the version table entries, this is here easier as with XSL 152 for FILE in $(sort $(wildcard $(SCHEME)/dbtext/kamailio/*)) ; do \ 153 if [ -f "$$FILE" ]; then \ 154 if [ "$$FILE" != "$(SCHEME)/dbtext/kamailio/version" ]; then \ 155 tail -n 1 "$$FILE" >> "$(SCHEME)/dbtext/kamailio/version" ; \ 156 head -n 1 "$$FILE" > $TMPFILE ; \ 157 cp $TMPFILE "$$FILE" ; \ 158 fi ; \ 159 fi ; \ 160 done ; \ 161 rm -f $TMPFILE 162 163dbtext_clean: 164 -@rm -f $(SCHEME)/dbtext/kamailio/* 165 166.PHONY: db_berkeley db_berkeley_clean 167db_berkeley: 168 for FILE in $(TABLES); do \ 169 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 170 --stringparam dir "$(SCHEME)/db_berkeley/kamailio" \ 171 --stringparam prefix "" \ 172 --stringparam db "db_berkeley" \ 173 $(DB_BERKELEY_XSL) kamailio-"$$FILE".xml ; \ 174 done 175 TMPFILE=`mktemp -t kamailio-test.XXXXXXXXXX` 176 # small hack to create the version table entries, this is here easier as with XSL 177 for FILE in $(sort $(wildcard $(SCHEME)/db_berkeley/kamailio/*)) ; do \ 178 if [ -f "$$FILE" ]; then \ 179 if [ "$$FILE" != "$(SCHEME)/db_berkeley/kamailio/version" ]; then \ 180 tail -n 2 "$$FILE" >> "$(SCHEME)/db_berkeley/kamailio/version" ; \ 181 head -n 10 "$$FILE" > $TMPFILE ; \ 182 cp $TMPFILE "$$FILE" ; \ 183 fi ; \ 184 fi ; \ 185 done ; \ 186 rm -f $TMPFILE 187 188db_berkeley_clean: 189 -@rm -f $(SCHEME)/db_berkeley/kamailio/* 190 191 192.PHONY: db_sqlite db_sqlite_clean 193db_sqlite: 194 for FILE in $(TABLES); do \ 195 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 196 --stringparam dir "$(SCHEME)/db_sqlite" \ 197 --stringparam prefix "$$FILE-" \ 198 --stringparam db "db_sqlite" \ 199 $(DB_SQLITE_XSL) kamailio-"$$FILE".xml ; \ 200 done 201 202db_sqlite_clean: 203 -@rm -f $(SCHEME)/db_sqlite/* 204 205.PHONY: mongodb mongodb_clean 206mongodb: 207 for FILE in $(TABLES); do \ 208 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 209 --stringparam dir "$(SCHEME)/mongodb/kamailio" \ 210 --stringparam prefix "" \ 211 --stringparam db "mongodb" \ 212 $(MONGODB_XSL) kamailio-"$$FILE".xml ; \ 213 done 214 @# small hack to create the version table entries, this is here easier as with XSL 215 @echo "use kamailio;" \ 216 > "$(SCHEME)/mongodb/kamailio/version-create.mongo" ; 217 @echo "db.createCollection(\"version\");" \ 218 >> "$(SCHEME)/mongodb/kamailio/version-create.mongo" ; 219 @for FILE in $(sort $(wildcard $(SCHEME)/mongodb/kamailio/*.json)) ; do \ 220 if [ -f "$$FILE" ]; then \ 221 if [ "$$FILE" != "$(SCHEME)/mongodb/kamailio/version.json" ]; then \ 222 VN=`grep '"version":' "$$FILE" | grep -o -E '[0-9]+'` ; \ 223 FN=`basename $$FILE .json` ;\ 224 echo "db.getCollection(\"version\").insert({ table_name: \"$$FN\", table_version: NumberInt($$VN) });" \ 225 >> "$(SCHEME)/mongodb/kamailio/version-create.mongo" ; \ 226 fi ; \ 227 fi ; \ 228 done ; \ 229 230mongodb_clean: 231 -@rm -f $(SCHEME)/mongodb/kamailio/* 232 233.PHONY: db_redis db_redis_clean 234db_redis: 235 for FILE in $(TABLES); do \ 236 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 237 --stringparam dir "$(SCHEME)/db_redis/kamailio" \ 238 --stringparam prefix "" \ 239 --stringparam db "db_redis" \ 240 $(DB_REDIS_XSL) kamailio-"$$FILE".xml ; \ 241 done 242 243db_redis_clean: 244 -@rm -f $(SCHEME)/db_redis/* 245 246.PHONY: docbook-xml 247docbook-xml: 248 for FILE in $(TABLES); do \ 249 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 250 --stringparam dir "$(ROOTDIR)/doc/databases/kamailio" \ 251 --stringparam prefix "$$FILE-" \ 252 $(DOCBOOK_XSL) kamailio-"$$FILE".xml ; \ 253 done 254 # link all documents to one file, to get nicer output 255 echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" \ 256 > "$(ROOTDIR)/doc/databases/kamailio/tables.xml" 257 echo "<!DOCTYPE book PUBLIC \"-//OASIS//DTD DocBook XML V4.4//EN\"" \ 258 >> "$(ROOTDIR)/doc/databases/kamailio/tables.xml" 259 echo " \"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd\" [" \ 260 >> "$(ROOTDIR)/doc/databases/kamailio/tables.xml" 261 # include general documentation entities 262 echo " <!ENTITY % docentities SYSTEM \"$(ROOTDOC)/doc/docbook/entities.xml\">" \ 263 >> "$(ROOTDIR)/doc/databases/kamailio/tables.xml" 264 echo " %docentities;" \ 265 >> "$(ROOTDIR)/doc/databases/kamailio/tables.xml" 266 echo "]>" \ 267 >> "$(ROOTDIR)/doc/databases/kamailio/tables.xml" 268 echo "<book xmlns:xi=\"http://www.w3.org/2001/XInclude\">" \ 269 >> "$(ROOTDIR)/doc/databases/kamailio/tables.xml" 270 # add bookinfo 271 cat "$(ROOTDIR)/doc/stylesheets/dbschema_k/bookinfo.xml" | tail -n +2 \ 272 >> "$(ROOTDIR)/doc/databases/kamailio/tables.xml" 273 # actually include the entities 274 for FILE in $(sort $(wildcard $(ROOTDIR)/doc/databases/kamailio/*-dbschema.xml)); do \ 275 echo " <xi:include href=\"$$(basename $$FILE)\" />" \ 276 >> "$(ROOTDIR)/doc/databases/kamailio/tables.xml" ; \ 277 done 278 echo "</book>" \ 279 >> "$(ROOTDIR)/doc/databases/kamailio/tables.xml" 280 # generate makefile 281 echo "docs = tables.xml" \ 282 > "$(ROOTDIR)/doc/databases/kamailio/Makefile" 283 echo \ 284 >> "$(ROOTDIR)/doc/databases/kamailio/Makefile" 285 echo "docbook_dir = $(ROOTDOC)/doc/docbook" \ 286 >> "$(ROOTDIR)/doc/databases/kamailio/Makefile" 287 echo "include \$$(docbook_dir)/Makefile" \ 288 >> "$(ROOTDIR)/doc/databases/kamailio/Makefile" 289 290.PHONY: docbook-sgml 291docbook-sgml: 292 for FILE in $(TABLES); do \ 293 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 294 --stringparam dir "$(ROOTDIR)/doc/databases/kamailio" \ 295 --stringparam prefix "$$FILE-" \ 296 $(DOCBOOK_XSL) kamailio-"$$FILE".xml ; \ 297 done ; \ 298 # link all documents to one file, to get nicer output 299 printf "<!DOCTYPE book PUBLIC \"-//OASIS//DTD DocBook V4.4//EN\"" \ 300 > "$(ROOTDIR)/doc/databases/kamailio/tables.sgml" 301 echo " \"http://www.oasis-open.org/docbook/sgml/4.4/docbook.dtd\" [" \ 302 >> "$(ROOTDIR)/doc/databases/kamailio/tables.sgml" 303 # create entities, as xi:include is not available in sgml docbook 304 # substitute '-' for '_', docbook smgl don't like this 305 for FILE in $(sort $(wildcard $(ROOTDIR)/doc/databases/kamailio/*.xml)); do \ 306 echo " <!ENTITY `basename "$$FILE" | sed -e 's#_#-#g'` SYSTEM \"$$(basename $$FILE)\">" \ 307 >> "$(ROOTDIR)/doc/databases/kamailio/tables.sgml" ; \ 308 done ; \ 309 # include general documentation entities 310 echo " <!ENTITY % docentities SYSTEM \"$(ROOTDOC)/doc/docbook/entities.xml\"> %docentities;" \ 311 >> "$(ROOTDIR)/doc/databases/kamailio/tables.sgml" ; \ 312 echo "]>" >> "$(ROOTDIR)/doc/databases/kamailio/tables.sgml" 313 # add bookinfo 314 cat "$(ROOTDIR)/doc/stylesheets/dbschema_k/bookinfo.xml" \ 315 >> "$(ROOTDIR)/doc/databases/kamailio/tables.sgml" 316 # actually include the entities 317 for FILE in $(wildcard $(ROOTDIR)/doc/databases/kamailio/*.xml); do \ 318 echo " &`basename "$$FILE" | sed -e 's#_#-#g'`;" \ 319 >> "$(ROOTDIR)/doc/databases/kamailio/tables.sgml" ; \ 320 done ; \ 321 echo "</book>" >> "$(ROOTDIR)/doc/databases/kamailio/tables.sgml" 322 323.PHONY: docbook docbook_clean 324docbook: docbook-xml 325 326docbook_clean: 327 -@rm -f $(ROOTDIR)/doc/databases/kamailio/*.xml 328 -@rm -f $(ROOTDIR)/doc/databases/kamailio/tables.sgml 329 330.PHONY: modules modules_clean 331modules: 332 for FILE in $(TABLES); do \ 333 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 334 --stringparam dir "$(ROOTDIR)/modules_k/$$FILE/" \ 335 --stringparam prefix "$$FILE" \ 336 --stringparam db "modules" \ 337 $(MODULES_H_XSL) kamailio-"$$FILE".xml ; \ 338 done 339 for FILE in $(TABLES); do \ 340 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 341 --stringparam dir "$(ROOTDIR)/modules_k/$$FILE/" \ 342 --stringparam prefix "$$FILE" \ 343 --stringparam db "modules" \ 344 $(MODULES_C_XSL) kamailio-"$$FILE".xml ; \ 345 done 346 347modules_clean: 348 for FILE in $(TABLES); do \ 349 rm -f $(ROOTDIR)/modules/$$FILE/db_*.c; \ 350 rm -f $(ROOTDIR)/modules/$$FILE/db_*.h; \ 351 done 352 353dbdoc: 354 for FILE in $(TABLES); do \ 355 XML_CATALOG_FILES=$(CATALOG) $(XSLTPROC) $(XSLTPROC_FLAGS) \ 356 --stringparam dir "$(ROOTDIR)/modules_k/$$FILE/doc/" \ 357 --stringparam prefix "$$FILE" \ 358 --stringparam db "modules" \ 359 $(DBDOC_XSL) kamailio-"$$FILE".xml ; \ 360 done 361 362dbdoc_clean: 363 for FILE in $(TABLES); do \ 364 rm -f $(ROOTDIR)/modules/$$FILE/doc/*_db.xml; \ 365 done 366 367.PHONY: clean 368clean: mysql_clean postgres_clean oracle_clean dbtext_clean db_berkeley_clean db_sqlite_clean mongodb_clean db_redis_clean pi_framework_clean docbook_clean # modules_clean dbdoc_clean 369