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