#+TITLE: sdp compile time info #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] #+DESCRIPTION for documents - structuring, publishing in multiple formats and search #+KEYWORDS #+LANGUAGE: en #+STARTUP: indent content #+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) [[./sdp.org][sdp]] [[./][org/]] * compilation info :module:sdp:compile_time_info: [[../maker.org][maker.org makefile]] [[./sdp.org][sdp hub]] [[./][org/]] e.g. do on linux bsd osx not windows: version(Windows) {} else { ... } ** 0. module template #+begin_src d :tangle ../src/sdp/conf/compile_time_info.d /++ compile_time_info +/ module sdp.conf.compile_time_info; template CompileTimeInfo() { <<sdp_compile_time_info>> } #+end_src ** 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