#+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: ** compile_time_info: :compile_time_info.d: #+begin_src d :tangle ../lib/sdp/compile_time_info.d /+ compile_time_info compile_time_info.d +/ template CompileTimeInfo() { <> } #+end_src