diff options
Diffstat (limited to 'maker.org')
-rw-r--r-- | maker.org | 209 |
1 files changed, 175 insertions, 34 deletions
@@ -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\"" |