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