#####################################################
#
# glBSP Makefile for Win32 compiling (using MINGW32)
#
# Targets:
#    libglbsp.a
#    glbsp.exe
#    glbsp.txt
#
#    all     : makes the library, cmdline program and docs
#    clean   : removes targets and intermediate files
#

LIB_NAME=libglbsp.a
CMD_NAME=glbsp.exe
DOC_NAME=glbsp.txt

## SHELL=bash.exe

PREFIX=
# PREFIX=mingw32-

CC=$(PREFIX)gcc
CXX=$(PREFIX)g++
AR=$(PREFIX)ar rc
RANLIB=$(PREFIX)ranlib

BASE_FLAGS=-Wall -Os -I./src -DWIN32 -DINLINE_G=inline

ZLIB_DIR=../zlib-1.2.3
# ZLIB_DIR=C:/Program\ Files/GnuWin32/src/zlib/1.2.3/zlib-1.2.3


# ----- GENERAL STUFF ----------------------------------------------

all:    $(LIB_NAME) $(CMD_NAME) $(DOC_NAME)

clean:
	rm $(LIB_NAME)
	rm $(CMD_NAME)
	rm $(DOC_NAME)
	rm src/*.o
	rm cmdline/*.o

.PHONY: all clean


# ----- LIBRARY ----------------------------------------------------

LIB_FLAGS=$(BASE_FLAGS) -I$(ZLIB_DIR)

LIB_OBJS=\
	src/analyze.o  \
	src/blockmap.o \
	src/glbsp.o    \
	src/level.o    \
	src/node.o     \
	src/reject.o   \
	src/seg.o      \
	src/system.o   \
	src/util.o     \
	src/wad.o

src/%.o: src/%.c
	$(CC) $(LIB_FLAGS) -c $^ -o $@

$(LIB_NAME): $(LIB_OBJS)
	$(AR) $@ $(LIB_OBJS)
	$(RANLIB) $@


# ----- CMDLINE PROGRAM ---------------------------------------------

CMD_FLAGS=$(BASE_FLAGS) -I$(ZLIB_DIR)
CMD_LIBS=$(ZLIB_DIR)/libz.a -lm

CMD_OBJS=cmdline/main.o cmdline/display.o  

cmdline/%.o: cmdline/%.c
	$(CC) $(CMD_FLAGS) -c $^ -o $@

$(CMD_NAME): $(LIB_NAME) $(CMD_OBJS)
	$(CC) $(CMD_FLAGS) $(CMD_OBJS) -o $@ $(LIB_NAME) $(CMD_LIBS)


# ----- DOCUMENTATION ---------------------------------------------

DOC_FILES=README.txt USAGE.txt TRICKS.txt CHANGES.txt

$(DOC_NAME): $(DOC_FILES)
	cat README.txt USAGE.txt TRICKS.txt CHANGES.txt > $@


#--- editor settings ------------
# vi:ts=8:sw=8:noexpandtab
