blob: 20a6cc8a897d892ca149ec8cfdb3cd519f673d16 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
-*- mode: org -*-
#+TITLE: sisudoc spine (doc_reform) compile time info
#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
#+FILETAGS: :spine:compile:
#+AUTHOR: Ralph Amissah
#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :results no
#+PROPERTY: header-args+ :cache no
#+PROPERTY: header-args+ :padline no
#+PROPERTY: header-args+ :mkdirp yes
#+OPTIONS: H:3 num:nil toc:t \n:t ::t |:t ^:nil -:t f:t *:t
- [[./doc-reform.org][doc-reform.org]] [[./][org/]]
* compilation info
- [[./spine_build_scaffold.org][make/build]]
- [[./doc-reform.org][doc-reform.org]] [[./][org/]]
e.g. do on linux bsd osx not windows:
version(Windows) {} else { ... }
** _module template_ :module:compile_time_info:
#+HEADER: :tangle "../src/sisudoc/conf/compile_time_info.d"
#+HEADER: :noweb yes
#+BEGIN_SRC d
<<doc_header_including_copyright_and_license>>
/++
compile_time_info
+/
module sisudoc.conf.compile_time_info;
@safe:
template CompileTimeInfo() {
<<spine_compile_time_info_0>>
<<spine_compile_time_info_1>>
}
#+END_SRC
*** document header including copyright & license
#+NAME: doc_header_including_copyright_and_license
#+HEADER: :noweb yes
#+BEGIN_SRC emacs-lisp
<<./sisudoc_spine_version_info_and_doc_header_including_copyright_and_license.org:spine_doc_header_including_copyright_and_license()>>
#+END_SRC
** complile time os
OS type shows during compilation
*** set os flags
#+NAME: spine_compile_time_info_0
#+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: spine_compile_time_info_1
#+BEGIN_SRC d
version(D_LP64) {
enum bits = "64 bit";
} else {
enum bits = "32 bit";
}
#+END_SRC
* __END__
|