# Outils 
JAVAC = javac
JAVA = java
JAVADOC = javadoc

# Dossiers 
SRC = src
BIN = build
DOC = docjava
LIB = lib/

# Package 
PKG_PATH = fr/iutfbleau/sae

# Points d’entrée 
MAIN_CONVERTER = fr.iutfbleau.sae.Convertisseur
MAIN_VIEWER    = fr.iutfbleau.sae.Viewer

# Séparateur classpath
ifeq ($(OS),Windows_NT)
    SEP = ;
else
    SEP = :
endif

#  Règle par défaut 
all: \
	$(BIN)/$(PKG_PATH)/Convertisseur.class \
	$(BIN)/$(PKG_PATH)/Viewer.class

# Compilation des classes main
$(BIN)/$(PKG_PATH)/Convertisseur.class: $(BIN) \
	$(BIN)/$(PKG_PATH)/vconverter/ConverterWindow.class \
	$(SRC)/$(PKG_PATH)/Convertisseur.java
	$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/Convertisseur.java

$(BIN)/$(PKG_PATH)/Viewer.class: $(BIN) \
	$(SRC)/$(PKG_PATH)/Viewer.java
	$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/Viewer.java

# Dossiers 
$(BIN):
	mkdir -p $(BIN)

$(DOC):
	mkdir -p $(DOC)

#Compilation de l'interface graphique je compile converterWindow
$(BIN)/$(PKG_PATH)/vconverter/ConverterWindow.class: $(BIN) \
	$(BIN)/$(PKG_PATH)/vconverter/ImagePreviewPanel.class \
	$(BIN)/$(PKG_PATH)/vconverter/FrequencyTablePanel.class \
	$(BIN)/$(PKG_PATH)/vconverter/CodeTablePanel.class \
	$(BIN)/$(PKG_PATH)/util/Config.class \
	$(SRC)/$(PKG_PATH)/vconverter/ConverterWindow.java
	$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/vconverter/ConverterWindow.java

# ConverterWindow dépend des autres classes je les compile aussi
$(BIN)/$(PKG_PATH)/vconverter/ImagePreviewPanel.class: $(BIN) \
	$(SRC)/$(PKG_PATH)/vconverter/ImagePreviewPanel.java
	$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/vconverter/ImagePreviewPanel.java

$(BIN)/$(PKG_PATH)/vconverter/FrequencyTablePanel.class: $(BIN) \
	$(SRC)/$(PKG_PATH)/vconverter/FrequencyTablePanel.java
	$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/vconverter/FrequencyTablePanel.java

$(BIN)/$(PKG_PATH)/vconverter/CodeTablePanel.class: $(BIN) \
	$(SRC)/$(PKG_PATH)/vconverter/CodeTablePanel.java
	$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/vconverter/CodeTablePanel.java


#Compilation des classes util
$(BIN)/$(PKG_PATH)/util/Config.class: $(BIN) \
	$(SRC)/$(PKG_PATH)/util/Config.java
	$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/util/Config.java

$(BIN)/$(PKG_PATH)/util/ByteUtils.class: $(BIN) \
	$(SRC)/$(PKG_PATH)/util/ByteUtils.java
	$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/util/ByteUtils.java

$(BIN)/$(PKG_PATH)/util/BitInputStream.class: $(BIN) \
	$(SRC)/$(PKG_PATH)/util/BitInputStream.java
	$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/util/BitInputStream.java

$(BIN)/$(PKG_PATH)/util/BitOutputStream.class: $(BIN) \
	$(SRC)/$(PKG_PATH)/util/BitOutputStream.java
	$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/util/BitOutputStream.java


# Exécution 
run-conv: all
	$(JAVA) -cp $(BIN) $(MAIN_CONVERTER)

run-view: all
	$(JAVA) -cp $(BIN) $(MAIN_VIEWER)

# Documentation 
doc: $(DOC)
	$(JAVADOC) -d $(DOC) $(SRC)/fr/iutfbleau/sae/**/*.java

# Nettoyage 
clean:
	rm -rf $(BIN) $(DOC)
