Disable LaTeX output.
[bertos.git] / os.h
1 /*!
2  * \file
3  * <!--
4  * Copyright 2004 Develer S.r.l. (http://www.develer.com/)
5  * This file is part of DevLib - See devlib/README for information.
6  * -->
7  *
8  * \brief OS-specific definitions
9  *
10  * \version $Id$
11  *
12  * \author Bernardo Innocenti <bernie@develer.com>
13  */
14
15 /*#*
16  *#* $Log$
17  *#* Revision 1.1  2004/12/31 17:40:24  bernie
18  *#* Add OS detection code.
19  *#*
20  *#*/
21 #ifndef DEVLIB_OS_H
22 #define DEVLIB_OS_H
23
24
25 /*! Macro to include OS-specific versions of the headers. */
26 #define OS_HEADER(module)  PP_STRINGIZE(PP_CAT3(module, _, OS_ID).h)
27
28 /*
29  * OS autodetection (Some systems trigger multiple OS definitions)
30  */
31 #ifdef _WIN32
32         #define OS_WIN32  1
33         #define OS_ID     win32
34 #else
35         #define OS_WIN32  0
36 #endif
37
38 #ifdef __unix__
39         #define OS_UNIX   1
40         #define OS_POSIX  1  /* Not strictly UNIX, but no way to autodetect it. */
41         #define OS_ID     unix
42 #else
43         #define OS_UNIX   0
44         #define OS_POSIX  0
45 #endif
46
47 #ifdef __linux__
48         #define OS_LINUX  1
49 #else
50         #define OS_LINUX  0
51 #endif
52
53 #if defined(__APPLE__) && defined(__MACH__)
54         #define OS_DARWIN 1
55 #else
56         #define OS_DARWIN 0
57 #endif
58
59 /*
60  * Summarize hosted environments as OS_HOSTED.
61  */
62 #if OS_WIN32 || OS_UNIX
63         #define OS_HOSTED   1
64 #else
65         #define OS_HOSTED   0
66 #endif
67
68 /*
69  * Summarize embedded environments as OS_EMBEDDED.
70  */
71 #if CPU_AVR || CPU_DSP56K || CPU_I196 || defined(__embedded__)
72         #define OS_EMBEDDED  1
73 #else
74         #define OS_EMBEDDED  0
75 #endif
76
77
78 /* Self-check for the detection */
79 #if CPU_I196 + CPU_X86 + CPU_DSP56K + CPU_AVR == 0
80         #error Unknown CPU
81 #endif
82 #if !defined(OS_ID)
83         #error OS_ID not defined
84 #endif
85 #if OS_HOSTED && OS_EMBEDDED
86         #error Both hosted and embedded OS environment
87 #endif
88 #if !OS_HOSTED && !OS_EMBEDDED
89         #error Neither hosted nor embedded OS environment
90 #endif
91
92 #endif /* DEVLIB_OS_H */