#+TITLE: doc_reform (project) makefile
#+DESCRIPTION makefile for doc_reform
#+FILETAGS: :doc_reform:makefile:
#+AUTHOR: Ralph Amissah
#+EMAIL: ralph.amissah@gmail.com
#+STARTUP: indent content
#+LANGUAGE: en
#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+OPTIONS: author:nil email:nil creator:nil timestamp:nil
#+PROPERTY: header-args :padline no :exports code :noweb yes
#+EXPORT_SELECT_TAGS: export
#+EXPORT_EXCLUDE_TAGS: noexport
#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)

[[./org/doc_reform.org][doc_reform.org]]  [[./org/][org/]]

* makefile                                                         :makefile:
** settings [+2]                                                  :settings:
*** git version stamp                                         :git:version:

#+BEGIN_SRC makefile :tangle makefile
PROJECT_VERSION :=$(shell echo `git describe --long --tags | sed -e "s/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g"`)
#+END_SRC

*** dub (build tool)                                                  :dub:

#+BEGIN_SRC makefile :tangle makefile
DUB=dub
DUB_FLAGS=-v --force --compiler=
#+END_SRC

*** Project Details                                           :project:sdp:

#+BEGIN_SRC makefile :tangle makefile
PRG_NAME=doc-reform
PRG_NICKAME=rad
PRG_NAME_DIR=$(shell echo `echo $(PRG_NAME) | sed -e "s/-/_/g"`)
PRG_SRC=$(PRG_NAME).d
PRG_SRCDIR=./src
PRG_BIN=$(PRG_NAME)
PRG_BINDIR=./bin
PRG_DOCDIR=./docs
#+END_SRC

*** Emacs Org settings                          :settings:emacs:org:tangle:

#+BEGIN_SRC makefile :tangle makefile
EMACSLISP=/usr/share/emacs/site-lisp
ORG_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-???????? | cut -d '-' -f2`)
EMACSLISP_ORG=~/.emacs.d/elpa/org-$($(shell echo $(ORG_VER_AVAILABLE)))
ORG_CONTRIB_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-plus-???????? | cut -d '-' -f2`)
EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-$($(shell echo $(ORG_CONTRIB_VER_AVAILABLE)))
ORGFILELIST=$(shell echo `ls -1 maker.org org/*.org`)
ORGFILES=""
ORGDIR :=$(shell echo `pwd`)
#+END_SRC

*** Markup Samples
**** pods

#+BEGIN_SRC makefile :tangle makefile
SiSU_MARKUP_SAMPLES_FIND_PODS= \
find data/pod -maxdepth 2 -name pod.manifest | cut -f 1-3 -d / | sort

SiSU_MARKUP_SAMPLES_PODS_FOUND= \
$(SiSU_MARKUP_SAMPLES_FIND_PODS) | xargs

SiSU_MARKUP_SAMPLES_POD = \
data/pod/accelerando.charles_stross \
data/pod/alices_adventures_in_wonderland.lewis_carroll \
data/pod/content.cory_doctorow \
data/pod/democratizing_innovation.eric_von_hippel \
data/pod/down_and_out_in_the_magic_kingdom.cory_doctorow \
data/pod/for_the_win.cory_doctorow \
data/pod/free_as_in_freedom_2.richard_stallman_and_the_free_software_revolution.sam_williams.richard_stallman \
data/pod/free_culture.lawrence_lessig \
data/pod/free_for_all.peter_wayner \
data/pod/gpl2.fsf \
data/pod/gpl3.fsf \
data/pod/gullivers_travels.jonathan_swift \
data/pod/little_brother.cory_doctorow \
data/pod/live-manual \
data/pod/sisu-manual \
data/pod/the_autonomous_contract.ralph_amissah \
data/pod/the_cathedral_and_the_bazaar.eric_s_raymond \
data/pod/the_public_domain.james_boyle \
data/pod/the_wealth_of_networks.yochai_benkler \
data/pod/through_the_looking_glass.lewis_carroll \
data/pod/two_bits.christopher_kelty \
data/pod/un_contracts_international_sale_of_goods_convention_1980 \
data/pod/viral_spiral.david_bollier
#+END_SRC

**** dir

#+BEGIN_SRC makefile :tangle makefile
SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND = \
find data/sisudir/media/text -name *.ss[tm] | sort | xargs

SiSU_MARKUP_SAMPLES_DIR = \
data/sisudir/media/text/accelerando.charles_stross.sst \
data/sisudir/media/text/alices_adventures_in_wonderland.lewis_carroll.sst \
data/sisudir/media/text/content.cory_doctorow.sst \
data/sisudir/media/text/democratizing_innovation.eric_von_hippel.sst \
data/sisudir/media/text/down_and_out_in_the_magic_kingdom.cory_doctorow.sst \
data/sisudir/media/text/ffa_tmp.sst \
data/sisudir/media/text/for_the_win.cory_doctorow.sst \
data/sisudir/media/text/free_as_in_freedom_2.richard_stallman_and_the_free_software_revolution.sam_williams.richard_stallman.sst \
data/sisudir/media/text/free_culture.lawrence_lessig.sst \
data/sisudir/media/text/free_for_all.peter_wayner.sst \
data/sisudir/media/text/gpl2.fsf.sst \
data/sisudir/media/text/gpl3.fsf.sst \
data/sisudir/media/text/gullivers_travels.jonathan_swift.sst \
data/sisudir/media/text/little_brother.cory_doctorow.sst \
data/sisudir/media/text/sisu_markup.sst \
data/sisudir/media/text/sisu_markup_stress_test.sst \
data/sisudir/media/text/sisu_markup_test.sst \
data/sisudir/media/text/table_special_markup.sst \
data/sisudir/media/text/the_autonomous_contract.ralph_amissah.sst \
data/sisudir/media/text/the_cathedral_and_the_bazaar.eric_s_raymond.sst \
data/sisudir/media/text/the_public_domain.james_boyle.sst \
data/sisudir/media/text/the_wealth_of_networks.yochai_benkler.sst \
data/sisudir/media/text/through_the_looking_glass.lewis_carroll.sst \
data/sisudir/media/text/two_bits.christopher_kelty.sst \
data/sisudir/media/text/un_contracts_international_sale_of_goods_convention_1980.sst \
data/sisudir/media/text/viral_spiral.david_bollier.sst
#+END_SRC

** _make_ commands [+2]                                        :make:commands:

- build commands
  - build
  - debug
  - release
- init, clean, distclean etc.
  - init
  - clean
  - expunge
  - distclean
  - distclean_and_init
- org babel tangle
  - tangle
- git snapshot
  - gitsnapshot

*** build commands [+1]                                     :build:compile:
**** _dub_ build rebuild                                               :dub:
***** all compiler builds                               :all:dmd:gdc:ldc:
****** all builds
******* default

#+BEGIN_SRC makefile :tangle makefile
default: ldc
#+END_SRC

******* sample markup file list

#+BEGIN_SRC makefile :tangle makefile
markup_samples:
	find data/pod -name pod.manifest | cut -f 1-3 -d / | sort; \
find data/sisudir/media/text -name *.ss[tm] | sort
#+END_SRC

#+BEGIN_SRC makefile :tangle makefile
markup_pod_samples:
	find data/pod -name pod.manifest | cut -f 1-3 -d / | sort
#+END_SRC

#+BEGIN_SRC makefile :tangle makefile
markup_dir_samples:
	find data/sisudir/media/text -name *.ss[tm] | sort
#+END_SRC

******* quick                                                   :quick:
******** default                                             :default:
#+BEGIN_SRC makefile :tangle makefile
all: dmd ldc gdc
#+END_SRC

******** version                                             :version:

#+BEGIN_SRC makefile :tangle makefile
all_ver: dmd_ver ldc_ver gdc_ver
#+END_SRC

******** debug                                                 :debug:

#+BEGIN_SRC makefile :tangle makefile
all_debug: dmd_debug gdc_debug ldc_debug
#+END_SRC

******** _meson_ build                                           :meson:

#+BEGIN_SRC makefile :tangle makefile
meson:
	rm -r build && mkdir build
	meson --buildtype=debugoptimized build
	ninja -C build
mesonredo:
	rm -r build && mkdir build
	meson --buildtype=debugoptimized build
	ninja -C build
mesonclean: clean skel tangle
	meson --buildtype=debugoptimized build
	ninja -C build
#+END_SRC

******* clean & tangle                                   :clean:tangle:
******** default                                             :default:

#+BEGIN_SRC makefile :tangle makefile
all_clean: clean tangle dmd ldc gdc
#+END_SRC

******** version                                             :version:

#+BEGIN_SRC makefile :tangle makefile
all_ver_clean: clean tangle dmd_ver ldc_ver gdc_ver
#+END_SRC

******** debug                                                 :debug:

#+BEGIN_SRC makefile :tangle makefile
all_debug_ver: dmd_debug_ver gdc_debug_ver ldc_debug_ver
all_debug_clean_ver: clean tangle dmd_debug_ver gdc_debug_ver ldc_debug_ver
#+END_SRC

***** individual compiler builds                                   :each:
****** dmd                                                         :dmd:
******* quick                                                   :quick:
******** default                                             :default:

#+BEGIN_SRC makefile :tangle makefile
dmd:
	$(DUB) --compiler=dmd --config=doc-reform-dmd
#+END_SRC

******** version                                             :version:

#+BEGIN_SRC makefile :tangle makefile
dmd_ver:
	$(DUB) --compiler=dmd --config=doc-reform-dmd-version
	mv bin/doc-reform-dmd-ver bin/doc-reform-dmd-$(PROJECT_VERSION)
	notify-send -t 0 'D dmd compiled test release executable ready' 'doc-reform-dmd-$(PROJECT_VERSION)'
dmd_clean_ver: clean tangle dmd_ver
#+END_SRC

******** debug                                                 :debug:

#+BEGIN_SRC makefile :tangle makefile
dmd_debug:
	$(DUB) --compiler=dmd --config=doc-reform-dmd-debug
#+END_SRC

******* clean & tangle                                   :clean:tangle:

#+BEGIN_SRC makefile :tangle makefile
dmd_rel: expunge skel tangle
	$(DUB) --compiler=dmd --config=doc-reform-release
dmd_rel_tangle: tangle
	$(DUB) --compiler=dmd --config=doc-reform-dmd
dmd_rel_expunge_tangle: expunge skel tangle dmd_rel_tangle
dmd_debug_tangle: tangle
	$(DUB) --compiler=dmd --config=doc-reform-dmd-debug
#+END_SRC

****** gdc                                                         :gdc:
******* quick                                                   :quick:
******** default                                             :default:

#+BEGIN_SRC makefile :tangle makefile
gdc:
	$(DUB) --compiler=gdc --config=doc-reform-gdc
#+END_SRC

******** version                                             :version:

#+BEGIN_SRC makefile :tangle makefile
gdc_ver:
	$(DUB) --compiler=gdc --config=doc-reform-gdc-version
	mv bin/doc-reform-gdc-ver bin/doc-reform-gdc-$(PROJECT_VERSION)
	notify-send -t 0 'D gdc compiled test release executable ready' 'doc-reform-gdc-$(PROJECT_VERSION)'
gdc_clean_ver: clean tangle gdc_ver
#+END_SRC

******** debug                                                 :debug:

#+BEGIN_SRC makefile :tangle makefile
gdc_debug:
	$(DUB) --compiler=gdc --config=doc-reform-gdc-debug
#+END_SRC

******* clean & tangle                                   :clean:tangle:

#+BEGIN_SRC makefile :tangle makefile
gdc_rel: expunge skel tangle
	$(DUB) --compiler=gdc --config=doc-reform-release
gdc_rel_tangle: tangle
	$(DUB) --compiler=gdc --config=doc-reform-gdc
gdc_rel_expunge_tangle: expunge skel tangle gdc_rel_tangle
gdc_debug_tangle: tangle
	$(DUB) --compiler=gdc --config=doc-reform-gdc-debug
#+END_SRC

****** ldc                                                         :ldc:
******* quick                                                   :quick:
******** default                                             :default:

#+BEGIN_SRC makefile :tangle makefile
ldc:
	$(DUB) --compiler=ldc2 --config=doc-reform-ldc
#+END_SRC

******** version                                             :version:

#+BEGIN_SRC makefile :tangle makefile
ldc_ver:
	$(DUB) --compiler=ldc2 --config=doc-reform-ldc-version
	mv bin/doc-reform-ldc-ver bin/doc-reform-ldc-$(PROJECT_VERSION)
	notify-send -t 0 'D ldc2 compiled test release executable ready' 'doc-reform-ldc-$(PROJECT_VERSION)'
ldc_clean_ver: clean tangle ldc_ver
#+END_SRC

******** debug                                                 :debug:

#+BEGIN_SRC makefile :tangle makefile
ldc_debug:
	$(DUB) --compiler=ldc2 --config=doc-reform-ldc-debug
#+END_SRC

******* clean & tangle                                   :clean:tangle:

#+BEGIN_SRC makefile :tangle makefile
ldc_rel: expunge skel tangle
	$(DUB) --compiler=ldc2 --config=doc-reform-release
ldc_rel_tangle: tangle
	$(DUB) --compiler=ldc2 --config=doc-reform-ldc
ldc_rel_expunge_tangle: expunge skel tangle ldc_rel_tangle
ldc_debug_tangle: tangle
	$(DUB) --compiler=ldc2 --config=doc-reform-ldc-debug
#+END_SRC

***** generic
****** init clean distclean etc.                                 :clean:

#+BEGIN_SRC makefile :tangle makefile
reinit: clean skel tangle
skel:
	mkdir -p build; \
	mkdir -p subprojects; \
	mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/conf; \
	mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/meta; \
	mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/output; \
	mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/share; \
	mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/source; \
	mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR); \
	mkdir -p $(PRG_BINDIR);
init: skel
clean:
	rm -rf build; \
	rm -rf subprojects; \
	rm -rf $(PRG_SRCDIR); \
	rm -rf $(PRG_DOCDIR);
clean_bin:
	rm $(PRG_BINDIR)/*
clean_src:
	rm -rf $(PRG_SRCDIR);
clean_docs:
	rm -rf $(PRG_DOCDIR)
expunge:
	rm -f dub.selections.json; \
	rm -rf build; \
	rm -rf subprojects; \
	rm -rf $(PRG_SRCDIR); \
	rm -rf $(PRG_BINDIR); \
	rm -rf $(PRG_DOCDIR);
distclean: expunge
distclean_and_init: expunge
	mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR); \
	mkdir -p $(PRG_BINDIR);
#+END_SRC

****** version                                                 :version:

#+BEGIN_SRC makefile :tangle makefile
ver:
	echo doc-reform-$(PROJECT_VERSION)
#+END_SRC

****** tangle build rebuild                         :clean:tangle:build:

#+BEGIN_SRC makefile :tangle makefile
clean_tangle_build: clean tangle build
tangle_build: tangle build
build: $(PRG_SRCDIR)/$(PRG_SRC)
	$(DC) $(DC_FLAGS) \
	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \
	$(PRG_SRCDIR)/$(PRG_SRC)
rebuild: $(PRG_SRCDIR)/$(PRG_SRC) $(PRG_BINDIR)/$(PRG_BIN).o clean build
makefile_new:
	make -k tangle_maker
restart: clean tangle
#+END_SRC

*** testrun (program against document markup)
**** pods
****** find files

#+BEGIN_SRC makefile :tangle makefile
find_pods:
	$(SiSU_MARKUP_SAMPLES_FIND_PODS)
#+END_SRC

***** dmd
****** find files

#+BEGIN_SRC makefile :tangle makefile
dmd_testrun_find:
	./bin/doc-reform-dmd -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_pod \
data/pod/sisu-manual
dmd_testrun_find_pod_source:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
./bin/doc-reform-ldc -v --source --html --epub \
--output-dir=tmp/program_output_pod
dmd_testrun_find_pod_pod:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
./bin/doc-reform-dmd -v --pod \
--output-dir=tmp/program_output_pod
dmd_testrun_find_pod_html:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
./bin/doc-reform-dmd -v --html \
--output-dir=tmp/program_output_pod
dmd_testrun_find_pod_epub:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
./bin/doc-reform-dmd -v --epub \
--output-dir=tmp/program_output_pod
dmd_testrun_find_pod_all:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
./bin/doc-reform-dmd -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_pod
#+END_SRC

****** path list

#+BEGIN_SRC makefile :tangle makefile
dmd_testrun_paths_pod_source:
	./bin/doc-reform-dmd -v --source \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
dmd_testrun_paths_pod_pod:
	./bin/doc-reform-dmd -v --pod \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
dmd_testrun_paths_pod_html:
	./bin/doc-reform-dmd -v --html \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
dmd_testrun_paths_pod_epub:
	./bin/doc-reform-dmd -v --epub \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
dmd_testrun_paths_pod_all:
	./bin/doc-reform-dmd -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
#+END_SRC

***** gdc
****** find files

#+BEGIN_SRC makefile :tangle makefile
gdc_testrun_find:
	./bin/doc-reform-gdc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_pod \
data/pod/sisu-manual
gdc_testrun_find_pod_source:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
./bin/doc-reform-gdc -v --source \
--output-dir=tmp/program_output_pod
gdc_testrun_find_pod_pod:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
./bin/doc-reform-gdc -v --pod \
--output-dir=tmp/program_output_pod
gdc_testrun_find_pod_html:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
./bin/doc-reform-gdc -v --html \
--output-dir=tmp/program_output_pod
gdc_testrun_find_pod_epub:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
./bin/doc-reform-gdc -v --epub \
--output-dir=tmp/program_output_pod
gdc_testrun_find_pod_all:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
./bin/doc-reform-gdc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_pod
#+END_SRC

****** path list

#+BEGIN_SRC makefile :tangle makefile
gdc_testrun_paths:
	./bin/doc-reform-gdc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_pod \
data/pod/sisu-manual
gdc_testrun_paths_pod_source:
	./bin/doc-reform-gdc -v --source \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
gdc_testrun_paths_pod_pod:
	./bin/doc-reform-gdc -v --pod \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
gdc_testrun_paths_pod_html:
	./bin/doc-reform-gdc -v --html \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
gdc_testrun_paths_pod_epub:
	./bin/doc-reform-gdc -v --epub \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
gdc_testrun_paths_pod_all:
	./bin/doc-reform-gdc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
#+END_SRC

***** ldc
****** find files

#+BEGIN_SRC makefile :tangle makefile
ldc_testrun_find:
	./bin/doc-reform-ldc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_pod \
data/pod/sisu-manual
ldc_testrun_find_pod_source:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
	./bin/doc-reform-ldc -v --source \
--output-dir=tmp/program_output_pod
ldc_testrun_find_pod_pod:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
	./bin/doc-reform-ldc -v --pod \
--output-dir=tmp/program_output_pod
ldc_testrun_find_pod_html:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
	./bin/doc-reform-ldc -v --html \
--output-dir=tmp/program_output_pod
ldc_testrun_find_pod_epub:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
	./bin/doc-reform-ldc -v --epub \
--output-dir=tmp/program_output_pod
ldc_testrun_find_pod_all:
	$(SiSU_MARKUP_SAMPLES_PODS_FOUND) \
	./bin/doc-reform-ldc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_pod
#+END_SRC

****** path list

#+BEGIN_SRC makefile :tangle makefile
ldc_testrun_paths:
	./bin/doc-reform-ldc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_pod \
data/pod/sisu-manual
ldc_testrun_paths_pod_source:
	./bin/doc-reform-ldc -v --source \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
ldc_testrun_paths_pod_pod:
	./bin/doc-reform-ldc -v --pod \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
ldc_testrun_paths_pod_html:
	./bin/doc-reform-ldc -v --html \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
ldc_testrun_paths_pod_epub:
	./bin/doc-reform-ldc -v --epub \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
ldc_testrun_paths_pod_all:
	./bin/doc-reform-ldc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_pod \
$(SiSU_MARKUP_SAMPLES_POD)
#+END_SRC

**** dir
***** dmd
****** find files

#+BEGIN_SRC makefile :tangle makefile
dmd_testrun_find_dir_source:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-dmd -v --source \
--output-dir=tmp/program_output_dir
dmd_testrun_find_dir_pod:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-dmd -v --pod \
--output-dir=tmp/program_output_dir
dmd_testrun_find_dir_html:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-dmd -v --html \
--output-dir=tmp/program_output_dir
dmd_testrun_find_dir_epub:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-dmd -v --epub \
--output-dir=tmp/program_output_dir
dmd_testrun_find_dir_all:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-dmd -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_dir
#+END_SRC

****** file list

#+BEGIN_SRC makefile :tangle makefile
dmd_testrun_filelist_dir_source:
	./bin/doc-reform-dmd -v --source \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
dmd_testrun_filelist_dir_pod:
	./bin/doc-reform-dmd -v --pod \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
dmd_testrun_filelist_dir_html:
	./bin/doc-reform-dmd -v --html \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
dmd_testrun_filelist_dir_epub:
	./bin/doc-reform-dmd -v --epub \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
dmd_testrun_filelist_dir_all:
	./bin/doc-reform-dmd -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
#+END_SRC

***** gdc
****** find files

#+BEGIN_SRC makefile :tangle makefile
gdc_testrun_find_dir_source:
	./bin/doc-reform-gdc -v --source \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
gdc_testrun_find_dir_pod:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-gdc -v --pod \
--output-dir=tmp/program_output_dir
gdc_testrun_find_dir_html:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-gdc -v --html \
--output-dir=tmp/program_output_dir
gdc_testrun_find_dir_epub:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-gdc -v --epub \
--output-dir=tmp/program_output_dir
gdc_testrun_find_dir_all:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-gdc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_dir
#+END_SRC

****** file list

#+BEGIN_SRC makefile :tangle makefile
gdc_testrun_filelist_dir_source:
	./bin/doc-reform-gdc -v --source \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
gdc_testrun_filelist_dir_pod:
	./bin/doc-reform-gdc -v --pod \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
gdc_testrun_filelist_dir_html:
	./bin/doc-reform-gdc -v --html \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
gdc_testrun_filelist_dir_epub:
	./bin/doc-reform-gdc -v --epub \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
gdc_testrun_filelist_dir_all:
	./bin/doc-reform-gdc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
#+END_SRC

***** ldc
****** find files

#+BEGIN_SRC makefile :tangle makefile
ldc_testrun_find_dir_source:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-ldc -v --source \
--output-dir=tmp/program_output_dir
ldc_testrun_find_dir_pod:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-ldc -v --pod \
--output-dir=tmp/program_output_dir
ldc_testrun_find_dir_html:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-ldc -v --html \
--output-dir=tmp/program_output_dir
ldc_testrun_find_dir_epub:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-ldc -v --epub \
--output-dir=tmp/program_output_dir
ldc_testrun_find_dir_all:
	$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/doc-reform-ldc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_dir
#+END_SRC

****** file list

#+BEGIN_SRC makefile :tangle makefile
ldc_testrun_filelist_dir_source:
	./bin/doc-reform-ldc -v --source \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
ldc_testrun_filelist_dir_pod:
	./bin/doc-reform-ldc -v --pod \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
ldc_testrun_filelist_dir_html:
	./bin/doc-reform-ldc -v --html \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
ldc_testrun_filelist_dir_epub:
	./bin/doc-reform-ldc -v --epub \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
ldc_testrun_filelist_dir_all:
	./bin/doc-reform-ldc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
--output-dir=tmp/program_output_dir \
$(SiSU_MARKUP_SAMPLES_DIR)
#+END_SRC

*** org babel tangle batch process command                         :tangle:
**** tangle: org babel tangle *.org

#+BEGIN_SRC makefile :tangle makefile
tangle: skel
	for f in $(ORGFILELIST); do \
		ORGFILES="$$ORGFILES \"$$f\""; \
	done; \
	emacs --batch -Q -q \
	--eval "(progn \
		(add-to-list 'load-path \
			(expand-file-name \"$(EMACSLISP)\")) \
		(add-to-list 'load-path \
			(expand-file-name \"$(EMACSLISP_ORG)\" t)) \
		(add-to-list 'load-path \
			(expand-file-name \"$(EMACSLISP_ORG_CONTRIB)\" t)) \
		(require 'org)(require 'ob)(require 'ob-tangle) \
		(mapc (lambda (file) \
			(find-file (expand-file-name file \"$(ORGDIR)\")) \
				(setq-local org-src-preserve-indentation t) \
			(org-babel-tangle) \
			(kill-buffer)) '($$ORGFILES)))" 2>&1
#+END_SRC

**** tangle maker: org babel tangle maker.org, makefile new

#+BEGIN_SRC makefile :tangle makefile
tangle_maker:
	for f in $(ORGFILELIST); do \
		ORGFILES="\"maker.org\""; \
	done; \
	emacs --batch -Q -q \
	--eval "(progn \
		(add-to-list 'load-path \
			(expand-file-name \"$(EMACSLISP)\")) \
		(add-to-list 'load-path \
			(expand-file-name \"$(EMACSLISP_ORG)\" t)) \
		(add-to-list 'load-path \
			(expand-file-name \"$(EMACSLISP_ORG_CONTRIB)\" t)) \
		(require 'org)(require 'ob)(require 'ob-tangle) \
		(mapc (lambda (file) \
			(find-file (expand-file-name file \".\")) \
				(setq-local org-src-preserve-indentation t) \
			(org-babel-tangle) \
			(kill-buffer)) '($$ORGFILES)))" 2>&1
#+END_SRC

*** git snapshot

#+BEGIN_SRC makefile :tangle makefile
gitsnapshot: distclean tangle
	git commit -a
#+END_SRC

** phony                                                             :phony:

#+BEGIN_SRC makefile :tangle makefile
.PHONY : all build rebuild debug release \
	distclean init \
	tangle gitsnapshot
#+END_SRC

* dub.sdl                                                    :dub:sdl:config:
Every DUB package should contain a [[http://code.dlang.org/package-format?lang=json][dub.json]] (or [[http://code.dlang.org/package-format?lang=sdl][dub.sdl]])
** header (including dependencies)                                  :header:

#+BEGIN_SRC sh  :tangle dub.sdl
name                "doc-reform"
description         "sisu document parser"
homepage            "http://sisudoc.org"
authors             "Ralph Amissah"
copyright           "Copyright © 2016 Ralph Amissah"
license             "AGPL-3+"
targetPath          "./bin"
#sourcePath          "./src/doc_reform"
stringImportPaths   "./views"
buildRequirements   "allowWarnings"
dependency          "archive"      version="~>0.6.0"      # http://code.dlang.org/packages/archive        https://github.com/rcythr/archive
dependency          "d2sqlite3"    version="~>0.16.2"     # https://code.dlang.org/packages/d2sqlite3     http://biozic.github.io/d2sqlite3/d2sqlite3.html
  subconfiguration  "d2sqlite3"   "all-included"
dependency          "imageformats" version="~>7.0.0"      # https://code.dlang.org/packages/imageformats  https://github.com/lgvz/imageformats
dependency          "toml"         version="~>1.0.0-rc.3" # https://code.dlang.org/packages/toml          https://github.com/toml-lang/toml/wiki
dependency          "toml:json"    version="~>1.0.0-rc.3"
#+END_SRC

** generic                                                         :generic:
*** build (sdp)                                                   :release:

#+BEGIN_SRC sh
configuration "build" {
  name                 "build"
  targetType           "executable"
  platforms            "posix"
  targetName           "bin/doc-reform"
  dflags               "-J=views" "-I=src/doc_reform"
  buildOptions         "verbose" "releaseMode" "optimize" "inline"
  postGenerateCommands "/usr/bin/notify-send -t 0 'D release executable ready' 'doc-reform'"
}
#+END_SRC

*** doc-reform-release (sdp)                                      :release:

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-release" {
  name                 "release"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform"
  dflags               "-J=views" "-I=src/doc_reform"
  buildOptions         "verbose" "releaseMode" "optimize" "inline"
  postGenerateCommands "/usr/bin/notify-send -t 0 'D release executable ready' 'doc-reform'"
}
#+END_SRC

** dmd                                                                 :dmd:
*** doc-reform-dmd

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-dmd" {
  name                 "dmd"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-dmd"
  dflags               "-J=views" "-I=src/doc_reform"
  buildRequirements    "allowWarnings"
  buildOptions         "verbose" "inline" # "optimize" # "releaseMode"
  postGenerateCommands "/usr/bin/notify-send -t 0 'D dmd compiled test release executable ready' 'doc-reform-dmd'"
}
#+END_SRC

*** doc-reform-dmd-version

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-dmd-version" {
  name                 "dmd"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-dmd-ver"
  dflags               "-J=views" "-I=src/doc_reform"
  buildRequirements    "allowWarnings"
  buildOptions         "verbose" "optimize" "inline" # "releaseMode"
}
#+END_SRC

*** doc-reform-dmd-release

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-dmd-release" {
  name                 "dmd"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-dmd"
  dflags               "-J=views" "-I=src/doc_reform"
  buildRequirements    "allowWarnings"
  buildOptions         "verbose" "optimize" "inline" "releaseMode"
  postGenerateCommands "/usr/bin/notify-send -t 0 'D dmd compiled test release executable ready' 'doc-reform-dmd'"
}
#+END_SRC

*** doc-reform-dmd-debug

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-dmd-debug" {
  name                 "debuging"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-dmd-debug"
  dflags               "-J=views" "-I=src/doc_reform"
  buildRequirements    "allowWarnings"
  buildOptions         "verbose" "debugMode" "debugInfo" "optimize"
  debugVersions        "checkdoc" "summary"
  debugVersions        "dumpdoc"
  postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'doc-reform-dmd-debug'"
}
#+END_SRC

** ldc                                                                 :ldc:
*** doc-reform-ldc

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-ldc" {
  name                 "ldc"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-ldc"
  dflags               "-O2" "-J=views" "-I=src/doc_reform"
  buildRequirements    "allowWarnings"
  buildOptions         "verbose" "optimize" "inline" # "releaseMode"
  postGenerateCommands "/usr/bin/notify-send -t 0 'D ldc2 compiled test release executable ready' 'doc-reform-ldc'"
}
#+END_SRC

*** doc-reform-ldc-version

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-ldc-version" {
  name                 "ldc"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-ldc-ver"
  dflags               "-O2" "-J=views" "-I=src/doc_reform"
  buildRequirements    "allowWarnings"
  buildOptions         "verbose" "optimize" "inline" # "releaseMode"
}
#+END_SRC

*** doc-reform-ldc-release

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-ldc-release" {
  name                 "ldc"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-ldc"
  dflags               "-O2" "-J=views" "-I=src/doc_reform"
  buildRequirements    "allowWarnings"
  buildOptions         "verbose" "optimize" "inline" "releaseMode"
  postGenerateCommands "/usr/bin/notify-send -t 0 'D ldc2 compiled test release executable ready' 'doc-reform-ldc'"
}
#+END_SRC

*** doc-reform-ldc-debug

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-ldc-debug" {
  name                 "debuging"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-ldc-debug"
  dflags               "-J=views" "-I=src/doc_reform"
  buildRequirements    "allowWarnings"
  buildOptions         "verbose" "debugMode" "debugInfo" "optimize"
  debugVersions        "checkdoc" "summary"
  postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'doc-reform-ldc-debug'"
}
#+END_SRC

** gdc                                                                 :gdc:
*** doc-reform-gdc

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-gdc" {
  name                 "gdc"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-gdc"
  dflags               "-O2" "-J=views" "-I=src/doc_reform"
  lflags               "-lz"
  buildRequirements    "allowWarnings"
  buildOptions         "optimize" "inline" # "releaseMode"
  postGenerateCommands "/usr/bin/notify-send -t 0 'D gdc compiled test release executable ready' 'doc-reform-gdc'"
}
#+END_SRC

*** doc-reform-gdc-version

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-gdc-version" {
  name                 "gdc"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-gdc-ver"
  dflags               "-O2" "-J=views" "-I=src/doc_reform"
  lflags               "-lz"
  buildRequirements    "allowWarnings"
  buildOptions         "verbose" "optimize" "inline" # "releaseMode"
}
#+END_SRC

*** doc-reform-gdc-release

#+BEGIN_SRC sh  :tangle dub.sdl
configuration "doc-reform-gdc-release" {
  name                 "gdc"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-gdc"
  dflags               "-O2" "-J=views" "-I=src/doc_reform"
  lflags               "-lz"
  buildRequirements    "allowWarnings"
  buildOptions         "verbose" "optimize" "inline" "releaseMode"
  postGenerateCommands "/usr/bin/notify-send -t 0 'D gdc compiled test release executable ready' 'doc-reform-gdc'"
}
#+END_SRC

*** doc-reform-gdc-debug

#+BEGIN_SRC sh :tangle dub.sdl
configuration "doc-reform-gdc-debug" {
  name                 "debuging"
  targetType           "executable"
  platforms            "posix"
  targetName           "doc-reform-gdc-debug"
  dflags               "-O2" "-fbuiltin" "-Wall" "-Werror" "-Wformat=2" "-g" "-J=views" "-I=src/doc_reform"
  lflags               "-lz"
  buildOptions         "verbose" "debugMode" "debugInfo" "optimize"
  debugVersions        "checkdoc" "summary"
  postGenerateCommands "/usr/bin/notify-send -t 0 'D gdc compiled (debug with -g) executable ready' 'doc-reform-gdc-debug'"
}
#+END_SRC

* meson
** notes

http://mesonbuild.com/D.html
http://mesonbuild.com/Dependencies.html#Dub
- create and move to subdirectory
  rm -r build; mkdir build && cd build

- build

  - regular build (faster compile time):
    meson && ninja

  - optimized build (faster program run time):
    meson --buildtype=debugoptimized && ninja

  - time build
    time ( meson --buildtype=debugoptimized && ninja )

- other
  - flags
    DFLAGS= DC=ldc2 meson ..

** * projects

#+BEGIN_SRC sh :tangle meson.build
project('doc-reform', 'd',
  license: 'GPL3',
  version: '0.26.5',
  meson_version: '>=0.46'
)
doc_reform_sources = [ 'src/doc_reform/doc_reform.d',
  'src/doc_reform/conf/compile_time_info.d',
  'src/doc_reform/meta/conf_make_meta_json.d',
  'src/doc_reform/meta/conf_make_meta_structs.d',
  'src/doc_reform/meta/conf_make_meta_toml.d',
  'src/doc_reform/meta/defaults.d',
  'src/doc_reform/meta/doc_debugs.d',
  'src/doc_reform/meta/metadoc.d',
  'src/doc_reform/meta/metadoc_from_src.d',
  'src/doc_reform/meta/metadoc_summary.d',
  'src/doc_reform/meta/object_setter.d',
  'src/doc_reform/meta/package.d',
  'src/doc_reform/meta/rgx.d',
  'src/doc_reform/output/create_zip_file.d',
  'src/doc_reform/output/defaults.d',
  'src/doc_reform/output/epub3.d',
  'src/doc_reform/output/html.d',
  'src/doc_reform/output/hub.d',
  'src/doc_reform/output/package.d',
  'src/doc_reform/output/paths_output.d',
  'src/doc_reform/output/rgx.d',
  'src/doc_reform/output/source_pod.d',
  'src/doc_reform/output/sqlite.d',
  'src/doc_reform/output/xmls_css.d',
  'src/doc_reform/output/xmls.d',
  'src/doc_reform/source/paths_source.d',
  'src/doc_reform/source/read_config_files.d',
  'src/doc_reform/source/read_source_files.d',
]
source_root = meson.source_root()
sources_dir = include_directories('src/')
# Dependencies
dep_archive      = dependency('archive',        version: '>= 0.6.0',  fallback: ['archived',       'archive_dep'])
dep_d2sqlite3    = dependency('d2sqlite3',      version: '>= 0.16.2', fallback: ['d2sqlite3',      'd2sqlite3_dep'])
dep_imageformats = dependency('imageformats-d', version: '>= 7.0.0',  fallback: ['imageformats-d', 'imageformats_dep'])
dep_toml         = dependency('toml-d',         version: '>= 1.0.0',  fallback: ['toml-d',         'toml_dep'])
# executable
doc_reform_exe = executable('rad',
  [doc_reform_sources],
  include_directories : [sources_dir],
  d_import_dirs: [include_directories('views')],
  dependencies : [
    dep_archive,
    dep_d2sqlite3,
    dep_imageformats,
    dep_toml
  ],
  install : true
)
#+END_SRC

** subprojects

#+BEGIN_SRC sh :tangle subprojects/README
archive
- dub
  - https://code.dlang.org/packages/archive
- upstream
  - https://github.com/rcythr/archive
- mathias
  - https://github.com/ximion/archive.git

d2sqlite3
- dub
  - https://code.dlang.org/packages/d2sqlite3
- upstream
  - https://github.com/biozic/d2sqlite3
- mathias
  - https://github.com/ximion/d2sqlite3.git

imageformats
- dub
  - https://code.dlang.org/packages/imageformats
- upstream
  - https://github.com/lgvz/imageformats
- mathias
  - https://github.com/ximion/imageformats.git

toml
- dub
  - https://code.dlang.org/packages/toml
- upstream
  - https://github.com/Kripth/toml
- mathias
  - https://github.com/ximion/toml.git
#+END_SRC

*** archived

#+BEGIN_SRC sh :tangle subprojects/archived.wrap
[wrap-git]
directory = archived
url       = https://github.com/ximion/archive.git
revision  = head
#+END_SRC

*** d2sqlite3

#+BEGIN_SRC sh :tangle subprojects/d2sqlite3.wrap
[wrap-git]
directory = d2sqlite3
url       = https://github.com/ximion/d2sqlite3.git
revision  = head
#+END_SRC

*** imageformats-d

#+BEGIN_SRC sh :tangle subprojects/imageformats-d.wrap
[wrap-git]
directory = imageformats-d
url       = https://github.com/ximion/imageformats.git
revision  = head
#+END_SRC

*** toml-d

#+BEGIN_SRC sh :tangle subprojects/toml-d.wrap
[wrap-git]
directory = toml-d
url       = https://github.com/ximion/toml.git
revision  = head
#+END_SRC

* .gitignore                                                      :gitignore:

#+BEGIN_SRC sh :tangle .gitignore
# git ls-files --others --exclude-from=.git/info/exclude
#./.dub/**
*
!.gitignore
!makefile
!version.txt
!dub*.json
!dub.sdl
!meson.build
!tangle
!*.org
!*.d
!*.txt
!conf.sdl
!org
!src
!src/doc_reform
!src/doc_reform/*
!data
!data/*
!data/src/**
!data/pod/**
!*.sst
!*.ssm
!**/*.sst
!**/*.ssm
!subprojects
!**/*.wrap
!subprojects/*.wrap
!pod.manifest
!sisu_document_make
!config_local_site
!sisu_document_make.toml
!config_local_site.toml
!sisudoc
!views
!docs/*.html
.dub/**
tmp/**
*_.org
*_.d
*_.txt
*_
*~
\#*
*.\#*
#!*/
#*~
#\#*
#*.\#*
#+END_SRC

* sh script to batch process _emacs org babel tangle_     :shell_script:tangle:
  [[http://orgmode.org/manual/Batch-execution.html]]
creates a shell batch script called "tangle", that will tangle (emacs org
babel tangle) org files in ./org/ to create .d source files in ./src/doc_reform/
(similar functionality is contained within the "makefile" created by this
"maker.org" file make tangle)

#+BEGIN_SRC sh :tangle tangle :tangle-mode (identity #o755) :shebang #!/bin/sh
# -*- mode: shell-script -*-
# tangle files with org-mode
DIR=`pwd`
ORGFILES=""
EMACSLISP=/usr/share/emacs/site-lisp
ORG_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-???????? | cut -d '-' -f2`)
EMACSLISP_ORG=~/.emacs.d/elpa/org-$($(shell echo $(ORG_VER_AVAILABLE)))
ORG_CONTRIB_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-plus-???????? | cut -d '-' -f2`)
EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-$($(shell echo $(ORG_CONTRIB_VER_AVAILABLE)))
# wrap each argument in the code required to call tangle on it
for i in $@; do
  ORGFILES="$ORGFILES \"$i\""
done
emacs --batch -Q -q \
--eval "(progn
(add-to-list 'load-path (expand-file-name \"$EMACSLISP\"))
(add-to-list 'load-path (expand-file-name \"$EMACSLISP_ORG\" t))
(add-to-list 'load-path (expand-file-name \"$EMACSLISP_ORG_CONTRIB\" t))
(require 'org)(require 'ob)(require 'ob-tangle)
(mapc (lambda (file)
  (find-file (expand-file-name file \"$DIR\"))
  (setq-local org-src-preserve-indentation t)
  (org-babel-tangle)
  (kill-buffer)) '($ORGFILES)))" 2>&1 #|grep tangled
#+END_SRC

* __END__
** build
*** dub

#+BEGIN_SRC sh  :tangle no
dub build -h
#+END_SRC

#+BEGIN_SRC sh
time (dub --compiler=dmd --config=doc-reform-dmd --debug=steps)
time (dub --compiler=ldc2 --config=doc-reform-ldc --debug=steps)
time (dub --compiler=gdc --config=doc-reform-gdc --debug=steps)

time (dub --compiler=ldc2 --config=doc-reform-ldc --debug=checkdoc --debug=summary --debug=dumpdoc)
time (dub --compiler=ldc2 --config=doc-reform-ldc --debug=io)
time (dub --compiler=ldc2 --config=doc-reform-ldc --debug=checkdoc --debug=summary --debug=dumpdoc --debug=io)
time (dub --compiler=ldc2 --config=doc-reform-ldc-debug --debug=io)
time (dub --compiler=gdc --config=doc-reform-gdc-debug --debug=io)
time (dub --compiler=dmd --config=doc-reform-dmd-debug --debug=io)
#+END_SRC

*** make

#+BEGIN_SRC sh
time make dmd
time make gdc
time make ldc
time make gdc ldc
time make all
time make all_ver
time make dmd_ver ldc_ver gdc_ver

time make restart
time make restart ldc
time make tangle ldc

time make ldc_testrun_find_pod_epub
#+END_SRC

** dub zfunc                                                         :zfunc:
*** ,dubdmd                                                           :dmd:

#+BEGIN_SRC sh  :tangle no
time dub --compiler=dmd -v --force
#+END_SRC

*** ,dubldc                                                           :ldc:

#+BEGIN_SRC sh  :tangle no
time dub --compiler=ldc2 -v --force
#+END_SRC

*** ,dubgdc                                                           :gdc:

#+BEGIN_SRC sh  :tangle no
time dub --compiler=gdc -v --force
#+END_SRC

** git
*** project version

echo $(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g')

*** what files changed
git whatchanged --since="1 day ago" --oneline --name-only --pretty=format: | sort -u
git log --since="1 day ago" --name-only --pretty=format: | sort -u

** test run
*** e.g.
time (./bin/doc-reform-ldc --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual/media/text/en/sisu_markup.sst )

time (./bin/doc-reform-ldc --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual )
time (./bin/doc-reform-ldc --source --html -v --output-dir=tmp/program-output data/pod/the_wealth_of_networks.yochai_benkler )
time (./bin/doc-reform-ldc --source --html -v --output-dir=tmp/program-output data/pod/live-manual )

time (~sdp2/bin/doc-reform-ldc --pod --source --html --epub --sqlite-create --sqlite-update -v sisudoc/media/text/en/sisu_markup_stress_test.sst sisudoc/media/text/en/the_wealth_of_networks.yochai_benkler.sst )

can point to directory containing sisudoc.txt file (listing which files to process)

time (~sdp2/bin/doc-reform-ldc --html -v sisudoc)
# will process source files listed in sisudoc.txt for appropriate files and dir structure

e.g. live-manual a multilingual document (with source file inserts .ssi)

time (~sdp2/bin/doc-reform-ldc --html --lang=en,es -v sisudoc)

time ( find data/pod -name pod.manifest | sort | xargs ./bin/doc-reform-ldc --source --html --epub -v --output-dir=tmp/program-output )

time ( find data/pod -maxdepth 2 -name pod.manifest | sort | xargs ./bin/doc-reform-ldc --source --html --epub -v --output-dir=tmp/program-output )
time ( find data/sisudir/media/text -name *.ss[tm] | sort | xargs ./bin/doc-reform-ldc --source --html --epub -v --output-dir=tmp/program-output )

find data/pod -maxdepth 2 -name pod.manifest | sort | xargs

find data/sisudir/media/text -name *.ss[tm] | sort | xargs

*** list markup files
find data/pod -name pod.manifest | sort
find data/sisudir/media/text -name *.ss[tm] | sort

time make ldc_testrun_paths_pod_pod
time make ldc_testrun_paths_pod_pod | ag "^\".+\"|NOT found"
time make ldc_testrun_find_pod_pod
time make ldc_testrun_find_dir_pod
time make ldc_testrun_filelist_dir_pod
** misc
*** compilers

- [X] Set D_COMPILER (one of DMD LDC or GDC)
- [X] Set debug flags (using DMD standard flag -deb

[[http://wiki.dlang.org/Compilers][D Compilers wiki https://wiki.dlang.org/Compilers]]
[[http://dlang.org/download.html][D Compilers download http://dlang.org/download.html]]

*** dub                                                               :dub:

https://github.com/dlang/dub/
http://code.dlang.org/getting_started
http://code.dlang.org/docs/commandline

**** setup
***** dub json or sdlang

Every DUB package should contain a [[http://code.dlang.org/package-format?lang=json][dub.json]] or [[http://code.dlang.org/package-format?lang=sdl][dub.sdl]]
https://code.dlang.org/package-format?lang=sdl
https://code.dlang.org/packages/sdlang-d
https://github.com/Abscissa/SDLang-D/blob/master/HOWTO.md

https://code.dlang.org/docs/commandline

***** dub dependencies

dub list
dub upgrade
dub fetch sdlang-d
dub fetch taggedalgebraic
dub fetch libinputvisitor
dub fetch unit-threaded ?

sdp ~master: /home/ralph/grotto/repo/git.repo/utils/doc-reform-x/
/home/ralph/.dub/packages/*

**** build
***** debug flags

#+BEGIN_SRC sh
biblio
biblio_sorted
bibliosorted
block
bookindex
bookindexmatch
bookindexraw
check
checkdoc
code
comment
dumpdoc                    write out document contents, with object type and ocn
endnotes
endnotes_build
footnotes
footnotesdone
group
header
header_and_content
header1
headerjson
headermakejson
headermetadatajson
heading
headings
headingsfound
insert
io
munge
node
objectrelated1
objectrelated2
objects
ocnoff
para
parabullet
parabulletindent
paraindent
paraindenthang
parent
poem
quote
raw
sdlang
source
srclines
structattrib
summary
table
toc
#+END_SRC