# makefile for QCL
#
# This file is part of the Quantum Computation Language QCL.
#
# (c) Copyright by Bernhard Oemer <oemer@tph.tuwien.ac.at> 1998-2004
#
# This program comes without any warranty; without even the implied
# warranty of merchantability or fitness for any particular purpose.
#
# This program is free software under the terms of the
# GNU General Public Licence (GPL) version 2 or higher
VERSION=0.6.1
# Directory for Standard .qcl files
QCLDIR = ${PREFIX}/share/qcl
# Path for qcl binaries
QCLBIN = ${PREFIX}/bin
# Debugging options
#DEBUG = -g -pg -DQCL_DEBUG -DQC_DEBUG
#DEBUG = -g -DQCL_DEBUG -DQC_DEBUG
DEBUG = -DQCL_DEBUG -DQC_DEBUG
#DEBUG = -O2
# Plotting support
#
# Comment out if you don't have GNU libplotter and X
#PLOPT = -DQCL_PLOT
#PLLIB = -L/usr/X11/lib -lplotter -lXaw -lXmu -lXt -lXext -lXpm -lSM -lICE -lX11
#PLLIB = -L/usr/X11/lib -lplotter -lXaw -lXmu -lXt -lXext -lX11
#PLLIB = -L/usr/X11/lib -lplotter -lXaw -lXmu -Xt -lSM -ICE -lXext -lX11
# Readline support
#
# Comment out if you don't have GNU readline on your system
# explicit linking against libtermcap or libncurses may be required
RLOPT = -DQCL_USE_READLINE
RLLIB = -lreadline
#RLLIB = -lreadline -lncurses
# Interrupt support
#
# Comment out if your system doesn't support ANSI C signal handling
IRQOPT = -DQCL_IRQ
##### You shouldn't have to edit the stuff below #####
DATE = `date +"%y.%m.%d-%H%M"`
QCDIR = qc
QCLIB = $(QCDIR)/libqc.a
QCLINC = lib
CXXFLAGS += $(DEBUG) $(PLOPT) $(RLOPT) $(IRQOPT) -I$(QCDIR) -DDEF_INCLUDE_PATH="\"$(QCLDIR)\""
LDFLAGS += -L$(QCDIR) $(DEBUG) $(PLLIB) -lm -lfl -lqc $(RLLIB)
FILESCC = *.cc
FILESH = *.h
SOURCE = $(FILESCC) $(FILESH) qcl.lex qcl.y Makefile
OBJECTS = types.o syntax.o typcheck.o symbols.o error.o \
lex.o yacc.o print.o quheap.o extern.o eval.o exec.o \
parse.o options.o debug.o cond.o dump.o plot.o format.o
all: build
dep:
mkdep ${CXXFLAGS} ${FILESCC}
lex.cc: qcl.lex
$(LEX) -olex.cc qcl.lex
yacc.cc: qcl.y
$(YACC) -t -d -o yacc.cc qcl.y
yacc.h: yacc.cc
mv yacc.*?h yacc.h
$(QCLIB):
+cd ${QCDIR} && ${MAKE} ${MAKEFLAGS} libqc.a
#### Rules for build
build: qcl $(QCLINC)/default.qcl
qcl: $(OBJECTS) qcl.o $(QCLIB)
$(CXX) $(OBJECTS) qcl.o $(LDFLAGS) -o qcl
qcl-static: $(OBJECTS) qcl.o $(QCLIB)
$(CXX) -static $(OBJECTS) qcl.o $(LDFLAGS) -o qcl-static
strip qcl-static
$(QCLINC)/default.qcl: extern.cc
grep "^//!" extern.cc | cut -c5- > $(QCLINC)/default.qcl
install: build
umask 022; mkdir -p $(QCLDIR); chmod 0755 $(QCLDIR)
${INSTALL} -m 0755 ./qcl $(QCLBIN)
${INSTALL} -m 0644 ./lib/*.qcl $(QCLDIR)
uninstall:
rm -f $(QCLBIN)
rm -f $(QCLDIR)/*.qcl
rmdir $(QCLDIR)
#### Other Functions
#SOURCEFILES = `ls $(SOURCE)`
tags: $(SOURCE)
ctags $(SOURCE)
edit: tags
# nedit -tags tags -iconic $(SOURCEFILES) &
nedit -iconic $(SOURCE) &
clean:
rm -f *.o lex.* yacc.*
cd $(QCDIR) && make clean
clear: clean
rm -f qcl qcl-static qcl/default.qcl .depend
cd $(QCDIR) && make clear
dist-src: dep
mkdir qcl-$(VERSION)
cp README CHANGES COPYING .depend $(SOURCE) qcl-$(VERSION)
mkdir qcl-$(VERSION)/qc
cp qc/Makefile qc/*.h qc/*.cc qcl-$(VERSION)/qc
cp -r lib qcl-$(VERSION)
tar czf qcl-$(VERSION).tgz --owner=0 --group=0 qcl-$(VERSION)
rm -r qcl-$(VERSION)
dist-bin: build
mkdir qcl-$(VERSION)-bin
cp Makefile README CHANGES COPYING qcl qcl-$(VERSION)-bin
cp -r lib qcl-$(VERSION)-bin
tar czf qcl-$(VERSION)-bin.tgz --owner=0 --group=0 qcl-$(VERSION)-bin
rm -r qcl-$(VERSION)-bin
upload: dist-src dist-bin
scp qcl-$(VERSION).tgz oemer@tph.tuwien.ac.at:html/tgz
scp qcl-$(VERSION)-bin.tgz oemer@tph.tuwien.ac.at:html/tgz
scp: dist-src
scp qcl-$(VERSION).tgz oemer@tph.tuwien.ac.at:bak/qcl-$(DATE).tgz
PREFIX=/usr/local
syntax highlighted by Code2HTML, v. 0.9.1