aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2016-04-19 03:15:41 -0400
committerRalph Amissah <ralph@amissah.com>2016-04-24 08:30:48 -0400
commit86fcc0b6cff68ed461027ac82bcc238fbbf32483 (patch)
tree7dbc1e80238fc2b5d94eda587d38a039dfa5fb83
parentorg header (diff)
base ... tagdoc-reform_v0.0.0
-rwxr-xr-xlib/sdp.d3
-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.d194
-rw-r--r--makefile111
-rw-r--r--maker.org209
-rwxr-xr-xtangle5
6 files changed, 255 insertions, 271 deletions
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_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
- }
- }
-}
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\""