# makefile for QCL # # This file is part of the Quantum Computation Language QCL. # # (c) Copyright by Bernhard Oemer 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