From 86fcc0b6cff68ed461027ac82bcc238fbbf32483 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 19 Apr 2016 03:15:41 -0400 Subject: base ... tag --- lib/sdp.d | 3 +- lib/sdp/ao_markup_source_raw.d | 55 ----------- lib/sdp/ao_read_markup_source.d | 55 +++++++++++ lib/sdp/sdp.d | 194 ------------------------------------- makefile | 111 ++++++++++++++------- maker.org | 209 +++++++++++++++++++++++++++++++++------- tangle | 5 +- 7 files changed, 308 insertions(+), 324 deletions(-) delete mode 100644 lib/sdp/ao_markup_source_raw.d create mode 100644 lib/sdp/ao_read_markup_source.d delete mode 100644 lib/sdp/sdp.d diff --git a/lib/sdp.d b/lib/sdp.d index 7f94128..268031d 100755 --- a/lib/sdp.d +++ b/lib/sdp.d @@ -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_markup_source_raw.d deleted file mode 100644 index fb76e98..0000000 --- a/lib/sdp/ao_markup_source_raw.d +++ /dev/null @@ -1,55 +0,0 @@ -/* - markup source raw - ao_markup_source_raw.d -*/ -mixin template SiSUmarkupRaw() { - class MarkupRaw { - auto rgx = new Rgx(); - final private string markupSourceString(in char[] fn_src) { - enforce( - exists(fn_src)!=0, - "file not found" - ); - string source_txt_str; - try { - if (exists(fn_src)) { - source_txt_str = readText(fn_src); // ok - } - } - catch (ErrnoException ex) { - // Handle errors - } - catch (UTFException ex) { - // Handle validation errors - } - catch (FileException ex) { - // Handle errors - } - std.utf.validate(source_txt_str); - return source_txt_str; - } - final private char[][] markupSourceLineArray(in string src_text) { - char[][] source_line_arr = - split(cast(char[]) src_text, rgx.line_delimiter); - return source_line_arr; - } - final char[][] markupInsertSourceContentRawLineArray(in char[] fn_src) { - enforce( - match(fn_src, rgx.src_fn_find_inserts), - "not a sisu markup filename" - ); - auto source_txt_str = markupSourceString(fn_src); - auto source_line_arr = markupSourceLineArray(source_txt_str); - return source_line_arr; - } - final char[][] markupSourceContentRawLineArray(in char[] fn_src) { - enforce( - match(fn_src, rgx.src_pth), - "not a sisu markup filename" - ); - auto source_txt_str = markupSourceString(fn_src); - auto source_line_arr = markupSourceLineArray(source_txt_str); - return source_line_arr; - } - } -} diff --git a/lib/sdp/ao_read_markup_source.d b/lib/sdp/ao_read_markup_source.d new file mode 100644 index 0000000..1c574ea --- /dev/null +++ b/lib/sdp/ao_read_markup_source.d @@ -0,0 +1,55 @@ +/* + read markup source + ao_read_markup_source.d +*/ +mixin template SiSUmarkupRaw() { + class MarkupRaw { + auto rgx = new Rgx(); + final private string markupSourceString(in char[] fn_src) { + enforce( + exists(fn_src)!=0, + "file not found" + ); + string source_txt_str; + try { + if (exists(fn_src)) { + source_txt_str = readText(fn_src); // ok + } + } + catch (ErrnoException ex) { + // Handle errors + } + catch (UTFException ex) { + // Handle validation errors + } + catch (FileException ex) { + // Handle errors + } + std.utf.validate(source_txt_str); + return source_txt_str; + } + final private char[][] markupSourceLineArray(in string src_text) { + char[][] source_line_arr = + split(cast(char[]) src_text, rgx.line_delimiter); + return source_line_arr; + } + final char[][] markupInsertSourceContentRawLineArray(in char[] fn_src) { + enforce( + match(fn_src, rgx.src_fn_find_inserts), + "not a sisu markup filename" + ); + auto source_txt_str = markupSourceString(fn_src); + auto source_line_arr = markupSourceLineArray(source_txt_str); + return source_line_arr; + } + final char[][] markupSourceContentRawLineArray(in char[] fn_src) { + enforce( + match(fn_src, rgx.src_pth), + "not a sisu markup filename" + ); + auto source_txt_str = markupSourceString(fn_src); + auto source_line_arr = markupSourceLineArray(source_txt_str); + return source_line_arr; + } + } +} 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 - } - } -} diff --git a/makefile b/makefile index f3fc0d3..72f9128 100644 --- a/makefile +++ b/makefile @@ -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 diff --git a/maker.org b/maker.org index 3a46840..ddd6d2a 100644 --- a/maker.org +++ b/maker.org @@ -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\"" diff --git a/tangle b/tangle index d6aa952..334cd43 100755 --- a/tangle +++ b/tangle @@ -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\"" -- cgit v1.2.3