JAR=tvstudy.jar
EXE=tvstudy

.PHONY: all
all: $(JAR) $(EXE)

INSTALLDIR=..

.PHONY: install
install: all
	cp -pf $(JAR) $(EXE) $(INSTALLDIR)

.PHONY: clean
clean:
	rm -rf $(JAR) $(EXE) build/*

CLASSLIST=\
 build/TVStudy.class \
 build/gov/fcc/tvstudy/AppManager.class \
 build/gov/fcc/tvstudy/AppDialog.class \
 build/gov/fcc/tvstudy/AppFrame.class \
 build/gov/fcc/tvstudy/data/ChannelBand.class \
 build/gov/fcc/tvstudy/data/ChannelDelta.class \
 build/gov/fcc/tvstudy/data/Country.class \
 build/gov/fcc/tvstudy/data/EmissionMask.class \
 build/gov/fcc/tvstudy/data/FrequencyOffset.class \
 build/gov/fcc/tvstudy/data/IxRule.class \
 build/gov/fcc/tvstudy/data/KeyedRecord.class \
 build/gov/fcc/tvstudy/data/Parameter.class \
 build/gov/fcc/tvstudy/data/Scenario.class \
 build/gov/fcc/tvstudy/data/Service.class \
 build/gov/fcc/tvstudy/data/ServiceType.class \
 build/gov/fcc/tvstudy/data/Source.class \
 build/gov/fcc/tvstudy/data/Study.class \
 build/gov/fcc/tvstudy/data/StudyListItem.class \
 build/gov/fcc/tvstudy/data/StudyTemplate.class \
 build/gov/fcc/tvstudy/data/Zone.class \
 build/gov/fcc/tvstudy/editdata/CDBSRecord.class \
 build/gov/fcc/tvstudy/editdata/IxRuleEditData.class \
 build/gov/fcc/tvstudy/editdata/IxRuleTableModel.class \
 build/gov/fcc/tvstudy/editdata/ParameterEditData.class \
 build/gov/fcc/tvstudy/editdata/ScenarioEditData.class \
 build/gov/fcc/tvstudy/editdata/ScenarioTableModel.class \
 build/gov/fcc/tvstudy/editdata/SourceEditData.class \
 build/gov/fcc/tvstudy/editdata/SourceTableModel.class \
 build/gov/fcc/tvstudy/editdata/StudyEditData.class \
 build/gov/fcc/tvstudy/editdata/StudyListTableModel.class \
 build/gov/fcc/tvstudy/editor/CoordinatePanel.class \
 build/gov/fcc/tvstudy/editor/DTSSourceEditor.class \
 build/gov/fcc/tvstudy/editor/IxRuleEditor.class \
 build/gov/fcc/tvstudy/editor/IxRuleEnableDisable.class \
 build/gov/fcc/tvstudy/editor/ParameterEditor.class \
 build/gov/fcc/tvstudy/editor/PatternEditor.class \
 build/gov/fcc/tvstudy/editor/RootEditor.class \
 build/gov/fcc/tvstudy/editor/ScenarioCreateNew.class \
 build/gov/fcc/tvstudy/editor/ScenarioEditor.class \
 build/gov/fcc/tvstudy/editor/SourceCreateNew.class \
 build/gov/fcc/tvstudy/editor/SourceEditor.class \
 build/gov/fcc/tvstudy/editor/SourceFindCDBS.class \
 build/gov/fcc/tvstudy/editor/StudyCreateNew.class \
 build/gov/fcc/tvstudy/editor/StudyEditor.class \
 build/gov/fcc/tvstudy/editor/StudyListEditor.class \
 build/gov/fcc/tvstudy/util/DbConnection.class \
 build/gov/fcc/tvstudy/util/EditMenu.class \
 build/gov/fcc/tvstudy/util/ErrorReporter.class \
 build/gov/fcc/tvstudy/util/KeyedRecordMenu.class \
 build/gov/fcc/tvstudy/util/LogFormatter.class \
 build/gov/fcc/tvstudy/util/QueryWorker.class

$(JAR): $(CLASSLIST)
	jar cmf Manifest.txt $@ -C build TVStudy.class -C build gov/fcc/tvstudy

build/%.class: src/%.java
	javac -sourcepath src -encoding UTF8 -classpath build -d build $<

OBJECTLIST=\
 build/tvstudy.o \
 build/study.o \
 build/parameter.o \
 build/source.o \
 build/report.o \
 build/cell.o \
 build/cache.o \
 build/pattern.o \
 build/fcc_curve.o \
 build/longley_rice.o \
 build/itsitm.o \
 build/terrain.o \
 build/landcover.o \
 build/map.o \
 build/coordinates.o \
 build/memory.o \
 build/log.o

$(EXE): $(OBJECTLIST)
	gcc -Wall -I/usr/include/mysql -o $@ $^ /usr/lib/libmysqlclient.a -lm -lcrypto -lssl -ldl -lz -lpthread

build/%.o: src/%.c src/tvstudy.h
	gcc -Wall -I/usr/include/mysql -o $@ -c $<

build/%.o: src/%.f
	gfortran -o $@ -c $<
