aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/compile_time_info.org
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2016-04-24 22:08:24 -0400
committerRalph Amissah <ralph@amissah.com>2016-04-24 22:08:24 -0400
commited302d1be74d2b4e69ee4b6e3834637ed531eaea (patch)
tree0f605c3756788d2fda6fe0782a7a472172a285b9 /org/compile_time_info.org
parentbase ... tag (diff)
Diffstat (limited to 'org/compile_time_info.org')
-rw-r--r--org/compile_time_info.org101
1 files changed, 101 insertions, 0 deletions
diff --git a/org/compile_time_info.org b/org/compile_time_info.org
new file mode 100644
index 0000000..d733d0b
--- /dev/null
+++ b/org/compile_time_info.org
@@ -0,0 +1,101 @@
+#+TITLE: sdp compile time info
+#+AUTHOR: Ralph Amissah
+#+EMAIL: ralph.amissah@gmail.com
+#+STARTUP: indent
+#+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
+#+OPTIONS: author:nil email:nil creator:nil timestamp:nil
+#+PROPERTY: header-args :padline no :exports code :noweb yes
+#+EXPORT_SELECT_TAGS: export
+#+EXPORT_EXCLUDE_TAGS: noexport
+#+FILETAGS: :sdp:niu:compile:info:
+#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+
+* compilation info :compile:
+[[../maker.org][maker.org makefile]]
+[[./sdp.org][sdp hub]] [[./][org/]]
+
+e.g. do on linux bsd osx not windows:
+version(Windows) {} else { ... }
+
+*** complile time os
+OS type shows during compilation
+
+**** set os flags
+#+name: sdp_compile_time_info
+#+BEGIN_SRC d
+version(Windows) {
+ pragma(msg, "[ Windows compilation ]");
+ enum os = "Windows";
+} else version(OSX) {
+ pragma(msg, "[ Mac OS X POSIX System compilation ]");
+ enum os = "OSX";
+} else version(linux) {
+ pragma(msg, "[ Linux POSIX System compilation ]");
+ enum os = "Linux";
+} else version(FreeBSD) {
+ pragma(msg, "[ FreeBSD POSIX System compilation ]");
+ enum os = "FreeBSD";
+} else version(OpenBSD) {
+ pragma(msg, "[ OpenBSD POSIX System compilation ]");
+ enum os = "OpenBSD";
+} else version(NetBSD) {
+ pragma(msg, "[ NetBSD POSIX System compilation ]");
+ enum os = "NetBSD";
+} else version(DragonFlyBSD) {
+ pragma(msg, "[ DragonFlyBSD POSIX System compilation ]");
+ enum os = "DragonFlyBSD";
+} else version(POSIX) {
+ pragma(msg, "[ POSIX System compilation ]");
+ enum os = "POSIX";
+} else {
+ static assert(0, "OS not listed");
+}
+#+END_SRC
+
+*** complile time static if os
+OS type compiled in and shows during program run
+
+**** report os flag (set) (not used here)
+#+BEGIN_SRC d
+static if(sysWindows) {
+ writeln("Windows");
+} else static if(sysOSX) {
+ writeln("OSX");
+} else static if(sysLinux) {
+ writeln("Linux");
+} else static if(sysFreeBSD) {
+ writeln("FreeBSD");
+} else static if(sysOpenBSD) {
+ writeln("OpenBSD");
+} else static if(sysNetBSD) {
+ writeln("NetBSD");
+} else static if(sysDragonFlyBSD) {
+ writeln("DragonFlyBSD");
+} else {
+ writeln("other");
+}
+#+END_SRC
+
+*** 64 bit compilation?
+#+name: sdp_compile_time_info
+#+BEGIN_SRC d
+version(D_LP64) {
+ enum bits = "64 bit";
+} else {
+ enum bits = "32 bit";
+}
+#+END_SRC
+
+* tangles :tangle:
+** code structure :sdp.d:
+#+begin_src d :tangle ../lib/sdp/compile_time_info.d
+/+
+ compile_time_info
+ compile_time_info.d
++/
+mixin template CompileTimeInfo() {
+ <<sdp_compile_time_info>>
+}
+#+end_src