1 module dlangui.core.config;
2
3 extern(C) @property dstring DLANGUI_VERSION();
4
5 //version = USE_CONSOLE;
6
7 version(USE_CONSOLE) {
8 version = NO_OPENGL;
9 version = NO_FREETYPE;
10 enum ENABLE_OPENGL = false;
11 enum ENABLE_FREETYPE = false;
12 enum BACKEND_CONSOLE = true;
13 enum BACKEND_GUI = false;
14 enum BACKEND_SDL = false;
15 enum BACKEND_X11 = false;
16 enum BACKEND_DSFML = false;
17 enum BACKEND_WIN32 = false;
18 enum BACKEND_ANDROID = false;
19 } else {
20 version(USE_EXTERNAL) {}
21 else
22 enum BACKEND_GUI = true;
23
24 version (NO_FREETYPE) {
25 enum ENABLE_FREETYPE = false;
26 } else version (USE_FREETYPE) {
27 enum ENABLE_FREETYPE = true;
28 } else {
29 version (Windows) {
30 enum ENABLE_FREETYPE = false;
31 } else {
32 enum ENABLE_FREETYPE = true;
33 }
34 }
35
36 // provide default configuratino definitions
37 version (USE_SDL) {
38 // SDL backend already selected using version identifier
39 version (USE_OPENGL) {
40 enum ENABLE_OPENGL = true;
41 } else {
42 enum ENABLE_OPENGL = false;
43 }
44 enum BACKEND_SDL = true;
45 enum BACKEND_X11 = false;
46 enum BACKEND_DSFML = false;
47 enum BACKEND_WIN32 = false;
48 enum BACKEND_ANDROID = false;
49 enum BACKEND_CONSOLE = false;
50 } else version (USE_ANDROID) {
51 // Android backend already selected using version identifier
52 version (USE_OPENGL) {
53 enum ENABLE_OPENGL = true;
54 } else {
55 enum ENABLE_OPENGL = false;
56 }
57 enum BACKEND_SDL = false;
58 enum BACKEND_X11 = false;
59 enum BACKEND_DSFML = false;
60 enum BACKEND_WIN32 = false;
61 enum BACKEND_ANDROID = true;
62 enum BACKEND_CONSOLE = false;
63 } else version (USE_X11) {
64 // X11 backend already selected using version identifier
65 version (USE_OPENGL) {
66 enum ENABLE_OPENGL = true;
67 } else {
68 enum ENABLE_OPENGL = false;
69 }
70 enum BACKEND_SDL = false;
71 enum BACKEND_X11 = true;
72 enum BACKEND_DSFML = false;
73 enum BACKEND_WIN32 = false;
74 enum BACKEND_CONSOLE = false;
75 } else version (USE_WIN32) {
76 // Win32 backend already selected using version identifier
77 version (USE_OPENGL) {
78 enum ENABLE_OPENGL = true;
79 } else {
80 enum ENABLE_OPENGL = false;
81 }
82 enum BACKEND_SDL = false;
83 enum BACKEND_X11 = false;
84 enum BACKEND_DSFML = false;
85 enum BACKEND_WIN32 = true;
86 enum BACKEND_ANDROID = false;
87 enum BACKEND_CONSOLE = false;
88 } else version (USE_DSFML) {
89 // DSFML backend already selected using version identifier
90 version (USE_OPENGL) {
91 enum ENABLE_OPENGL = true;
92 } else {
93 enum ENABLE_OPENGL = false;
94 }
95 enum BACKEND_SDL = false;
96 enum BACKEND_X11 = false;
97 enum BACKEND_DSFML = true;
98 enum BACKEND_WIN32 = false;
99 enum BACKEND_ANDROID = false;
100 enum BACKEND_CONSOLE = false;
101 } else version (USE_EXTERNAL) {
102 // External backend already selected using version identifier
103 version (USE_OPENGL) {
104 enum ENABLE_OPENGL = true;
105 } else {
106 enum ENABLE_OPENGL = false;
107 }
108 enum BACKEND_GUI = false;
109 enum BACKEND_CONSOLE = false;
110 enum BACKEND_SDL = false;
111 enum BACKEND_X11 = false;
112 enum BACKEND_DSFML = false;
113 enum BACKEND_WIN32 = false;
114 } else {
115 // no backend selected: set default based on platform
116 version (Windows) {
117 // For Windows
118 version (NO_OPENGL) {
119 enum ENABLE_OPENGL = false;
120 } else {
121 enum ENABLE_OPENGL = true;
122 }
123 enum BACKEND_SDL = false;
124 enum BACKEND_X11 = false;
125 enum BACKEND_DSFML = false;
126 enum BACKEND_WIN32 = true;
127 enum BACKEND_ANDROID = false;
128 enum BACKEND_CONSOLE = false;
129 } else version(Android) {
130 // Default for Linux: use SDL and OpenGL
131 enum ENABLE_OPENGL = true;
132 enum BACKEND_SDL = true;
133 enum BACKEND_X11 = false;
134 enum BACKEND_DSFML = false;
135 enum BACKEND_WIN32 = false;
136 enum BACKEND_ANDROID = true;
137 enum BACKEND_CONSOLE = false;
138 } else version(linux) {
139 // Default for Linux: use SDL and OpenGL
140 version (NO_OPENGL) {
141 enum ENABLE_OPENGL = false;
142 } else {
143 enum ENABLE_OPENGL = true;
144 }
145 enum BACKEND_SDL = true;
146 enum BACKEND_X11 = false;
147 enum BACKEND_DSFML = false;
148 enum BACKEND_WIN32 = false;
149 enum BACKEND_ANDROID = false;
150 enum BACKEND_CONSOLE = false;
151 } else version(OSX) {
152 // Default: use SDL and OpenGL
153 version (NO_OPENGL) {
154 enum ENABLE_OPENGL = false;
155 } else {
156 enum ENABLE_OPENGL = true;
157 }
158 enum BACKEND_SDL = true;
159 enum BACKEND_X11 = false;
160 enum BACKEND_DSFML = false;
161 enum BACKEND_WIN32 = false;
162 enum BACKEND_ANDROID = false;
163 enum BACKEND_CONSOLE = false;
164 } else {
165 // Unknown platform: use SDL and OpenGL
166 version (NO_OPENGL) {
167 enum ENABLE_OPENGL = false;
168 } else {
169 enum ENABLE_OPENGL = true;
170 }
171 enum BACKEND_SDL = true;
172 enum BACKEND_X11 = false;
173 enum BACKEND_DSFML = false;
174 enum BACKEND_WIN32 = false;
175 enum BACKEND_ANDROID = false;
176 enum BACKEND_CONSOLE = false;
177 }
178 }
179 }