# -*- makefile -*- mode for emacs # @(#) $Id: Makefile,v 1.6 2004/10/05 04:53:50 leavens Exp $ # Copyright (C) 2003 Iowa State University # This file is part of JML # JML is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # JML is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with JML; see the file COPYING. If not, write to # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. # # Developer's Makefile for testing JML specs # ## ----------------------------------------------------------------- ## At the bottom of this file we import $(TOPDIR)/Make.ProjDefs. See the ## that file for substantial documentation. ## ----------------------------------------------------------------- TOPDIR = ../../.. SUBDIRS = PACKAGE = org.jmlspecs.lang RAC_CLASSES_DIR = $(TOPDIR)/raccompiled/$(subst .,/,$(PACKAGE)) NONFRAC_CLASSES_DIR = $(TOPDIR)/nonFraccompiled/$(subst .,/,$(PACKAGE)) # JAVAFLAGS = -g -J-mx256m JAVAFLAGS = -O -J-mx256m # JAVADOCFLAGS = JAVADOC = javadoc JAVADOCDIR = ../../../javadocs JAVADOCFLAGS = \ -d $(JAVADOCDIR) \ -doctitle "JML Language" \ -windowtitle "JML Language" \ -header "

JML Language

" ALL_JAVA = JMLDataGroup.java # set JAVAFILES for Make.Defs JAVAFILES = $(subst .java,,$(ALL_JAVA)) # Don't set set TESTDIRS, TESTSUITES, TESTFILES for Make.Defs # as we don't want to build TestSuite.java for this directory #TESTDIRS = #TESTSUITES = NAMESTOTEST = $(JAVAFILES) #TESTFILES = $(addsuffix _JML_Test,$(NAMESTOTEST)) TESTDATACLASSFILES = $(addsuffix _JML_TestData.class,$(NAMESTOTEST)) GENFILES = $(addsuffix .java,$(TESTFILES)) ## ------------------------------------------------------------- ## Goals default all: check html ## ------------------------------------------------------------- ## building compile: build ## ------------------------------------------------------------- ## Testing check: runtests-this-start checkallspecs runtests-this-end buildtests-this-before: java.stamp java.stamp: $(addsuffix .java,$(NAMESTOTEST)) $(JMLUNIT) $(JMLUNITFLAGS) $? touch java.stamp slowtests: $(MAKE) JMLCFLAGS= build buildtests TestSuite.out fasterslowtests: TestSuite.out individual-tests: $(addsuffix .out, $(NAMESTOTEST)) TestSuite.out: $(RAC_CLASSES_DIR)/raccompile.stamp \ java.stamp $(TESTDATACLASSFILES) TestSuite.class env CLASSPATH="$(RAC_CLASSES_JTOP)$(JPATHSEP)"'$(CLASSPATH)' \ $(JUNITFORJML) $(PACKAGE).TestSuite 2>&1 | tee TestSuite.out @grep -q 'FAILURES!!!' TestSuite.out && exit 1 || exit 0 TestSuite.dout: $(NONFRAC_CLASSES_DIR)/raccompile.stamp \ java.stamp $(TESTDATACLASSFILES) TestSuite.class env CLASSPATH="$(NONFRAC_CLASSES_JTOP)$(JPATHSEP)"'$(CLASSPATH)' \ $(JUNITFORJML) $(PACKAGE).TestSuite 2>&1 | tee TestSuite.dout @grep -q 'FAILURES!!!' TestSuite.dout && exit 1 || exit 0 runtests-this: checkallspecs ifdef ALLTESTS runtests-this: JMLDataGroup.out endif # check all JML specs. checkallspecs: java.stamp @if [ $(QUIET) ]; then echo "."; else echo "running checker on specs"; fi; @if $(JML) $(JMLFLAGS) . > checkallspecs.out-ckd 2>&1 ; \ then cat checkallspecs.out-ckd ; \ else cat checkallspecs.out-ckd ; exit 1 ; \ fi escjava: $(ESCJAVA) $(ESCJAVAFLAGS) $(ALL_JAVA) ## docs docs html: packages.html packages.html: $(ALL_GENERATED_JAVA) mkdir -p $(JAVADOCDIR) $(JAVADOC) $(JAVADOCFLAGS) *.java > /tmp/tempjavadoc $(JMLDOC) -Q -package *.java # Clean up stuff # clean-this: cleanlocal cleanlocal: $(RM) *.*-ckd core *.out java.stamp distclean-this: distclean-local distclean-local: $(RM) stylesheet.css package-list $(RM) -r org distclean-javadocs: $(RM) -r $(JAVADOCDIR)/org/jmlspecs/models ## ------------------------------------------------------------- ## Global defaults include $(TOPDIR)/Make.ProjDefs