PROJECT_VERSION :=$(shell echo `git describe --long --tags | sed -e "s/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g"`) DUB=dub DUB_FLAGS=-v --force --compiler= PRG_NAME=sdp PRG_SRC=$(PRG_NAME).d PRG_SRCDIR=./src PRG_BIN=$(PRG_NAME) PRG_BINDIR=./bin PRG_DOCDIR=./docs 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`) all: dmd ldc gdc all_ver: dmd_ver ldc_ver gdc_ver all_debug: dmd_debug gdc_debug ldc_debug all_clean: clean tangle dmd ldc gdc all_ver_clean: clean tangle dmd_ver ldc_ver gdc_ver 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 dmd: $(DUB) --compiler=dmd --config=sdp-dmd 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)' dmd_debug: $(DUB) --compiler=dmd --config=sdp-dmd-debug 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 gdc: $(DUB) --compiler=gdc --config=sdp-gdc 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)' gdc_debug: $(DUB) --compiler=gdc --config=sdp-gdc-debug 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 ldc: $(DUB) --compiler=ldc2 --config=sdp-ldc 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)' ldc_debug: $(DUB) --compiler=ldc2 --config=sdp-ldc-debug 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 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); ver: echo sdp-$(PROJECT_VERSION) 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 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 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 gitsnapshot: distclean tangle git commit -a .PHONY : all build rebuild debug release \ distclean init \ tangle gitsnapshot