diff options
| author | Ralph Amissah <ralph@amissah.com> | 2016-04-19 03:15:41 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2016-04-24 08:30:48 -0400 | 
| commit | 86fcc0b6cff68ed461027ac82bcc238fbbf32483 (patch) | |
| tree | 7dbc1e80238fc2b5d94eda587d38a039dfa5fb83 | |
| parent | org header (diff) | |
base ... tagdoc-reform_v0.0.0
| -rwxr-xr-x | lib/sdp.d | 3 | ||||
| -rw-r--r-- | lib/sdp/ao_read_markup_source.d (renamed from lib/sdp/ao_markup_source_raw.d) | 4 | ||||
| -rw-r--r-- | lib/sdp/sdp.d | 194 | ||||
| -rw-r--r-- | makefile | 111 | ||||
| -rw-r--r-- | maker.org | 209 | ||||
| -rwxr-xr-x | tangle | 5 | 
6 files changed, 255 insertions, 271 deletions
| @@ -1,5 +1,4 @@  #!/usr/bin/env rdmd -  /*    sdp    sdp.d @@ -27,7 +26,7 @@ import    lib.sdp.ao_defaults,                  // sdp/ao_defaults.d    lib.sdp.ao_emitter,                   // sdp/ao_emitter.d    lib.sdp.ao_interface,                 // sdp/ao_interface.d -  lib.sdp.ao_markup_source_raw,         // sdp/ao_markup_source_raw.d +  lib.sdp.ao_read_markup_source,         // sdp/ao_read_markup_source.d    lib.sdp.ao_object_setter,             // sdp/ao_object_setter.d    lib.sdp.ao_output_debugs,             // sdp/ao_output_debugs.d    lib.sdp.ao_rgx,                       // sdp/ao_rgx.d diff --git a/lib/sdp/ao_markup_source_raw.d b/lib/sdp/ao_read_markup_source.d index fb76e98..1c574ea 100644 --- a/lib/sdp/ao_markup_source_raw.d +++ b/lib/sdp/ao_read_markup_source.d @@ -1,6 +1,6 @@  /* -  markup source raw -  ao_markup_source_raw.d +  read markup source +  ao_read_markup_source.d  */  mixin template SiSUmarkupRaw() {    class MarkupRaw { diff --git a/lib/sdp/sdp.d b/lib/sdp/sdp.d deleted file mode 100644 index 6c10a83..0000000 --- a/lib/sdp/sdp.d +++ /dev/null @@ -1,194 +0,0 @@ -#!/usr/bin/env rdmd -/* -  sdp -  sdp.d -*/ -import -  std.stdio, -  std.file, -  std.exception, -  // std.path, -  std.regex, -  std.utf, -  std.string, -  std.array, -  std.json, -  std.process, -  std.typecons, -  std.algorithm, -  std.range, -  std.container, -  std.traits, -  // std.variant, -  lib.sdp.ao_output_debugs,        // ao_output_debugs.d       ao_output_debugs.org -  lib.sdp.ao_defaults,             // ao_defaults.d            ao_defaults.arg -  lib.sdp.ao_rgx,                  // ao_rgx.d                 ao_rgx.org -  lib.sdp.ao_interface,            // ao_interface.d           ao_interface.arg -  lib.sdp.ao_emitter,              // ao_emitter.d             ao_emitter.org -  lib.sdp.ao_scan_inserts,         // ao_scan_inserts.d        ao_scan_inserts.org -  lib.sdp.ao_markup_source_raw,    // ao_markup_source_raw.d   ao_markup_source_raw.org -  lib.sdp.ao_abstract_doc_source,  // ao_abstract_doc_source.d ao_abstract_doc_source.org -  lib.sdp.ao_assertions,           // ao_assertions.d          ao_assertions.org -  lib.sdp.ao_object_setter,        // ao_object_setter.d       ao_object_setter.org -  lib.sdp.ao_utils;                // ao_utils.d               ao_utils.org -  // std.conv; -import std.conv : to; -mixin RgxInit; mixin Interfaces; mixin Emitters; -void main(string[] argv) { -  mixin SiSUheader; -  mixin SiSUbiblio; -  mixin SiSUrgxInitFlags; -  mixin SiSUmarkupRaw; -  mixin SiSUdocInserts; -  mixin SiSUdocAbstraction; -  mixin SiSUoutputDebugs; -  mixin ScreenTxtColors; -  auto cli = new CLI(); -  auto raw = new MarkupRaw(); -  auto abs = new Abstraction(); -  auto dbg = new SDPoutputDebugs(); -  // struct DocumentParts { -  //   string[string][] contents; -  //   JSONValue[string] metadata_json; -  //   JSONValue[string] make_json; -  //   string[][string][string] bookindex_unordered_hashes; -  //   JSONValue[] biblio; -  // } -  char[][] msc; -  string[1000] fns_src; -  string flag_action; -  string[string] actions; -  int file_count; -  actions = [ -    "assert"  : "yes", -  ]; -  auto rgx = new Rgx(); -  scope(success) { -    debug(checkdoc) { -      writeln( -        scr_txt_color["cyan"], -        "~ run complete, ok ~ ", -        scr_txt_color["off"], -      ); -    } -    // writeln("0"); -  } -  scope(failure) { -    debug(checkdoc) { -      writeln( -        scr_txt_color["fucshia"], -        "~ run failure ~", -        scr_txt_color["off"], -      ); -    } -    // writeln("1"); -  } -  foreach(cmdlnins; argv) { -    if (match(cmdlnins, rgx.flag_action)) { -      flag_action ~= " " ~ cmdlnins; -      actions = cli.extract_actions(cmdlnins, actions); -    } else if (match(cmdlnins, rgx.src_pth)) { -      fns_src[file_count] = cmdlnins; -      file_count++; -    } -  } -  foreach(fn_src; fns_src) { -    if (!empty(fn_src)) { -      scope(success) { -        debug(checkdoc) { -          writeln( -            scr_txt_color["green"], -            "~ document complete, ok ~ ", -            scr_txt_color["off"], -            fn_src -          ); -        } -        // writeln("0"); -      } -      scope(failure) { -        debug(checkdoc) { -          writeln( -            scr_txt_color["red"], -            "~ document run failure ~", -            scr_txt_color["off"], -            fn_src -          ); -        } -        // writeln("1"); -      } -      enforce( -        match(fn_src, rgx.src_pth), -        "not a sisu markup filename" -      ); -      auto markup_sourcefile_content = -        raw.markupSourceContentRawLineArray(fn_src); // alternative call -        // raw.markupSourceLineArray(raw.markupSourceString(fn_src)); // alternative calls (milliseconds faster?) -      debug(insert) { -        string[string] sysenv; -        sysenv["pwd"] = shell("pwd"); -        writeln(sysenv["pwd"]); -        auto m = match(fn_src, rgx.src_pth); -        // auto m = match(fn_src, rgx.src_pth); -        auto markup_src_file_path = m.captures[1]; -        writeln("markup source file path: ", markup_src_file_path); // writeln(m.captures[1]); -        writeln(m.captures[2]); -      } -      if (match(fn_src, rgx.src_fn_master)) { -      /* if master file scan document source for document imports (inserted sub-documents) */ -        auto ins = new Inserts(); -        auto markup_master_sourcefile_content = -          ins.scan_doc_source(markup_sourcefile_content, fn_src); -        msc = markup_master_sourcefile_content; -      } else if (match(fn_src, rgx.src_fn)) { -        msc = markup_sourcefile_content; -      } else { -        writeln("not a recognized filename"); -      } -      debug(raw) { -        foreach (line; msc) { -          writeln(line); -        } -      } -      /* process document ao_abstract_doc_source SiSUdocAbstraction::Abstraction return abstraction as tuple */ -      auto t = -        abs.abstract_doc_source(msc); -      static assert(!isTypeTuple!(t)); -      auto contents = t[0]; -      // static assert(!isIterable!(contents)); -      auto metadata_json = t[1]; -      auto make_json = t[2]; -      auto bookindex_unordered_hashes = t[3]; -      auto biblio = t[4]; -      // destroy(t); -      // DocumentParts -      debug(checkdoc) { -        dbg.abstract_doc_source_debugs( -          contents, -          make_json, -          metadata_json, -          bookindex_unordered_hashes, -          biblio, -          fn_src, -          actions -        ); -      } -      // compose abstract document markup state -      // append book index -      scope(exit) { -        destroy(msc); -        destroy(t); -        destroy(contents); -        destroy(make_json); -        destroy(metadata_json); -        destroy(bookindex_unordered_hashes); -        destroy(fn_src); -        destroy(biblio); -      } -    } else { -      /* no recognized filename provided */ -      writeln("no recognized filename"); -      break; -      // terminate, stop -    } -  } -} @@ -1,24 +1,22 @@  DMD=dmd -DMD_FLAGS=-de -w -DMD_FLAGS_RELEASE=-release +DMD_FLAGS=-de -w -J./lib +DMD_FLAGS_RELEASE=-O -release  DMD_FLAG_BINOF=-of -  LDC=ldc2 -LDC_FLAGS=-w -LDC_FLAGS_RELEASE=-release +LDC_FLAGS=-w -J=lib +LDC_FLAGS_RELEASE=-O4 -release  LDC_FLAG_BINOF=-of= -  GDC=gdc  #GDC=gdc-5  GDC_FLAGS= -GDC_FLAGS_RELEASE=-frelease +GDC_FLAGS_RELEASE=-march=native -O3 -pipe -frelease +#GDC_FLAGS_RELEASE=-frelease  GDC_FLAG_BINOF=-o - +RDMD=rdmd +RDMD_FLAGS=--build-only --compiler=  # SET_D_COMPILER=(one of: DMD LDC or GDC):  SET_D_COMPILER=LDC - -SET_DC_FLAGS_DEBUG_EXTRA=-debug=headings -debug=footnotes -debug=endnotes - +SET_DC_FLAGS_DEBUG_EXTRA=-debug=code  DC=$($(SET_D_COMPILER))  DC_FLAGS=$($(shell echo $(SET_D_COMPILER)_FLAGS))  DC_FLAGS_RELEASE=$($(shell echo $(SET_D_COMPILER)_FLAGS_RELEASE)) @@ -26,7 +24,6 @@ DC_FLAG_BINOF=$($(shell echo $(SET_D_COMPILER)_FLAG_BINOF))  DC_FLAGS_DEBUG_DEFAULT_SET=-unittest -debug=checkdoc -debug=summary  DC_FLAGS_DEBUG_SET=\  	$(shell echo $(DC_FLAGS_DEBUG_DEFAULT_SET) $(SET_DC_FLAGS_DEBUG_EXTRA)) -  ifeq ($(DC), $(DMD))  	DC_FLAGS_DEBUG :=$(shell echo $(DC_FLAGS_DEBUG_SET))  endif @@ -36,22 +33,20 @@ endif  ifeq ($(DC), $(GDC))  	DC_FLAGS_DEBUG :=$(shell echo $(DC_FLAGS_DEBUG_SET)| sed -e "s/-debug/-fdebug/g")  endif -  PRG_NAME=sdp  PRG_SRC=$(PRG_NAME).d  PRG_SRCDIR=./lib  PRG_BIN=$(PRG_NAME) -PRG_BINDIR=bin - +PRG_BINDIR=./bin  # ORG +ORG_VERSION=20160411  EMACSLISP=/usr/share/emacs/site-lisp -EMACSLISP_ORG=~/.emacs.d/elpa/org-20151005 -EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-20151005 +EMACSLISP_ORG=~/.emacs.d/elpa/org-$($(shell echo $(ORG_VERSION))) +EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-$($(shell echo $(ORG_VERSION)))  ORGFILELIST=$(shell echo `ls -1 maker.org org/*.org`)  ORGFILES=""  ORGDIR=$(shell echo `pwd`) - -all: build +all: tangle build  build: $(PRG_SRCDIR)/$(PRG_SRC)  	$(DC) $(DC_FLAGS) \ @@ -60,6 +55,12 @@ build: $(PRG_SRCDIR)/$(PRG_SRC)  rebuild: $(PRG_SRCDIR)/$(PRG_SRC) $(PRG_BINDIR)/$(PRG_BIN).o clean build +makefile_new: +	make -k tangle_maker +rdmd: $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(DC) $(DC_FLAGS) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_NAME)/$(PRG_SRC)  debug: $(PRG_SRCDIR)/$(PRG_SRC)  	$(DC) $(DC_FLAGS) $(DC_FLAGS_DEBUG) \  	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ @@ -79,30 +80,50 @@ debug_gdc: $(PRG_SRCDIR)/$(PRG_SRC)  	$(GDC) $(GDC_FLAGS) $(GDC_FLAGS_DEBUG) \  	$(GDC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \  	$(PRG_SRCDIR)/$(PRG_SRC) +debug_rdmd: $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(DC) $(DC_FLAGS) $(DC_FLAGS_DEBUG) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_NAME)/$(PRG_SRC) + +debug_rdmd_dmd: $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(DMD) $(DC_FLAGS) $(DC_FLAGS_DEBUG) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_NAME)/$(PRG_SRC) + +debug_rdmd_ldc: $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(LDC) $(DC_FLAGS) $(LDC_FLAGS_DEBUG) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_NAME)/$(PRG_SRC) -release: distclean_and_init tangle $(PRG_SRCDIR)/$(PRG_SRC) +debug_rdmd_gdc: $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(GDC) $(DC_FLAGS) $(GDC_FLAGS_DEBUG) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_NAME)/$(PRG_SRC) +release: distclean tangle $(PRG_SRCDIR)/$(PRG_SRC)  	$(DC) $(DC_FLAGS) $(DC_FLAGS_RELEASE) \  	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \  	$(PRG_SRCDIR)/$(PRG_SRC) - -init: -	mkdir -p $(PRG_SRCDIR); \ +release_rdmd: distclean tangle $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(DC) $(DC_FLAGS) $(DC_FLAGS_RELEASE) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_SRC) +skel: +	mkdir -p $(PRG_SRCDIR)/$(PRG_NAME); \  	mkdir -p $(PRG_BINDIR); -clean: $(PRG_BINDIR)/$(PRG_BIN).o -	rm $(PRG_BINDIR)/$(PRG_NAME).o +init: skel -expunge: init $(PRG_BINDIR) +clean: +	rm $(PRG_BINDIR)/* + +expunge:  	rm -rf $(PRG_BINDIR); \  	rm -rf $(PRG_SRCDIR); -distclean: init $(PRG_BINDIR) expunge - -distclean_and_init: init $(PRG_BINDIR) expunge -	mkdir -p $(PRG_SRCDIR); \ -	mkdir -p $(PRG_BINDIR); +distclean: expunge -tangle: +distclean_and_init: expunge skel +tangle: skel  	for f in $(ORGFILELIST); do \  		ORGFILES="$$ORGFILES \"$$f\""; \  	done; \ @@ -117,13 +138,29 @@ tangle:  		(require 'org)(require 'ob)(require 'ob-tangle) \  		(mapc (lambda (file) \  			(find-file (expand-file-name file \"$(ORGDIR)\")) \ -		    (setq-local org-src-preserve-indentation t) \ +				(setq-local org-src-preserve-indentation t) \  			(org-babel-tangle) \  			(kill-buffer)) '($$ORGFILES)))" 2>&1 - -gitsnapshot: distclean_and_init tangle +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 \  	clean distclean init \ -	tangle +	tangle gitsnapshot @@ -1,7 +1,7 @@  #+TITLE: sdp (project) makefile  #+AUTHOR: Ralph Amissah  #+EMAIL: ralph.amissah@gmail.com -#+STARTUP: indent +#+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 @@ -12,38 +12,46 @@  #+FILETAGS: :sdp:rel:makefile:  #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) -* sdp makefile +* sdp makefile                                                     :makefile:  [[./org/sdp.org][sdp.org]]  [[./org/][org/]] -** settings [+2]                                                   :settings: +** TODO settings [+2]                                              :settings:  *** alternative D compilers [+1]                                   :compiler: -**** dmd                                                                 :dmd: +**** dmd                                                                :dmd:  #+BEGIN_SRC makefile :tangle makefile  DMD=dmd -DMD_FLAGS=-de -w -Jlib -DMD_FLAGS_RELEASE=-release +DMD_FLAGS=-de -w -J./lib +DMD_FLAGS_RELEASE=-O -release  DMD_FLAG_BINOF=-of  #+END_SRC -**** ldc2                                                                :ldc: +**** ldc2                                                               :ldc:  #+BEGIN_SRC makefile :tangle makefile  LDC=ldc2  LDC_FLAGS=-w -J=lib -LDC_FLAGS_RELEASE=-release +LDC_FLAGS_RELEASE=-O4 -release  LDC_FLAG_BINOF=-of=  #+END_SRC -**** gdc                                                                 :gdc: +**** gdc                                                                :gdc:  #+BEGIN_SRC makefile :tangle makefile  GDC=gdc  #GDC=gdc-5  GDC_FLAGS= -GDC_FLAGS_RELEASE=-frelease +GDC_FLAGS_RELEASE=-march=native -O3 -pipe -frelease +#GDC_FLAGS_RELEASE=-frelease  GDC_FLAG_BINOF=-o  #+END_SRC +**** rdmd + +#+BEGIN_SRC makefile :tangle makefile +RDMD=rdmd +RDMD_FLAGS=--build-only --compiler= +#+END_SRC +  *** TODO set/select: ~D compiler~ & ~debug flags~ [+1] [2/2]   :select:  - [X] Set D_COMPILER (one of DMD LDC or GDC)  - [X] Set debug flags (using DMD standard flag -debug=) @@ -53,19 +61,83 @@ GDC_FLAG_BINOF=-o  [[http://dlang.org/download.html][D Compilers download]]  Set D_COMPILER one of DMD, LDC or GDC e.g.: SET_D_COMPILER=DMD +***** TODO set compiler  #+BEGIN_SRC makefile :tangle makefile  # SET_D_COMPILER=(one of: DMD LDC or GDC):  SET_D_COMPILER=LDC  #+END_SRC -**** SET debug flags: "SET_DC_FLAGS_DEBUG_EXTRA=-debug=": :compiler:flags:debug: +***** +note+ + +"nice how you can get 2x speedup without a single line of asm just by using ldc", p0nce +"gdc might be worth a shot if your code is compatible", profan +re: dmd "one can easily get 2x (and even more) speedup by simply switching to gdc -O2", ketmar + +**** SET debug flags: "SET_DC_FLAGS_DEBUG_EXTRA=-debug=":  :compiler:flags:debug:  Set debug flags using DMD standard flag -debug= e.g.:    SET_DC_FLAGS_DEBUG_EXTRA=-debug=headings -debug=bookindex +  SET_DC_FLAGS_DEBUG_EXTRA=-debug=headings -debug=footnotes -debug=endnotes +***** TODO set debug flags  #+BEGIN_SRC makefile :tangle makefile -SET_DC_FLAGS_DEBUG_EXTRA=-debug=headings -debug=footnotes -debug=endnotes +SET_DC_FLAGS_DEBUG_EXTRA=-debug=code  #+END_SRC +***** debug flags + +Set debug flags using DMD standard flag -debug= e.g.: +  SET_DC_FLAGS_DEBUG_EXTRA=-debug=dumpdoc +  SET_DC_FLAGS_DEBUG_EXTRA=-debug=headings -debug=bookindex +  SET_DC_FLAGS_DEBUG_EXTRA=-debug=headings -debug=biblio +  SET_DC_FLAGS_DEBUG_EXTRA=-debug=code + +  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 +  header1 +  headerjson +  headermakejson +  headermetadatajson +  heading +  headings +  headingsfound +  insert +  munge +  node +  objectrelated1 +  objectrelated2 +  objects +  ocnoff +  para +  parabullet +  parabulletindent +  paraindent +  paraindenthang +  parent +  poem +  quote +  raw +  source +  srclines +  structattrib +  summary +  table +  *** D compiler settings [+1]                              :settings:compiler:  **** compiler settings @@ -100,16 +172,17 @@ PRG_NAME=sdp  PRG_SRC=$(PRG_NAME).d  PRG_SRCDIR=./lib  PRG_BIN=$(PRG_NAME) -PRG_BINDIR=bin +PRG_BINDIR=./bin  #+END_SRC  *** Emacs Org settings                            :settings:emacs:org:tangle:  #+BEGIN_SRC makefile :tangle makefile  # ORG +ORG_VERSION=20160411  EMACSLISP=/usr/share/emacs/site-lisp -EMACSLISP_ORG=~/.emacs.d/elpa/org-20151005 -EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-20151005 +EMACSLISP_ORG=~/.emacs.d/elpa/org-$($(shell echo $(ORG_VERSION))) +EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-$($(shell echo $(ORG_VERSION)))  ORGFILELIST=$(shell echo `ls -1 maker.org org/*.org`)  ORGFILES=""  ORGDIR=$(shell echo `pwd`) @@ -135,7 +208,7 @@ ORGDIR=$(shell echo `pwd`)  **** build rebuild  #+BEGIN_SRC makefile :tangle makefile -all: build +all: tangle build  build: $(PRG_SRCDIR)/$(PRG_SRC)  	$(DC) $(DC_FLAGS) \ @@ -143,6 +216,18 @@ build: $(PRG_SRCDIR)/$(PRG_SRC)  	$(PRG_SRCDIR)/$(PRG_SRC)  rebuild: $(PRG_SRCDIR)/$(PRG_SRC) $(PRG_BINDIR)/$(PRG_BIN).o clean build + +makefile_new: +	make -k tangle_maker +#+END_SRC + +**** rdmd build rebuild + +#+BEGIN_SRC makefile :tangle makefile +rdmd: $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(DC) $(DC_FLAGS) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_NAME)/$(PRG_SRC)  #+END_SRC  **** debug @@ -169,40 +254,73 @@ debug_gdc: $(PRG_SRCDIR)/$(PRG_SRC)  	$(PRG_SRCDIR)/$(PRG_SRC)  #+END_SRC +**** debug rdmd + +#+BEGIN_SRC makefile :tangle makefile +debug_rdmd: $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(DC) $(DC_FLAGS) $(DC_FLAGS_DEBUG) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_NAME)/$(PRG_SRC) + +debug_rdmd_dmd: $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(DMD) $(DC_FLAGS) $(DC_FLAGS_DEBUG) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_NAME)/$(PRG_SRC) + +debug_rdmd_ldc: $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(LDC) $(DC_FLAGS) $(LDC_FLAGS_DEBUG) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_NAME)/$(PRG_SRC) + +debug_rdmd_gdc: $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(GDC) $(DC_FLAGS) $(GDC_FLAGS_DEBUG) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_NAME)/$(PRG_SRC) +#+END_SRC +  **** release  #+BEGIN_SRC makefile :tangle makefile -release: distclean_and_init tangle $(PRG_SRCDIR)/$(PRG_SRC) +release: distclean tangle $(PRG_SRCDIR)/$(PRG_SRC)  	$(DC) $(DC_FLAGS) $(DC_FLAGS_RELEASE) \  	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \  	$(PRG_SRCDIR)/$(PRG_SRC)  #+END_SRC +**** release rdmd + +#+BEGIN_SRC makefile :tangle makefile +release_rdmd: distclean tangle $(PRG_SRCDIR)/$(PRG_SRC) +	$(RDMD) $(RDMD_FLAGS)$(DC) $(DC_FLAGS) $(DC_FLAGS_RELEASE) \ +	$(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ +	$(PRG_SRCDIR)/$(PRG_SRC) +#+END_SRC +  *** init clean distclean etc.                                         :clean:  #+BEGIN_SRC makefile :tangle makefile -init: -	mkdir -p $(PRG_SRCDIR); \ +skel: +	mkdir -p $(PRG_SRCDIR)/$(PRG_NAME); \  	mkdir -p $(PRG_BINDIR); -clean: $(PRG_BINDIR)/$(PRG_BIN).o -	rm $(PRG_BINDIR)/$(PRG_NAME).o +init: skel + +clean: +	rm $(PRG_BINDIR)/* -expunge: init $(PRG_BINDIR) +expunge:  	rm -rf $(PRG_BINDIR); \  	rm -rf $(PRG_SRCDIR); -distclean: init $(PRG_BINDIR) expunge +distclean: expunge -distclean_and_init: init $(PRG_BINDIR) expunge -	mkdir -p $(PRG_SRCDIR); \ -	mkdir -p $(PRG_BINDIR); +distclean_and_init: expunge skel  #+END_SRC  *** Org Babel Tangle batch process command                           :tangle: - +**** tangle: org babel tangle *.org  #+BEGIN_SRC makefile :tangle makefile -tangle: +tangle: skel  	for f in $(ORGFILELIST); do \  		ORGFILES="$$ORGFILES \"$$f\""; \  	done; \ @@ -217,7 +335,29 @@ tangle:  		(require 'org)(require 'ob)(require 'ob-tangle) \  		(mapc (lambda (file) \  			(find-file (expand-file-name file \"$(ORGDIR)\")) \ -		    (setq-local org-src-preserve-indentation t) \ +				(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 @@ -225,16 +365,16 @@ tangle:  *** Git snapshot  #+BEGIN_SRC makefile :tangle makefile -gitsnapshot: distclean_and_init tangle +gitsnapshot: distclean tangle  	git commit -a  #+END_SRC -** phony +** phony                                                              :phony:  #+BEGIN_SRC makefile :tangle makefile  .PHONY : all build rebuild debug release \  	clean distclean init \ -	tangle +	tangle gitsnapshot  #+END_SRC  * sh script to batch process emacs org babel tangle     :shell_script:tangle: @@ -250,8 +390,9 @@ babel tangle) org files in ./org/ to create .d source files in ./lib/sdp/  DIR=`pwd`  ORGFILES=""  EMACSLISP=/usr/share/emacs/site-lisp -EMACSLISP_ORG=~/.emacs.d/elpa/org-20151005 -EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-20151005 +ORG_VERSION=20160411 +EMACSLISP_ORG=~/.emacs.d/elpa/org-$($(shell echo $(ORG_VERSION))) +EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-$($(shell echo $(ORG_VERSION)))  # wrap each argument in the code required to call tangle on it  for i in $@; do    ORGFILES="$ORGFILES \"$i\"" @@ -4,8 +4,9 @@  DIR=`pwd`  ORGFILES=""  EMACSLISP=/usr/share/emacs/site-lisp -EMACSLISP_ORG=~/.emacs.d/elpa/org-20151005 -EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-20151005 +ORG_VERSION=20160411 +EMACSLISP_ORG=~/.emacs.d/elpa/org-$($(shell echo $(ORG_VERSION))) +EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-$($(shell echo $(ORG_VERSION)))  # wrap each argument in the code required to call tangle on it  for i in $@; do    ORGFILES="$ORGFILES \"$i\"" | 
