j.22.source-code.Makefile Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ecj Show documentation
Show all versions of ecj Show documentation
ECJ, A Java-based Evolutionary Computation Research System.
ECJ is a research EC system written in Java. It was designed to be highly flexible, with nearly all classes (and all of their settings) dynamically determined at runtime by a user-provided parameter file. All structures in the system are arranged to be easily modifiable. Even so, the system was designed with an eye toward efficiency.
ECJ is developed at George Mason University's ECLab Evolutionary Computation Laboratory. The software has nothing to do with its initials' namesake, Evolutionary Computation Journal. ECJ's sister project is MASON, a multi-agent simulation system which dovetails with ECJ nicely.
The newest version!
#
# Makefile created by Jeff Bassett, with some
# tweaks by Sean Luke
#
# To compile everything but GUI: make
# To delete class files: make clean
# To build the documentation: make docs
# To auto-indent using Emacs: make indent
# To build everything + GUI: make gui
# To build everything + Push: make push
# (requires JFreeChart: www.jfree.org/jfreechart/)
# (requires iText: www.lowagie.com/iText/)
# [also, used here at GMU, you can ignore it...]
# Prepare for distribution: make dist
#
JAVAC = javac ${JAVACFLAGS}
JAVACFLAGS = -target 1.5 -source 1.5 ${FLAGS}
FLAGS = -g -Xlint:deprecation
VERSION = 22
DIRS = \
ec/*.java \
ec/app/ant/*.java \
ec/app/ant/func/*.java \
ec/app/bbob/*.java \
ec/app/ecsuite/*.java \
ec/app/edge/*.java \
ec/app/edge/func/*.java \
ec/app/gpsemantics/*.java \
ec/app/gpsemantics/func/*.java \
ec/app/hiff/*.java \
ec/app/klandscapes/*.java \
ec/app/klandscapes/func/*.java \
ec/app/lawnmower/*.java \
ec/app/lawnmower/func/*.java \
ec/app/lid/*.java \
ec/app/lid/func/*.java \
ec/app/majority/*.java \
ec/app/majority/func/*.java \
ec/app/mona/*.java \
ec/app/moosuite/*.java \
ec/app/multiplexer/*.java \
ec/app/multiplexer/func/*.java \
ec/app/multiplexerslow/*.java \
ec/app/multiplexerslow/func/*.java \
ec/app/nk/*.java \
ec/app/ordertree/*.java \
ec/app/ordertree/func/*.java \
ec/app/parity/*.java \
ec/app/parity/func/*.java \
ec/app/regression/*.java \
ec/app/regression/func/*.java \
ec/app/royaltree/*.java \
ec/app/royaltree/func/*.java \
ec/app/sat/*.java \
ec/app/sum/*.java \
ec/app/tutorial1/*.java \
ec/app/tutorial2/*.java \
ec/app/tutorial3/*.java \
ec/app/tutorial4/*.java \
ec/app/coevolve1/*.java \
ec/app/coevolve2/*.java \
ec/app/twobox/*.java \
ec/app/twobox/func/*.java \
ec/breed/*.java \
ec/coevolve/*.java \
ec/de/*.java \
ec/es/*.java \
ec/eval/*.java \
ec/evolve/*.java \
ec/exchange/*.java \
ec/gp/*.java \
ec/gp/breed/*.java \
ec/gp/build/*.java \
ec/gp/koza/*.java \
ec/gp/ge/*.java \
ec/gp/ge/breed/*.java \
ec/multiobjective/*.java \
ec/multiobjective/nsga2/*.java \
ec/multiobjective/spea2/*.java \
ec/pso/*.java \
ec/select/*.java \
ec/simple/*.java \
ec/spatial/*.java \
ec/steadystate/*.java \
ec/util/*.java \
ec/vector/*.java \
ec/vector/breed/*.java \
ec/parsimony/*.java\
ec/rule/*.java \
ec/rule/breed/*.java \
all: base
base:
@ echo This builds the code except for gui
@ echo For other Makefile options, type: make help
@ echo
${JAVAC} ${DIRS}
gui:
@ echo This builds the base code and the gui code
@ echo -- requires JFreeChart: www.jfree.org/jfreechart/
@ echo -- requires iText: www.lowagie.com/iText/
@ echo
${JAVAC} ${DIRS} ec/display/chart/*.java ec/app/gui/*.java ec/display/*.java ec/display/portrayal/*.java
push:
@ echo This builds the base code and the Push code
@ echo -- requires Psh: https://github.com/jonklein/Psh
@ echo
${JAVAC} ${DIRS} ec/gp/push/*.java ec/app/push/*.java
clean:
find . -name "*.class" -exec rm -f {} \;
find . -name "*.stat" -exec rm -f {} \;
find . -name ".DS_Store" -exec rm -rf {} \;
find . -name "*.java*~" -exec rm -rf {} \;
rm -rf docs/classdocs/*
rm -rf ec/app/moobenchmarks
dist: clean gui push indent doc jar
find . -name "*.stat" -exec rm rf {} \; -print
echo --------------------------
echo Expect some errors here...
echo --------------------------
find . -name ".svn" -exec rm -rf {} \; -print | cat
indent:
@ echo This uses emacs to indent all of the code. To indent with
@ echo "ECJ's default indent style, create a .emacs file in your home"
@ echo "directory, with the line: (setq c-default-style \"whitesmith\")"
@ echo and run make indent. To indent with BSD/Allman style, use
@ echo "the line: (setq c-default-style \"bsd\")"
@ echo
touch ${HOME}/.emacs
find . -name "*.java" -print -exec emacs --batch --load ~/.emacs --eval='(progn (find-file "{}") (mark-whole-buffer) (setq indent-tabs-mode nil) (untabify (point-min) (point-max)) (indent-region (point-min) (point-max) nil) (save-buffer))' \;
doc:
javadoc -classpath . -protected -d docs/classdocs ec ec.breed ec.coevolve ec.de ec.display ec.display.chart ec.display.portrayal ec.es ec.eval ec.evolve ec.exchange ec.gp ec.gp.breed ec.gp.build ec.gp.koza ec.multiobjective ec.multiobjective.spea2 ec.multiobjective.nsga2 ec.parsimony ec.pso ec.rule ec.rule.breed ec.select ec.simple ec.spatial ec.steadystate ec.util ec.vector ec.vector.breed ec.gp.ge ec.gp.push
# Build a jar file. Note this collects ALL .class, .png, .jpg, index.html, and application example
# files. You'll probably want to strip this down some.
jar: all
touch /tmp/manifest.add
rm /tmp/manifest.add
echo "Main-Class: ec.Evolve" > /tmp/manifest.add
jar -cvfm jar/ecj.${VERSION}.jar /tmp/manifest.add `find ec -name "*.class"` `find ec -name "*.params"` `find ec -name "*.trl"` `find ec -name "*.out.gz"` `find ec -name "*.grammar"` `find ec -name "*.cnf"`
# Print a help message
help:
@ echo ECJ Makefile options
@ echo
@ echo "make Builds the ECJ code using the default compiler"
@ echo "make all (Same thing)"
@ echo "make docs Builds the class documentation, found in docs/classsdocs"
@ echo "make doc (Same thing)"
@ echo "make clean Cleans out all classfiles, checkpoints, and various gunk"
@ echo "make dist Does a make clean, make docs, and make, then deletes SVN dirs"
@ echo "make help Brings up this message!"
@ echo "make indent Uses emacs to re-indent ECJ java files as you'd prefer"
@ echo "make gui Compiles the GUI and charting (requires JFreeChart and iText,"
@ echo " see www.jfree.org/jfreechart/ and www.lowagie.com/iText/"
@ echo "make push Compiles ECJ, including the Push code (requires Psh,"
@ echo " see https://github.com/jonklein/Psh"
© 2015 - 2025 Weber Informatics LLC | Privacy Policy