JORAM_LIBS=$(JORAM_HOME)/ship/lib

CC=g++
CPPFLAGS=-O2 -Wall -Wno-unused -D__OMNIORB4__ -I./src/client -I$(OMIORB_HOME)/include -D__x86__ -D __linux__ -D__OSVERSION__=2 -DUSE_OMNIORB -D_REENTRANT
LDFLAGS=-L$(OMIORB_HOME)/lib -lomniORB4 -lomnithread -lpthread -lssl

JAVAC=javac
JORAM_CLASSPATH=$(JORAM_LIBS)/jms.jar:$(JORAM_LIBS)/joram-client.jar:$(JORAM_LIBS)/joram-shared.jar

SRC=./src
BIN=./bin

# Pour corba
C_IDL=omniidl -bcxx -Wba -Wbtp
JAVA_IDL=idlj
IDL_MODULE=RelaisApp
IDL_FILE=$(SRC)/$(IDL_MODULE).idl
# Pour le serveur
SERVEUR_SRCDIR=$(SRC)/server
SERVEUR_BINDIR=$(BIN)
# Pour le relais
RELAIS_SRCDIR2=$(SRC)/relais
RELAIS_SRCDIR=$(SRC)
RELAIS_BINDIR=$(BIN)
RELAIS_IDL_GEN=$(RELAIS_SRCDIR)/$(IDL_MODULE)

# Pour le client
CLIENT_SRCDIR=$(SRC)/client
CLIENT_BINDIR=$(BIN)/client
CLIENT_EXEC=$(CLIENT_BINDIR)/client
CLIENT_SRC=$(CLIENT_SRCDIR)/client.cc $(CLIENT_SRCDIR)/$(IDL_MODULE)SK.cc
CLIENT_OBJ=$(CLIENT_SRC:$(CLIENT_SRCDIR)/%.cc=$(CLIENT_BINDIR)/%.o)
CLIENT_IDL_GEN=$(CLIENT_SRCDIR)/$(IDL_MODULE).hh $(CLIENT_SRCDIR)/$(IDL_MODULE)SK.cc $(CLIENT_SRCDIR)/$(IDL_MODULE)DynSK.cc

#all: serveur relais client
all: $(RELAIS_IDL_GEN) client

# Generation du serveur
serveur:
	mkdir -p $(SERVEUR_BINDIR)
	@echo " -- Compilation du serveur"
	@$(JAVAC) -classpath $(SERVEUR_BINDIR):$(JORAM_CLASSPATH) -d $(SERVEUR_BINDIR) $(SERVEUR_SRCDIR)/*.java

# Generation du relais
relais: $(RELAIS_IDL_GEN)
	mkdir -p $(RELAIS_BINDIR)
	@echo " -- Compilation du relais objet"
	@$(JAVAC) -classpath $(RELAIS_BINDIR):$(SERVEUR_BINDIR):$(JORAM_CLASSPATH) -d $(RELAIS_BINDIR) $(RELAIS_SRCDIR)/$(IDL_MODULE)/*.java $(RELAIS_SRCDIR2)/*.java

$(RELAIS_IDL_GEN): $(IDL_FILE)
	@echo " -- Génération de l'interface du relais (sources: $(IDL_FILE))"
	@$(JAVA_IDL) -fall -td ${RELAIS_SRCDIR} $<

# Generation du client
client: $(CLIENT_BINDIR) $(CLIENT_IDL_GEN) $(CLIENT_EXEC)

$(CLIENT_BINDIR):
	mkdir -p $(CLIENT_BINDIR)

$(CLIENT_IDL_GEN): $(IDL_FILE)
	@echo " -- Génération de l'interface du client"
	@$(C_IDL) -C${CLIENT_SRCDIR} $<

$(CLIENT_EXEC): $(CLIENT_OBJ)
	@echo " -- Edition des liens pour l'executable: $(CLIENT_EXEC)"
	@$(CC) -o $@ $^ $(LDFLAGS)

$(CLIENT_BINDIR)/%.o: $(CLIENT_SRCDIR)/%.cc $(CLIENT_SRCDIR)/%.hh
	@echo " -- Compilation du fichier objet: $@ (sources: $<)"
	@$(CC) $(CPPFLAGS) -o $@ -c $<

$(CLIENT_BINDIR)/%.o: $(CLIENT_SRCDIR)/%.cc
	@echo " -- Compilation du fichier objet: $@ (source: $<)"
	@$(CC) $(CPPFLAGS) -o $@ -c $<

# Netoyage
.PHONY: clean mrproper

clean:
	rm -rf $(CLIENT_BINDIR)
	rm -rf $(RELAIS_BINDIR)
	rm -rf $(SERVEUR_BINDIR)
	rm -rf *~

mrproper: clean
	rm -rf $(RELAIS_IDL_GEN)
	rm -rf $(CLIENT_IDL_GEN)
	rm -rf $(CLIENT_EXEC)

