include Mgr/Makefile.h
LIBF =  $(LIB)libOutils++.a $(LIB)libImages++.a $(LIB)libStarReco++.a $(LIB)libNeuralNet.a $(LIB)libAcq.a
LIBS = -L$(LIB) -lOutils++ -lImages++ -lStarReco++ -lNeuralNet -lAcq -lm
LIBG = -L$(GLB) -lg++ -lstdc++

defaut: prog

all: acq pi prog

acq: ProgAcq
pi:  ProgPI
prog: Prog

ProgAcq: Db++ Db Acq libs slb slbacq
ProgPI:  PI libs slb slbpi
Prog: libs slb

libs: clibs cxxlibs
clibs:
	cd LibsUtil ; $(MAKE)
	cd ImagFSuiv ; $(MAKE)
	cd NR ; $(MAKE)

# Dans cet ordre pour les templates de cxx, a cause des dependances
# pour instantiation automatique/manuels

cxxlibs: NeuralNet Outils++ Images++ StarReco++ 

.PHONY:  Acq
Acq:
	if [ -d Acq ] ; then cd  Acq ; $(MAKE) ; fi
 
.PHONY:  StarReco++
StarReco++:
	if [ -d StarReco++ ] ; then cd  StarReco++ ; $(MAKE) ; fi
 
.PHONY:  Images++
Images++:
	if [ -d Images++ ] ; then cd  Images++ ; $(MAKE) ; fi
 
.PHONY:  Outils++
Outils++:
	if [ -d Outils++ ] ; then cd  Outils++ ; $(MAKE) ; fi
 
.PHONY:  NeuralNet
NeuralNet:
	if [ -d NeuralNet ] ; then cd  NeuralNet ; $(MAKE) ; fi
 
.PHONY: PI
PI:
	if [ -d PI ] ; then cd PI ; $(MAKE) ; fi
	if [ -d PIext ] ; then cd PIext ; $(MAKE) ; fi
.PHONY:  Db
Db:
	if [ -d Db ] ; then cd Db ; $(MAKE); fi
 
.PHONY:  Db++
Db++:
	if [ -d Db++ ] ; then cd Db++ ; $(MAKE); fi
 
.PHONY: Prog
Prog:
	if [ -d Prog ]; then cd  Prog ; $(MAKE); fi
 
.PHONY: ProgAcq
ProgAcq:
	if [ -d ProgAcq ]; then cd  ProgAcq ; $(MAKE); fi
 
.PHONY: ProgPI
ProgPI:
	if [ -d ProgPI ]; then cd  ProgPI ; $(MAKE); fi
 
ifndef NOSHLIB

PSLB = $(LIB)libStarReco++.a $(LIB)libNeuralNet.a $(LIB)libImages++.a $(LIB)libOutils++.a
slb : $(SLB)libnr.so $(SLB)liberosc.so $(SLB)libpeida.so
slbpi: slb $(SLB)libPI.so
slbacq: slb $(SLB)libAcq.so

#  Commande de construction de shared-lib 
CMDSHL := ld -partage
#  Flag d'inclusion/fin d'inclusion de tous les points  d'entree
FGSHLA := -tout
FGSHLN := -rien
#  Librairies specifiques 
LIBLSHL := 
#  Librairie d'instanciation des templates 
TILSHL := 
TILSHLPI := 
#   Commande de construction de la librairie d'instanciation des templates 
CMDTILSHL := echo 'Cas Non Prevu'
CMDTILSHLPI := echo 'Cas Non Prevu'

# Construction de shared-libs sous OSF1
ifeq ($(MACHEROS),OSF1)
  override CMDSHL := ld -shared -update_registry $(SLB)so_locations
  override FGSHLA := -all
  override FGSHLN := -none 
  override LIBLSHL := -lcxxstd -lcxx -lexc -lm -lc -lrt
  override TILSHL := $(LIB)libertcxx.a
  override CMDTILSHL := rm -f $(LIB)libertcxx.a ; cd $(REP); $(AR) $(ARFLAGS) $(LIB)libertcxx.a *.o
  override TILSHLPI := $(LIB)libertcxxpi.a
  override CMDTILSHLPI := rm -f $(LIB)libertcxxpi.a ; cd $(REPPI); $(AR) $(ARFLAGS) $(LIB)libertcxxpi.a *.o
  ifeq ($(CXX),g++)
    override LIBLSHL := $(LIBG) -lm -lc
    override TILSHL := 
    override CMDTILSHL := echo 'No Template instanciation library'
    override TILSHLPI := 
    override CMDTILSHLPI := echo 'No Template instanciation library'
  endif
endif

# Construction de shared-libs sous Linux
ifeq ($(MACHEROS),Linux)
  override CMDSHL := ld -shared 
  override FGSHLA := --whole-archive
  override FGSHLN := --no-whole-archiv
  override LIBLSHL := $(LIBG) -lm -lc
  override TILSHL := 
  override CMDTILSHL := echo 'No Template instanciation library'
endif


$(SLB)libnr.so : $(LIB)libnra.a
	$(CMDSHL) -o $(SLB)libnr.so \
	$(FGSHLA) $(LIB)libnra.a \
	$(FGSHLN) $(LIBLSHL)

$(SLB)liberosc.so : $(LIB)libdiv.a $(LIB)libmath.a \
                    $(LIB)libfsv.a $(LIB)libimage.a
	$(CMDSHL) -o $(SLB)liberosc.so \
	$(FGSHLA) $(LIB)libdiv.a $(LIB)libmath.a \
	$(LIB)libfsv.a $(LIB)libimage.a \
	$(FGSHLN) $(LIBLSHL)

$(SLB)libpeida.so : $(PSLB) $(SLB)liberosc.so $(SLB)libnr.so
	$(CMDTILSHL)
	$(CMDSHL) -o $(SLB)libpeida.so \
	$(FGSHLA) $(PSLB) $(TILSHL) \
	$(FGSHLN) -L$(SLB) -lerosc -lnr $(LIBLSHL)

$(SLB)libAcq.so : $(LIB)libAcq.a $(SLB)libpeida.so
	$(CMDSHL) -o $(SLB)libAcq.so \
	$(FGSHLA) $(LIB)libDb++.a $(LIB)libErosDb.a $(LIB)libAcq.a \
	$(FGSHLN) -L$(SLB) -lpeida -lerosc -L$(ORACLE_HOME)/lib -lclntsh $(LIBLSHL)

$(SLB)libPI.so : $(LIB)libPI.a $(LIB)libPIext.a  
	$(CMDTILSHLPI)
	$(CMDSHL) -o $(SLB)libPI.so \
	$(FGSHLA) $(LIB)libPI.a $(LIB)libPIext.a $(TILSHLPI) \
	$(FGSHLN) -L$(SLB) -lpeida -lerosc \
	-lXm -lXt -lX11 $(LIBLSHL)

else
slb :
endif

clean:
	if [ -d $(LIB) ] ; then cd $(LIB)/. ; rm -f *.a  ; fi
	if [ -d $(SLB) ] ; then cd $(SLB)/. ; rm -f *.so ; fi
	if [ -d $(OBJ) ] ; then cd $(OBJ)/. ; rm -f *.o  ; fi
	if [ -d $(OBJ)/cxxrep ] ; then cd $(OBJ)/cxxrep/. ; rm -f *.o  ; fi
	if [ -d NR ]     ; then cd NR/.     ; make -f Makefile clean ; fi
	if [ -d PI ]     ; then cd PI/.     ; $(MAKE) clean ; fi
	if [ -d Prog ]   ; then cd Prog/.   ; $(MAKE) clean ; fi
	if [ -d ProgPI ] ; then cd ProgPI/. ; $(MAKE) clean ; fi
	if [ -d ProgAcq ]; then cd ProgAcq/.; $(MAKE) clean ; fi

