#+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 **** 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/* **** call dub directly #+BEGIN_SRC sh :tangle no dub build -h #+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 restart time make restart ldc #+END_SRC ** git project version echo $(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g')