# Makefile for DMMPST: DooM MaP Statistics utility

# Definitions
CP	= cp -p
# for SunOS use:
# CC	= acc
# for Irix, HP-UX use:
# CC	= cc
# for Linux, Ultrix use:
CC	= gcc

# MinGW GCC cross-compiler to Windows 32- & 64-bit
CC32	= i686-w64-mingw32-gcc
CC64	= x86_64-w64-mingw32-gcc
WINDST	= ../windows/

CFLAGS	= -O -I .
#CFLAGS	= -O0 -I . -g
LDFLAGS	= -s

# for SunOS use:
# INCLUDES = /usr/users/sigc/a01/bin/SC1.0/ansi_include
# for Irix, Linux, Ultrix, HP-UX use:
# (none)

# big endian machines (Sun, SGI, HP-UX) need to swap bytes within int's/long's
# DEFINES = -DDM_BIG_ENDIAN
# little endian machines (IBM PC, DECstation) need to do nothing
DEFINES =


# Programs & Objects
PROGSLNX= dmmpst
PROGSWIN= dmmpst32.exe dmmpst64.exe
INCS	= $(wildcard *.h)
SRCS	= $(filter-out ctemplate.c, $(wildcard *.c))
OBJS	= $(SRCS:.c=.o)
DEPS	= $(SRCS:.c=.d)


# Rules & Dependencies
default: $(PROGSLNX)
all:	 $(PROGSLNX) libctemplate.a $(PROGSWIN)

-include $(DEPS)

libctemplate.a: ctemplate.o
	ar r libctemplate.a ctemplate.o
	ranlib libctemplate.a

%.o:	%.c
	$(CC) -c $(CFLAGS) -MMD -MF $(patsubst %.o,%.d,$@) -o $@ $<

# Commands
dmmpst: $(OBJS) libctemplate.a
	$(CC) $(LDFLAGS) $(OBJS) -L . -lctemplate -o $@

dmmpst32.exe: $(INCS) $(SRCS)
	$(CC32) $(CFLAGS) $(LDFLAGS) $(SRCS) ctemplate.c -o $@
	$(CP) $@ $(WINDST)

dmmpst64.exe: $(INCS) $(SRCS)
	$(CC64) $(CFLAGS) $(LDFLAGS) $(SRCS) ctemplate.c -o $@
	$(CP) $@ $(WINDST)

.c.o:
# for SunOS use:
#	$(CC) $(CFLAGS) $(DEFINES) -I$(INCLUDES) -c $<
# for Irix, Linux, Ultrix use:
	$(CC) $(CFLAGS) $(DEFINES) -c $<
# for HP-UX use:
#	$(CC) $(CFLAGS) $(DEFINES) -Aa -c $<


# Remove Objects
clean:
	rm -f *.o *.a
cleanall:
	rm -f *.o *.a *.d dmmpst *.exe $(WINDST)*.exe

