UNIXworkcode

/******************************************************************************* * * * system.h -- Compile Time Configuration Header File * * * * Copyright (C) 2001 Scott Tringali * * * * This is free software; you can redistribute it and/or modify it under the * * terms of the GNU General Public License as published by the Free Software * * Foundation; either version 2 of the License, or (at your option) any later * * version. In addition, you may distribute version of this program linked to * * Motif or Open Motif. See README for details. * * * * This software is distributed in the hope that it will be useful, but WITHOUT * * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * * for more details. * * * * You should have received a copy of the GNU General Public License along with * * software; if not, write to the Free Software Foundation, Inc., 59 Temple * * Place, Suite 330, Boston, MA 02111-1307 USA * * * * Nirvana Text Editor * * July 23, 2001 * * * * Written by Scott Tringali, http://www.tringali.org * * * *******************************************************************************/ #ifndef NEDIT_SYSTEM_H_INCLUDED #define NEDIT_SYSTEM_H_INCLUDED /* Determine which machine we were compiled with. This isn't as accurate as calling uname(), which is preferred. However, this gets us very close for a majority of the machines out there, and doesn't require any games with make. A better, but trickier solution, is to run uname at compile time, capture the string, and place it in the executable. Please update this with the proper symbols for your compiler/CPU. It may take a little sleuthing to find out what the correct symbol is. Better compilers/OSs document the symbols they define, but not all do. Usually, the correct ones are prepended with an _ or __, as this is namespace is reserved by ANSI C for the compiler implementation. The order is important for the x86 macros. Some compilers will simultanenously define __i386 and __pentium, so we pick the highest one. Some of the info below derived from these excellent references: http://www.fortran-2000.com/ArnaudRecipes/Version.html http://predef.sourceforge.net/ */ #if defined(__alpha) || defined (_M_ALPHA) # define COMPILE_MACHINE "Alpha" #elif defined(__mips) # define COMPILE_MACHINE "MIPS" #elif defined(__sparc) # define COMPILE_MACHINE "Sparc" #elif defined(__sparcv9) # define COMPILE_MACHINE "Sparc64" #elif defined(__hppa) # define COMPILE_MACHINE "PA-RISC" #elif defined(__ALTIVEC__) # define COMPILE_MACHINE "PowerPC Altivec" #elif defined(__POWERPC__) || defined(__ppc__) || defined(__powerpc__) || defined(_POWER) # define COMPILE_MACHINE "PowerPC" #elif defined(__x86_64) || defined(_x86_64) # define COMPILE_MACHINE "x86-64" #elif defined(__IA64) || defined(__ia64) # define COMPILE_MACHINE "IA64" #elif defined(__k6) || defined(__k6__) # define COMPILE_MACHINE "K6" #elif defined(__athlon) || defined(__athlon__) # define COMPILE_MACHINE "Athlon" #elif defined(__pentium4) || defined(__pentium4__) # define COMPILE_MACHINE "Pentium IV" #elif defined(__pentium3) || defined(__pentium3__) # define COMPILE_MACHINE "Pentium III" #elif defined(__pentium2) || defined(__pentium2__) # define COMPILE_MACHINE "Pentium II" #elif defined(__pentiumpro) || defined(__pentiumpro__) # define COMPILE_MACHINE "Pentium Pro" #elif defined(__pentium) || defined(__pentium__) # define COMPILE_MACHINE "Pentium" #elif defined(__i486) || defined(__i486__) # define COMPILE_MACHINE "486" #elif defined(__i386) || defined(__i386__) # define COMPILE_MACHINE "386" #elif defined(_M_IX86) || defined(_X86_) || defined (__x86__) # define COMPILE_MACHINE "x86" #elif defined(__VAX) # define COMPILE_MACHINE "VAX" /* Untested, please verify */ #else # define COMPILE_MACHINE "Unknown" #endif #if defined(__osf__) # define COMPILE_OS "Tru64/Digital Unix" #elif defined(__sun) # define COMPILE_OS "Solaris" #elif defined(__hpux) # define COMPILE_OS "HP/UX" #elif defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # define COMPILE_OS "Win32" #elif defined(__sgi) # define COMPILE_OS "IRIX" #elif defined(__Lynx__) # define COMPILE_OS "Lynx" #elif defined(__linux__) # define COMPILE_OS "Linux" #elif defined(_AIX) # define COMPILE_OS "AIX" #elif defined(__VMS) /* Untested, please verify */ # define COMPILE_OS "VMS" #elif defined(__FreeBSD__) # define COMPILE_OS "FreeBSD" #elif defined(__OpenBSD__) /* Untested, please verify */ # define COMPILE_OS "OpenBSD" #elif defined(__NetBSD__) /* Untested, please verify */ # define COMPILE_OS "NetBSD" #elif defined(__bsdi) /* Untested, please verify */ # define COMPILE_OS "BSDI" #elif defined(__ultrix) /* Untested, please verify */ # define COMPILE_OS "Ultrix" #elif defined(__EMX__) /* I think this should be __OS2__ */ # define COMPILE_OS "OS/2" #elif defined(__APPLE__) || defined(__MACOSX__) # define COMPILE_OS "MacOS X" #elif defined(__UNIXWARE__) # define COMPILE_OS "UnixWare" #elif defined(__unix__) /* Unknown Unix, next to last */ # define COMPILE_OS "Unix" #else # define COMPILE_OS "Unknown" #endif #if defined (__DECC) # define COMPILE_COMPILER "DEC C" #elif defined (__DECCXX) # define COMPILE_COMPILER "DEC C++" #elif defined (__APOGEE) # define COMPILE_COMPILER "Apogee" #elif defined (__SUNPRO_C) # define COMPILE_COMPILER "Sun Studio C" /* aka Sun WorkShop, Sun ONE studio, Forte, Sun Studio, ARGH! */ #elif defined (__SUNPRO_CC) # define COMPILE_COMPILER "Sun Studio C++" /* aka Sun WorkShop, Sun ONE studio, Forte, Sun Studio, ARGH! */ #elif defined (__LCC__) # define COMPILE_COMPILER "LCC" #elif defined (_MSC_VER) # define COMPILE_COMPILER "Microsoft C" #elif defined (__BORLANDC__) # define COMPILE_COMPILER "Borland C" #elif defined (__sgi) && defined (_COMPILER_VERSION) # define COMPILE_COMPILER "SGI MipsPro" #elif defined (__xlC__) /* Unix version of IBM C */ # define COMPILE_COMPILER "IBM xlC" #elif defined (__IBMC__) # define COMPILE_COMPILER "IBM C" /* PC (OS/2, Windows) versions */ #elif defined (__HP_cc) # define COMPILE_COMPILER "HP cc" #elif defined (__HP_aCC) # define COMPILE_COMPILER "HP aCC" #elif defined (__KCC) # define COMPILE_COMPILER "KAI C++" #elif defined (__MWERKS__) # define COMPILE_COMPILER "Metrowerks CodeWarrior" #elif defined (__WATCOMC__) # define COMPILE_COMPILER "Watcom C/C++" #elif defined (__INTEL_COMPILER) # define COMPILE_COMPILER "Intel C++" #elif defined (__clang__) # define COMPILE_COMPILER "Clang" #elif defined (__llvm__) # define COMPILE_COMPILER "LLVM" /* GCC needs to be near the bottom of this list, because Intel and Clang have GCC command-line emulation modes. */ #elif defined(__GNUC__) # define COMPILE_COMPILER "GNU C" /* The next few entries are last-ditch efforts to guess the compiler, if no compiler macro exists. These need to be at the end of the list, after all the compilers we really recognize. */ #elif defined (__hpux) /* HP has no indentifier, so guessing here */ # define COMPILE_COMPILER "HP C [?]" #elif defined (__sgi) /* Same for old versions of SGI cc */ # define COMPILE_COMPILER "SGI MipsPro [?]" #else # define COMPILE_COMPILER "Unknown" /* Must be last */ #endif #endif /* NEDIT_SYSTEM_H_INCLUDED */