#ifndef _Imakefile_Config_ #define _Imakefile_Config_ /**/# /**/# Imakefile.Config by Kurt Lidl (lidl@pix.com) /**/# /**/# This file (Imakefile.Config) is included in all the other Imakefiles /**/# in the UMDENG X-Tank distribution. Unless you are porting X-Tank to /**/# a new (unsupported) platform, or adding new features to the game, /**/# this should be the only file you need to edit to install the game. /**/# /**/# Things that still need work in the Imakefile system /**/# 1) Testing on more platforms (Very important!) /**/# 2) Addition of Motorola SYSV based config stuff /**/# /**/# If you have any problems *AT ALL* with the Imakefiles themselves, /**/# please be sure to tell the folks who read the USENET newsgroup /**/# rec.games.xtank.programmer. If you can't get or send news, then /**/# you can mail your problems to xtank@eng.umd.edu -- make sure /**/# that you include the information requested in the README file. /**/# Also, make sure that say you can't get news, so people will know to /**/# respond via E-Mail. /**/# Thanks. We'd also love to hear of new robots and tank designs. /**/# This is needed to defeat the people who have systems /**/# that will define unix to be one, which later turns unix.c into 1.c #ifdef unix #undef unix #endif /**/# Things that might need to be defined, for your installation of xtank. /**/# Put the path to the main xtank directory in quotes in the -DXTANK_DIR /**/# below. This is used as backup in case the environment variable /**/# XTANK_DIR is not set at runtime. The environment variable XTANK_DIR /**/# is set in the shell script called xtank in the Bin directory. /**/# You should change its value there also (to the same value). /**/# /**/# Graphics system: X10 or X11 or AMIGA /**/# The program will not work if X10 or AMIGA is set here. /**/# /**/# Operating system: UNIX or AMIGA /**/# Currently, xtank will not work if AMIGA is set here. /**/# /**/# Screen size: S1024x864 or S640x400 /**/# The program will not work if S640x400 is set here. /**/# If your screen is smaller than 1024x864, then some things will not /**/# be visible /**/# Options inside the game. Read carefully. /**/# -DSTINGY_REDRAW /**/# Doesn't refresh objects that haven't moved. /**/# Might break some some exposure handlers! /**/# Much more robust and better localized than the original STINGY_REDRAW. /**/# Could use some macro-izing or local variables to replace the VS_moved /**/# and VS_rotated ideas. /**/# Files affected: display.c /**/# /**/# -DBATCH_LINES /**/# Caches draw_lines requests into one big Xdrawsegments() call. /**/# Files affected: display.c x11.c x11.h /**/# /**/# -DBATCH_POINTS /**/# Caches draw_point requests into one big Xdrawpoints() call. /**/# Files affected: display.c x11.c x11.h /**/# /**/# -DCODE_SIZE=0xNNNNNN /**/# Default amount of space to allocate for dynamically loaded program /**/# code segments. One CODE_SIZE of space is allocated each time a /**/# program is dynamically loaded. The program that has been dynamically /**/# loaded gets to use CODE_SIZE bytes of memory, minus possibly one /**/# pagesize of memory, depending on whether or not malloc() returns memory /**/# on a page boundary. /**/# /**/# -DSTACK_SIZE=0xNNNNNN /**/# Default amount of space to allocate for each thread (Robot Program) /**/# in the game. Increasing this number can drastically change the /**/# VM usage of Xtank! /**/# /**/# -DFAST_EXPLOS /**/# Makes faster, terser explosions by limiting the number of bitmaps /**/# displayed. /**/# Files affected: circle.obj double.obj exhaust.obj fiery.obj /**/# soft.obj tink.obj /**/# /**/# -DKEYPAD_DETECT /**/# Enables the keypad routines. Currently cause weapon "n" to one shot /**/# each key press on the numeric keypad. Weapon state (on/off) is restored /**/# after firing. /**/# Files affected: input.c x11.c graphics.h /**/# /**/# -DLOCK_GAME_CONTROLS /**/# Locks out some luser controls (speed, sync...) /**/# Strictly a local hack. /**/# Files affected: animate.c input.c /**/# /**/# -DNO_TEXT_CLIP /**/# Disables fix that prevents off-window text from being drawn. /**/# This is a big win as nametags were getting drawn constantly even /**/# when they weren't visible, thus generating needless net trafic. /**/# Most sites should leave it undefined. /**/# Files affected: x11.c /**/# /**/# -DBATCH_COLOR_LINES /**/# Rather memory hungry extensions to cope with colored walls. /**/# Most sites should define it. /**/# Files affected: x11.c x11.h /**/# /**/# -DNO_NEW_RADAR /**/# Don't set this flag, because XTank will not compile with it set! /**/# /**/# About the new radar system: /**/# /**/# The new radar system is similar to a radar system of the 1990's instead /**/# of the 1960's. Big fat vehicles show up better on the radar screen. /**/# RCS can be set by other modules to enable stealthy-type action. /**/# /**/# IFF (Identify Friend or Foe) subsystem. Allows you to distinguish /**/# friends and enemys (and allies) on the new radar. Works with /**/# public-key cryptography, you must have the IFF key of your ally /**/# and he must have your key for it to work. You share IFF keys /**/# with your team-mates automatically. /**/# /**/# Tactical link, shares info with team mates. Currently only shares radar /**/# info, might eventually share mapper info. /**/# /**/# HARM's, high speed anti-radiation missles. Seeking code is still buggy! /**/# You do a L-click in the map (!) window to select the firing coordinates. /**/# NB: The weight/cost/ammo stuff is a rough guess for playing, and most /**/# likely will switch in the next release. /**/# /**/# -DTEST_TURRETS /**/# Experimental. Should be left undefined (ie, disabled) for normal sites. /**/# Argh! This should never be enabled as it stands. Was trying to speed up /**/# turret code. Works by computing actual turret vector. Turret lengths set /**/# for debugging, not playing. /**/# /**/# -DSLOWER /**/# Experimental. Should be defined (ie, disabled) for normal sites. /**/# Various attempts at speeding up the code, probably very dependant /**/# on your CPU. Stay tuned to this channel. /**/# Files affected: collision.c /**/# /**/# -DNO_BROKEN_BLIP_FIX /**/# A fix to a fix. Seems that my last uninformed patch made is possible /**/# to leave a soilitary little dot on the radar if you turned it off /**/# in the last life phase. I'm sorry. /**/# Most sites should leave it undefined. /**/# Files affected: radar.c /**/# /**/# -DNO_FORCE_SPECIALS /**/# Disables a patch that lets you turn off everyones radar. /**/# Most sites should leave it undefined. /**/# /**/# -DNO_GAME_BALANCE /**/# Enables some features that horribly unbalance the game, but can /**/# be fun to play around with. Currently, the only feature enabled /**/# are tactical nukes. /**/# Sites should probably leave this undefined. /**/# /**/# -DSCROLL_INTO_WALL_BUG /**/# Disables a fix that causes vehicles to stick into walls if they /**/# are directed into them by a scroll square. This is an old fix, /**/# but please leave the ifdef in so people can figgure out why the /**/# code appears so funny at that point (and so disbelievers can /**/# recreate the bug!) /**/# Most sites should leave it undefined. /**/# /**/# Everybody needs to know the following global things about xtank DEFINES2 = -DX11 -DUNIX -DS1024x864 -DKEYPAD_DETECT \ -DSTINGY_REDRAW -DBATCH_LINES -DBATCH_POINTS \ -DBATCH_COLOR_LINES \ -DCODE_SIZE=0x20000 -DSTACK_SIZE=0x8000 $(ARCH_DEFINES) DEFINES = -DXTANK_DIR=\"/usr/local/xtank\" $(DEFINES2) \ -DALLDEFINES="\"$(DEFINES2)\"" /**/# Things that might need to be defined, for your particular machine /**/# architecture, and installation of xtank. The best place to add /**/# any flags needed for your particular platform is the /**/# EXTRA_DEFINES line. /**/# /**/# Thread package: THREAD_MP or THREAD_SUNLWP or THREAD_SVR4 /**/# or nothing /**/# /**/# The "standard" threads package is THREAD_MP, which runs on the /**/# machines listed in thread.h. To use it, add -DTHREAD_MP to the /**/# architecture specfic options. /**/# /**/# There is an alternate threads package available on Suns which uses /**/# the LWP library. To use it, add -DTHREAD_SUNLWP to the architecture /**/# specfic options. /**/# /**/# There is another alternate threads package available on System V /**/# Release 4 machines which uses the builtin lightweight context /**/# switching system calls. To use it, add -DTHREAD_SVR4 to the /**/# architecture specfic options. /**/# /**/# If you cannot get threads working using any of these methods, you /**/# will not be able to have computer controlled vehicles. Remove /**/# the any thread flags from the architecture specfic options. /**/# Other weird interactions may happen if no thread package is defined. /**/# /**/# X11R2 fonts: /**/# If your machine is using X11R2 fontnames, instead of X11R3 fontnames, /**/# add a -DX11R2FONTS to the appropriate compile line. /**/# /**/# /**/# If you cannot get XMultiSync.c to compile, remove the -DMULTI_SYNC. /**/# This will make multi-player games noticeably slower, though. /**/# /**/# If you want to restrict multi-player games to have all machines /**/# on the same subnet of your network, add a -DCHECKNET. Some sites /**/# (and local InterNet NOC's) consider running xtank off the local subnet, /**/# or over a campus or long-haul network a *bad thing*. Xtank makes /**/# a *lot* of network traffic, so be considerate of others. /**/# /**/# -DDYNALOAD /**/# If you are not able to get compile_module() to work in unix.c, /**/# remove the -DDYNALOAD flag. You will then not be able to add new /**/# robot programs without recompiling Xtank. /**/# /**/# -DDEBUG /**/# If you want to see some debugging information in unix.c, /**/# add this flag to the appropriate compile line. /**/# /**/# -DHAS_SINCOS /**/# You system has a sincos() math library call. /**/# /**/# If you need to use the auxiliary font add a -DNEED_AUX_FONT to the /**/# correct compile line. /**/# Start of System Dependent Things /**/# (e.g. special options for your particular hardware and installation) #ifdef LinuxArchitecture ARCH_DEFINES = -DMULTI_SYNC -DTHREAD_MP -DDYNALOAD -Dconst="" XTANK_TARGET = xtank.linux CDEBUGFLAGS = -O3 CC = cc #endif #ifdef __386BSD__ ARCH_DEFINES = -DMULTI_SYNC -DTHREAD_MP XTANK_TARGET = xtank.386bsd CDEBUGFLAGS = -g -O #endif #ifdef i860Architecture XTANK_TARGET = xtank.intel860 ARCH_DEFINES = -DMULTI_SYNC -DTHREAD_SVR4 CDEBUGFLAGS = -gg #endif #ifdef ApolloArchitecture XTANK_TARGET = xtank.apollo ARCH_DEFINES = -DMULTI_SYNC -DDYNALOAD CDEBUGFLAGS = -g #endif #ifdef BobcatArchitecture XTANK_TARGET = xtank.bobcat ARCH_DEFINES = -DMULTI_SYNC -DTHREAD_MP CDEBUGFLAGS = -O #endif #ifdef HPArchitecture # ifdef hp9000s800 XTANK_TARGET = xtank.hp9k8 # else XTANK_TARGET = xtank.hp9k3 # endif ARCH_DEFINES = -DMULTI_SYNC -DDYNALOAD -DTHREAD_MP CDEBUGFLAGS = -g #endif #ifdef MultimaxArchitecture XTANK_TARGET = xtank.mmax ARCH_DEFINES = -DMULTI_SYNC -DTHREAD_MP -Dmmax CDEBUGFLAGS = -g #endif #if defined(RiscArchitecture) || defined(RsArchitecture) /**/# IBM RS6000 XTANK_TARGET = xtank.rs6k ARCH_DEFINES = -DMULTI_SYNC -DDYNALOAD -DTHREAD_MP -D_BSD -DBSD_INCLUDES CDEBUGFLAGS = -g #endif #ifdef RtArchitecture XTANK_TARGET = xtank.rt ARCH_DEFINES = -DMULTI_SYNC -DDYNALOAD CDEBUGFLAGS = -g #endif #ifdef SequentArchitecture XTANK_TARGET = xtank.seq ARCH_DEFINES = -DMULTI_SYNC -DDYNALOAD CDEBUGFLAGS = -g #endif #ifdef SGIArchitecture XTANK_TARGET = xtank.sgi ARCH_DEFINES = -D_BSD_SIGNALS -DMULTI_SYNC -DTHREAD_MP CDEBUGFLAGS = -g #endif #ifdef SunArchitecture # ifdef SparcArchitecture XTANK_TARGET = xtank.sun4 # else XTANK_TARGET = xtank.sun3 # endif ARCH_DEFINES = -DSUNOS4_0 -DTHREAD_SUNLWP -DMULTI_SYNC -DDYNALOAD -DHAS_SINCOS # if !HasGcc CDEBUGFLAGS = -O4 /usr/lib/libm.il # else CDEBUGFLAGS = -g -O # endif #endif #ifdef UltrixArchitecture #ifdef MipsArchitecture XTANK_TARGET = xtank.mips-el ARCH_DEFINES = -DMULTI_SYNC -DTHREAD_MP -DDYNALOAD # if HasGcc CDEBUGFLAGS = -g -O # else CDEBUGFLAGS = -O -Olimit 1024 # endif #endif #endif #ifdef VaxArchitecture XTANK_TARGET = xtank.vax ARCH_DEFINES = -DMULTI_SYNC -DTHREAD_MP -DDYNALOAD CDEBUGFLAGS = -g #endif /**/# End of System Dependent Things /* * SpecialObjectRule - generate rules to compile a file with special flags. */ #ifndef ExtraSpecialObjectRule #define ExtraSpecialObjectRule(objs,depends,options) @@\ objs: depends @@\ $(RM) $@ @@\ $(CC) $(ALLDEFINES) -c options $*.c #endif /* ExtraSpecialObjectRule */ /* * NamedMakeSubdirs - generate rules to do makes in the given subdirectories. * If you want CDEBUGFLAGS passed along to subdirectories, provide a line like * the following in the appropriate Imakefile * * #define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' */ #ifndef MyNamedMakeSubdirs #define MyNamedMakeSubdirs(name,dirs) \ NamedTargetSubdirs(name,dirs,"making" name,PassCDebugFlags PassDefines,all) #endif /* MyNamedMakeSubdirs */ #endif /* _Imakefile_Config_ */