quagga: install extra (documention) files
[olsrd.git] / doc / Makefile
1 # The olsr.org Optimized Link-State Routing daemon (olsrd)
2 #
3 # (c) by the OLSR project
4 #
5 # See our Git repository to find out who worked on this file
6 # and thus is a copyright holder on it.
7 #
8 # All rights reserved.
9 #
10 # Redistribution and use in source and binary forms, with or without
11 # modification, are permitted provided that the following conditions
12 # are met:
13 #
14 # * Redistributions of source code must retain the above copyright
15 #   notice, this list of conditions and the following disclaimer.
16 # * Redistributions in binary form must reproduce the above copyright
17 #   notice, this list of conditions and the following disclaimer in
18 #   the documentation and/or other materials provided with the
19 #   distribution.
20 # * Neither the name of olsr.org, olsrd nor the names of its
21 #   contributors may be used to endorse or promote products derived
22 #   from this software without specific prior written permission.
23 #
24 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 # POSSIBILITY OF SUCH DAMAGE.
36 #
37 # Visit http://www.olsr.org for more information.
38 #
39 # If you find this software useful feel free to make a donation
40 # to the project. For more information see the website or contact
41 # the copyright holders.
42 #
43
44 TOPDIR = ..
45 include $(TOPDIR)/Makefile.inc
46
47 HTML_DIR = html
48 HTML_OUTPUT = $(HTML_DIR)/$(OS)
49
50 LATEX_DIR = latex
51 LATEX_OUTPUT = $(LATEX_DIR)/$(OS)
52
53 PDF_DIR = pdf
54 PDF_OUTPUT = $(PDF_DIR)/olsrd_$(OS).pdf
55
56 DOX_FILE = doxygen.conf
57 TMP_DOX_FILE = $(DOX_FILE).temp
58
59 OLSRD_VER = $(shell git describe --dirty --always)
60
61
62 DOC_DEFINES = $(shell ./getdefines.bash $(CPPFLAGS) $(CFLAGS))
63
64
65 # All excludes
66 # DOC_INPUT   = ../src ../android
67 # DOC_EXCLUDE = ../src/linux ../src/unix ../android ../src/win32 ../src/bsd
68
69 DOC_INPUT   = ../src ../android
70
71 ifeq ($(OS), linux)
72 DOC_DEFINES += __linux__
73 DOC_EXCLUDE = ../android ../src/win32 ../src/bsd
74 else
75 ifeq ($(OS), android)
76 DOC_DEFINES += __linux__ _ANDROID
77 DOC_EXCLUDE = ../src/win32 ../src/bsd
78 else
79 ifeq ($(OS), win32)
80 DOC_DEFINES += _WIN32
81 DOC_EXCLUDE = ../src/linux ../src/unix ../android ../src/bsd
82 else
83 $(error $(OS) not known to the doc makefile)
84 endif
85 endif
86 endif
87
88
89 all: default_target
90
91 default_target: doc
92
93 .PHONY: .gitignore doc doc-pdf clean
94
95 clean:
96         @echo "[$@] doc"
97         @rm -fr "$(HTML_DIR)" "$(LATEX_DIR)" "$(PDF_DIR)" "$(TMP_DOX_FILE)"
98
99 doc: $(DOX_FILE)
100         @echo "[$@] doc"
101         @echo "  Cleaning up $(OS) outputs..."
102         @rm -fr "$(HTML_OUTPUT)" "$(LATEX_OUTPUT)"
103         @mkdir -pv "$(HTML_OUTPUT)"
104         @mkdir -pv "$(LATEX_OUTPUT)"
105         @echo "  Generating doxygen configuration..."
106         @sed \
107           -e "s/__OLSRD_VER__/$(OLSRD_VER)/" \
108           -e "s#__OLSRD_NAME__#olsrd ($(OS))#" \
109           -e "s#__DEFINES__#$(DOC_DEFINES)#" \
110           -e "s#__INPUT__#$(DOC_INPUT)#" \
111           -e "s#__EXCLUDE__#$(DOC_EXCLUDE)#" \
112           -e "s#__HTML_OUTPUT__#$(HTML_OUTPUT)#" \
113           -e "s#__LATEX_OUTPUT__#$(LATEX_OUTPUT)#" \
114           "$(DOX_FILE)" > "$(TMP_DOX_FILE)"
115         @echo "  Running doxygen to create HTML..."
116         @doxygen "$(TMP_DOX_FILE)"
117         @rm -f "$(TMP_DOX_FILE)"
118         @echo "  Done"
119
120 doc-pdf: doc
121         @echo "[$@] doc"
122         @echo "  Cleaning up $(OS) outputs..."
123         @rm -fr "$(PDF_OUTPUT)"
124         @mkdir -pv "$(PDF_DIR)"
125         @echo "  Running latex to create a PDF..."
126         @$(MAKE) -s -C $(LATEX_OUTPUT) all
127         @mkdir -pv "$(PDF_DIR)"
128         @mv -v "$(LATEX_OUTPUT)/refman.pdf" "$(PDF_OUTPUT)"
129         @rm -fr "$(LATEX_OUTPUT)"
130         @rmdir -v --ignore-fail-on-non-empty "$(LATEX_DIR)"
131         @echo "  Done"