sourcepawn/compiler/sclinux.h
author Asher Baker <asherkin@gmail.com>
Fri Apr 05 07:03:43 2013 +0100 (2013-04-05)
changeset 3885 bb6de8c6c2d5
parent 2783 5f333027ef04
permissions -rw-r--r--
Support emscripten for compiling spcomp (r=dvander).
dvander@353
     1
/*
dvander@353
     2
 * Things needed to compile under linux.
dvander@353
     3
 *
dvander@353
     4
 * Should be reworked totally to use GNU's 'configure'
dvander@353
     5
 */
dvander@353
     6
#ifndef SCLINUX_H
dvander@353
     7
#define SCLINUX_H
dvander@353
     8
dvander@353
     9
/* getchar() is not a 'cool' replacement for MSDOS getch: Linux/unix depends on the features activated or not about the
dvander@353
    10
 * controlling terminal's tty. This means that ioctl(2) calls must be performed, for instance to have the controlling 
dvander@353
    11
 * terminal tty's in 'raw' mode, if we want to be able to fetch a single character. This also means that everything must 
dvander@353
    12
 * be put back correctly when the function ends. See GETCH.C for an implementation.
dvander@353
    13
 *
dvander@353
    14
 * For interactive use of SRUN/SDBG if would be much better to use GNU's readline package: the user would be able to 
dvander@353
    15
 * have a complete emacs/vi like line editing system.
dvander@353
    16
 */
dvander@353
    17
#include "getch.h"
dvander@353
    18
dvander@353
    19
/*
dvander@353
    20
 * WinWorld wants '\'. Unices do not.
dvander@353
    21
 */
dvander@353
    22
#define	DIRECTORY_SEP_CHAR      '/'
dvander@353
    23
#define	DIRECTORY_SEP_STR       "/"
dvander@353
    24
dvander@353
    25
/*
dvander@353
    26
 * SC assumes that a computer is Little Endian unless told otherwise. It uses
dvander@353
    27
 * (and defines) the macros BYTE_ORDER and BIG_ENDIAN.
dvander@353
    28
 * For Linux, we must overrule these settings with those defined in glibc.
dvander@353
    29
 */
dvander@353
    30
#if !defined __BYTE_ORDER
asherkin@3885
    31
# if defined EMSCRIPTEN
asherkin@3885
    32
#  include <endian.h>
asherkin@3885
    33
# else
asherkin@3885
    34
#  include <stdlib.h>
asherkin@3885
    35
# endif
dvander@353
    36
#endif
dvander@353
    37
dvander@2471
    38
#if defined __OpenBSD__ || defined __FreeBSD__ || defined __APPLE__
dvander@353
    39
# define __BYTE_ORDER    BYTE_ORDER
dvander@353
    40
# define __LITTLE_ENDIAN LITTLE_ENDIAN
dvander@353
    41
# define __BIG_ENDIAN    BIG_ENDIAN
dvander@353
    42
#endif
dvander@353
    43
dvander@353
    44
#if !defined __BYTE_ORDER
dvander@353
    45
# error	"Can't figure computer byte order (__BYTE_ORDER macro not found)"
dvander@353
    46
#endif
dvander@353
    47
dvander@353
    48
#endif /* SCLINUX_H */