# $Id: Makefile,v 1.1 2009/07/17 17:47:17 qnet Exp qnet $
#
# Copyright (c) 2008 Department of Mathematics and Computer Science
# Gordon College, 255 Grapevine Road, Wenham, MA 01984
#
# This Makefile has been tested and works with GNU make.  

# ============================================================================
# ===================== BEGIN USER CONFIGURATION SECTION =====================
# ============================================================================

# PREFIX is the top-level directory above which this program will be
# installed.  Often it is /usr/local, but could also be /usr or /opt.
# Other directories are usually specified relative to PREFIX.  The
# configuration here is appropriate for openSUSE Linux 11, you should check
# your system and make any necessary changes.  Note: the value of LIBARCH
# is defind below - it will be either blank or 64.

PREFIX = /usr/local
BINDIR	= $(PREFIX)/bin
INCDIR  = $(PREFIX)/include
LIBDIR  = $(PREFIX)/lib$(LIBARCH)# no whitespace should preceed this comment
MANDIR  = $(PREFIX)/man

# ============================================================================
# ====================== END USER CONFIGURATION SECTION ======================
# ============================================================================

# Determine if we are on a 64 bit machine - if not then assume 32 bit

PLATFORM := $(shell uname -i)
ifeq ($(PLATFORM),x86_64)
ARCH	= -m64
LIBARCH	= 64
else
ARCH	= -m32
LIBARCH	=#this is intentionally left blank
endif

# Define location of libqnet

QNETDIR	= ../libqnet
INCDIRS	= -I$(QNETDIR)
LIBDIRS	= -L$(QNETDIR)
BLDFLAGS=
QNETLIB	= $(QNETDIR)/libqnet.a

# Location for local copy of PDF manual

DOCDIR	= ../manual

# Compiler and linker flags

CXX	= g++
OPTFLAGS= -O3
DBGFLAGS= -Wall -g
CXXFLAGS= $(ARCH) $(OPTFLAGS) $(DBGFLAGS) $(INCDIRS) $(BLDFLAGS)
LDFLAGS	= $(ARCH) $(OPTFLAGS) $(DBGFLAGS) $(LIBDIRS)
LIBS	= -lqnet

# Project files

SCRIPTS	=
SRCS	= qnetdp.cc pslice.cc
OBJS	= $(SRCS:.cc=.o)
MANS	= $(SRCS:.cc=.1)
PDFS	= $(SRCS:.cc=.1.pdf)
BINS	= $(SRCS:.cc=)

# Targets

all:	$(BINS)

qnetdp:	qnetdp.o $(QNETLIB)
	$(CXX) $(LDFLAGS) -o $@ $< $(LIBS)

pslice:	pslice.o $(QNETLIB)
	$(CXX) $(LDFLAGS) -o $@ $< $(LIBS)

doc:	$(MANS)
	if [ ! -d $(DOCDIR) ]; then mkdir -p $(DOCDIR); fi
	for f in $(BINS); do man -t -l $$f.1 | ps2pdf - $(DOCDIR)/$$f.pdf; done

install:	install-bin install-man

uninstall:	uninstall-bin uninstall-man

install-bin:	$(BINS) $(SCRIPTS)
	if [ ! -d $(BINDIR) ]; then mkdir -p $(BINDIR); fi
	for f in $(BINS) $(SCRIPTS); do install -m 755 $$f $(BINDIR)/$$f; done

uninstall-bin:
	for f in $(BINS) $(SCRIPTS); do $(RM) $(BINDIR)/$$f; done

install-man:	$(MANS)
	if [ ! -d $(MANDIR)/man1 ]; then mkdir -p $(MANDIR)/man1; fi
	for f in $(MANS); do gzip -c $$f > $(MANDIR)/man1/$$f.gz; done

uninstall-man:
	for f in $(MANS); do $(RM) $(MANDIR)/man1/$$f.gz; done

clean:
	$(RM) $(OBJS) $(DEPEND)

clobber:
	$(MAKE) clean
	$(RM) $(BINS)

depend:
	$(RM) $(DEPEND)
	$(MAKE) $(DEPEND)

$(DEPEND):	$(HDRS) $(SRCS) Makefile
	$(CXX) $(CXXFLAGS) -M $(SRCS) > $@

-include $(DEPEND)
