1/* Netrek Configuration file - by Kurt Siegl 2 * 3 */ 4 5#ifndef __CONFIG_H 6#define __CONFIG_H 7 8/* 9################################################################################ 10 All The fun defines 11################################################################################ 12*/ 13 14/* 15 Defines 16 Some possible values: 17 NOTE: Only NON-system specific defines belong here 18*/ 19 20/* 21 ------------------------------------------------------------ 22 Common defines 23 ------------------------------------------------------------ 24*/ 25 26 27#define RCD /* RCD - Support Reciever variable 28 distresses */ 29 30 /* PING - Ping statistics */ 31#define PING 32 33 /* SHORT_PACKETS - Reduce Network load */ 34#define SHORT_PACKETS 35 36 /* SPEEDUP - Misc improvements to make 37 the code faster */ 38#define SPEEDUP 39 40 /* FEATURE_PACKETS - feature packets */ 41#define FEATURE_PACKETS 42 /* UDP_PORTSWAP - Allow the client to 43 initiate the UDP connection first if it so 44 chooses. This allows UDP connections through 45 some packet filtering firewalls. 46 */ 47#define UDP_PORTSWAP 48 49 /* DEBUG - Various useful debugging 50 stuff. No signal trap */ 51#undef DEBUG 52 53/* 54 ------------------------------------------------------------ 55 COW only defines 56 ------------------------------------------------------------ 57*/ 58 59/* NBT - Nick trown's macro code */ 60#define NBT 61 62/* MAXPLAYER - Maximal number of players + observers */ 63#define MAXPLAYER 36 64 65/* CORRUPTED_PACKETS - prevents some seg faults but verbose output */ 66#define CORRUPTED_PACKETS 67 68/* EXPIRE=# - number of days this version will work for */ 69#if 0 /* ndef STABLE expire function removed */ 70#define EXPIRE 365 71#endif 72 73/* ARMY_SLIDER - some sort of funky status window thing */ 74#define ARMY_SLIDER 75 76/* META - show active servers via metaserver - NBT */ 77#define META 78 79/* PACKET_LOG - log packets to stdout (for bandwith measurement) */ 80#define PACKET_LOG 81 82/* NEWMACRO - newmacro language */ 83#define NEWMACRO 84 85/* SMARTMACRO - macro extension (needs NEWMACRO) */ 86#define SMARTMACRO 87 88/* MULTILINE_MACROS - enables multiline macros */ 89#define MULTILINE_MACROS 90 91/* XTREKRC_HELP - Hadley's xtrekrc window (stolden by KP) */ 92#define XTREKRC_HELP 93 94/* TOOLS - Various tools, like shell escape, ... */ 95#define TOOLS 96 97/* SOUND - support of external sound players */ 98 99/* Autodetect may discover sound releated problems like cygwin has no shm */ 100#undef SKIP_SOUND 101#ifndef SKIP_SOUND 102#define SOUND 103#endif 104 105/* HOCKEY_LINES - allow showing of hockey lines */ 106#define HOCKEY_LINES 107 108/* BEEPLITE - player and planets highlighting */ 109#define BEEPLITE 110 111/* VSHIELD_BITMAPS - damage dependent shields (hull) */ 112#define VSHIELD_BITMAPS 113#define VARY_HULL 114 115/* WARP_DEAD - Use death detection 116*/ 117#undef WARP_DEAD 118 119/* RCM - Receiver configurable Server messages */ 120#define RCM 121 122/* RACE_COLORS - additional bitplane for race colors */ 123#define RACE_COLORS 124 125/* XTRA_MESSAGE_UI - Show message being typed on the local display */ 126#define XTRA_MESSAGE_UI 127 128/* SYSTEM_DEFAULTFILE - Points to a system wide .xtrekrc file */ 129#define SYSTEM_DEFAULTFILE "/etc/netrek-client-cow/netrekrc" 130 131/* WINDOWMAKER - WindowMaker Docking support */ 132#ifdef linux 133#define WINDOWMAKER 134#endif 135 136#define PLIST1 137#define PLIST 138#define CONTROL_KEY 139#define DOC_WIN 140#define ROTATERACE 141#define FUNCTION_KEYS 142 143/* client options */ 144#define IGNORE_SIGNALS_SEGV_BUS 145#define MOUSE_AS_SHIFT 146#define SHIFTED_MOUSE 147#define TNG_FED_BITMAPS 148#define MOTION_MOUSE 149#define DIST_KEY_NAME 150#define PHASER_STATS 151#define RECORDGAME 152 153#define CAMERA 154#define FULLSCREEN 155 156/* 157############################################################################## 158 All system dependencies should be defined here 159############################################################################## 160*/ 161 162#define NEED_EXIT 163 164/* Automatic generated system dependend defines */ 165 166#undef HAVE_MATH_H 167#undef HAVE_STDLIB_H 168#undef _ALL_SOURCES 169#undef HAVE_SYS_SIGNAL_H 170#undef BSD_SIGNALS 171#undef SYSV_SIGNALS 172#undef POSIX_SIGNALS 173#undef RESTARTABLE_SYSCALLS 174#undef NEED_MEMORY_H 175#define STDC_HEADERS 1 /* 13/01/94 omit hosed index [007] */ 176#undef HAVE_WAIT3 177#undef NEED_SYS_SELECT_H 178#undef NO_FD_SET /* Guess we suck badly if that happens :( */ 179#undef HAVE_UNISTD_H 180#undef HAVE_SYS_TIMEB_H 181#undef TM_IN_SYS_TIME 182#undef TIME_WITH_SYS_TIME 183#undef NEED_SYS_TIME_H 184#undef HAVE_SYS_PTYIO_H 185#undef HAVE_SYS_FCNTL_H 186#undef HAVE_FCNTL_H 187#undef HAVE_CTYPE_H 188#undef HAVE_MACHINE_ENDIAN_H 189#undef HAVE_SYS_RESOURCE_H 190#undef HAVE_SYS_WAIT_H 191#undef HAVE_NETINET_IN_H 192#undef HAVE_NETINET_TCP_H 193#undef HAVE_SYS_FILIO_H /* Needed for Solaris 2.5.1 */ 194#undef HAVE_GMP2_H 195#undef NO_U_INT 196#undef SIZEOF_LONG 197#undef HAVE_USLEEP 198#undef HAVE_SETSTATE 199#undef HAVE_RANDOM 200#undef HAVE_STRFTIME 201#undef HAVE_FTIME 202#undef HAVE_STRCMPI 203#undef HAVE_STRNCMPI 204#undef HAVE_NINT 205#undef NEED_RINT_DEC 206#undef RETSIGTYPE 207#undef pid_t 208#undef uid_t 209#undef gid_t 210#undef size_t 211#undef vfork 212#if (defined(sparc) && defined(sun)) 213#define vfork fork 214#endif 215#undef NO_PATH_MAX 216#undef inline 217 218#undef HAVE_X11 219#undef HAVE_WIN32 220#undef HAVE_XPM 221#undef HAVE_X11_XPM_H 222 223/* System dependend macros */ 224 225/* SYSV signal handling */ 226#ifdef SYSV_SIGNALS 227#include <signal.h> 228#define SIGNAL(x,y) sigset(x,y) 229#define PAUSE(x) sigpause(x) 230#define SIGSETMASK(x) { } 231#else 232#define SIGNAL(x,y) signal(x,y) 233#define PAUSE(x) pause() 234#define SIGSETMASK(x) sigsetmask(x) 235#endif 236 237#ifdef POSIX_SIGNALS 238#define HANDLE_SIG(s,h) signal(s,h) 239#define setjmp(x) sigsetjmp(x,1) 240#define longjmp(x,y) siglongjmp(x,y) 241#else 242#define HANDLE_SIG(s,h) {} 243#endif 244 245#ifdef STDC_HEADERS 246#define INC_STRINGS <string.h> 247#else 248#define INC_STRINGS <strings.h> 249#endif 250 251#ifdef STDC_HEADERS 252#define MCMP(x,y,z) memcmp(x,y,z) 253#define MCOPY(b1,b2,l) memcpy(b2,b1,l) 254#define MZERO(b1,l) memset(b1,0,l) 255#define INDEX(s,c) strchr(s,c) 256#define RINDEX(s,c) strrchr(s,c) 257#else 258#define INDEX(s,c) index(s,c) 259#define RINDEX(s,c) rindex(s,c) 260#define MCMP(x,y,z) bcmp(x,y,z) 261#define MCOPY(b1,b2,l) bcopy(b1,b2,l) 262#define MZERO(b1,l) bzero(b1,l) 263#endif 264 265#ifdef SPEEDUP /* strncpy is terrible slow */ 266#ifdef NEED_MEMORY_H 267#include <memory.h> 268#else 269#include <string.h> 270#endif 271/* #define STRNCPY(x,y,z) memcpy(x,y,z) */ 272#define STRNCPY(x,y,z) memccpy(x,y,'\0',z) 273#else 274#define STRNCPY(x,y,z) strncpy(x,y,z) 275#endif 276 277#ifndef HAVE_WAIT3 278#define WAIT3(x,y,z) waitpid(-1, x, y ) 279#else 280#define WAIT3(x,y,z) wait3(x, y, z) 281#endif 282 283#if (defined(HAVE_RANDOM) && defined(HAVE_SETSTATE)) || !defined(HAVE_RANDOM) 284#define RANDOM() random() 285#define SRANDOM(x) srandom(x) 286#else 287#define RANDOM() rrandom() 288#define SRANDOM(x) ssrandom(x) 289extern void ssrandom (); 290extern long rrandom (); 291#endif 292 293#if !defined(HAVE_RANDOM) 294extern void srandom (); 295extern long random (); 296#endif 297 298#if (SIZEOF_LONG == 8) 299#define _64BIT 300#define LONG int 301#define U_LONG u_int 302#else 303#define LONG long 304#define U_LONG u_long 305#endif 306 307/* System dependend Include files */ 308 309#define NULLFILE "null" 310 311#ifdef NEED_SYS_SELECT_H 312#define INC_SYS_SELECT <sys/select.h> 313#else 314#define INC_SYS_SELECT NULLFILE 315#endif 316#define SELECT select 317 318#ifdef HAVE_UNISTD_H 319#define INC_UNISTD <unistd.h> 320#else 321#define INC_UNISTD NULLFILE 322#endif 323 324#ifdef HAVE_SYS_SIGNAL_H 325#define INC_SYS_SIGNAL <sys/signal.h> 326#else 327#define INC_SYS_SIGNAL NULLFILE 328#endif 329 330#ifdef HAVE_SYS_FCNTL_H 331#define INC_SYS_FCNTL <sys/fcntl.h> 332#else 333#define INC_SYS_FCNTL NULLFILE 334#endif 335 336#ifdef HAVE_FCNTL_H 337#define INC_FCNTL <fcntl.h> 338#else 339#define INC_FCNTL NULLFILE 340#endif 341 342/* Some systems don't include <sys/time.h> in <time.h> */ 343#if defined(TM_IN_SYS_TIME) || defined(NEED_SYS_TIME_H) 344#define INC_SYS_TIME <sys/time.h> 345#else 346#define INC_SYS_TIME NULLFILE 347#endif 348 349#ifdef HAVE_SYS_PTYIO_H 350#define INC_SYS_PTYIO <sys/ptyio.h> 351#else 352#define INC_SYS_PTYIO NULLFILE 353#endif 354 355#ifdef HAVE_CTYPE_H 356#define INC_CTYPE <ctype.h> 357#else 358#define INC_CTYPE NULLFILE 359#endif 360 361#ifdef HAVE_MACHINE_ENDIAN_H 362#define INC_MACHINE_ENDIAN <machine/endian.h> 363#else 364#define INC_MACHINE_ENDIAN NULLFILE 365#endif 366 367#ifdef HAVE_SYS_RESOURCE_H 368#define INC_SYS_RESOURCE <sys/resource.h> 369#else 370#define INC_SYS_RESOURCE NULLFILE 371#endif 372 373#ifdef HAVE_SYS_WAIT_H 374#define INC_SYS_WAIT <sys/wait.h> 375#else 376#define INC_SYS_WAIT NULLFILE 377#endif 378 379#ifdef HAVE_NETINET_IN_H 380#define INC_NETINET_IN <netinet/in.h> 381#else 382#define INC_NETINET_IN NULLFILE 383#endif 384 385#ifdef HAVE_NETINET_TCP_H 386#define INC_NETINET_TCP <netinet/tcp.h> 387#else 388#define INC_NETINET_TCP NULLFILE 389#endif 390 391/* Replace outdated ftime with gettimeofday */ 392#if defined(HAVE_SYS_TIMEB_H) && defined(HAVE_FTIME) 393#define INC_SYS_TIMEB <sys/timeb.h> 394#else 395#define NOTIMEB 396#define INC_SYS_TIMEB <sys/time.h> 397#endif 398 399#ifdef HAVE_GMP2_H 400#define INC_MP <gmp.h> 401#define MPTYPEDEF typedef mpz_t MPTYPE; 402 403#define assignItom(x,i) {mpz_init(x); mpz_set_ui(x,i);} 404#define madd(x, y, z) mpz_add(z, x, y) 405#define msub(x, y, z) mpz_sub(z, x, y) 406#define mult(x, y, z) mpz_mul(z, x, y) 407#define mdiv(n, d, q, r) mpz_fdiv_qr(q, r, n, d) 408#define sdiv(n, d, q, r) *r = mpz_fdiv_q_ui(q, n, d) 409#define msqrt(x, y, z) mpz_sqrt(z, x, y) 410#define mp_pow(x, y, z, a) mpz_powm(a, x, y, z) 411#define gcd(x, y, z) mpz_gcd(z, x, y) 412#define mcmp(x, y) mpz_cmp(x, y) 413#define min(x) mpz_min(x) 414#define mout(x) mpz_mout(x) 415#define mfree(x) mpz_clear(x) 416 417#else 418#define MPTYPEDEF typedef MINT *MPTYPE; 419#define assignItom(x,i) x= itom(i) 420#define mp_pow(x, y, z, a) pow(x, y, z, a) 421#define INC_MP <mp.h> 422#endif 423 424#ifdef NO_PATH_MAX 425#define PATH_MAX 255 426#define INC_LIMITS NULLFILE 427#else 428#define INC_LIMITS <limits.h> 429#endif 430 431#ifdef HAVE_XPM 432#ifdef HAVE_X11_XPM_H 433#define INC_XPM <X11/xpm.h> 434#else 435#define INC_XPM <xpm.h> 436#endif 437#else 438#define INC_XPM NULLFILE 439#endif 440 441/* Unchecked machine dependencies */ 442 443#ifdef linux 444#define SHMFLAG sizeof(struct memory) 445#else 446#define SHMFLAG 0 447#endif 448 449#if defined(sun3) 450#define INC_STDLIB NULLFILE 451#else 452#define INC_STDLIB <stdlib.h> 453#endif 454 455#ifndef sun4 456#if defined(HAVE_NINT) && defined(HAVE_MATH_H) 457#define INC_MATH <math.h> 458#else 459#if defined(NEED_RINT_DEC) 460extern double rint(double); 461#define INC_MATH NULLFILE 462#else 463#define INC_MATH <math.h> 464#endif 465#define nint(x) ((int) rint(x)) 466#endif 467#endif 468 469/* 470 Some systems, most notably SunOS 4.1.3, don't include function definitions 471 in the libraries. This results in some warning we don't want. 472 This header defines the type for all these functions. 473*/ 474 475#ifdef sun4 476#include <stdio.h> 477#include <sys/types.h> 478#include <sys/socket.h> 479 480int close(int); 481int connect(int, struct sockaddr *, int); 482int fprintf(FILE *, const char *, ...); 483int fputs(char *, FILE *); 484char *memccpy(char *, char *, int, int); 485int perror(char *); 486int socket(int, int, int); 487int sscanf(char *, char *, ...); 488char *strdup(char *arg); 489 490char _filbuf(FILE *); 491int _flsbuf(unsigned char, FILE *); 492 493#endif /* defined sun4 */ 494 495#ifdef WIN32 496typedef unsigned short int ushort; 497#define strncasecmp strncmp 498#ifdef THREADED 499#define THREAD(fn) { DWORD junk; CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)f 500#define ENDTHREAD ExitThread(0); 501typedef unsigned long int SEMAPHORE; 502#define CREATE_SEMAPHORE(initstate) CreateEvent(NULL, 1, initstate, NULL) 503#define SET_SEMAPHORE(sem) SetEvent((HANDLE)sem) 504#define RESET_SEMAPHORE(sem) ResetEvent((HANDLE)sem) 505#endif 506#endif 507 508#ifdef _MSC_VER 509#define INC_STRINGS <ntstring.h> 510#define INC_IO <ntio.h> 511#else 512#define INC_IO NULLFILE 513#endif 514 515 /* Solaris specific stuff */ 516 517#if defined(HAVE_SYS_FILIO_H) 518#define INC_SYS_FILIO <sys/filio.h> 519#else 520#define INC_SYS_FILIO NULLFILE 521#endif 522 523/* define this if you have the SDL library (checked by configure.in) */ 524#undef HAVE_SDL 525 526#endif /* __CONFIG_H */ 527