#
# Quake Makefile for Linux 2.0
#
# Aug '98 by Zoid <zoid@idsoftware.com>
#
# ELF only
#
# Modified by QuDos at http://qudos.quakedev.com

# Check OS type.
OSTYPE := $(shell uname -s | tr A-Z a-z)

# this nice line comes from the linux kernel makefile
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc/ -e s/sparc64/sparc/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/)
MARCH :=$(shell uname -m)


VERSION=1.60
MOUNT_DIR=.
BINDIR=quake
BUILD_DEBUG_DIR=debug-build
BUILD_RELEASE_DIR=release-build


BUILD_QR=YES         # QRack glx executable (uses oss/sdl for cdrom & sound, GLX for video)
QR_EXE=qrack-glx     # Name of glx executable
BUILD_QR_SDL=YES     # Qrack sdl glx executable (uses SDL for cdrom & sound, SDLGL for video)
QR_SDL_EXE=qrack-sdl # Name of sdl glx executable
BUILD_DZIP=YES       # Dzip binary for compress/uncompress demos

WITH_DATADIR=NO      # Use DATADIR for reading and ~/.qrack for writing
# The next option is required when DATADIR is set to YES
WITH_HOMEDIR=NO      # Use ~/ for writing, instead of . 
# Directory within $HOME to write to
HOMEDIR=.qrack

ifeq ($(OSTYPE),linux)
WITH_FMOD=NO           # Fmod Sound support, no tested.
endif


OPTIMIZE=NO           # Enable Optimization, release build only.
STRIP=NO              # Remove symbols from binaries, reduce size.

CC=gcc
CC_VERSION=$(shell $(CC) -dumpversion | sed -e 's/\..*//g')
CC_VERSION_NUM=$(shell $(CC) -dumpversion)

VERBOSE=NO
ifeq ($(VERBOSE),NO)
CC_OUTPUT=echo "  Compiling >> $< ..." &&
endif

LOCALBASE=/usr/local
X11BASE=/usr/X11R6

DATADIR= $(LOCALBASE)/games/quake
ifeq ($(strip $(WITH_DATADIR)),YES)
 BASEDIR=$(DATADIR)
else
 BASEDIR=.
endif

SYSBINDIR=$(LOCALBASE)/bin

ifeq ($(ARCH),x86_64)
 ARCH_LIBDIR=64
endif

# Seems that gcc 4.0 has some issues with -march option here, so i added it by default.
# Feel free to remove it.
BASE_CFLAGS+= \
             -I$(LOCALBASE)/include \
             -I$(X11BASE)/include \
             -Dstricmp=strcasecmp \
             -DGLQUAKE \
             -DBASEDIR='\"$(BASEDIR)\"'
ifeq ($(ARCH),i386)
 BASE_CFLAGS+=-march=$(MARCH)
endif
	    
DEBUG_CFLAGS=$(BASE_CFLAGS) -g -ggdb -Wall
RELEASE_CFLAGS+=$(BASE_CFLAGS)\
               -fno-strict-aliasing \

ifeq ($(strip $(OPTIMIZE)),YES)
 RELEASE_CFLAGS+= -O3 \
                  -funroll-loops \
                  -falign-loops=2 \
                  -falign-jumps=2 \
                  -falign-functions=2
endif

ifeq ($(strip $(STRIP)),YES)
RELEASE_CFLAGS+=-s
endif


ifeq ($(strip $(WITH_FMOD)),YES)
 BASE_CFLAGS+= -DWITH_FMOD
 LDFLAGS_FMOD+= -L./fmod -Wl,-rpath,. -lfmod
endif

ifeq ($(strip $(WITH_DATADIR)),YES)
 BASE_CFLAGS+=-DDATADIR='\"$(DATADIR)\"'
 BASE_CFLAGS+=-DHOMEDIR='\"$(HOMEDIR)\"'
endif

LDFLAGS=-lm -pthread
ifeq ($(OSTYPE),linux)
 LDFLAGS+=-ldl
endif


X_LDFLAGS=-L$(X11BASE)/lib$(ARCH_LIBDIR) -lX11 -lXext -lXxf86vm -lXxf86dga

GL_LDFLAGS=-L$(LOCALBASE)/lib$(ARCH_LIBDIR) -L$(X11BASE)/lib$(ARCH_LIBDIR) -lGL -ljpeg `libpng-config --libs`

SDL_CONFIG=sdl-config
SDL_CFLAGS=$(shell $(SDL_CONFIG) --cflags)
SDL_LDFLAGS=$(shell $(SDL_CONFIG) --libs)


DO_CC=$(CC_OUTPUT) $(CC) $(CFLAGS) -o $@ -c $<
DO_GL_CC=$(CC_OUTPUT) $(CC) $(CFLAGS) -o $@ -c $<
DO_SDL_CC=$(CC_OUTPUT) $(CC) $(CFLAGS) $(SDL_CFLAGS) -o $@ -c $<

#############################################################################
# SETUP AND BUILD
#############################################################################

ifeq ($(strip $(BUILD_QR)),YES)
 TARGETS+=$(BINDIR)/$(QR_EXE)
endif

ifeq ($(strip $(BUILD_QR_SDL)),YES)
 TARGETS+=$(BINDIR)/$(QR_SDL_EXE)
endif

ifeq ($(strip $(BUILD_DZIP)),YES)
 TARGETS+=$(BINDIR)/dzip
endif

all:
	@echo
	@echo Set to YES or NO at the top of this file the possible options to build by the makefile.
	@echo By default, it will build client, sdl client and dzip binary.
	@echo 
	@echo Possible targets:
	@echo
	@echo ">> Add VERBOSE=YES to the command line in order to get a verbose output, defaults to NO"
	@echo
	@echo ">> make release       (build the binary for a release)."
	@echo ">> make debug         (build the binary for debuging mode)."
	@echo ">> make clean         (clean objects)."
	@echo ">> make distclean     (clean objects, executables and modified files)."
	@echo ">> make install       (quake home dir)."
	@echo ">> make install_root  (required when was built with DATADIR option enabled," 
	@echo "                       you must gain root privileges)."
	@echo
debug:
	@echo
	@printf "** Debug Build **\n"
	@-mkdir -p $(BUILD_DEBUG_DIR) \
		$(BINDIR)
ifeq ($(VERBOSE),YES)
		$(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)";
else
		@-$(MAKE) --silent targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)";
endif

release:
	@echo
	@printf "** Release Build **\n"
	@-mkdir -p $(BUILD_RELEASE_DIR) \
		$(BINDIR)
ifeq ($(VERBOSE),YES)
		$(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)";
else
		@-$(MAKE) --silent targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)";
endif

targets: $(TARGETS)
	@echo
	@echo "Compilation finished succesfully ;)"
	@echo
	@echo "'make install' to install in your quake home dir."
	@echo
	@echo "'make install_root' if was built with DATADIR option enabled, you must gain root privileges."
	@echo
#	@xmessage -center -bg black -fg green "Compilation finished succesfully ;)"

#############################################################################
# GLQuake
#############################################################################

GLQUAKE_OBJS= \
   $(BUILDDIR)/cl_demo.o   $(BUILDDIR)/cl_input.o $(BUILDDIR)/cl_main.o \
   $(BUILDDIR)/cl_parse.o  $(BUILDDIR)/cl_tent.o  $(BUILDDIR)/chase.o \
   $(BUILDDIR)/cmd.o       $(BUILDDIR)/common.o   $(BUILDDIR)/console.o \
   $(BUILDDIR)/crc.o       $(BUILDDIR)/cvar.o \
   \
   $(BUILDDIR)/corona.o    $(BUILDDIR)/gl_draw.o  $(BUILDDIR)/gl_image.o \
   $(BUILDDIR)/gl_mesh.o   $(BUILDDIR)/gl_model.o $(BUILDDIR)/gl_refrag.o \
   $(BUILDDIR)/gl_rlight.o $(BUILDDIR)/gl_rmain.o $(BUILDDIR)/gl_rmisc.o \
   $(BUILDDIR)/gl_rpart.o  $(BUILDDIR)/gl_rsurf.o $(BUILDDIR)/gl_screen.o \
   $(BUILDDIR)/gl_smokes.o $(BUILDDIR)/gl_warp.o \
   \
   $(BUILDDIR)/host.o      $(BUILDDIR)/host_cmd.o $(BUILDDIR)/iplog.o \
   $(BUILDDIR)/keys.o      $(BUILDDIR)/location.o $(BUILDDIR)/menu.o \
   $(BUILDDIR)/mathlib.o   $(BUILDDIR)/nehahra.o  $(BUILDDIR)/net_dgrm.o \
   $(BUILDDIR)/net_loop.o  $(BUILDDIR)/net_main.o $(BUILDDIR)/net_vcr.o \
   $(BUILDDIR)/net_udp.o   $(BUILDDIR)/net_bsd.o  $(BUILDDIR)/pr_cmds.o \
   $(BUILDDIR)/pr_edict.o  $(BUILDDIR)/pr_exec.o  $(BUILDDIR)/r_part.o \
   $(BUILDDIR)/sbar.o      $(BUILDDIR)/slist.o    $(BUILDDIR)/sv_main.o \
   $(BUILDDIR)/sv_phys.o   $(BUILDDIR)/sv_move.o  $(BUILDDIR)/sv_user.o \
   $(BUILDDIR)/zone.o      $(BUILDDIR)/view.o     $(BUILDDIR)/version.o   \
   $(BUILDDIR)/wad.o       $(BUILDDIR)/world.o    $(BUILDDIR)/sys_unix.o \
   $(BUILDDIR)/snd_dma.o   $(BUILDDIR)/snd_mem.o  $(BUILDDIR)/snd_mix.o \
   \
   $(BUILDDIR)/vid_common_gl.o $(BUILDDIR)/vid_glx.o
	
SND_OBJS= \
	$(BUILDDIR)/snd_oss.o \
	$(BUILDDIR)/cd_unix.o
	
SDL_SND_OBJS= \
	$(BUILDDIR)/cd_sdl.o \
	$(BUILDDIR)/snd_sdl.o

DZIP_OBJS= \
   $(BUILDDIR)/main.o     $(BUILDDIR)/compress.o $(BUILDDIR)/uncompress.o \
   $(BUILDDIR)/list.o     $(BUILDDIR)/crc32.o    $(BUILDDIR)/encode.o \
   $(BUILDDIR)/decode.o   $(BUILDDIR)/v1code.o   $(BUILDDIR)/conmain.o \
   $(BUILDDIR)/delete.o   $(BUILDDIR)/adler32.o  $(BUILDDIR)/deflate.o \
   $(BUILDDIR)/trees.o    $(BUILDDIR)/inflate.o  $(BUILDDIR)/infblock.o \
   $(BUILDDIR)/inftrees.o $(BUILDDIR)/infcodes.o $(BUILDDIR)/infutil.o \
   $(BUILDDIR)/inffast.o

$(BINDIR)/$(QR_EXE) : $(GLQUAKE_OBJS) $(SND_OBJS)
	@echo
	@echo "**Built $@ client with cflags:"
	@echo "$(CC) $(CC_VERSION_NUM)";
	@echo "$(CFLAGS)";
	@echo
	@echo "**Linking $@ client with flags:"
	@echo "$(LDFLAGS)";
	@echo "$(X_LDFLAGS)";
	@echo "$(GL_LDFLAGS)";
	@echo "$(LDFLAGS_FMOD)";
	@echo
	$(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(SND_OBJS) $(LDFLAGS) $(X_LDFLAGS) $(GL_LDFLAGS) $(LDFLAGS_FMOD)

$(BINDIR)/$(QR_SDL_EXE) : $(GLQUAKE_OBJS) $(SDL_SND_OBJS)
	@echo
	@echo "**Built $@ client with cflags:"
	@echo "$(CC) $(CC_VERSION_NUM)";
	@echo "$(CFLAGS)";
	@echo
	@echo "**Linking $@ client with flags:"
	@echo "$(LDFLAGS)";
	@echo "$(X_LDFLAGS)";
	@echo "$(SDL_LDFLAGS)";
	@echo "$(GL_LDFLAGS)";
	@echo "$(LDFLAGS_FMOD)";
	@echo
	$(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(SDL_SND_OBJS) $(LDFLAGS) $(X_LDFLAGS) $(SDL_LDFLAGS) $(GL_LDFLAGS) $(LDFLAGS_FMOD)

$(BINDIR)/dzip : $(DZIP_OBJS)
	@echo
	@echo "**Built $@ with cflags:"
	@echo "$(CC) $(CC_VERSION_NUM)";
	@echo "$(CFLAGS)";
	@echo
	@echo "**Linking $@ with flags:"
	@echo "$(LDFLAGS)";
	@echo
	$(CC) $(CFLAGS) -o $@ $(DZIP_OBJS) $(LDFLAGS)

$(BUILDDIR)/cl_demo.o :       $(MOUNT_DIR)/cl_demo.c;               $(DO_GL_CC)
$(BUILDDIR)/cl_input.o :      $(MOUNT_DIR)/cl_input.c;              $(DO_GL_CC)
$(BUILDDIR)/cl_main.o :       $(MOUNT_DIR)/cl_main.c;               $(DO_GL_CC)
$(BUILDDIR)/cl_parse.o :      $(MOUNT_DIR)/cl_parse.c;              $(DO_GL_CC)
$(BUILDDIR)/cl_tent.o :       $(MOUNT_DIR)/cl_tent.c;               $(DO_GL_CC)
$(BUILDDIR)/chase.o :         $(MOUNT_DIR)/chase.c;                 $(DO_GL_CC)
$(BUILDDIR)/cmd.o :           $(MOUNT_DIR)/cmd.c;                   $(DO_GL_CC)
$(BUILDDIR)/common.o :        $(MOUNT_DIR)/common.c;                $(DO_GL_CC)
$(BUILDDIR)/console.o :       $(MOUNT_DIR)/console.c;               $(DO_GL_CC)
$(BUILDDIR)/crc.o :           $(MOUNT_DIR)/crc.c;                   $(DO_GL_CC)
$(BUILDDIR)/cvar.o :          $(MOUNT_DIR)/cvar.c;                  $(DO_GL_CC)
$(BUILDDIR)/corona.o :        $(MOUNT_DIR)/corona.c;                $(DO_GL_CC)
$(BUILDDIR)/gl_draw.o :       $(MOUNT_DIR)/gl_draw.c;               $(DO_GL_CC)
$(BUILDDIR)/gl_image.o :      $(MOUNT_DIR)/gl_image.c;              $(DO_GL_CC)
$(BUILDDIR)/gl_mesh.o :       $(MOUNT_DIR)/gl_mesh.c;               $(DO_GL_CC)
$(BUILDDIR)/gl_model.o :      $(MOUNT_DIR)/gl_model.c;              $(DO_GL_CC)
$(BUILDDIR)/gl_refrag.o :     $(MOUNT_DIR)/gl_refrag.c;             $(DO_GL_CC)
$(BUILDDIR)/gl_rlight.o :     $(MOUNT_DIR)/gl_rlight.c;             $(DO_GL_CC)
$(BUILDDIR)/gl_rmain.o :      $(MOUNT_DIR)/gl_rmain.c;              $(DO_GL_CC)
$(BUILDDIR)/gl_rmisc.o :      $(MOUNT_DIR)/gl_rmisc.c;              $(DO_GL_CC)
$(BUILDDIR)/gl_rpart.o :      $(MOUNT_DIR)/gl_rpart.c;              $(DO_GL_CC)
$(BUILDDIR)/gl_rsurf.o :      $(MOUNT_DIR)/gl_rsurf.c;              $(DO_GL_CC)
$(BUILDDIR)/gl_screen.o :     $(MOUNT_DIR)/gl_screen.c;             $(DO_GL_CC)
$(BUILDDIR)/gl_smokes.o :     $(MOUNT_DIR)/gl_smokes.c;             $(DO_GL_CC)
$(BUILDDIR)/vid_common_gl.o : $(MOUNT_DIR)/vid_common_gl.c;         $(DO_GL_CC)
$(BUILDDIR)/vid_glx.o :       $(MOUNT_DIR)/vid_glx.c;               $(DO_GL_CC)
$(BUILDDIR)/gl_warp.o :       $(MOUNT_DIR)/gl_warp.c;               $(DO_GL_CC)
$(BUILDDIR)/host.o :          $(MOUNT_DIR)/host.c;                  $(DO_GL_CC)
$(BUILDDIR)/host_cmd.o :      $(MOUNT_DIR)/host_cmd.c;              $(DO_GL_CC)
$(BUILDDIR)/iplog.o :         $(MOUNT_DIR)/iplog.c;                 $(DO_GL_CC)
$(BUILDDIR)/keys.o :          $(MOUNT_DIR)/keys.c;                  $(DO_GL_CC)
$(BUILDDIR)/location.o :      $(MOUNT_DIR)/location.c;              $(DO_GL_CC)
$(BUILDDIR)/menu.o :          $(MOUNT_DIR)/menu.c;                  $(DO_GL_CC)
$(BUILDDIR)/mathlib.o :       $(MOUNT_DIR)/mathlib.c;               $(DO_GL_CC)
$(BUILDDIR)/nehahra.o :       $(MOUNT_DIR)/nehahra.c;               $(DO_GL_CC)
$(BUILDDIR)/net_dgrm.o :      $(MOUNT_DIR)/net_dgrm.c;              $(DO_GL_CC)
$(BUILDDIR)/net_loop.o :      $(MOUNT_DIR)/net_loop.c;              $(DO_GL_CC)
$(BUILDDIR)/net_main.o :      $(MOUNT_DIR)/net_main.c;              $(DO_GL_CC)
$(BUILDDIR)/net_vcr.o :       $(MOUNT_DIR)/net_vcr.c;               $(DO_GL_CC)
$(BUILDDIR)/net_udp.o :       $(MOUNT_DIR)/net_udp.c;               $(DO_GL_CC)
$(BUILDDIR)/net_bsd.o :       $(MOUNT_DIR)/net_bsd.c;               $(DO_GL_CC)
$(BUILDDIR)/pr_cmds.o :       $(MOUNT_DIR)/pr_cmds.c;               $(DO_GL_CC)
$(BUILDDIR)/pr_edict.o :      $(MOUNT_DIR)/pr_edict.c;              $(DO_GL_CC)
$(BUILDDIR)/pr_exec.o :       $(MOUNT_DIR)/pr_exec.c;               $(DO_GL_CC)
$(BUILDDIR)/r_part.o :        $(MOUNT_DIR)/r_part.c;                $(DO_GL_CC)
$(BUILDDIR)/sbar.o :          $(MOUNT_DIR)/sbar.c;                  $(DO_GL_CC)
$(BUILDDIR)/slist.o :         $(MOUNT_DIR)/slist.c;                 $(DO_GL_CC)
$(BUILDDIR)/sv_main.o :       $(MOUNT_DIR)/sv_main.c;               $(DO_GL_CC)
$(BUILDDIR)/sv_phys.o :       $(MOUNT_DIR)/sv_phys.c;               $(DO_GL_CC)
$(BUILDDIR)/sv_move.o :       $(MOUNT_DIR)/sv_move.c;               $(DO_GL_CC)
$(BUILDDIR)/sv_user.o :       $(MOUNT_DIR)/sv_user.c;               $(DO_GL_CC)
$(BUILDDIR)/zone.o   :        $(MOUNT_DIR)/zone.c;                  $(DO_GL_CC)
$(BUILDDIR)/version.o   :     $(MOUNT_DIR)/version.c;               $(DO_GL_CC)
$(BUILDDIR)/view.o   :        $(MOUNT_DIR)/view.c;                  $(DO_GL_CC)
$(BUILDDIR)/wad.o :           $(MOUNT_DIR)/wad.c;                   $(DO_GL_CC)
$(BUILDDIR)/world.o :         $(MOUNT_DIR)/world.c;                 $(DO_GL_CC)
$(BUILDDIR)/cd_unix.o :       $(MOUNT_DIR)/cd_unix.c;               $(DO_GL_CC)
$(BUILDDIR)/sys_unix.o :      $(MOUNT_DIR)/sys_unix.c;              $(DO_GL_CC)
$(BUILDDIR)/snd_dma.o :       $(MOUNT_DIR)/snd_dma.c;               $(DO_GL_CC)
$(BUILDDIR)/snd_mem.o :       $(MOUNT_DIR)/snd_mem.c;               $(DO_GL_CC)
$(BUILDDIR)/snd_mix.o :       $(MOUNT_DIR)/snd_mix.c;               $(DO_GL_CC)
$(BUILDDIR)/snd_oss.o :       $(MOUNT_DIR)/snd_oss.c;               $(DO_GL_CC)
$(BUILDDIR)/cd_sdl.o :        $(MOUNT_DIR)/cd_sdl.c;                $(DO_SDL_CC)
$(BUILDDIR)/snd_sdl.o :       $(MOUNT_DIR)/snd_sdl.c;               $(DO_SDL_CC)
$(BUILDDIR)/main.o :          $(MOUNT_DIR)/dz29src/main.c;          $(DO_CC)
$(BUILDDIR)/compress.o :      $(MOUNT_DIR)/dz29src/compress.c;      $(DO_CC)
$(BUILDDIR)/uncompress.o :    $(MOUNT_DIR)/dz29src/uncompress.c;    $(DO_CC)
$(BUILDDIR)/list.o :          $(MOUNT_DIR)/dz29src/list.c;          $(DO_CC)
$(BUILDDIR)/crc32.o :         $(MOUNT_DIR)/dz29src/crc32.c;         $(DO_CC)
$(BUILDDIR)/encode.o :        $(MOUNT_DIR)/dz29src/encode.c;        $(DO_CC)
$(BUILDDIR)/decode.o :        $(MOUNT_DIR)/dz29src/decode.c;        $(DO_CC)
$(BUILDDIR)/v1code.o :        $(MOUNT_DIR)/dz29src/v1code.c;        $(DO_CC)
$(BUILDDIR)/conmain.o :       $(MOUNT_DIR)/dz29src/conmain.c;       $(DO_CC)
$(BUILDDIR)/delete.o :        $(MOUNT_DIR)/dz29src/delete.c;        $(DO_CC)
$(BUILDDIR)/adler32.o :       $(MOUNT_DIR)/dz29src/zlib/adler32.c;  $(DO_CC)
$(BUILDDIR)/deflate.o :       $(MOUNT_DIR)/dz29src/zlib/deflate.c;  $(DO_CC)
$(BUILDDIR)/trees.o :         $(MOUNT_DIR)/dz29src/zlib/trees.c;    $(DO_CC)
$(BUILDDIR)/inflate.o :       $(MOUNT_DIR)/dz29src/zlib/inflate.c;  $(DO_CC)
$(BUILDDIR)/infblock.o :      $(MOUNT_DIR)/dz29src/zlib/infblock.c; $(DO_CC)
$(BUILDDIR)/inftrees.o :      $(MOUNT_DIR)/dz29src/zlib/inftrees.c; $(DO_CC)
$(BUILDDIR)/infcodes.o :      $(MOUNT_DIR)/dz29src/zlib/infcodes.c; $(DO_CC)
$(BUILDDIR)/infutil.o :       $(MOUNT_DIR)/dz29src/zlib/infutil.c;  $(DO_CC)
$(BUILDDIR)/inffast.o :       $(MOUNT_DIR)/dz29src/zlib/inffast.c;  $(DO_CC)

############################################################################
# MISC
#############################################################################

clean: clean-debug clean-release

clean-debug:
	$(MAKE) clean2 BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)"
	
clean-release:
	$(MAKE) clean2 BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(DEBUG_CFLAGS)"
	
clean2:
	-rm -f $(GLQUAKE_OBJS) \
	$(GLX_OBJS) \
	$(SDLGL_OBJS) \
	$(GLQUAKE_LNX_OBJS) \
	$(GLQUAKE_SDL_OBJS) \
	$(DZIP_OBJS) \
	$(SND_OBJS) \
	$(SDL_SND_OBJS)
distclean:
	@echo cleaning objects, binaries and modified files
	@-rm -rf $(BUILD_DEBUG_DIR) $(BUILD_RELEASE_DIR) $(BINDIR)
	@-rm -f `find . \( -not -type d \) -and \
		\( -name '*~' \) -type f -print`
	@echo .
	@echo .... Done

install:
	@echo
	@printf "Copying files to your home dir\n"
	@echo ......
	@cp -rv $(BINDIR) $(HOME)
	@cp -rv qrack.run $(HOME)/$(BINDIR)
	@chmod +x $(HOME)/$(BINDIR)/qrack.run
	@mkdir -pv $(HOME)/bin
	@cd $(HOME)/bin && ln -svf $(HOME)/$(BINDIR)/qrack.run qrack
	@printf "Symlinking executable to $(HOME)/bin\n"
	@echo
	@printf "You must to set the PATH $(HOME)/bin to the executable search path in order to run qrack.\n" 
	@printf "Type qrack to start playing\n"
	@echo
	@echo Done 
	@echo 
install_root:
	@echo
	@mkdir -pv $(DATADIR)
	@printf "Copying files to $(DATADIR)\n"
	@cp -rv $(BINDIR) $(LOCALBASE)/games
	@cp -rv qrack.run $(DATADIR)
	@chmod +x $(DATADIR)/qrack.run
	@ln -sfv $(DATADIR)/qrack.run $(SYSBINDIR)/qrack
	@printf "Symlinking executable to $(SYSBINDIR)\n"
	@echo 
	@printf "Type qrack as user to start playing.\n"
	@echo 
	@echo Done 
	@echo 


