Fix reference to README.devlib in header.
[bertos.git] / cfg / 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 README.devlib 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.2  2005/11/04 16:20:01  bernie
18  *#* Fix reference to README.devlib in header.
19  *#*
20  *#* Revision 1.1  2005/04/11 19:04:13  bernie
21  *#* Move top-level headers to cfg/ subdir.
22  *#*
23  *#* Revision 1.1  2004/12/31 17:40:24  bernie
24  *#* Add OS detection code.
25  *#*
26  *#*/
27 #ifndef DEVLIB_OS_H
28 #define DEVLIB_OS_H
29
30
31 /*! Macro to include OS-specific versions of the headers. */
32 #define OS_HEADER(module)  PP_STRINGIZE(PP_CAT3(module, _, OS_ID).h)
33
34 /*
35  * OS autodetection (Some systems trigger multiple OS definitions)
36  */
37 #ifdef _WIN32
38         #define OS_WIN32  1
39         #define OS_ID     win32
40 #else
41         #define OS_WIN32  0
42 #endif
43
44 #ifdef __unix__
45         #define OS_UNIX   1
46         #define OS_POSIX  1  /* Not strictly UNIX, but no way to autodetect it. */
47         #define OS_ID     unix
48 #else
49         #define OS_UNIX   0
50         #define OS_POSIX  0
51 #endif
52
53 #ifdef __linux__
54         #define OS_LINUX  1
55 #else
56         #define OS_LINUX  0
57 #endif
58
59 #if defined(__APPLE__) && defined(__MACH__)
60         #define OS_DARWIN 1
61 #else
62         #define OS_DARWIN 0
63 #endif
64
65 /*
66  * Summarize hosted environments as OS_HOSTED.
67  */
68 #if OS_WIN32 || OS_UNIX
69         #define OS_HOSTED   1
70 #else
71         #define OS_HOSTED   0
72 #endif
73
74 /*
75  * Summarize embedded environments as OS_EMBEDDED.
76  */
77 #if CPU_AVR || CPU_DSP56K || CPU_I196 || defined(__embedded__)
78         #define OS_EMBEDDED  1
79 #else
80         #define OS_EMBEDDED  0
81 #endif
82
83
84 /* Self-check for the detection */
85 #if CPU_I196 + CPU_X86 + CPU_DSP56K + CPU_AVR == 0
86         #error Unknown CPU
87 #endif
88 #if !defined(OS_ID)
89         #error OS_ID not defined
90 #endif
91 #if OS_HOSTED && OS_EMBEDDED
92         #error Both hosted and embedded OS environment
93 #endif
94 #if !OS_HOSTED && !OS_EMBEDDED
95         #error Neither hosted nor embedded OS environment
96 #endif
97
98 #endif /* DEVLIB_OS_H */