aboutsummaryrefslogtreecommitdiffhomepage
path: root/maker.org
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 /maker.org
parentorg header (diff)
base ... tagdoc-reform_v0.0.0
Diffstat (limited to 'maker.org')
-rw-r--r--maker.org209
1 files changed, 175 insertions, 34 deletions
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\""