# Install variables
prefix = /usr/lib64/PaCO++

dir_install = Examples/SimpleExample

# Compilation flags
CXX = x86_64-alt-linux-g++
LD  = ${CXX}
CXXFLAGS =  -I/usr/include -pipe -Wall -g -O2 -fPIC -DPIC -D__x86_64__ -D__linux__ -D__OSVERSION__=2   -I/usr/src/RPM/BUILD/pacoxx-0.2.beta/.lib/orb -DomniORB_4_0=\"4.2.0\" -I. -I$(PACOPATH)/include -I$(PACOPATH)/DistributionLibraries/GaBro -I//usr/lib64/openmpi/include 
LDFLAGS = -L$(PACOPATH)/lib -L//usr/lib -L//usr/lib64/openmpi/lib  

ifneq (,$(findstring Padico,omniORB4))
LIBS = --requires PaCO --requires PaCO_mpi
else
ifeq (omniORB4, omniORB3)
LIBS = -lPaCO -lPaCO_mpi -lPaCO_libgraph_comScheduling -lPaCO_omnithread -lomnithread -lomniORB3 -lomniDynamic3 -ltcpwrapGK -lGaBro -lgraph -lmpi_cxx -lmpi 
else
ifeq (omniORB4, omniORB4)
LIBS=-lPaCO -lPaCO_mpi -lPaCO_libgraph_comScheduling -lPaCO_omnithread -lomnithread -lomniORB4 -lomniDynamic4 -lGaBro -lgraph -lmpi_cxx -lmpi 
endif
endif
endif

all :  check gen Deploy Proxy Client Serveur

.PHONY: gen

check:
	@if [  `echo "omniORB4" | sed -e 's/\(Padico\).*/\1/'` = "Padico" ]; then \
	 echo "Compiling example for Padico with ORB omniORB4"; \
	else \
	 if  [ omniORB4 = omniORB3 ]; then \
	  echo "Compiling example for omniORB3"; \
	 else \
	  if  [ omniORB4 = omniORB4 ]; then \
	   echo "Compiling example for omniORB4"; \
	  else \
	   echo "ORB omniORB4 not supported ! Please modify the Makefile"; \
	  fi \
	 fi \
	fi

install:
	@echo "Installing Example SimpleExample"
	@if test ! -d ${DESTDIR}/${prefix}/${dir_install}; \
	then mkdir -p ${DESTDIR}/${prefix}/${dir_install}; \
	fi;
	/usr/src/RPM/BUILD/pacoxx-0.2.beta/./admin/paco_install . Makefile ${DESTDIR}/${prefix}/${dir_install}; \
	/usr/src/RPM/BUILD/pacoxx-0.2.beta/./admin/paco_install . interface.idl interface.xml \
	servant_impl.h servant_impl.cc \
	Deploy.cc Client.cc Proxy.cc Serveur.cc README Run.sh ${DESTDIR}/${prefix}/${dir_install};

gen: interface.idl interface.xml
	$(PACOPATH)/bin/PaCOIdlTool interface.idl interface.xml omniORB4 0

Deploy : Deploy.o

Deploy.o : Deploy.cc

Client : Client.o interfacePaCO.o interfacePaCO_Basic_Example_client.o

Client.o : Client.cc

Serveur : Serveur.o interfacePaCO.o servant_impl.o interfacePaCO_Basic_Example_server.o interfacePaCO_Basic_Example_client.o

Serveur.o : Serveur.cc

servant_impl.o : servant_impl.cc servant_impl.h

Proxy : Proxy.o interfacePaCO.o interfacePaCO_Basic_Example_server.o interfacePaCO_Basic_Example_client.o

Proxy.o : Proxy.cc

interfacePaCO_Basic_Example_client.o : interfacePaCO_Basic_Example_client.cc interfacePaCO_Basic_Example_client.h

interfacePaCO_Basic_Example_server.o : interfacePaCO_Basic_Example_server.cc interfacePaCO_Basic_Example_server.h

interfacePaCO.o : interfacePaCO.cc interfacePaCO.h 

clean :
	@rm *.o;\
	rm *interfacePaCO*;\
	rm Client Proxy Serveur Deploy; \
	rm configuration_file configuration_file_return fichier_struct_temp idl_nom idl_temp_final 


#Regles generiques
%.o: %.cc %.h
	${CXX} ${CXXFLAGS} $< -c -o $@
%.o: %.cc
	${CXX} ${CXXFLAGS} $< -c -o $@
%: %.o
	${LD} $(LDFLAGS) -o $@ $^ $(LIBS)
%.o: ../../DistributionLibraries/ParisBlock/%.cc ../../DistributionLibraries/ParisBlock/%.h
	${CXX} ${CXXFLAGS} $< -c -o $@
%.o: ../../DistributionLibraries/ParisBlock/%.cc
	${CXX} ${CXXFLAGS} $< -c -o $@

