# MARFCATApp Build Makefile
# Use with GNU make.
#
# Serguei Mokhov
#
# COPYRIGHT (c) 2010 The MARF Research Development Group
#
# $Id: Makefile,v 1.21 2011/01/14 00:35:02 mokhov Exp $
#

# Common vars
VERSION=0.3.0-devel-`date +%Y%m%d`
TOOLSDIR=../../marf/src/tools

# Dirs of MARF modules
MARFDIR = ../../marf/distro
MARFJAR = marf.jar

# Lists of all *.java and *.class files
JAVAFILES = *.java SATE/*.java Storage/*.java
CLASSES = *.class
EXE = MARFCATApp

#
# Java Settings
#

JAVAC = javac
CLASSPATH = ".:$(MARFJAR)"
JFLAGS = -g -source 1.5 -encoding UTF8 -verbose -deprecation -classpath $(CLASSPATH) -extdirs ".:$(MARFJAR)" -sourcepath .
JVM = java

JAVADOCFLAGS = -source 1.5 -verbose -use -version -author -classpath ".:$(MARFJAR)"

#
# Build
#

all: $(EXE).class
	@echo "MARFCATApp build ok"

$(EXE).class: $(JAVAFILES)
	$(JAVAC) $(JFLAGS) $(EXE).java

#
# Run
#

run test-run train-run ident-run:
	@echo "$@ is ambiguous. Use specific 'make train-run-xyz' or 'make ident-run-xyz' instead."

#
# Super-fast training testing for debugging
#

# train-run-title-only-quick: all
train-run-quick: all
	time -p ./marfcat --retrain \
		--super-fast \
		$@ \
		wireshark-1.2.0_train.xml wireshark-1.2.0_train.xml wireshark-1.2.0-train \
		" " \
		> marfcat--super-fast.log 2>&1 &
	@echo "The SATE 2010 Quick Training and Testing Process has begun."

# Quick Classical CVE

train-test-run-quick: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		wireshark-1.2.0_train.xml wireshark-1.2.0_train.xml wireshark-1.2.0-train \
		" " \
		> marfcat--super-fast.log 2>&1 &
	@echo "The SATE 2010 Quick Training and Testing Immediately After Process has begun."

train-test-run-quick-chrome: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		chrome-5.0.375.54_train.xml chrome-5.0.375.54_train.xml chrome-5.0.375.54-train \
		" " \
		> marfcat--super-fast-chrome.log 2>&1 &
	@echo "The SATE 2010 Quick Chrome 54 Training and Testing Immediately After Process has begun."

train-test-run-quick-tomcat: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-train-cve \
		" " \
		> marfcat--super-fast-tomcat-train-cve.log 2>&1 &
	@echo "The SATE 2010 Quick Tomcat 13 Training and Testing Immediately After Process has begun."

# Quick NLP CVE

train-test-run-quick-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		wireshark-1.2.0_train.xml wireshark-1.2.0_train.xml wireshark-1.2.0-train-cve-nlp \
		" " \
		> marfcat--nlp.log 2>&1 &
	@echo "The SATE 2010 Quick NLP Training and Testing Immediately After Process has begun."

train-test-run-quick-chrome-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		chrome-5.0.375.54_train.xml chrome-5.0.375.54_train.xml chrome-5.0.375.54-train-cve-nlp \
		" " \
		> marfcat-chrome--nlp.log 2>&1 &
	@echo "The SATE 2010 Quick Chrome 54 NLP Training and Testing Immediately After Process has begun."

train-test-run-quick-tomcat-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-train-cve-nlp \
		" " \
		> marfcat--super-fast-tomcat-train-cve-nlp.log 2>&1 &
	@echo "The SATE 2010 Quick Tomcat 13 NLP Training and Testing Immediately After Process has begun."

# Quick Classical CWE

train-test-run-quick-cwe: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		wireshark-1.2.0_train.xml wireshark-1.2.0_train.xml wireshark-1.2.0-train-cwe \
		-cweid \
		> marfcat--super-fast-wireshark-train-cwe.log 2>&1 &
	@echo "The SATE 2010 Quick Wireshark 1.2.0 CWE Training and Testing Immediately After Process has begun."

train-test-run-quick-cwe-chrome: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		chrome-5.0.375.54_train.xml chrome-5.0.375.54_train.xml chrome-5.0.375.54-train-cwe \
		-cweid \
		> marfcat--super-fast-chrome-train-cwe.log 2>&1 &
	@echo "The SATE 2010 Quick Chrome 54 CWE Training and Testing Immediately After Process has begun."

train-test-run-quick-cwe-tomcat: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-train-cwe \
		-cweid \
		> marfcat--super-fast-tomcat-train-cwe.log 2>&1 &
	@echo "The SATE 2010 Quick Tomcat 13 CWE Training and Testing Immediately After Process has begun."

# Quick NLP CWE

train-test-run-quick-cwe-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		wireshark-1.2.0_train.xml wireshark-1.2.0_train.xml wireshark-1.2.0-train-cwe-nlp \
		-cweid \
		> marfcat--super-fast-wireshark-train-cwe.log 2>&1 &
	@echo "The SATE 2010 Quick Wireshark 1.2.0 CWE NLP Training and Testing Immediately After Process has begun."

train-test-run-quick-cwe-chrome-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		chrome-5.0.375.54_train.xml chrome-5.0.375.54_train.xml chrome-5.0.375.54-train-cwe-nlp \
		-cweid \
		> marfcat--super-fast-chrome-train-cwe-nlp.log 2>&1 &
	@echo "The SATE 2010 Quick Chrome 54 CWE NLP Training and Testing Immediately After Process has begun."

train-test-run-quick-cwe-tomcat-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-train-cwe-nlp \
		-cweid \
		> marfcat--super-fast-tomcat-train-cwe-nlp.log 2>&1 &
	@echo "The SATE 2010 Quick Tomcat 13 CWE NLP Training and Testing Immediately After Process has begun."

#
# Testing on fixed data (*_test.xml)
#

train-test-test-run-quick: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		wireshark-1.2.0_train.xml wireshark-1.2.9_test.xml wireshark-1.2.9-test \
		" " \
		> marfcat--super-fast-wireshark.log 2>&1 &
	@echo "The SATE 2010 Quick Wireshark Training and Testing Immediately After Process has begun."

# SATE: experiment: Chrome 54 -> Chrome 70 CVE classical
train-test-test-run-quick-chrome: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		chrome-5.0.375.54_train.xml chrome-5.0.375.70_test.xml chrome-5.0.375.70-test \
		" " \
		> marfcat--super-fast-chrome.log 2>&1 &
	@echo "The SATE 2010 Quick CVE Chrome 54 Training and Chrome 70 Testing Immediately After Process has begun."

# SATE: experiment: Chrome 54 -> Chrome 70 CVE NLP
train-test-test-run-quick-chrome-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		chrome-5.0.375.54_train.xml chrome-5.0.375.70_test.xml chrome-5.0.375.70-test-nlp \
		" " \
		> marfcat--super-fast-chrome-nlp.log 2>&1 &
	@echo "The SATE 2010 CVE NLP Chrome 54 Training and Chrome 70 Testing Immediately After Process has begun."

# SATE: experiment: Chrome 54 -> Chrome 70 CWE classical
train-test-test-run-quick-chrome54-chrome70-cwe: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		chrome-5.0.375.54_train.xml chrome-5.0.375.70_test.xml chrome-5.0.375.70-test-cwe \
		-cweid \
		> marfcat--super-fast-chrome54-chrome7-cwe.log 2>&1 &
	@echo "The SATE 2010 Quick CWE Chrome 54 Training and Chrome 70 Testing Immediately After Process has begun."

# SATE: experiment: Chrome 54 -> Chrome 70 CWE NLP
train-test-test-run-quick-chrome54-chrome70-cwe-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		chrome-5.0.375.54_train.xml chrome-5.0.375.70_test.xml chrome-5.0.375.70-test-cwe-nlp \
		-cweid \
		> marfcat--super-fast-chrome54-chrome70-cwe-nlp.log 2>&1 &
	@echo "The SATE 2010 CWE NLP Chrome 54 Training and Chrome 70 Testing Immediately After Process has begun."


# SATE: experiment: Tomcat 13 -> Tomcat 29 CVE classical
train-test-test-run-quick-tomcat: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.29-src_test.xml apache-tomcat-5.5.29-test-cve \
		" " \
		> marfcat--super-fast-tomcat13-tomcat29-cve.log 2>&1 &
	@echo "The SATE 2010 Quick CVE Tomcat 13 Training and Tomcat 29 Testing Immediately After Process has begun."

# SATE: experiment: Tomcat 13 -> Tomcat 29 CVE NLP
train-test-test-run-quick-tomcat-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.29-src_test.xml apache-tomcat-5.5.29-test-cve-nlp \
		" " \
		> marfcat--super-fast-tomcat13-tomcat29-cve-nlp.log 2>&1 &
	@echo "The SATE 2010 CVE NLP Tomcat 13 Training and Tomcat 29 Testing Immediately After Process has begun."

# SATE: experiment: Tomcat 13 -> Tomcat 29 CWE classical
train-test-test-run-quick-tomcat13-tomcat29-cwe: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.29-src_test.xml apache-tomcat-5.5.29-test-cwe \
		-cweid \
		> marfcat--super-fast-tomcat13-tomcat29-cwe.log 2>&1 &
	@echo "The SATE 2010 Quick CWE Tomcat 13 Training and Tomcat 29 Testing Immediately After Process has begun."

# SATE: experiment: Tomcat 13 -> Tomcat 29 CWE NLP
train-test-test-run-quick-tomcat13-tomcat29-cwe-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.29-src_test.xml apache-tomcat-5.5.29-test-cwe-nlp \
		-cweid \
		> marfcat--super-fast-tomcat13-tomcat29-cwe-nlp.log 2>&1 &
	@echo "The SATE 2010 CWE NLP Tomcat 13 Training and Tomcat 29 Testing Immediately After Process has begun."



train-test-test-run-quick-wireshark-chrome-cve: all
	time -p ./marfcat --retrain \
		--super-fast \
		$@ \
		wireshark-1.2.0_train.xml wireshark-1.2.9_test.xml wireshark-1.2.9-test \
		" " \
		> marfcat--super-fast-wireshark-chrome-cve.log 2>&1 &
	time -p ./marfcat --retrain \
		--super-fast \
		$@ \
		chrome-5.0.375.54_train.xml chrome-5.0.375.70_test.xml chrome-5.0.375.70-test \
		" " \
		>> marfcat--super-fast-wireshark-chrome-cve.log 2>&1 &
	@echo "The SATE 2010 Quick Training and Testing Process has begun."

train-test-test-run-quick-cwe: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		wireshark-1.2.0_train.xml wireshark-1.2.9_test.xml wireshark-1.2.9-test \
		-cweid \
		> marfcat--super-fast-wireshark.log 2>&1 &
	@echo "The SATE 2010 Quick CWE Training and Testing Immediately After Process has begun."


# SATE: experiment: Wireshark 1.2.0 -> Dovecot classical (CWE)
train-test-test-run-quick-dovecot-cwe: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		wireshark-1.2.0_train.xml dovecot-2.0.beta6_test.xml dovecot-2.0.beta6-wireshark-test-cwe \
		-cweid \
		> marfcat--super-fast-dovecot-wireshark-test-cwe.log 2>&1 &
	@echo "The SATE 2010 Quick CWE Wireshark Training and Dovecot Testing Immediately After Process has begun."


# SATE: experiment: Chrome 54 -> Dovecot classical (CWE)
train-test-test-run-quick-dovecot-cwe-chrome: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		chrome-5.0.375.54_train.xml dovecot-2.0.beta6_test.xml dovecot-2.0.beta6-chrome-test \
		-cweid \
		> marfcat--super-fast-dovecot-cwe-chrome.log 2>&1 &
	@echo "The SATE 2010 Quick CWE Chrome 54 Training and Dovecot Testing Immediately After Process has begun."

# SATE: experiment: Chrome 54 -> Dovecot NLP (CWE)
train-test-test-run-quick-dovecot-cwe-chrome-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		chrome-5.0.375.54_train.xml dovecot-2.0.beta6_test.xml dovecot-2.0.beta6-chrome-test \
		-cweid \
		> marfcat--super-fast-dovecot-cwe-chrome-nlp.log 2>&1 &
	@echo "The SATE 2010 NLP CWE Chrome 54 Training and Dovecot Testing Immediately After Process has begun."

# SATE: experiment: Chrome 54 -> Wireshark 1.2.0 classical (CWE)
train-test-test-run-quick-chrome54-wireshark120-cwe: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		chrome-5.0.375.54_train.xml wireshark-1.2.0_test.xml wireshark-1.2.0-chrome-test \
		-cweid \
		> marfcat--super-fast-chrome54-wireshark120-cwe.log 2>&1 &
	@echo "The SATE 2010 Quick CWE Chrome 54 Training and Wireshark 1.2.0 Testing Immediately After Process has begun."

# SATE: experiment: Chrome 54 -> Wireshark 1.2.0 NLP (CWE)
train-test-test-run-quick-chrome54-wireshark120-cwe-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		chrome-5.0.375.54_train.xml wireshark-1.2.0_test.xml wireshark-1.2.0-chrome-test \
		-cweid \
		> marfcat--super-fast-chrome54-wireshark120-cwe-nlp.log 2>&1 &
	@echo "The SATE 2010 NLP CWE Chrome 54 Training and Wireshark 1.2.0 Testing Immediately After Process has begun."

# SATE: experiment: Chrome 54 -> Wireshark 1.2.9 classical (CWE)
train-test-test-run-quick-chrome54-wireshark129-cwe: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		chrome-5.0.375.54_train.xml wireshark-1.2.9_test.xml wireshark-1.2.9-chrome-test \
		-cweid \
		> marfcat--super-fast-chrome54-wireshark129-cwe.log 2>&1 &
	@echo "The SATE 2010 Quick CWE Chrome 54 Training and Wireshark 1.2.9 Testing Immediately After Process has begun."

# SATE: experiment: Chrome 54 -> Wireshark 1.2.9 NLP (CWE)
train-test-test-run-quick-chrome54-wireshark129-cwe-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		chrome-5.0.375.54_train.xml wireshark-1.2.9_test.xml wireshark-1.2.9-chrome-test \
		-cweid \
		> marfcat--super-fast-chrome54-wireshark129-cwe-nlp.log 2>&1 &
	@echo "The SATE 2010 NLP CWE Chrome 54 Training and Wireshark 1.2.9 Testing Immediately After Process has begun."


# SATE: experiment: Tomcat 13 -> Pebble CVE classical
train-test-test-run-quick-tomcat13-pebble-cve: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		apache-tomcat-5.5.13-src_train.xml pebble_test.xml pebble-test-cve \
		" " \
		> marfcat--super-fast-tomcat13-pebble-cve.log 2>&1 &
	@echo "The SATE 2010 Quick CVE Tomcat 13 Training and Pebble Testing Immediately After Process has begun."

# SATE: experiment: Tomcat 13 -> Pebble CVE NLP
train-test-test-run-quick-tomcat13-pebble-cve-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		apache-tomcat-5.5.13-src_train.xml pebble_test.xml pebble-test-cve-nlp \
		" " \
		> marfcat--super-fast-tomcat13-pebble-cve-nlp.log 2>&1 &
	@echo "The SATE 2010 CVE NLP Tomcat 13 Training and Pebble Testing Immediately After Process has begun."

# SATE: experiment: Tomcat 13 -> Pebble CWE classical
train-test-test-run-quick-tomcat13-pebble-cwe: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		apache-tomcat-5.5.13-src_train.xml pebble_test.xml pebble-test-cwe \
		-cweid \
		> marfcat--super-fast-tomcat13-pebble-cwe.log 2>&1 &
	@echo "The SATE 2010 Quick CWE Tomcat 13 Training and Pebble Testing Immediately After Process has begun."

# SATE: experiment: Tomcat 13 -> Pebble CWE NLP
train-test-test-run-quick-tomcat13-pebble-cwe-nlp: all
	time -p ./marfcat --retrain-train-test \
		--nlp \
		$@ \
		apache-tomcat-5.5.13-src_train.xml pebble_test.xml pebble-test-cwe-nlp \
		-cweid \
		> marfcat--super-fast-tomcat13-pebble-cwe-nlp.log 2>&1 &
	@echo "The SATE 2010 CWE NLP Tomcat 13 Training and Pebble Testing Immediately After Process has begun."


train-test-test-run-quick-chrome-cwe: all
	time -p ./marfcat --retrain-train-test \
		--super-fast \
		$@ \
		wireshark-1.2.0_train.xml chrome-5.0.375.54_test.xml chrome-5.0.375.54-test \
		-cweid \
		> marfcat--super-fast.log 2>&1 &
	@echo "The SATE 2010 Quick CWE Wireshark Training and Chrome 54 Testing Immediately After Process has begun."

#
# Statistics reporting
#

#retrain-train-test-run-title-only-quick-stats: all
train-run-quick-stats: all
	./marfcat --stats \
		--super-fast \
		$@ \
		wireshark-1.2.0_train.xml wireshark-1.2.0_train.xml wireshark-1.2.0-train \
		" " \
		>> marfcat--super-fast.log 2>&1

train-run-quick-stats-chrome: all
	./marfcat --stats \
		--super-fast \
		$@ \
		chrome-5.0.375.54_train.xml chrome-5.0.375.54_train.xml chrome-5.0.375.54-train \
		" " \
		>> marfcat--super-fast-chrome.log 2>&1

train-run-quick-stats-tomcat: all
	./marfcat --stats \
		--super-fast \
		$@ \
		apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-train \
		" " \
		>> marfcat--super-fast-tomcat.log 2>&1

train-run-quick-stats-cwe: all
	./marfcat --stats \
		--super-fast \
		$@ \
		wireshark-1.2.0_train.xml wireshark-1.2.0_train.xml wireshark-1.2.0-train \
		-cweid \
		>> marfcat--super-fast.log 2>&1

train-run-quick-stats-chrome-cwe: all
	./marfcat --stats \
		--super-fast \
		$@ \
		chrome-5.0.375.54_train.xml chrome-5.0.375.54_train.xml chrome-5.0.375.54-train \
		-cweid \
		>> marfcat--super-fast-chrome.log 2>&1

train-run-quick-stats-tomcat-cwe: all
	./marfcat --stats \
		--super-fast \
		$@ \
		apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-src_train.xml apache-tomcat-5.5.13-train-cwe \
		" " \
		>> marfcat--super-fast-tomcat-cwe.log 2>&1


train-run-title-only-quick-eval: all
	time -p ./marfcat --retrain \
		--super-fast \
		$@-eval \
		deft10_origine_appr.xml deft10_origine_test.xml testing-data-titles \
		-title-only -ref \
		> marfcat--super-fast.log 2>&1 &
	@echo "The DEFT 2010 Title Only Quick Eval (Piste 2) Training and Testing Process has begun."




#
# Javadoc
#

javadoc-html: $(JAVAFILES)
	@echo "Compiling javadoc..."
	mkdir -p html
	javadoc $(JAVADOCFLAGS) -private -d html $(JAVAFILES)


#
# Clean Up
#

clean:
	rm -f $(CLASSES) *~

maintainer-clean: clean
	rm -f *.stats *log training.set output.txt *.diff *.bin *.xml *.gzbin \
		stats.txt stats-date.tex best-score.tex coding.html COPYRIGHT $(EXE).jar
	rm -f training-samples/*.txt training-samples/*.ppm testing-samples/*.txt testing-samples/*.ppm

# EOF
