1# 2# %CopyrightBegin% 3# 4# Copyright Ericsson AB 1999-2020. All Rights Reserved. 5# 6# Licensed under the Apache License, Version 2.0 (the "License"); 7# you may not use this file except in compliance with the License. 8# You may obtain a copy of the License at 9# 10# http://www.apache.org/licenses/LICENSE-2.0 11# 12# Unless required by applicable law or agreed to in writing, software 13# distributed under the License is distributed on an "AS IS" BASIS, 14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15# See the License for the specific language governing permissions and 16# limitations under the License. 17# 18# %CopyrightEnd% 19# 20# 21include $(ERL_TOP)/make/target.mk 22include $(ERL_TOP)/make/$(TARGET)/otp.mk 23 24# ---------------------------------------------------- 25# Application version 26# ---------------------------------------------------- 27include $(ERL_TOP)/erts/vsn.mk 28 29APPLICATION=otp-system-documentation 30 31# ---------------------------------------------------- 32# Release directory specification 33# ---------------------------------------------------- 34RELSYSDIR = "$(RELEASE_PATH)/doc" 35 36GIF_FILES = 37 38INFO_FILES = ../../../README.md ../../COPYRIGHT PR.template 39 40TOPDOCDIR=. 41 42include ../general_info/xmlfiles.mk 43include ../installation_guide/xmlfiles.mk 44include ../system_principles/xmlfiles.mk 45include ../embedded/xmlfiles.mk 46include ../getting_started/xmlfiles.mk 47include ../reference_manual/xmlfiles.mk 48include ../programming_examples/xmlfiles.mk 49include ../efficiency_guide/xmlfiles.mk 50include ../tutorial/xmlfiles.mk 51include ../design_principles/xmlfiles.mk 52include ../oam/xmlfiles.mk 53 54BOOK_FILES = book.xml 55 56XML_FILES = \ 57 $(BOOK_FILES) 58 59XML_GUIDE_FILES = \ 60 $(GENERAL_INFO_CHAPTER_FILES:%=general_info/%) \ 61 $(GENERAL_INFO_CHAPTER_GEN_FILES:%=general_info/%) \ 62 $(INST_GUIDE_CHAPTER_FILES:%=installation_guide/%) \ 63 $(INST_GUIDE_CHAPTER_GEN_FILES:%=installation_guide/%) \ 64 $(SYSTEM_PRINCIPLES_CHAPTER_FILES:%=system_principles/%) \ 65 $(SYSTEM_PRINCIPLES_CHAPTER_GEN_FILES:%=system_principles/%) \ 66 $(EMBEDDED_CHAPTER_FILES:%=embedded/%) \ 67 $(EMBEDDED_CHAPTER_GEN_FILES:%=embedded/%) \ 68 $(GETTING_STARTED_CHAPTER_FILES:%=getting_started/%) \ 69 $(GETTING_STARTED_CHAPTER_GEN_FILES:%=getting_started/%) \ 70 $(REF_MAN_CHAPTER_FILES:%=reference_manual/%) \ 71 $(REF_MAN_CHAPTER_GEN_FILES:%=reference_manual/%) \ 72 $(PROG_EX_CHAPTER_FILES:%=programming_examples/%) \ 73 $(PROG_EX_CHAPTER_GEN_FILES:%=programming_examples/%) \ 74 $(EFF_GUIDE_CHAPTER_FILES:%=efficiency_guide/%) \ 75 $(EFF_GUIDE_CHAPTER_GEN_FILES:%=efficiency_guide/%) \ 76 $(TUTORIAL_CHAPTER_FILES:%=tutorial/%) \ 77 $(TUTORIAL_CHAPTER_GEN_FILES:%=tutorial/%) \ 78 $(DESIGN_PRINCIPLES_CHAPTER_FILES:%=design_principles/%) \ 79 $(DESIGN_PRINCIPLES_CHAPTER_GEN_FILES:%=design_principles/%) \ 80 $(OAM_CHAPTER_FILES:%=oam/%) \ 81 $(OAM_CHAPTER_GEN_FILES:%=oam/%) 82 83XML_GEN_FILES = \ 84 $(XML_GUIDE_FILES:%=$(XMLDIR)/%) \ 85 $(XMLDIR)/general_info/part.xml \ 86 $(XMLDIR)/installation_guide/part.xml \ 87 $(XMLDIR)/system_principles/part.xml \ 88 $(XMLDIR)/embedded/part.xml \ 89 $(XMLDIR)/getting_started/part.xml \ 90 $(XMLDIR)/reference_manual/part.xml \ 91 $(XMLDIR)/programming_examples/part.xml \ 92 $(XMLDIR)/efficiency_guide/part.xml \ 93 $(XMLDIR)/tutorial/part.xml \ 94 $(XMLDIR)/design_principles/part.xml \ 95 $(XMLDIR)/oam/part.xml 96 97 98XMLLINT_SRCDIRS= $(XMLDIR)/general_info:$(XMLDIR)/installation_guide:$(XMLDIR)/system_principles:$(XMLDIR)/embedded:$(XMLDIR)/getting_started:$(XMLDIR)/reference_manual:$(XMLDIR)/programming_examples:$(XMLDIR)/efficiency_guide:$(XMLDIR)/tutorial:$(XMLDIR)/design_principles:$(XMLDIR)/oam 99HTMLDIR= ../html 100PDFREFDIR= pdf 101 102TOP_PDF_FILE = $(PDFDIR)/$(APPLICATION)-$(VSN).pdf 103TOPDOC=true 104 105ifdef RELEASE_PATH 106INST_TYPE=rel 107INST_TYPE_SRC_DIR=$(RELEASE_PATH) 108# We build to the 'temporary' dir in order to be able to install 109# results using INSTALL_DATA (in order to get correct access 110# rights on installed files) 111INST_TYPE_DEST_DIR=$(RELSYSDIR)/temporary 112INST_TYPE_DEST_DIR_DEP=$(INST_TYPE_DEST_DIR) 113INST_TYPE_JS_DEST_DIR=$(INST_TYPE_DEST_DIR) 114INST_TYPE_VSN_FILE=$(INST_TYPE_DEST_DIR)/OTP_VERSION 115else 116INST_TYPE=src 117INST_TYPE_SRC_DIR=$(ERL_TOP) 118INST_TYPE_DEST_DIR=$(HTMLDIR) 119INST_TYPE_DEST_DIR_DEP= 120INST_TYPE_JS_DEST_DIR=$(INST_TYPE_DEST_DIR)/js 121INST_TYPE_VSN_FILE=$(ERL_TOP)/OTP_VERSION 122endif 123 124#-------------------------------------------------------------------------- 125# We generate the index page from the installed system. This make 126# it important that this is done last. The file index.html.src 127# is used as a template for the resulting page. 128 129EBIN = ebin 130 131INDEX_SCRIPT = $(EBIN)/erl_html_tools.$(EMULATOR) 132INDEX_SRC = src/erl_html_tools.erl 133 134INDEX_HTML=$(INST_TYPE_DEST_DIR)/index.html 135APPLICATIONS_HTML=$(INST_TYPE_DEST_DIR)/applications.html 136INDEX_FILES = $(INDEX_HTML) $(APPLICATIONS_HTML) 137 138JAVASCRIPT = $(INST_TYPE_JS_DEST_DIR)/erlresolvelinks.js 139JAVASCRIPT_BUILD_SCRIPT = $(EBIN)/erlresolvelinks.$(EMULATOR) 140JAVASCRIPT_BUILD_SCRIPT_SRC = src/erlresolvelinks.erl 141 142MAN_INDEX_SCRIPT = $(EBIN)/otp_man_index.$(EMULATOR) 143MAN_INDEX_SRC = src/otp_man_index.erl 144MAN_INDEX = $(INST_TYPE_DEST_DIR)/man_index.html 145 146GLOSSARY = $(HTMLDIR)/glossary.html 147GLOSSARY_SRC = $(ERL_TOP)/system/internal_tools/doctools/src/glossary.erl 148GLOSSARY_SCRIPT = $(EBIN)/glossary.$(EMULATOR) 149 150TEMPLATES = \ 151 templates/index.html.src \ 152 templates/applications.html.src 153 154#-------------------------------------------------------------------------- 155 156$(INDEX_SCRIPT): $(INDEX_SRC) 157 $(ERLC) -o$(EBIN) +warn_unused_vars $< 158 159$(INST_TYPE_DEST_DIR)/OTP_VERSION: $(INST_TYPE_DEST_DIR_DEP) 160 if test -f "$(RELEASE_PATH)/releases/$(SYSTEM_VSN)/OTP_VERSION"; then \ 161 $(CP) "$(RELEASE_PATH)/releases/$(SYSTEM_VSN)/OTP_VERSION" $@; \ 162 else \ 163 $(CP) $(ERL_TOP)/OTP_VERSION $@; \ 164 fi 165 166# We don't list toc_*.html as targets because we don't know 167$(INDEX_HTML) + $(APPLICATIONS_HTML): $(INST_TYPE_DEST_DIR_DEP) $(INDEX_SCRIPT) $(TEMPLATES) $(INST_TYPE_VSN_FILE) 168 echo "Generating index $@" 169 $(ERL) -noshell -pa $(EBIN) -s erl_html_tools top_index $(INST_TYPE) \ 170 $(INST_TYPE_SRC_DIR) $(INST_TYPE_DEST_DIR) \ 171 `cat "$(INST_TYPE_VSN_FILE)"` -s erlang halt 172 173 174#-------------------------------------------------------------------------- 175 176$(JAVASCRIPT_BUILD_SCRIPT): $(JAVASCRIPT_BUILD_SCRIPT_SRC) 177 $(ERLC) -o$(EBIN) +warn_unused_vars $< 178 179$(JAVASCRIPT): $(INST_TYPE_DEST_DIR_DEP) $(JAVASCRIPT_BUILD_SCRIPT) 180 erl -noshell -pa $(EBIN) -run erlresolvelinks make $(ERL_TOP) \ 181 $(INST_TYPE_SRC_DIR) $(INST_TYPE_JS_DEST_DIR) -s erlang halt 182 183#-------------------------------------------------------------------------- 184 185$(MAN_INDEX_SCRIPT): $(MAN_INDEX_SRC) 186 $(ERLC) -o$(EBIN) +warn_unused_vars $< 187 188$(MAN_INDEX): $(INST_TYPE_DEST_DIR_DEP) $(MAN_INDEX_SCRIPT) 189 $(ERL) -noshell -pa $(EBIN) -s otp_man_index gen $(INST_TYPE) \ 190 $(INST_TYPE_SRC_DIR) $@ -s erlang halt 191 192#-------------------------------------------------------------------------- 193 194$(HTMLDIR)/highlights.html: highlights.xml 195 date=`date +"%B %e, %Y"`; \ 196 $(XSLTPROC) --output $(@) \ 197 --stringparam docgen "$(DOCGEN)" \ 198 --stringparam topdocdir "$(TOPDOCDIR)" \ 199 --stringparam pdfdir "$(PDFREFDIR)" \ 200 --stringparam gendate "$$date" \ 201 --stringparam appname "$(APPLICATION)" \ 202 --stringparam appver "$(VSN)" \ 203 --stringparam stylesheet "$(CSS_FILE)" \ 204 --stringparam winprefix "$(WINPREFIX)" \ 205 --stringparam logo "$(HTMLLOGO_FILE)" \ 206 -path $(DOCGEN)/priv/dtd \ 207 -path $(DOCGEN)/priv/dtd_html_entities \ 208 $(DOCGEN)/priv/xsl/db_html.xsl $< 209 210 211$(HTMLDIR)/incompatible.html: incompatible.xml 212 date=`date +"%B %e, %Y"`; \ 213 $(XSLTPROC) --output $(@) --stringparam docgen "$(DOCGEN)" \ 214 --stringparam topdocdir "$(TOPDOCDIR)" \ 215 --stringparam pdfdir "$(PDFREFDIR)" \ 216 --stringparam gendate "$$date" \ 217 --stringparam appname "$(APPLICATION)" \ 218 --stringparam appver "$(VSN)" \ 219 --stringparam stylesheet "$(CSS_FILE)" \ 220 --stringparam winprefix "$(WINPREFIX)" \ 221 --stringparam logo "$(HTMLLOGO_FILE)" \ 222 -path $(DOCGEN)/priv/dtd \ 223 -path $(DOCGEN)/priv/dtd_html_entities \ 224 $(DOCGEN)/priv/xsl/db_html.xsl $< 225 226#-------------------------------------------------------------------------- 227 228$(GLOSSARY_SCRIPT): $(GLOSSARY_SRC) 229 $(ERLC) -o$(EBIN) $(GLOSSARY_SRC) 230 231$(GLOSSARY): $(GLOSSARY_SCRIPT) 232 $(ERL) -noshell -pa $(EBIN) \ 233 -s glossary make ../definitions/term.defs -s erlang halt > \ 234 $(GLOSSARY) 235 236#-------------------------------------------------------------------------- 237 238PR.template: PR.template.src $(ERL_TOP)/make/$(TARGET)/otp.mk 239 sed -e 's;%VSN%;$(VSN);' \ 240 -e 's;%SYSTEM_VSN%;$(SYSTEM_VSN);' \ 241 $< > $@ 242 243# ---------------------------------------------------- 244# FLAGS 245# ---------------------------------------------------- 246XML_FLAGS += 247DVIPS_FLAGS += 248 249# ---------------------------------------------------- 250# Targets 251# ---------------------------------------------------- 252 253DOC_TARGETS?=pdf html man 254 255docs: $(DOC_TARGETS) $(INFO_FILES) 256 257local_docs: PDFREFDIR=../pdf 258 259$(TOP_PDF_FILE): $(XML_FILES) 260 261pdf: $(TOP_PDF_FILE) 262 263html: $(INDEX_FILES) $(JAVASCRIPT) 264 265man: $(MAN_INDEX) 266 267debug opt: 268 269clean: 270 $(RM) ../html/js/*.js 271 $(RM) PR.template 272 $(RM) $(XMLDIR)/*.xml 273 $(RM) $(INDEX_FILES) $(MAN_INDEX) 274 $(RM) $(TOP_PDF_FILE) $(TOP_PDF_FILE:%.pdf=%.fo) 275 $(RM) $(INDEX_SCRIPT) $(GLOSSARY_SCRIPT) $(JAVASCRIPT_BUILD_SCRIPT) 276 $(RM) erl_crash.dump errs core *~ 277 278# ---------------------------------------------------- 279# Release Target 280# ---------------------------------------------------- 281include $(ERL_TOP)/make/otp_release_targets.mk 282 283$(RELSYSDIR)/temporary: 284 $(INSTALL_DIR) $(RELSYSDIR)/temporary 285 286$(RELSYSDIR)/docbuild: 287 $(INSTALL_DIR) $(RELSYSDIR)/docbuild 288 289release_man_spec: man $(RELSYSDIR)/docbuild 290 $(INSTALL_DATA) $(MAN_INDEX) $(RELSYSDIR) 291 $(INSTALL_DATA) $(MAN_INDEX_SRC) $(MAN_INDEX_SCRIPT) $(RELSYSDIR)/docbuild 292 293release_html_spec: html $(RELSYSDIR)/docbuild 294 $(INSTALL_DIR) $(RELSYSDIR)/js 295 $(INSTALL_DATA) $(JAVASCRIPT) $(RELSYSDIR)/js 296 $(INSTALL_DATA) $(INDEX_FILES) $(RELSYSDIR) 297 $(INSTALL_DATA) $(INDEX_SCRIPT) $(JAVASCRIPT_BUILD_SCRIPT) \ 298 $(INDEX_SRC) $(JAVASCRIPT_BUILD_SCRIPT_SRC) \ 299 $(TEMPLATES) $(RELSYSDIR)/docbuild 300 301release_pdf_spec: pdf 302 $(INSTALL_DIR) $(RELSYSDIR)/pdf 303 $(INSTALL_DATA) \ 304 $(TOP_PDF_FILE) $(RELSYSDIR)/pdf 305 306release_docs_spec: $(DOC_TARGETS:%=release_%_spec) $(INFO_FILES) 307 $(INSTALL_DATA) $(INFO_FILES) "$(RELEASE_PATH)" 308 $(RM) -r $(RELSYSDIR)/temporary 309 310release_spec: 311