73 lines
2.3 KiB
C
73 lines
2.3 KiB
C
// JoeyLib platform, CPU, endian, and capability defines.
|
|
//
|
|
// Exactly one JOEYLIB_PLATFORM_* must be defined per build. The build
|
|
// system normally sets this via -D; if absent, the header attempts to
|
|
// auto-detect from compiler-predefined macros.
|
|
|
|
#ifndef JOEYLIB_PLATFORM_H
|
|
#define JOEYLIB_PLATFORM_H
|
|
|
|
// ----- Auto-detect platform from compiler macros if not preset -----
|
|
|
|
#if !defined(JOEYLIB_PLATFORM_IIGS) && \
|
|
!defined(JOEYLIB_PLATFORM_AMIGA) && \
|
|
!defined(JOEYLIB_PLATFORM_ATARIST) && \
|
|
!defined(JOEYLIB_PLATFORM_DOS)
|
|
|
|
#if defined(__DJGPP__) || defined(__MSDOS__)
|
|
#define JOEYLIB_PLATFORM_DOS
|
|
#elif defined(__amigaos__) || defined(AMIGA) || defined(__amigaos4__)
|
|
#define JOEYLIB_PLATFORM_AMIGA
|
|
#elif defined(__atarist__) || defined(__MINT__) || defined(__TOS__)
|
|
#define JOEYLIB_PLATFORM_ATARIST
|
|
#elif defined(__ORCAC__) || defined(__APPLE2GS__) || defined(__GNO__)
|
|
#define JOEYLIB_PLATFORM_IIGS
|
|
#else
|
|
#error "JoeyLib: unknown platform; define JOEYLIB_PLATFORM_<TARGET> explicitly via -D"
|
|
#endif
|
|
|
|
#endif
|
|
|
|
// ----- Validate exactly one platform is defined -----
|
|
|
|
#if (defined(JOEYLIB_PLATFORM_IIGS) + \
|
|
defined(JOEYLIB_PLATFORM_AMIGA) + \
|
|
defined(JOEYLIB_PLATFORM_ATARIST) + \
|
|
defined(JOEYLIB_PLATFORM_DOS)) != 1
|
|
#error "JoeyLib: exactly one JOEYLIB_PLATFORM_* must be defined"
|
|
#endif
|
|
|
|
// ----- Derived CPU markers -----
|
|
|
|
#if defined(JOEYLIB_PLATFORM_IIGS)
|
|
#define JOEYLIB_CPU_65816
|
|
#define JOEYLIB_ENDIAN_LITTLE
|
|
#define JOEYLIB_NATIVE_CHUNKY
|
|
#define JOEYLIB_PLATFORM_NAME "Apple IIgs"
|
|
#elif defined(JOEYLIB_PLATFORM_AMIGA)
|
|
#define JOEYLIB_CPU_68000
|
|
#define JOEYLIB_ENDIAN_BIG
|
|
#define JOEYLIB_NATIVE_PLANAR
|
|
#define JOEYLIB_HAS_BLITTER
|
|
#define JOEYLIB_HAS_COPPER
|
|
#define JOEYLIB_PLATFORM_NAME "Commodore Amiga"
|
|
#elif defined(JOEYLIB_PLATFORM_ATARIST)
|
|
#define JOEYLIB_CPU_68000
|
|
#define JOEYLIB_ENDIAN_BIG
|
|
#define JOEYLIB_NATIVE_PLANAR
|
|
#define JOEYLIB_PLATFORM_NAME "Atari ST"
|
|
#elif defined(JOEYLIB_PLATFORM_DOS)
|
|
#define JOEYLIB_CPU_X86
|
|
#define JOEYLIB_ENDIAN_LITTLE
|
|
#define JOEYLIB_NATIVE_CHUNKY
|
|
#define JOEYLIB_PLATFORM_NAME "MS-DOS"
|
|
#endif
|
|
|
|
// ----- Library version -----
|
|
|
|
#define JOEYLIB_VERSION_MAJOR 1
|
|
#define JOEYLIB_VERSION_MINOR 0
|
|
#define JOEYLIB_VERSION_PATCH 0
|
|
#define JOEYLIB_VERSION_STRING "1.0.0"
|
|
|
|
#endif
|