#if ProjectX < 5
#define XCOMM #
#define NullParameter
#define InstallNonExecFile InstallNonExec
#endif

XCOMM Imakefile for xzx

/* Define this if you want xzx installed suid root */
/* Only bother doing this on Linux with PC Speaker support defined */
#define InstallXzxSetUID

PROGRAMS = xzx ddtrans

SRCS = main.c mem.c emul.c tables.c xspec.c dtbl.c joystick.c util.c \
	   resource.c rtcfg.c dis.c if1.c audio.c fdc.c loadsave.c snapshot.c
OBJS = main.o mem.o emul.o tables.o xspec.o dtbl.o joystick.o util.o \
	   resource.o rtcfg.o dis.o if1.o audio.o fdc.o loadsave.o snapshot.o

DDSRCS = ddtrans.c
DDOBJS = ddtrans.o

/* Make sure this matches the definition of LIBDIR in resource.c */
ZXLIBDIR = /usr/local/lib/xzx

/* Change compiler to suit or let imake fill it in... */
# CC = cc
# CC = gcc
# CC = xlc -D_ALL_SOURCE                     # for AIX
# CC = cc -D_POSIX_SOURCE -D_XOPEN_SOURCE    # for HP-UX

/* Pick a suitable CDEBUGFLAGS or let imake fill it in... */
# CDEBUGFLAGS = -O2 
# CDEBUGFLAGS = -g3 -DDEBUG

/* Byte order of your CPU.  Intel is little-endian, Sparc is big-endian... */
# END_DEF  = -DLITTLE_ENDIAN
# END_DEF  = -DBIG_ENDIAN

/* Values > 1 mean a larger window but slow things down. */
SCAL_DEF = -DSCALING=1

/* Compile in the MIT-SHM code.  If you can, do. */
SHM_DEF  = #-DMITSHM

/* Define this if your system lacks the gethostname() function. */
# NAME_DEF = -DHAS_UNAME

/* Define this if your system lacks the str[n]casecmp functions */
# STRCASE_DEF = -DNEED_STRCASECMP

/* Only define this if you have Linux with the joystick kernel patches */
# JOY_DEF = -DJOY

/* Audio defines.  DEV_AUDIO means use /dev/audio to emulate sound - 
 * works on Sparc, Linux (w/VoxWare), NEC SuperStation.  XBELL_AUDIO
 * means use the X Server bell - only works for ROM beeps.  PCSPKR_AUDIO
 * means control the PC speaker port directly - only works on Linux.
 */
# AUDIO_DEF = -DDEV_AUDIO
# AUDIO_DEF = -DXBELL_AUDIO
# AUDIO_DEF = -DPCSPKR_AUDIO

/* Define this to connect I/O ports to stdin, stdout & stderr */
IO_DEF = -DPSEUDO_IO

/* Define this to mimic tape loading/saving  */
TAPE_DEF = -DLOAD_SAVE

/* Define this for Shadow ROM and Microdrive support */
IF1_DEF = -DXZX_IF1

/* Define this for a 'level loader' trap for hacked-up multi-load games */
LEVEL_DEF = -DLEVEL_LOADER

/* Define this if you're running xzx on a very fast machine (e.g. DEC Alpha) */
# SLOW_DEF = -DSLOWDOWN


XCOMM --- Don't change anything below this line ---

#ifdef NecArchitecture
CCOPTIONS = -ZXNd=8000 -ZXNp=8000 -KOlimit=2000
#endif

DEFINES = $(END_DEF) $(SCAL_DEF) $(SHM_DEF) $(MEM_DEF) $(JOY_DEF) $(NAME_DEF) \
          $(STRCASE_DEF) $(AUDIO_DEF) $(IO_DEF) $(TAPE_DEF) $(IF1_DEF) \
          $(PCSPKR_DEF) $(LEVEL_DEF) $(SLOW_DEF) $(SPEC_DEF)

AllTarget($(PROGRAMS))
DependTarget()

NormalProgramTarget(xzx,$(OBJS),$(DEPXLIB),NullParameter,$(XLIB))
NormalProgramTarget(ddtrans,$(DDOBJS),NullParameter,NullParameter,NullParameter)

#ifdef InstallXzxSetUID
InstallProgramWithFlags(xzx,$(BINDIR),$(INSTUIDFLAGS))
#else
InstallProgramWithFlags(xzx,$(BINDIR),NullParameter)
#endif
InstallProgram(ddtrans, $(BINDIR))
InstallScript(mkcart, $(BINDIR))

InstallManPage(xzx,$(MANDIR))
InstallAppDefaults(Xzx)

InstallNonExecFile(spectrum.rom,$(ZXLIBDIR))
InstallNonExecFile(if1.rom,$(ZXLIBDIR))
InstallNonExecFile(128-0.rom,$(ZXLIBDIR))
InstallNonExecFile(128-1.rom,$(ZXLIBDIR))
InstallNonExecFile(pl3-0.rom,$(ZXLIBDIR))
InstallNonExecFile(pl3-1.rom,$(ZXLIBDIR))
InstallNonExecFile(pl3-2.rom,$(ZXLIBDIR))
InstallNonExecFile(pl3-3.rom,$(ZXLIBDIR))

