blob: 70ab002a6472c140bae40c8b55d7a7c4c0b128b9 [file] [log] [blame]
#==================================================================================
# Copyright (c) 2020 Nokia
# Copyright (c) 2020 AT&T Intellectual Property.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#==================================================================================
# this uses {X}fm which can be cloned from: https://gitlab.com/rouxware/xfm
XPATH=XFM_PATH=.:/usr/local/share/xfm TFM_PATH=.:/usr/local/share/xfm
docs = user_guide
src = user_guide.xfm
imbed_src = cpp_frame.im example1.im example2.im example3.im jhash.im
desired_out = rst ps
# use care: the output type is used to source the macros based on the type
# of output being rendered.
# Two pass builds allow for table of contents gen/insert, forward var
# references etc.
#
%.ps: %.xfm
$(XPATH) OUTPUT_TYPE=generic_ps XFM_PASS=1 pfm $< /dev/null
$(XPATH) OUTPUT_TYPE=generic_ps XFM_PASS=2 pfm $< $@
%.md: %.xfm
$(XPATH) OUTPUT_TYPE=markdown XFM_PASS=1 tfm $< /dev/null
$(XPATH) OUTPUT_TYPE=markdown XFM_PASS=2 tfm $< | sed 's/^ //' >$@
%.rst: %.xfm
$(XPATH) OUTPUT_TYPE=rst XFM_PASS=1 tfm $< /dev/null
$(XPATH) GEN_TITLE=1 OUTPUT_TYPE=rst XFM_PASS=2 tfm $< | sed 's/^ //; s/ *$$//' >$@
%.txt: %.xfm
$(XPATH) OUTPUT_TYPE=txt XFM_PASS=1 tfm $< /dev/null
$(XPATH) OUTPUT_TYPE=txt XFM_PASS=2 tfm $< $@
# -----------------------------------------------------------------------------------
all: $(desired_out:%=user_guide.%)
user_guide.ps: user_guide.xfm $(imbed_src)
# we force the .rst docs to always be out of date so that we don't have to
# jump hoops to ensure that they build for make publish. (See hack rule
# at the end of the file.)
#
$(docs:%=%.rst): always
publish: user_guide.rst
cp user_guide.rst ../../../docs/user-guide.rst
# intermeidate junk that might straggle
clean:
rm -fr *.bcnfile *.ca *.ecnfile *.sp
# Destroy anything that can be built
nuke: clean
rm -fr *.md *.ps *.pdf *.txt *.rst *.toc
# make hack to force a rule to always be out of date
always: