doc: *_list makefiles and files lists updates
authorAndrei Pelinescu-Onciul <andrei@iptel.org>
Sat, 6 Mar 2010 12:57:46 +0000 (13:57 +0100)
committerAndrei Pelinescu-Onciul <andrei@iptel.org>
Sat, 6 Mar 2010 12:57:46 +0000 (13:57 +0100)
- added new makefile targets: gen-files-list (generate the file
  lists in a makefile-ready-to-paste format), diff-list
   (searches for files and prints the one which are not listed
   in the makefile).
- updated make autogen to obey the excluded file and group lists
- updated the files lists for cfg_list, rpc_list and select_list.
  Now they are in alphabetical order, with core groups first, as
  generated by make gen-files-list.
- fixed title for the config var list

doc/cfg_list/Makefile
doc/rpc_list/Makefile
doc/select_list/Makefile

index 950867e..c72f621 100644 (file)
@@ -11,17 +11,23 @@ txt_output_dir=.
 # output directory for generated docbook xml files
 docbook_output_dir=docbook
 
-# list of files contanining cfg defs in the following format:
+# list of files containing cfg defs in the following format:
 # <filename>:<cfg_grp_name> 
-# can be easily filled/updated by pasting the output of:
-#  make print-lst |sed  -e 's!^ \?../..\(.*\)!$(COREPATH)\1 \\!'
-files_list=$(COREPATH)/cfg_core.c:core $(COREPATH)/tcp_options.c:tcp \
-                       $(COREPATH)/sctp_options.c:sctp \
-                       $(COREPATH)/modules_s/maxfwd/maxfwd.c:maxfwd \
-                       $(COREPATH)/modules/tm/config.c:tm \
-                       $(COREPATH)/modules_k/siputils/config.c:siputils \
-                       $(COREPATH)/modules_k/registrar/config.c:registrar \
-                       $(COREPATH)/modules_k/ratelimit/config.c:ratelimit
+# can be easily updated by adding the output of:
+#   make diff-list   (which obeys grp_exclude and file_exclude)
+# or completely regenerated by replacing files_list with the output of:
+#   make gen-files-list
+files_list= \
+       $(COREPATH)/cfg_core.c:core \
+       $(COREPATH)/sctp_options.c:sctp \
+       $(COREPATH)/tcp_options.c:tcp \
+       $(COREPATH)/modules/tm/config.c:tm \
+       $(COREPATH)/modules_k/ratelimit/config.c:ratelimit \
+       $(COREPATH)/modules_k/registrar/config.c:registrar \
+       $(COREPATH)/modules_k/siputils/config.c:siputils \
+       $(COREPATH)/modules_s/maxfwd/maxfwd.c:maxfwd
+
+
 
 # list of excluded groups
 grp_exclude=pa
@@ -49,9 +55,11 @@ endif
 # command used for gcc (contains extra includes)
 gcc=gcc -I$(COREPATH)/lib -I/usr/include/libxml2
 
+filter_files=$(filter-out $(addsuffix %,$(file_exclude)),\
+                               $(filter-out $(addprefix %:,$(grp_exclude)),$(1)))
+
 #filtered files list
-flist=$(filter-out $(addsuffix %,$(file_exclude)),\
-                       $(filter-out $(addprefix %:,$(grp_exclude)),$(files_list)) )
+flist=$(call filter_files,$(files_list))
 
 # throws an error if input is not in the format filename:grp
 check_fname_grp=$(if $(filter-out 2,$(words $(subst :, ,$(1)))),\
@@ -112,6 +120,36 @@ clean_docbook: clean_$$(call get_target,$(1)).xml
 
 endef
 
+find_cfg_files_cmd= find $(COREPATH) -type f -name "*.c" \
+               -exec grep "cfg_def_t[   ][a-zA-Z0-9_]*\[\][     ]*=" /dev/null {} \; \
+               | cut -d: -f1
+
+# shell command to generate a file:grp list from a list of files
+# grp will be the modulename if the file is in a module directory or
+# the file name with the extension and _cfg, cfg_ or _options stripped out of
+# it.
+# output: list of  " "filename":"grpname
+gen_file_grp_cmd=\
+sed -e "s!\(.*/modules[^/]*/\([^/][^/]*\)/.*\)! \1:\2!" \
+    -e "s!^\([^ ].*/\([^/.]*\)[^/]*$$\)!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)_cfg[_]*!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)cfg[_]*!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)_options[_]*!\1:\2!"
+
+# special vars for generating the list of files or updates
+found_lst=$(shell $(find_cfg_files_cmd) | $(gen_file_grp_cmd))
+# filtered found lst
+f_found_lst=$(call filter_files,$(found_lst))
+diff_lst=$(filter-out $(flist),$(f_found_lst))
+
+
+get_core_files=$(filter-out $(COREPATH)/modules% $(COREPATH)/lib%,$(1))
+sort_files=$(sort $(call get_core_files,$(1)))\
+                       $(sort $(filter-out $(call get_core_files,$(1)),$(1)))
+
+# replace $(COREPATH) with the text "$(COREPATH)"
+subst_corepath=$(patsubst $(patsubst %/,%,$(COREPATH))/%,\$$(COREPATH)/%,$(1))
+
 
 # help will be the default rule (on-purpose since without having a patched
 # GCC:TranslationUnit module, make all won't work)
@@ -155,7 +193,7 @@ ifeq ($(repo_ver),git-)
 repo_ver="sip-router unknown"
 endif
 
-$(docbook_output_dir)/cfg_var_list.xml: \
+$(docbook_output_dir)/cfg_var_list.xml: Makefile \
                $(foreach f,$(flist),$(docbook_output_dir)/$(call get_target,$f).xml)
        @echo '<?xml version="1.0" encoding="UTF-8"?>' >$@
        @echo '<!-- this file is autogenerated, do not edit! -->' >>$@
@@ -163,7 +201,7 @@ $(docbook_output_dir)/cfg_var_list.xml: \
        @echo ' "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">' >>$@
        @echo '<book id="cfg_var_list"'\
                'xmlns:xi="http://www.w3.org/2001/XInclude">' >>$@
-       @echo ' <title>RPC Exports List</title>' >>$@
+       @echo ' <title>Runtime Configuration Variables List</title>' >>$@
        @echo ' <info><revhistory><revision>' >>$@
        @echo '         <revnumber>'$(repo_ver)'</revnumber>' >>$@
        @echo '         <revremark>' >>$@
@@ -177,22 +215,6 @@ $(docbook_output_dir)/cfg_var_list.xml: \
                        >>$@ ; )
        @echo '</book>' >>$@
 
-find_cfg_files_cmd= find $(COREPATH) -type f -name "*.c" \
-               -exec grep "cfg_def_t[   ][a-zA-Z0-9_]*\[\][     ]*=" /dev/null {} \; \
-               | cut -d: -f1
-
-# shell command to generate a file:grp list from a list of files
-# grp will be the modulename if the file is in a module directory or
-# the file name with the extension and _cfg, cfg_ or _options stripped out of
-# it.
-# output: list of  " "filename":"grpname
-gen_file_grp_cmd=\
-sed -e "s!\(.*/modules[^/]*/\([^/][^/]*\)/.*\)! \1:\2!" \
-    -e "s!^\([^ ].*/\([^/.]*\)[^/]*$$\)!\1:\2!" \
-    -e "s!^\([^ :]*\):\(.*\)_cfg[_]*!:\1:\2!" \
-    -e "s!^\([^ :]*\):\(.*\)cfg[_]*!\1:\2!" \
-    -e "s!^\([^ :]*\):\(.*\)_options[_]*!\1:\2!"
-
 # finds all the files containing cfg defs
 .PHONY: find
 find:
@@ -203,10 +225,25 @@ find:
 print-lst:
        @$(find_cfg_files_cmd) | $(gen_file_grp_cmd)
 
+#
+.PHONY: gen-file-list
+.PHONY: gen-files_list
+.PHONY: gen_files_list
+gen-file-list gen-files-list gen_files_list:
+       @$(foreach f,$(call subst_corepath,$(call sort_files,$(f_found_lst))),\
+               echo "$f \\";)
+
+.PHONY: check-list
+.PHONY: update-list
+.PHONY: diff-list
+check-list update-list diff-list:
+       @$(foreach f,$(call subst_corepath,$(call sort_files,$(diff_lst))),\
+               echo "$f \\";)
+
+
 # try to generate the docs from all the sources
 .PHONY: autogen
 autogen:
-       LST=`$(find_cfg_files_cmd)| $(gen_file_grp_cmd) | xargs echo` && \
-       [ -n "$$LST" ] && $(MAKE) all files_list="$$LST"
+       @$(MAKE) all files_list="$(call sort_files,$(f_found_lst))"
 
 $(foreach f,$(flist),$(eval $(call mk_rules,$(f))))
index e3a2059..dbcea55 100644 (file)
@@ -11,41 +11,44 @@ txt_output_dir=.
 # output directory for generated docbook xml files
 docbook_output_dir=docbook
 
-# list of files contanining rpc defs in the following format:
+# list of files containing rpc defs in the following format:
 # <filename>:<cfg_grp_name> 
-# can be easily filled/updated by pasting the output of:
-#  make print-lst |sed  -e 's!^ \?../..\(.*\)!$(COREPATH)\1 \\!'
-files_list= $(COREPATH)/core_cmd.c:core \
-       $(COREPATH)/modules_s/pdt/pdt.c:pdt \
-       $(COREPATH)/modules_s/pike/rpc.c:pike \
-       $(COREPATH)/modules_s/presence_b2b/rpc.c:presence_b2b \
-       $(COREPATH)/modules_s/gflags/gflags.c:gflags \
-       $(COREPATH)/modules_s/dispatcher/ds_rpc.c:dispatcher \
-       $(COREPATH)/modules_s/prefix_route/pr_rpc.c:prefix_route \
-       $(COREPATH)/modules_s/domain/domain_rpc.c:domain \
-       $(COREPATH)/modules_s/cpl-c/cpl_rpc.c:cpl-c \
-       $(COREPATH)/modules_s/sl/sl_stats.c:sl \
-       $(COREPATH)/modules_s/usrloc/ul_rpc.c:usrloc_s \
-       $(COREPATH)/modules_s/ratelimit/ratelimit.c:ratelimit \
-       $(COREPATH)/modules/tm/tm.c:tm \
-       $(COREPATH)/modules/tls/tls_rpc.c:tls \
-       $(COREPATH)/modules/lcr/lcr_rpc.c:lcr \
-       $(COREPATH)/modules/debugger/debugger_api.c:debugger \
-       $(COREPATH)/modules/ctl/ctl.c:ctl \
+# can be easily updated by adding the output of:
+#   make diff-list   (which obeys grp_exclude and file_exclude)
+# or completely regenerated by replacing files_list with the output of:
+#   make gen-files-list
+files_list= \
+       $(COREPATH)/core_cmd.c:core \
        $(COREPATH)/modules/cfg_rpc/cfg_rpc.c:cfg_rpc \
+       $(COREPATH)/modules/ctl/ctl.c:ctl \
        $(COREPATH)/modules/db_flatstore/flat_rpc.c:db_flatstore \
+       $(COREPATH)/modules/debugger/debugger_api.c:debugger \
+       $(COREPATH)/modules/lcr/lcr_rpc.c:lcr \
        $(COREPATH)/modules/mi_rpc/mi_rpc_mod.c:mi_rpc \
+       $(COREPATH)/modules/tls/tls_rpc.c:tls \
+       $(COREPATH)/modules/tm/tm.c:tm \
        $(COREPATH)/modules_k/htable/htable.c:htable \
+       $(COREPATH)/modules_k/uac/uac_reg.c:uac \
        $(COREPATH)/modules_k/usrloc/ul_rpc.c:usrloc_k \
-       $(COREPATH)/modules_k/uac/uac_reg.c:uac
+       $(COREPATH)/modules_s/cpl-c/cpl_rpc.c:cpl-c \
+       $(COREPATH)/modules_s/dispatcher/ds_rpc.c:dispatcher \
+       $(COREPATH)/modules_s/domain/domain_rpc.c:domain \
+       $(COREPATH)/modules_s/gflags/gflags.c:gflags \
+       $(COREPATH)/modules_s/pdt/pdt.c:pdt \
+       $(COREPATH)/modules_s/pike/rpc.c:pike \
+       $(COREPATH)/modules_s/prefix_route/pr_rpc.c:prefix_route \
+       $(COREPATH)/modules_s/presence_b2b/rpc.c:presence_b2b \
+       $(COREPATH)/modules_s/ratelimit/ratelimit.c:ratelimit \
+       $(COREPATH)/modules_s/sl/sl_stats.c:sl \
+       $(COREPATH)/modules_s/usrloc/ul_rpc.c:usrloc_s
+
 
 
 # list of excluded groups
 grp_exclude=pa
 # list of file prefixes to exclude (full path needed)
 file_exclude=$(COREPATH)/modules_s/tls/ \
-                               $(COREPATH)/obsolete/pa/ \
-                               $(COREPATH)/obsolete/rls/
+                               $(COREPATH)/obsolete
 
 # special per file group overrides
 # format= grp_filename=... ,where filename does not contain the extension
@@ -68,9 +71,11 @@ endif
 # command used for gcc (contains extra includes)
 gcc=gcc -I$(COREPATH)/lib -I/usr/include/libxml2
 
+filter_files=$(filter-out $(addsuffix %,$(file_exclude)),\
+                               $(filter-out $(addprefix %:,$(grp_exclude)),$(1)))
+
 #filtered files list
-flist=$(filter-out $(addsuffix %,$(file_exclude)),\
-                       $(filter-out $(addprefix %:,$(grp_exclude)),$(files_list)) )
+flist=$(call filter_files,$(files_list))
 
 # throws an error if input is not in the format filename:grp
 check_fname_grp=$(if $(filter-out 2,$(words $(subst :, ,$(1)))),\
@@ -131,6 +136,36 @@ clean_docbook: clean_$$(call get_target,$(1)).xml
 
 endef
 
+find_rpc_files_cmd= find $(COREPATH) -type f -name "*.c" \
+               -exec grep "rpc_export_t[        ][a-zA-Z0-9_]*\[\][     ]*=" /dev/null {} \; \
+               | cut -d: -f1
+
+# shell command to generate a file:grp list from a list of files
+# grp will be the modulename if the file is in a module directory or
+# the file name with the extension and _cmd, cmd_ or _rpc stripped out of
+# it.
+# output: list of  " "filename":"grpname
+gen_file_grp_cmd=\
+sed -e "s!\(.*/modules[^/]*/\([^/][^/]*\)/.*\)! \1:\2!" \
+    -e "s!^\([^ ].*/\([^/.]*\)[^/]*$$\)!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)_cmd[_]*!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)cmd[_]*!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)_rpc[_]*!\1:\2!"
+
+# special vars for generating the list of files or updates
+found_lst=$(shell $(find_rpc_files_cmd) | $(gen_file_grp_cmd))
+# filtered found lst
+f_found_lst=$(call filter_files,$(found_lst))
+diff_lst=$(filter-out $(flist),$(f_found_lst))
+
+
+get_core_files=$(filter-out $(COREPATH)/modules% $(COREPATH)/lib%,$(1))
+sort_files=$(sort $(call get_core_files,$(1)))\
+                       $(sort $(filter-out $(call get_core_files,$(1)),$(1)))
+
+# replace $(COREPATH) with the text "$(COREPATH)"
+subst_corepath=$(patsubst $(patsubst %/,%,$(COREPATH))/%,\$$(COREPATH)/%,$(1))
+
 
 # help will be the default rule (on-purpose since without having a patched
 # GCC:TranslationUnit module, make all won't work)
@@ -174,7 +209,7 @@ ifeq ($(repo_ver),git-)
 repo_ver="sip-router unknown"
 endif
 
-$(docbook_output_dir)/rpc_list.xml: \
+$(docbook_output_dir)/rpc_list.xml: Makefile \
                $(foreach f,$(flist),$(docbook_output_dir)/$(call get_target,$f).xml)
        @echo '<?xml version="1.0" encoding="UTF-8"?>' >$@
        @echo '<!-- this file is autogenerated, do not edit! -->' >>$@
@@ -196,22 +231,6 @@ $(docbook_output_dir)/rpc_list.xml: \
                        >>$@ ; )
        @echo '</book>' >>$@
 
-find_rpc_files_cmd= find $(COREPATH) -type f -name "*.c" \
-               -exec grep "rpc_export_t[        ][a-zA-Z0-9_]*\[\][     ]*=" /dev/null {} \; \
-               | cut -d: -f1
-
-# shell command to generate a file:grp list from a list of files
-# grp will be the modulename if the file is in a module directory or
-# the file name with the extension and _cmd, cmd_ or _rpc stripped out of
-# it.
-# output: list of  " "filename":"grpname
-gen_file_grp_cmd=\
-sed -e "s!\(.*/modules[^/]*/\([^/][^/]*\)/.*\)! \1:\2!" \
-    -e "s!^\([^ ].*/\([^/.]*\)[^/]*$$\)!\1:\2!" \
-    -e "s!^\([^ :]*\):\(.*\)_cmd[_]*!\1:\2!" \
-    -e "s!^\([^ :]*\):\(.*\)cmd[_]*!\1:\2!" \
-    -e "s!^\([^ :]\):\(.*\)_rpc[_]*!\1:\2!"
-
 # finds all the files containing cfg defs
 .PHONY: find
 find:
@@ -222,10 +241,25 @@ find:
 print-lst:
        @$(find_rpc_files_cmd) | $(gen_file_grp_cmd)
 
+#
+.PHONY: gen-file-list
+.PHONY: gen-files_list
+.PHONY: gen_files_list
+gen-file-list gen-files-list gen_files_list:
+       @$(foreach f,$(call subst_corepath,$(call sort_files,$(f_found_lst))),\
+               echo "$f \\";)
+
+.PHONY: check-list
+.PHONY: update-list
+.PHONY: diff-list
+check-list update-list diff-list:
+       @$(foreach f,$(call subst_corepath,$(call sort_files,$(diff_lst))),\
+               echo "$f \\";)
+
+
 # try to generate the docs from all the sources
 .PHONY: autogen
 autogen:
-       LST=`$(find_rpc_files_cmd)| $(gen_file_grp_cmd) | xargs echo` && \
-       [ -n "$$LST" ] && $(MAKE) all files_list="$$LST"
+       @$(MAKE) all files_list="$(call sort_files,$(f_found_lst))"
 
 $(foreach f,$(flist),$(eval $(call mk_rules,$(f))))
index a41b226..b50c852 100644 (file)
@@ -16,22 +16,26 @@ txt_output_dir=.
 # output directory for generated docbook xml files
 docbook_output_dir=docbook
 
-# list of files contanining selects defs in the following format:
+# list of files containing selects defs in the following format:
 # <filename>:<sel_grp_name> 
-# can be easily filled/updated by pasting the output of:
-#  make print-lst |sed  -e 's!^ \?../..\(.*\)!$(COREPATH)\1 \\!'
-files_list=$(COREPATH)/select_core.c:core \
-       $(COREPATH)/modules_s/timer/timer.c:timer \
-       $(COREPATH)/modules_s/nathelper/nathelper.c:nathelper \
+# can be easily updated by adding the output of:
+#   make diff-list   (which obeys grp_exclude and file_exclude)
+# or completely regenerated by replacing files_list with the output of:
+#   make gen-files-list
+files_list= \
+       $(COREPATH)/select_core.c:core \
+       $(COREPATH)/modules/tls/tls_select.c:tls \
+       $(COREPATH)/modules/tm/select.c:tm \
+       $(COREPATH)/modules/xmlrpc/xmlrpc.c:xmlrpc \
+       $(COREPATH)/modules_s/avp/avp.c:avp \
+       $(COREPATH)/modules_s/db_ops/db_ops.c:db_ops \
        $(COREPATH)/modules_s/eval/eval.c:eval \
+       $(COREPATH)/modules_s/nathelper/nathelper.c:nathelper \
        $(COREPATH)/modules_s/rr/rr_mod.c:rr \
        $(COREPATH)/modules_s/textops/textops.c:textops \
-       $(COREPATH)/modules_s/avp/avp.c:avp \
-       $(COREPATH)/modules_s/db_ops/db_ops.c:db_ops \
-       $(COREPATH)/modules/tm/select.c:tm \
-       $(COREPATH)/modules/tls/tls_select.c:tls \
-       $(COREPATH)/modules/xmlrpc/xmlrpc.c:xmlrpc \
-       $(COREPATH)/modules/iptrtpproxy/iptrtpproxy.c:iptrtpproxy
+       $(COREPATH)/modules_s/timer/timer.c:timer
+
+
 
 # list of excluded groups
 grp_exclude=pa iptrtpproxy
@@ -60,9 +64,11 @@ endif
 # command used for gcc (contains extra includes)
 gcc=gcc -I$(COREPATH)/lib -I/usr/include/libxml2
 
+filter_files=$(subst .h:,.c:, $(filter-out $(addsuffix %,$(file_exclude)),\
+                               $(filter-out $(addprefix %:,$(grp_exclude)),$(1))) )
+
 #filtered files list
-flist=$(subst .h:,.c:, $(filter-out $(addsuffix %,$(file_exclude)),\
-                       $(filter-out $(addprefix %:,$(grp_exclude)),$(files_list)) ) )
+flist=$(call filter_files,$(files_list))
 
 # throws an error if input is not in the format filename:grp
 check_fname_grp=$(if $(filter-out 2,$(words $(subst :, ,$(1)))),\
@@ -125,6 +131,40 @@ clean_docbook: clean_$$(call get_target,$(1)).xml
 
 endef
 
+find_sel_files_cmd= find $(COREPATH) -type f -name "*.[ch]" \
+               -exec grep "select_row_t[        ][a-zA-Z0-9_][a-zA-Z0-9_]*\[\][         ]*=" \
+               /dev/null {} \; \
+               | cut -d: -f1
+
+# shell command to generate a file:grp list from a list of files
+# grp will be the modulename if the file is in a module directory or
+# the file name with the extension and _sel, sel_, select_, _select,
+# _declaration or _table stripped out of it.
+# output: list of  " "filename":"grpname
+gen_file_grp_cmd=\
+sed -e "s!\(.*/modules[^/]*/\([^/][^/]*\)/.*\)! \1:\2!" \
+    -e "s!^\([^ ].*/\([^/.]*\)[^/]*$$\)!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)_select[_]*!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)select[_]*!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)_declaration[_]*!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)_table[_]*!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)_sel[_]*!\1:\2!" \
+    -e "s!^\([^ :]*\):\(.*\)sel[_]*!\1:\2!" \
+
+# special vars for generating the list of files or updates
+found_lst=$(shell $(find_sel_files_cmd) | $(gen_file_grp_cmd))
+# filtered found lst
+f_found_lst=$(call filter_files,$(found_lst))
+diff_lst=$(filter-out $(flist),$(f_found_lst))
+
+
+get_core_files=$(filter-out $(COREPATH)/modules% $(COREPATH)/lib%,$(1))
+sort_files=$(sort $(call get_core_files,$(1)))\
+                       $(sort $(filter-out $(call get_core_files,$(1)),$(1)))
+
+# replace $(COREPATH) with the text "$(COREPATH)"
+subst_corepath=$(patsubst $(patsubst %/,%,$(COREPATH))/%,\$$(COREPATH)/%,$(1))
+
 
 # help will be the default rule (on-purpose since without having a patched
 # GCC:TranslationUnit module, make all won't work)
@@ -168,7 +208,7 @@ ifeq ($(repo_ver),git-)
 repo_ver="sip-router unknown"
 endif
 
-$(docbook_output_dir)/select_list.xml: \
+$(docbook_output_dir)/select_list.xml: Makefile \
                $(foreach f,$(flist),$(docbook_output_dir)/$(call get_target,$f).xml)
        @echo '<?xml version="1.0" encoding="UTF-8"?>' >$@
        @echo '<!-- this file is autogenerated, do not edit! -->' >>$@
@@ -191,26 +231,6 @@ $(docbook_output_dir)/select_list.xml: \
                        >>$@ ; )
        @echo '</book>' >>$@
 
-find_sel_files_cmd= find $(COREPATH) -type f -name "*.[ch]" \
-               -exec grep "select_row_t[        ][a-zA-Z0-9_][a-zA-Z0-9_]*\[\][         ]*=" \
-               /dev/null {} \; \
-               | cut -d: -f1
-
-# shell command to generate a file:grp list from a list of files
-# grp will be the modulename if the file is in a module directory or
-# the file name with the extension and _sel, sel_, select_, _select,
-# _declaration or _table # stripped out of it.
-# output: list of  " "filename":"grpname
-gen_file_grp_cmd=\
-sed -e "s!\(.*/modules[^/]*/\([^/][^/]*\)/.*\)! \1:\2!" \
-    -e "s!^\([^ ].*/\([^/.]*\)[^/]*$$\)!\1:\2!" \
-    -e "s!^\([^ :]*\):\(.*\)_select[_]*!\1:\2!" \
-    -e "s!^\([^ :]*\):\(.*\)select[_]*!\1:\2!" \
-    -e "s!^\([^ :]*\):\(.*\)_declaration[_]*!\1:\2!" \
-    -e "s!^\([^ :]*\):\(.*\)_table[_]*!\1:\2!" \
-    -e "s!^\([^ :]*\):\(.*\)_sel[_]*!:\1:\2!" \
-    -e "s!^\([^ :]*\):\(.*\)sel[_]*!\1:\2!"
-
 # finds all the files containing select defs
 .PHONY: find
 find:
@@ -221,10 +241,25 @@ find:
 print-lst:
        @$(find_sel_files_cmd) | $(gen_file_grp_cmd)
 
+#
+.PHONY: gen-file-list
+.PHONY: gen-files_list
+.PHONY: gen_files_list
+gen-file-list gen-files-list gen_files_list:
+       @$(foreach f,$(call subst_corepath,$(call sort_files,$(f_found_lst))),\
+               echo "$f \\";)
+
+.PHONY: check-list
+.PHONY: update-list
+.PHONY: diff-list
+check-list update-list diff-list:
+       @$(foreach f,$(call subst_corepath,$(call sort_files,$(diff_lst))),\
+               echo "$f \\";)
+
+
 # try to generate the docs from all the sources
 .PHONY: autogen
 autogen:
-       LST=`$(find_sel_files_cmd)| $(gen_file_grp_cmd) | xargs echo` && \
-       [ -n "$$LST" ] && $(MAKE) all files_list="$$LST"
+       @$(MAKE) all files_list="$(call sort_files,$(f_found_lst))"
 
 $(foreach f,$(flist),$(eval $(call mk_rules,$(f))))