xref: /openbsd-src/libexec/tradcpp/config.h (revision 88157d21ef4e0e7edfe65c55d80f66401a578afc)
1a9b3ff1aSjsg /*-
2a9b3ff1aSjsg  * Copyright (c) 2010, 2013 The NetBSD Foundation, Inc.
3a9b3ff1aSjsg  * All rights reserved.
4a9b3ff1aSjsg  *
5a9b3ff1aSjsg  * This code is derived from software contributed to The NetBSD Foundation
6a9b3ff1aSjsg  * by David A. Holland.
7a9b3ff1aSjsg  *
8a9b3ff1aSjsg  * Redistribution and use in source and binary forms, with or without
9a9b3ff1aSjsg  * modification, are permitted provided that the following conditions
10a9b3ff1aSjsg  * are met:
11a9b3ff1aSjsg  * 1. Redistributions of source code must retain the above copyright
12a9b3ff1aSjsg  *    notice, this list of conditions and the following disclaimer.
13a9b3ff1aSjsg  * 2. Redistributions in binary form must reproduce the above copyright
14a9b3ff1aSjsg  *    notice, this list of conditions and the following disclaimer in the
15a9b3ff1aSjsg  *    documentation and/or other materials provided with the distribution.
16a9b3ff1aSjsg  *
17a9b3ff1aSjsg  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18a9b3ff1aSjsg  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19a9b3ff1aSjsg  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20a9b3ff1aSjsg  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21a9b3ff1aSjsg  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22a9b3ff1aSjsg  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23a9b3ff1aSjsg  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24a9b3ff1aSjsg  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25a9b3ff1aSjsg  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26a9b3ff1aSjsg  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27a9b3ff1aSjsg  * POSSIBILITY OF SUCH DAMAGE.
28a9b3ff1aSjsg  */
29a9b3ff1aSjsg 
30a9b3ff1aSjsg /*
31a9b3ff1aSjsg  * Config for predefined macros. If this doesn't do what you want you
32a9b3ff1aSjsg  * can set any or all of the CONFIG_ defines from the compiler command
33a9b3ff1aSjsg  * line; or patch the list in main.c; or both.
34a9b3ff1aSjsg  */
35a9b3ff1aSjsg 
36a9b3ff1aSjsg /*
37a9b3ff1aSjsg  * Paths
38a9b3ff1aSjsg  */
39a9b3ff1aSjsg 
40a9b3ff1aSjsg #ifndef CONFIG_LOCALINCLUDE
41a9b3ff1aSjsg #define CONFIG_LOCALINCLUDE "/usr/local/include"
42a9b3ff1aSjsg #endif
43a9b3ff1aSjsg 
44a9b3ff1aSjsg #ifndef CONFIG_SYSTEMINCLUDE
45a9b3ff1aSjsg #define CONFIG_SYSTEMINCLUDE "/usr/include"
46a9b3ff1aSjsg #endif
47a9b3ff1aSjsg 
48a9b3ff1aSjsg /*
49a9b3ff1aSjsg  * Operating system
50a9b3ff1aSjsg  */
51a9b3ff1aSjsg 
52a9b3ff1aSjsg #ifndef CONFIG_OS
53a9b3ff1aSjsg #if defined(__NetBSD__)
54a9b3ff1aSjsg #define CONFIG_OS "__NetBSD__"
55a9b3ff1aSjsg #define CONFIG_OS_2 "__unix__"
56a9b3ff1aSjsg #elif defined(__FreeBSD__)
57a9b3ff1aSjsg #define CONFIG_OS "__FreeBSD__"
58a9b3ff1aSjsg #define CONFIG_OS_2 "__unix__"
59a9b3ff1aSjsg #elif defined(__OpenBSD__)
60a9b3ff1aSjsg #define CONFIG_OS "__OpenBSD__"
61a9b3ff1aSjsg #define CONFIG_OS_2 "__unix__"
62a9b3ff1aSjsg #elif defined(__DragonFly__)
63a9b3ff1aSjsg #define CONFIG_OS "__DragonFly__"
64a9b3ff1aSjsg #define CONFIG_OS_2 "__unix__"
65a9b3ff1aSjsg #elif defined(__bsdi__)
66a9b3ff1aSjsg #define CONFIG_OS "__bsdi__"
67a9b3ff1aSjsg #define CONFIG_OS_2 "__unix__"
68a9b3ff1aSjsg #elif defined(__sun)
69a9b3ff1aSjsg #define CONFIG_OS "__sun"
70a9b3ff1aSjsg #define CONFIG_OS_2 "__unix__"
71a9b3ff1aSjsg #elif defined(__sgi)
72a9b3ff1aSjsg #define CONFIG_OS "__sgi"
73a9b3ff1aSjsg #define CONFIG_OS_2 "__unix__"
74a9b3ff1aSjsg #elif defined(__SVR4)
75a9b3ff1aSjsg #define CONFIG_OS "__SVR4"
76a9b3ff1aSjsg #define CONFIG_OS_2 "__unix__"
77a9b3ff1aSjsg #elif defined(__APPLE__)
78a9b3ff1aSjsg #define CONFIG_OS "__APPLE__"
79a9b3ff1aSjsg #define CONFIG_OS_2 "__unix__"
80a9b3ff1aSjsg #elif defined(__linux__)
81a9b3ff1aSjsg #define CONFIG_OS "__linux__"
82a9b3ff1aSjsg #elif defined(__CYGWIN__)
83a9b3ff1aSjsg #define CONFIG_OS "__CYGWIN__"
84a9b3ff1aSjsg #elif defined(__INTERIX)
85a9b3ff1aSjsg #define CONFIG_OS "__INTERIX"
86a9b3ff1aSjsg #elif defined(__MINGW32)
87a9b3ff1aSjsg #define CONFIG_OS "__MINGW32"
88a9b3ff1aSjsg #else
89a9b3ff1aSjsg /* we could error... but let's instead assume generic unix */
90a9b3ff1aSjsg #define CONFIG_OS "__unix__"
91a9b3ff1aSjsg #endif
92a9b3ff1aSjsg #endif
93a9b3ff1aSjsg 
94a9b3ff1aSjsg /*
95a9b3ff1aSjsg  * CPU
96a9b3ff1aSjsg  */
97a9b3ff1aSjsg 
98a9b3ff1aSjsg #ifndef CONFIG_CPU
99a9b3ff1aSjsg #if defined(__x86_64__)
100a9b3ff1aSjsg #define CONFIG_CPU "__x86_64__"
101a9b3ff1aSjsg #define CONFIG_CPU_2 "__amd64__"
102a9b3ff1aSjsg #elif defined(__i386__) || defined(__i386)
103a9b3ff1aSjsg #define CONFIG_CPU "__i386__"
104a9b3ff1aSjsg #define CONFIG_CPU_2 "__i386"
105a9b3ff1aSjsg #elif defined(__sparc)
106a9b3ff1aSjsg #define CONFIG_CPU "__sparc"
107a9b3ff1aSjsg #elif defined(__mips)
108a9b3ff1aSjsg #define CONFIG_CPU "__mips"
109a9b3ff1aSjsg #elif defined(__mips__)
110a9b3ff1aSjsg #define CONFIG_CPU "__mips__"
111a9b3ff1aSjsg #elif defined(__mipsel__)
112a9b3ff1aSjsg #define CONFIG_CPU "__mipsel__"
113a9b3ff1aSjsg #elif defined(__POWERPC__)
114a9b3ff1aSjsg #define CONFIG_CPU "__POWERPC__"
115a9b3ff1aSjsg #elif defined(__POWERPC__)
116a9b3ff1aSjsg #define CONFIG_CPU "__powerpc__"
117a9b3ff1aSjsg #elif defined(__PPC__)
118a9b3ff1aSjsg #define CONFIG_CPU "__PPC__"
119a9b3ff1aSjsg #elif defined(__ppc__)
120a9b3ff1aSjsg #define CONFIG_CPU "__ppc__"
121a9b3ff1aSjsg #elif defined(__PPC64__)
122a9b3ff1aSjsg #define CONFIG_CPU "__PPC64__"
123a9b3ff1aSjsg #elif defined(__ppc64__)
124a9b3ff1aSjsg #define CONFIG_CPU "__ppc64__"
125a9b3ff1aSjsg #elif defined(__ARM__)
126a9b3ff1aSjsg #define CONFIG_CPU "__ARM__"
127*88157d21Sjsg #elif defined(__AARCH64__)
128*88157d21Sjsg #define CONFIG_CPU "__AARCH64__"
129*88157d21Sjsg #elif defined(__aarch64__)
130*88157d21Sjsg #define CONFIG_CPU "__aarch64__"
131*88157d21Sjsg #elif defined(__RISCV__)
132*88157d21Sjsg #define CONFIG_CPU "__RISCV__"
133*88157d21Sjsg #elif defined(__riscv__)
134*88157d21Sjsg #define CONFIG_CPU "__riscv__"
135*88157d21Sjsg #elif defined(__RISCV64__)
136*88157d21Sjsg #define CONFIG_CPU "__RISCV64__"
137*88157d21Sjsg #elif defined(__riscv64__)
138*88157d21Sjsg #define CONFIG_CPU "__riscv64__"
139*88157d21Sjsg #elif defined(__riscv64)
140*88157d21Sjsg #define CONFIG_CPU "__riscv64"
141*88157d21Sjsg #elif defined(__ia64__)
142*88157d21Sjsg #define CONFIG_CPU "__ia64__"
143a9b3ff1aSjsg #else
144a9b3ff1aSjsg /* let it go */
145a9b3ff1aSjsg #endif
146a9b3ff1aSjsg #endif
147a9b3ff1aSjsg 
148a9b3ff1aSjsg /*
149a9b3ff1aSjsg  * Other stuff
150a9b3ff1aSjsg  */
151a9b3ff1aSjsg 
152a9b3ff1aSjsg #ifndef CONFIG_SIZE
153a9b3ff1aSjsg #ifdef __LP64__
154a9b3ff1aSjsg #define CONFIG_SIZE "__LP64__"
155a9b3ff1aSjsg #else
156a9b3ff1aSjsg #define CONFIG_SIZE "__ILP32__"
157a9b3ff1aSjsg #endif
158a9b3ff1aSjsg #endif
159a9b3ff1aSjsg 
160a9b3ff1aSjsg #ifndef CONFIG_BINFMT
161a9b3ff1aSjsg #ifdef __ELF__
162a9b3ff1aSjsg #define CONFIG_BINFMT "__ELF__"
163a9b3ff1aSjsg #endif
164a9b3ff1aSjsg #endif
165a9b3ff1aSjsg 
166a9b3ff1aSjsg /*
167a9b3ff1aSjsg  * We are __TRADCPP__ by default, but if you want to masquerade as
168a9b3ff1aSjsg  * some other compiler this is a convenient place to change it.
169a9b3ff1aSjsg  */
170a9b3ff1aSjsg 
171a9b3ff1aSjsg #ifndef CONFIG_COMPILER
172a9b3ff1aSjsg #define CONFIG_COMPILER "__TRADCPP__"
173a9b3ff1aSjsg #define CONFIG_COMPILER_MINOR "__TRADCPP_MINOR__"
174a9b3ff1aSjsg #endif
175