#+TITLE: sdp (project) 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 #+FILETAGS: :sdp:rel:makefile: #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./org/sdp.org][sdp.org]] [[./org/][org/]] * sdp 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=sdp 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 ** _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 ******* 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 ******* 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=sdp-dmd #+END_SRC ******** version :version: #+BEGIN_SRC makefile :tangle makefile dmd_ver: $(DUB) --compiler=dmd --config=sdp-dmd-version mv bin/sdp-dmd-ver bin/sdp-dmd-$(PROJECT_VERSION) notify-send -t 0 'D dmd compiled test release executable ready' 'sdp-dmd-$(PROJECT_VERSION)' #+END_SRC ******** debug :debug: #+BEGIN_SRC makefile :tangle makefile dmd_debug: $(DUB) --compiler=dmd --config=sdp-dmd-debug #+END_SRC ******* clean & tangle :clean:tangle: #+BEGIN_SRC makefile :tangle makefile dmd_rel: expunge skel tangle $(DUB) --compiler=dmd --config=sdp-release dmd_rel_tangle: tangle $(DUB) --compiler=dmd --config=sdp-dmd dmd_rel_expunge_tangle: expunge skel tangle dmd_rel_tangle dmd_debug_tangle: tangle $(DUB) --compiler=dmd --config=sdp-dmd-debug dmd_debug_docs: clean_docs tangle $(DUB) --compiler=dmd --config=sdp-dmd-debug-docs dmd_debug_unittest: tangle $(DUB) --compiler=dmd --config=sdp-dmd-debug-unittest dmd_debug_clean: tangle $(DUB) --compiler=dmd --config=sdp-debug-clean dmd_debug_ver: $(DUB) --compiler=dmd --config=sdp-dmd-debug-version mv bin/sdp-dmd-debug-ver bin/sdp-dmd-debug-$(PROJECT_VERSION) notify-send -t 0 'D dmd compiled test release executable ready' 'sdp-dmd-debug-$(PROJECT_VERSION)' dmd_debug_clean_ver: clean tangle dmd_debug_clean_ver #+END_SRC ****** gdc :gdc: ******* quick :quick: ******** default :default: #+BEGIN_SRC makefile :tangle makefile gdc: $(DUB) --compiler=gdc --config=sdp-gdc #+END_SRC ******** version :version: #+BEGIN_SRC makefile :tangle makefile gdc_ver: $(DUB) --compiler=gdc --config=sdp-gdc-version mv bin/sdp-gdc-ver bin/sdp-gdc-$(PROJECT_VERSION) notify-send -t 0 'D gdc compiled test release executable ready' 'sdp-gdc-$(PROJECT_VERSION)' #+END_SRC ******** debug :debug: #+BEGIN_SRC makefile :tangle makefile gdc_debug: $(DUB) --compiler=gdc --config=sdp-gdc-debug #+END_SRC ******* clean & tangle :clean:tangle: #+BEGIN_SRC makefile :tangle makefile gdc_rel: expunge skel tangle $(DUB) --compiler=gdc --config=sdp-release gdc_rel_tangle: tangle $(DUB) --compiler=gdc --config=sdp-gdc gdc_rel_expunge_tangle: expunge skel tangle gdc_rel_tangle gdc_debug_tangle: tangle $(DUB) --compiler=gdc --config=sdp-gdc-debug gdc_debug_docs: clean_docs tangle $(DUB) --compiler=gdc --config=sdp-gdc-debug-docs gdc_debug_unittest: tangle $(DUB) --compiler=gdc --config=sdp-gdc-debug-unittest gdc_debug_clean: tangle $(DUB) --compiler=gdc --config=sdp-debug-clean gdc_debug_ver: $(DUB) --compiler=gdc --config=sdp-dmd-debug-version mv bin/sdp-gdc-debug-ver bin/sdp-gdc-debug-$(PROJECT_VERSION) notify-send -t 0 'D gdc compiled test release executable ready' 'sdp-gdc-debug-$(PROJECT_VERSION)' gdc_debug_clean_ver: clean tangle gdc_debug_ver #+END_SRC ****** ldc :ldc: ******* quick :quick: ******** default :default: #+BEGIN_SRC makefile :tangle makefile ldc: $(DUB) --compiler=ldc2 --config=sdp-ldc #+END_SRC ******** version :version: #+BEGIN_SRC makefile :tangle makefile ldc_ver: $(DUB) --compiler=ldc2 --config=sdp-ldc-version mv bin/sdp-ldc-ver bin/sdp-ldc-$(PROJECT_VERSION) notify-send -t 0 'D ldc2 compiled test release executable ready' 'sdp-ldc-$(PROJECT_VERSION)' #+END_SRC ******** debug :debug: #+BEGIN_SRC makefile :tangle makefile ldc_debug: $(DUB) --compiler=ldc2 --config=sdp-ldc-debug #+END_SRC ******* clean & tangle :clean:tangle: #+BEGIN_SRC makefile :tangle makefile ldc_rel: expunge skel tangle $(DUB) --compiler=ldc2 --config=sdp-release ldc_rel_tangle: tangle $(DUB) --compiler=ldc2 --config=sdp-ldc ldc_rel_expunge_tangle: expunge skel tangle ldc_rel_tangle ldc_debug_tangle: tangle $(DUB) --compiler=ldc2 --config=sdp-ldc-debug ldc_debug_docs: clean_docs tangle $(DUB) --compiler=ldc2 --config=sdp-ldc-debug-docs ldc_debug_unittest: tangle $(DUB) --compiler=ldc2 --config=sdp-ldc-debug-unittest ldc_debug_clean: tangle $(DUB) --compiler=ldc2 --config=sdp-debug-clean ldc_debug_ver: $(DUB) --compiler=ldc2 --config=sdp-ldc-debug-version mv bin/sdp-ldc-debug-ver bin/sdp-ldc-debug-$(PROJECT_VERSION) notify-send -t 0 'D ldc2 compiled test release executable ready' 'sdp-ldc-debug-$(PROJECT_VERSION)' ldc_debug_clean_ver: clean tangle ldc_debug_ver #+END_SRC ***** generic ****** init clean distclean etc. :clean: #+BEGIN_SRC makefile :tangle makefile skel: mkdir -p $(PRG_SRCDIR)/$(PRG_NAME)/meta; \ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME)/conf; \ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME)/output; \ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME); \ mkdir -p $(PRG_BINDIR); init: skel clean: 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 $(PRG_SRCDIR); \ rm -rf $(PRG_BINDIR); \ rm -rf $(PRG_DOCDIR); distclean: expunge distclean_and_init: expunge mkdir -p $(PRG_SRCDIR)/$(PRG_NAME); \ mkdir -p $(PRG_BINDIR); #+END_SRC ****** version :version: #+BEGIN_SRC makefile :tangle makefile ver: echo sdp-$(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 *** 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 (configuration) :dub: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]]) ** dub.sdl :sdl:sdp: *** header :header: #+BEGIN_SRC sh :tangle dub.sdl name "sdp" description "sisu document parser" homepage "http://sisudoc.org" authors "Ralph Amissah" copyright "Copyright © 2016 Ralph Amissah" license "AGPL-3+" targetPath "./bin" #sourcePath "./src/sdp" stringImportPaths "./views" buildRequirements "allowWarnings" dependency "sdlang-d" version="~>0.10.1" dependency "d2sqlite3" version="~>0.13.1" # https://code.dlang.org/packages/d2sqlite3 http://biozic.github.io/d2sqlite3/d2sqlite3.html subconfiguration "d2sqlite3" "all-included" dependency "archive" version="~>0.6.0" # http://code.dlang.org/packages/archive https://github.com/rcythr/archive #+END_SRC *** generic :generic: **** sdp-release (sdp) :release: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-release" { name "release" targetType "executable" platforms "posix" targetName "sdp" dflags "-J=views" "-I=src/sdp" buildOptions "verbose" "releaseMode" "optimize" "inline" postGenerateCommands "/usr/bin/notify-send -t 0 'D release executable ready' 'sdp'" } #+END_SRC **** sdp-debug :debug: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-debug" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-debug" dflags "-g" "-J=views" "-I=src/sdp" #lflags "ld.gold" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "optimize" debugVersions "checkdoc" "summary" debugVersions "dumpdoc" postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'sdp-debug'" } #+END_SRC **** sdp-tmp #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-tmp" { name "tmp" targetType "executable" platforms "posix" targetName "sdp-tmp" dflags "-J=views" "-I=src/sdp" #lflags "ld.gold" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "optimize" debugVersions "checkdoc" "summary" debugVersions "tmp" debugVersions "crap" debugVersions "header" debugVersions "header1" postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'sdp-tmp'" } #+END_SRC **** sdp-debug-clean :debug:clean: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-debug-clean" { name "debug-clean" targetType "executable" platforms "posix" targetName "sdp-debug-clean" dflags "-J=views" "-I=src/sdp" buildOptions "verbose" "debugMode" "debugInfo" "optimize" postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'sdp-debug-clean'" } #+END_SRC *** dmd :dmd: **** sdp-dmd :default: ***** sdp-dmd #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-dmd" { name "dmd" targetType "executable" platforms "posix" targetName "sdp-dmd" dflags "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "optimize" "inline" # "releaseMode" postGenerateCommands "/usr/bin/notify-send -t 0 'D dmd compiled test release executable ready' 'sdp-dmd'" } #+END_SRC ***** sdp-dmd-version #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-dmd-version" { name "dmd" targetType "executable" platforms "posix" targetName "sdp-dmd-ver" dflags "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "optimize" "inline" # "releaseMode" } #+END_SRC ***** sdp-dmd-release #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-dmd-release" { name "dmd" targetType "executable" platforms "posix" targetName "sdp-dmd" dflags "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "optimize" "inline" "releaseMode" postGenerateCommands "/usr/bin/notify-send -t 0 'D dmd compiled test release executable ready' 'sdp-dmd'" } #+END_SRC **** sdp-dmd-debug :debug: ***** sdp-dmd-debug #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-dmd-debug" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-dmd-debug" dflags "-g" "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "optimize" debugVersions "checkdoc" "summary" debugVersions "dumpdoc" postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'sdp-dmd-debug'" } #+END_SRC ***** sdp-dmd-debug-version :version: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-dmd-debug-version" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-dmd-debug-ver" dflags "-g" "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "optimize" debugVersions "checkdoc" "summary" debugVersions "dumpdoc" } #+END_SRC ***** sdp-dmd-debug-unittest :unittest: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-dmd-debug-unittest" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-dmd-debug" dflags "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "unittests" "optimize" debugVersions "checkdoc" "summary" debugVersions "dumpdoc" postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'sdp-dmd-debug'" } #+END_SRC ***** sdp-dmd-debug-docs :docs: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-dmd-debug-docs" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-dmd-debug" dflags "-J=views" "-I=src/sdp" #lflags "ld.gold" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "optimize" debugVersions "checkdoc" "summary" debugVersions "dumpdoc" postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'sdp-dmd-debug'" } #+END_SRC *** ldc :ldc: **** sdp-ldc :default: ***** sdp-ldc #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-ldc" { name "ldc" targetType "executable" platforms "posix" targetName "sdp-ldc" dflags "-O2" "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "optimize" "inline" # "releaseMode" postGenerateCommands "/usr/bin/notify-send -t 0 'D ldc2 compiled test release executable ready' 'sdp-ldc'" } #+END_SRC ***** sdp-ldc-version #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-ldc-version" { name "ldc" targetType "executable" platforms "posix" targetName "sdp-ldc-ver" dflags "-O2" "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "optimize" "inline" # "releaseMode" } #+END_SRC ***** sdp-ldc-release #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-ldc-release" { name "ldc" targetType "executable" platforms "posix" targetName "sdp-ldc" dflags "-O2" "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "optimize" "inline" "releaseMode" postGenerateCommands "/usr/bin/notify-send -t 0 'D ldc2 compiled test release executable ready' 'sdp-ldc'" } #+END_SRC **** sdp-ldc-debug :debug: ***** sdp-ldc-debug #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-ldc-debug" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-ldc-debug" dflags "-g" "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "optimize" debugVersions "checkdoc" "summary" postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'sdp-ldc-debug'" } #+END_SRC ***** sdp-ldc-debug-version :version: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-ldc-debug-version" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-ldc-debug-ver" dflags "-g" "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "optimize" debugVersions "checkdoc" "summary" } #+END_SRC ***** sdp-ldc-debug-unittest :unittest: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-ldc-debug-unittest" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-ldc-debug" dflags "-J=views" "-I=src/sdp" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "unittests" "optimize" debugVersions "checkdoc" "summary" postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'sdp-ldc-debug'" } #+END_SRC ***** sdp-ldc-debug-docs :docs: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-ldc-debug-docs" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-ldc-debug" dflags "-J=views" "-I=src/sdp" "-Dddocs" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "optimize" debugVersions "checkdoc" "summary" postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'sdp-ldc-debug'" } #+END_SRC *** gdc :gdc: **** sdp-gdc :default: ***** sdp-gdc #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-gdc" { name "gdc" targetType "executable" platforms "posix" targetName "sdp-gdc" dflags "-O2" "-J=views" "-I=src/sdp" lflags "-lz" buildRequirements "allowWarnings" buildOptions "verbose" "optimize" "inline" # "releaseMode" postGenerateCommands "/usr/bin/notify-send -t 0 'D gdc compiled test release executable ready' 'sdp-gdc'" } #+END_SRC ***** sdp-gdc-version #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-gdc-version" { name "gdc" targetType "executable" platforms "posix" targetName "sdp-gdc-ver" dflags "-O2" "-J=views" "-I=src/sdp" lflags "-lz" buildRequirements "allowWarnings" buildOptions "verbose" "optimize" "inline" # "releaseMode" } #+END_SRC ***** sdp-gdc-release #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-gdc-release" { name "gdc" targetType "executable" platforms "posix" targetName "sdp-gdc" dflags "-O2" "-J=views" "-I=src/sdp" lflags "-lz" buildRequirements "allowWarnings" buildOptions "verbose" "optimize" "inline" "releaseMode" postGenerateCommands "/usr/bin/notify-send -t 0 'D gdc compiled test release executable ready' 'sdp-gdc'" } #+END_SRC **** sdp-gdc-debug :debug: ***** sdp-gdc-debug #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-gdc-debug" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-gdc-debug" dflags "-O2" "-fbuiltin" "-Wall" "-Werror" "-Wformat=2" "-g" "-J=views" "-I=src/sdp" 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' 'sdp-gdc-debug'" } #+END_SRC ***** sdp-gdc-debug-version :version: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-gdc-debug-version" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-gdc-debug-ver" dflags "-O2" "-fbuiltin" "-Wall" "-Werror" "-Wformat=2" "-g" "-J=views" "-I=src/sdp" lflags "-lz" buildOptions "verbose" "debugMode" "debugInfo" "optimize" debugVersions "checkdoc" "summary" } #+END_SRC ***** sdp-gdc-debug-unittest :unittest: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-gdc-debug-unittest" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-gdc-debug" dflags "-J=views" "-I=src/sdp" "-Dddocs" lflags "-lz" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "unittests" "optimize" debugVersions "checkdoc" "summary" postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'sdp-gdc-debug'" } #+END_SRC ***** sdp-gdc-debug-docs :docs: #+BEGIN_SRC sh :tangle dub.sdl configuration "sdp-gdc-debug-docs" { name "debuging" targetType "executable" platforms "posix" targetName "sdp-gdc-debug" dflags "-J=views" "-I=src/sdp" "-Dddocs" lflags "-lz" buildRequirements "allowWarnings" buildOptions "verbose" "debugMode" "debugInfo" "optimize" debugVersions "checkdoc" "summary" postGenerateCommands "/usr/bin/notify-send -t 0 'D (debug) executable ready' 'sdp-gdc-debug'" } #+END_SRC *** +dub.json+ :json: **** +sdp+ #+BEGIN_SRC json :tangle no #+BEGIN_SRC json :tangle dub.json { "name" : "sdp", "targetType" : "executable", "targetName" : "sdp", "targetPath" : "bin", "description" : "sisu document parser.", "authors" : ["Ralph Amissah"], "homepage" : "http://sisudoc.org", "license" : "AGPL-3+", "add-path" : "./src/sdp", "dependencies": { } } ** 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 * .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 .dub/** !tangle !*.org !*.d !*.txt !*.sst !conf.sdl !sisu_document_make !org !src !src/* !sisudoc !views !docs/*.html !**/ **/.#* #!*/ #*~ #\#* #*.\#* #+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/sdp/ (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__ ** D build notes :notes: *** 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/sdp-x/ /home/ralph/.dub/packages/* **** TODO build ***** call dub directly #+BEGIN_SRC sh :tangle no dub build -h #+END_SRC #+BEGIN_SRC sh time (dub --compiler=ldc2 --config=sdp-ldc --debug=checkdoc --debug=summary --debug=dumpdoc) time (dub --compiler=ldc2 --config=sdp-ldc --debug=io) time (dub --compiler=ldc2 --config=sdp-ldc --debug=checkdoc --debug=summary --debug=dumpdoc --debug=io) time (dub --compiler=ldc2 --config=sdp-ldc-debug --debug=io) time (dub --compiler=gdc --config=sdp-gdc-debug --debug=io) time (dub --compiler=dmd --config=sdp-dmd-debug --debug=io) #+END_SRC ***** 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 *** make **** TODO build #+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 restart time make restart ldc time make tangle ldc #+END_SRC ** git *** project version echo $(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g')