From ed302d1be74d2b4e69ee4b6e3834637ed531eaea Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sun, 24 Apr 2016 22:08:24 -0400 Subject: step1 --- org/compile_time_info.org | 101 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 org/compile_time_info.org (limited to 'org/compile_time_info.org') 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() { + <> +} +#+end_src -- cgit v1.2.3