marketing

Marketing materials (presentations, posters, flyers)
Log | Files | Refs

Makefile (10176B)


      1 ##
      2 ## Used commands by the build process
      3 ##
      4 CWD := $(shell pwd)
      5 RM=rm
      6 
      7 ##
      8 ## Internal variables
      9 ##
     10 _BUILD_DIR=_build
     11 _OUT_DIR=_output
     12 _XFIG_DIR=fig
     13 _MAINFILE:= $(MAINFILE:.tex=)
     14 export _TEMPLATE=.template
     15 export _SVG_DIR=svg
     16 _LECTURE=$(LECTURE:.tex=)
     17 export _LECTURES=lectures
     18 export _EXSRC=exsrc
     19 export _PICTURES=pictures
     20 
     21 ## Template mode configuration files
     22 _CF_HANDOUTS=cf_handouts
     23 _CF_TABLET=cf_tablet
     24 _CF_NOTES=cf_notes
     25 _CF_SLIDES=cf_slides
     26 
     27 ##
     28 ## Ext variables for build ctrl. All use a default set
     29 ##
     30 MAINFILE ?= ${_CF_SLIDES}
     31 LECTURE ?= sample_lecture.tex
     32 DEBUG ?= 0
     33 
     34 ## bibtex data files
     35 export _DB_DIR=database
     36 
     37 
     38 
     39 _TEMPLATE_DIRS=${_LECTURES} \
     40 	       ${_XFIG_DIR} \
     41 	       ${_SVG_DIR} \
     42 	       ${_DB_DIR} \
     43                ${_EXSRC} \
     44                ${_PICTURES}
     45 
     46 
     47 ##
     48 ## Eval dest dir
     49 ##
     50 ifeq (${_CWD_NAME},${_TEMPLATE})
     51   _DESTINATION_DIR=..
     52 else
     53   _DESTINATION_DIR=.
     54 endif
     55 
     56 export _DESTINATION_DIR
     57 
     58 ##
     59 ## Lists
     60 ##
     61 SVGFILES := $(wildcard $(_SVG_DIR)/*.svg)
     62 XFIGFILES := $(wildcard $(_XFIG_DIR)/*.fig)
     63 
     64 export TEXINPUTS :=./:${_TEMPLATE}:${_TEMPLATE}/sty:${_TEMPLATE}/img:${_LECTURES}:${_DB_DIR}:${_EXSRC}:${_PICTURES}:$(TEXINPUTS)
     65 
     66 
     67 ifeq ($(DEBUG), 2)
     68 # Extra options, these must be available for both pdflatex and latexmk
     69   _DEFAULT_LATEX_OPTIONS=-synctex=1 -output-directory=$(_BUILD_DIR) -aux-directory=$(_BUILD_DIR)
     70 else ifeq ($(DEBUG), 1)
     71 # Extra options, these must be available for both pdflatex and latexmk
     72   _DEFAULT_LATEX_OPTIONS=-synctex=1 -output-directory=$(_BUILD_DIR) -aux-directory=$(_BUILD_DIR) -interaction=batchmode 
     73 else
     74   _DEFAULT_LATEX_OPTIONS=-synctex=1 -output-directory=$(_BUILD_DIR) -aux-directory=$(_BUILD_DIR) -interaction=batchmode -quiet -silent
     75 endif
     76 
     77 # Options for glossary
     78 _GLOSSARY_OPTIONS = -q
     79 
     80 _LINE_WIDTH = error_line=240 half_error_line=160 max_print_line=240
     81 
     82 # Command to build document
     83 #_BUILD = $(_LINE_WIDTH) latexmk -pdf -bibtex- -jobname=$(_MAINFILE) $(_DEFAULT_LATEX_OPTIONS) $(_MAINFILE)
     84 _BUILD = $(_LINE_WIDTH) latexmk -pdf -jobname=$(_MAINFILE) $(_DEFAULT_LATEX_OPTIONS) $(_MAINFILE)
     85 
     86 # Command to build glossary and glossarylists
     87 # (Not using -d option due to incompatibility with some systems)
     88 _BUILD_GLOSSARY = cd $(BUILD_DIR) &&\
     89  makeglossaries $(_GLOSSARY_OPTIONS) $(_MAINFILE) &&\
     90  cd - >/dev/null
     91 
     92 # Command to build bibliography
     93 # Latexmk does not currently handle this well when building to subdir
     94 # so we do it manually
     95 #_BUILD_BIBLIOGRAPHY = bibtex $(_BUILD_DIR)/$(_MAINFILE)
     96 
     97 ##_PARSE_LOG = sed '/[Cc]\:.*\:.*\:.*/,/.*/!d' $(_BUILD_DIR)/$(MAINFILE:.tex=.log)
     98 
     99 .PHONY : init list help slides handouts notes tablet distclean clean mrproper migrate
    100 
    101 help:
    102 	@echo "MAKE OPTIONS"
    103 	@echo "=========================================================================="
    104 	@echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
    105 	@echo ""
    106 	@echo "LECTURE=lecture_*    : Set target lecture (use LIST for a overview)"
    107 	@echo "DEBUG=[0|1|2]        : Increase LaTex build verbosity level"
    108 	@echo ""
    109 	@echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
    110 	@echo ">> Information targets"
    111 	@echo "--------------------------------------------------------------------------"
    112 	@echo "help                 : Print this dialogue"
    113 	@echo "[s*|h*|m*]_show      : Build slide of LECTURE and display the corresponding"
    114 	@echo "                       build mode [slides_show | handouts_show | memo_show]"
    115 	@echo "list                 : List available LECTURES located in '$(_LECTURES)/'"
    116 	@echo ""
    117 	@echo ">> Build Targets"
    118 	@echo "--------------------------------------------------------------------------"
    119 	@echo ""
    120 	@echo "bundle               : Build a LECTURE set (slides, handouts, and memo)"
    121 	@echo "slides               : Build LECTURE slides"
    122 	@echo "handouts             : Build LECTURE handouts"
    123 	@echo "tablet               : Build LECTURE tabled"
    124 	@echo "notes                : Build LECTURE notes"
    125 	@echo "convert              : Convert *.fig and *.svg files. (The following direct-"
    126 	@echo "                       ories are parsed : '$(_XFIG_DIR)' and '$(_SVG_DIR)')"
    127 	@echo ""
    128 	@echo ">> Clean Targets"
    129 	@echo "--------------------------------------------------------------------------"
    130 	@echo ""
    131 	@echo "clean                : Remove files in directory '$(_BUILD_DIR)/'"
    132 	@echo "mrproper             : Remove temp files such as '*~'"
    133 	@echo "distclean            : Cleanup everything and remove all '_*' directories"
    134 	@echo ""
    135 	@echo ">> Initialization and Migration Targets"
    136 	@echo "--------------------------------------------------------------------------"
    137 	@echo ""
    138 	@echo "init                 : Create all directories holding important source and"
    139 	@echo "                       and add simlinks to the cf files"
    140 	@echo ""
    141 	@echo "sample               : Create sample presentation source file"
    142 	@echo "                       Build the presentation with command given below:"
    143 	@echo "                       LECTURE=sample_lecture make convert bundle slides_show"
    144 	@echo ""
    145 	@echo "migrate              : Convert current directory structure and files to make"
    146 	@echo "                       it compliant to newest build system requirements."
    147 	@echo ""
    148 	@echo ""
    149 	@echo "=========================================================================="
    150 	@echo "Author : Andreas HABEGGER <andreas.habegger@bfh.ch>"
    151 	@echo "Date   : 2019-09-30"
    152 	@echo "Version: v2.0"
    153 	@echo "=========================================================================="
    154 	@echo ""
    155 
    156 bundle: slides handouts tablet
    157 	@echo ""
    158 	@echo "*****************************************************************************************"
    159 	@echo "** A lecturing set has been produced for lecture: $(_LECTURE)"
    160 	@echo "*****************************************************************************************"
    161 	@echo ""
    162 
    163 init:   $(_TEMPLATE_DIRS) _mkgitignore_ _mklatexmkrc_ _mkvariables_
    164 	@if [ ! -f ${_CF_HANDOUTS}.tex ]; then ln -s ${_TEMPLATE}/${_CF_HANDOUTS}.tex; fi
    165 	@if [ ! -f ${_CF_TABLET}.tex ]; then ln -s ${_TEMPLATE}/${_CF_TABLET}.tex; fi
    166 	@if [ ! -f ${_CF_SLIDES}.tex ]; then ln -s ${_TEMPLATE}/${_CF_SLIDES}.tex; fi
    167 #	@if [ ! -f ${_CF_NOTES}.tex ]; then ln -s ${_TEMPLATE}/${CF_NOTES}.tex; fi
    168 	@echo "Initialization of new exam environment completed ..."
    169 
    170 
    171 slides_show: _slides_ 
    172 	@$(_LINE_WIDTH) latexmk -pdf -pv -bibtex -jobname=$(_MAINFILE) $(_DEFAULT_LATEX_OPTIONS) $(MAINFILE)
    173 
    174 handouts_show: _handouts_
    175 	@$(_LINE_WIDTH) latexmk -pdf -pv -bibtex -jobname=$(_MAINFILE) $(_DEFAULT_LATEX_OPTIONS) $(MAINFILE)
    176 
    177 tablet_show: _tablet_
    178 	@$(_LINE_WIDTH) latexmk -pdf -pv -bibtex -jobname=$(_MAINFILE) $(_DEFAULT_LATEX_OPTIONS) $(MAINFILE)
    179 
    180 list: 
    181 	@if [ -d $(_LECTURES) ]; then ls $(_LECTURES)/*.tex | cut -d"/" -f2-; fi
    182 
    183 sample: $(_TEMPLATE_DIRS) _mksample_lecture_ _cpsample_
    184 	@echo "Sample lecture created... !"
    185 
    186 slides: _slides_
    187 	@cp $(_BUILD_DIR)/$(_MAINFILE).pdf $(_OUT_DIR)/$(_LECTURE)_$@.pdf
    188 
    189 handouts: _handouts_
    190 	@cp $(_BUILD_DIR)/$(_MAINFILE).pdf $(_OUT_DIR)/$(_LECTURE)_$@.pdf
    191 
    192 notes: _notes_  
    193 	@cp $(_BUILD_DIR)/$(_MAINFILE).pdf $(_OUT_DIR)/$(_LECTURE)_$@.pdf
    194 
    195 tablet: _tablet_
    196 	@cp $(_BUILD_DIR)/$(_MAINFILE).pdf $(_OUT_DIR)/$(_LECTURE)_$@.pdf
    197 
    198 archive:
    199 	@git archive --format zip --prefix lectureTemplate/ master > ../lectureTemplate.zip
    200 
    201 convert: _mkdir_ _convsvg_  _convfig_
    202 
    203 clean:
    204 	@if [ -d $(_BUILD_DIR) ]; then \
    205 		rm -f $(_BUILD_DIR)/${_CF_HANDOUTS}.* \
    206 		      $(_BUILD_DIR)/${_CF_TABLET}.*   \
    207 		      $(_BUILD_DIR)/${_CF_NOTES}.*    \
    208 		      $(_BUILD_DIR)/${_CF_SLIDES}.*   \
    209 	;fi
    210 
    211 migrate: _migrate_001_ $(_TEMPLATE_DIRS) _mkgitignore_ _mklatexmkrc_ _mkvariables_
    212 	@echo "Migration from old template to new version completed!"
    213 
    214 mrproper:
    215 	@find . -iname '*~' -exec $(RM) '{}' \;
    216 	@find . -iname '#*' -exec $(RM) '{}' \;
    217 
    218 distclean: mrproper clean
    219 	@latexmk -C > /dev/null 2>&1
    220 	@if [ -d $(_BUILD_DIR) ] && [ `readlink -f $(_BUILD_DIR)` != $(CWD) ]; then $(RM) -rf $(_BUILD_DIR) > /dev/null; fi
    221 	@if [ -d $(_OUT_DIR) ] && [ `readlink -f $(_OUT_DIR)` != $(CWD) ]; then $(RM) -rf $(_OUT_DIR) > /dev/null; fi
    222 
    223 $(_TEMPLATE_DIRS):
    224 	@if [ ! -d $@ ]; then mkdir -p  ${_DESTINATION_DIR}/$@; fi
    225 
    226 _slides_: _mkmain_
    227 	$(eval _MAINFILE := ${_CF_SLIDES})
    228 	@$(_BUILD) && echo ""
    229 
    230 _handouts_: _mkmain_
    231 	$(eval _MAINFILE := ${_CF_HANDOUTS})
    232 	@$(_BUILD) && echo ""
    233 
    234 _notes_: _mkmain_
    235 	$(eval _MAINFILE := ${_CF_NOTES})
    236 	@$(_BUILD) && echo ""
    237 
    238 _tablet_: _mkmain_
    239 	$(eval _MAINFILE := ${_CF_TABLET})
    240 	@$(_BUILD) && echo ""
    241 
    242 _mkdir_: 
    243 	@mkdir -p $(_BUILD_DIR) &>/dev/null
    244 	@mkdir -p $(_OUT_DIR) &>/dev/null
    245 
    246 _mkmain_: _mkdir_
    247 	@echo "\\def\\lectureToBuild{${LECTURE}}" > $(_BUILD_DIR)/env.tex
    248 	@if [ -d $(_DB_DIR) ]; then find $(_DB_DIR)/ -iname '*.bib' -exec cp '{}' $(_BUILD_DIR)/ \; ;fi
    249 
    250 _mkgitignore_:
    251 	@${_DESTINATION_DIR}/${_TEMPLATE}/mk_gitignore.sh
    252 
    253 _mklatexmkrc_:
    254 	@${_DESTINATION_DIR}/${_TEMPLATE}/mk_latexmkrc.sh
    255 
    256 _mkvariables_:
    257 	@if [ -e ${_DESTINATION_DIR}/variables.tex ]; then \
    258 	echo "Backup 'variables.tex' "; \
    259 	cp ${_DESTINATION_DIR}/variables.tex ${_DESTINATION_DIR}/_variables.tex.backup; \
    260 	fi
    261 	@${_DESTINATION_DIR}/${_TEMPLATE}/mk_variables.sh
    262 
    263 _mksample_lecture_:
    264 	@${_DESTINATION_DIR}/${_TEMPLATE}/mk_sample_lecture.sh
    265 
    266 _cpsample_:
    267 	@${_DESTINATION_DIR}/${_TEMPLATE}/mk_copySampleFiles.sh
    268 
    269 _convfig_: $(XFIGFILES:%.fig=%.pdf) #$(XFIGFILES:%.fig=%.png) $(XFIGFILES:%.fig=%.eps)
    270 
    271 _convsvg_: $(SVGFILES:%.svg=%.pdf) #$(SVGFILES:%.svg=%.png)
    272 
    273 _migrate_001_:
    274 	@if [ -d ${_DESTINATION_DIR}/images ]; then \
    275 	echo "Rename 'images' -> ${_PICTURES}"; \
    276 	mv ${_DESTINATION_DIR}/images ${_PICTURES}; \
    277 	fi
    278 
    279 %.eps:%.fig
    280 	fig2dev -L eps $*.fig $(*:$(_XFIG_DIR)/%=$(_BUILD_DIR)/%).eps
    281 
    282 %.png:%.fig
    283 	fig2dev -L png $*.fig $(*:$(_XFIG_DIR)/%=$(_BUILD_DIR)/%).png
    284 
    285 %.pdf:%.fig
    286 	fig2dev -L pdftex $*.fig $(*:$(_XFIG_DIR)/%=$(_BUILD_DIR)/%).pdf;\
    287 	fig2dev -L pdftex_t -p $(*:$(_XFIG_DIR)/%=$(_BUILD_DIR)/%).pdf $*.fig $(*:$(_XFIG_DIR)/%=$(_BUILD_DIR)/%).pdf_t
    288 
    289 %.pdf:%.svg
    290 	inkscape --without-gui --export-area-page -A $(*:$(_SVG_DIR)/%=$(_BUILD_DIR)/%).pdf $*.svg
    291 
    292 %.eps:%.svg
    293 	inkscape --without-gui --export-area-page -E $(*:$(_SVG_DIR)/%=$(_BUILD_DIR)/%).eps $*.svg
    294 
    295 %.png:%.svg
    296 	inkscape --without-gui --export-area-page -e $(*:$(_SVG_DIR)/%=$(_BUILD_DIR)/%).png $*.svg