EXTRA_DIST = \ lasso-sections.txt \ lasso.sgml \ lasso.types \ version.xml.in # We need to pre-process original source files # because gtkdoc does not understand some C features # DOC_SOURCE_DIR = ./code DOC_SOURCE_FILES = \ $(shell find $(top_srcdir)/lasso -name '*.c' -print ) \ $(shell find $(top_srcdir)/lasso -name '*.h' -print | grep -v private) IGNORE_HFILES = lasso_config.h # do nothing for all all: docs docs: sgml html clean-sources html: sgml lasso.sgml lasso-index @echo '*** Building HTML ***' test -d html || mkdir html cd html && gtkdoc-mkhtml lasso ../build/lasso.sgml SCANOBJ_FILES = lasso.hierarchy lasso.signals lasso.interfaces lasso.prerequisites lasso.args # # Prepeare sgml files from sources for each library. We are also # doing some "magic" here by automatically adding links to XML DSig and # XML Enc specification, we also remove "Ptr" from the end of the link # targets to make more references # sgml: templates @echo '*** Building SGML ***' cp $(srcdir)/*.sgml version.xml build/ cd build && gtkdoc-mkdb --module=lasso \ --main-sgml-file=lasso.sgml \ --sgml-mode \ --output-format=xml \ --tmpl-dir=../tmpl/ \ --source-dir=../$(DOC_SOURCE_DIR)/lasso \ --output-dir=../sgml/ (for i in `find sgml -name "*.sgml" -print` ; do \ cat $$i | \ sed 's!\(<dsig:\)\([^/]*\)\(\/>\)!\1\2\3!g' | \ sed 's!\(<enc:\)\([^/]*\)\(\/>\)!\1\2\3!g' | \ sed 's!linkend=\"\(.*\)Ptr\"!linkend=\"\1\"!g' > \ $$i.tmp; \ mv -f $$i.tmp $$i; \ done); rm -f build/sgml && $(LN_S) ../sgml build/sgml # don't rebuild templates if tmpl is not in srcdir templates: scan @echo '*** Building TMPL ***' if test $(top_builddir) != $(top_srcdir); then \ cp -R $(srcdir)/tmpl/ . ; \ chmod +w tmpl/ ; \ chmod +w tmpl/*.sgml ; \ else \ (cd build && gtkdoc-mktmpl --module=lasso --output-dir=../tmpl/) ; \ fi # CFLAGS and LDFLAGS for compiling scan program. GTKDOC_CFLAGS = \ $(LASSO_CFLAGS) \ -I$(top_srcdir) GTKDOC_LIBS = \ $(LASSO_LIBS) \ $(top_builddir)/lasso/liblasso.la GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) scan: doc_sources test -d build || mkdir build @echo '*** Scan sources ***' cp $(srcdir)/lasso-sections.txt build/ if grep -l '^..*$$' $(srcdir)/lasso.types > /dev/null ; then \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANOBJ_OPTIONS) --module=lasso --types=$(srcdir)/lasso.types --output-dir=build/ ; \ else \ cd $(srcdir) ; \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi gtkdoc-scan --module=lasso \ --source-dir=$(DOC_SOURCE_DIR)/lasso/ \ --output-dir=build/ \ --ignore-headers="$(IGNORE_HFILES)" # # Prepare source files by coping them to "code" folder and # removing LASSO_EXPORT* stuff that makes gtkdoc crazy # doc_sources: $(DOC_SOURCE_FILES) @echo '*** Prepare sources ***' (for i in $(DOC_SOURCE_FILES) ; do \ folder_name=`echo $$i | sed 's#$(top_srcdir)/##' | sed 's#/[^/]*$$##'`; \ file_name=`echo $$i | sed 's#.*/##'`; \ test -d $(DOC_SOURCE_DIR)/$$folder_name || mkdir -p $(DOC_SOURCE_DIR)/$$folder_name; \ cat $$i | \ sed 's/#if.*//' | \ sed 's/#el.*//' | \ sed 's/#end.*//' | \ sed 's/LASSO_EXPORT_VAR//' | \ sed 's/LASSO_EXPORT//' > \ $(DOC_SOURCE_DIR)/$$folder_name/$$file_name; \ done); # # Create index for all functions. For macros and defines need to add -CAPS suffix # lasso-index: scan @echo '*** Create functions index ***' grep -h '.*' build/lasso-*decl.txt | \ grep -v 'extern' | \ sort -u | \ sed 's#_#-#g' | \ sed 's#\([^-]*\)-\([^<]*\)#\1-\2#g' | \ sed 's#\([^<]*\)#\1#g' > \ sgml/lasso-index.sgml clean-local: clean-sources -rm -rf $(DOC_SOURCE_DIR) -rm -rf .libs -if test $(top_builddir) != $(top_srcdir); then rm -f tmpl/*.sgml ; fi -rm -rf sgml -rm -rf html -rm -rf build -rm -f $(SCANOBJ_FILES) index.sgml lasso-index.sgml -rm -rf $(SCANOBJ_FILES) *.o *~ *.bak *.stamp clean-sources: -rm -rf code maintainer-clean-local: clean -rm -rf `find sgml -name "*.sgml" -print` if GTK_DOC_ENABLED dist-check-gtkdoc: else dist-check-gtkdoc: @echo "*** gtk-doc must be installed and enabled in order to make dist" @false endif dist-hook: dist-check-gtkdoc dist-hook-local mkdir $(distdir)/tmpl mkdir $(distdir)/html -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl -cp $(srcdir)/html/* $(distdir)/html .PHONY : dist-hook-local