# For Emacs: -*- mode: makefile -*-
# File: $CVSROOT/IDEA-COMPLETE/Makefile
#  CVS: $Id: Makefile,v 1.9 2006/01/17 21:16:15 chucko Exp $

all: RUN-CAMERA

JAM_VERSION=jam-2.5
ACE_VERSION=ACE-5.4.6
IPC_VERSION=ipc-3.7.10
XERCES_VERSION=xerces-c-src_2_6_0

CWD=$(shell pwd)

ifeq (,$(findstring jam,${PATH}))

export PATH+=:$(CWD)/$(JAM_VERSION)/bin.linuxx86

JAM:
	tar -xzvf $(CWD)/packages/$(JAM_VERSION).tar.gz
	$(MAKE) -C $(CWD)/$(JAM_VERSION)
	@echo $(PATH)
else
JAM:
	@echo "jam already installed on this machine."
endif

# override any existing ACE_ROOT
export ACE_ROOT=$(CWD)/ACE_wrappers

ACE: $(ACE_ROOT)/ace/libACE.so 

$(ACE_ROOT)/ace/libACE.so:
	tar -xzvf $(CWD)/packages/$(ACE_VERSION).tar.gz 
	cp $(ACE_ROOT)/ace/config-linux.h  $(ACE_ROOT)/ace/config.h
	cp $(ACE_ROOT)/include/makeinclude/platform_linux.GNU $(ACE_ROOT)/include/makeinclude/platform_macros.GNU
	$(MAKE) -C $(ACE_ROOT)/ace


THIS_RELEASE := $(shell uname -r)
LINUX_MAJOR_VERSION_CMD := perl -e '$$_ = shift @ARGV; ($$major,$$minor,$$patchlevel) = split(/\./,$$_,3); print "$$major.$$minor\n";'
THIS_RELEASE := $(shell $(LINUX_MAJOR_VERSION_CMD) $(THIS_RELEASE))
THIS_OS_BOTH := $(THIS_OS)-$(THIS_RELEASE)

export IPC_DIR=$(CWD)/$(IPC_VERSION)

IPC_LIB_DIR=$(IPC_DIR)/lib/Linux$(THIS_OS_BOTH)
IPC_BIN_DIR=$(IPC_DIR)/bin/Linux$(THIS_OS_BOTH)

IPC: $(IPC_LIB_DIR)/libipc.a

$(IPC_LIB_DIR)/libipc.a:
	@echo $(IPC_LIB_DIR)
	tar -xzvf $(CWD)/packages/$(IPC_VERSION).tar.gz
	$(MAKE) -C $(IPC_DIR) MAKE_SHARED_LIBS=1 THREADED=1 install

# override any existing XERCESCROOT
export XERCESCROOT=$(CWD)/$(XERCES_VERSION)

XERCES: $(XERCESCROOT)/lib/libxerces-c.so

$(XERCESCROOT)/lib/libxerces-c.so:
	tar -xzvf $(CWD)/packages/$(XERCES_VERSION).tar.gz
	( cd $(XERCESCROOT)/src/xercesc; autoconf; )
	( cd $(XERCESCROOT)/src/xercesc; ./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rpthread; )
	( cd $(XERCESCROOT)/src/xercesc; gmake; )

export PLASMA_DIR=$(CWD)/PLASMA
export IDEA_DIR=$(CWD)/IDEA-DEV

IDEA: JAM ACE XERCES IPC
	$(MAKE) -C $(IDEA_DIR)

IDEA-FAST: JAM ACE XERCES IPC
	$(MAKE) -C $(IDEA_DIR) FAST=1

export LD_LIBRARY_PATH=$(ACE_ROOT)/ace:$(IDEA_DIR)/lib:$(PLASMA_DIR)/lib:$(XERCESCROOT)/lib

EUROPA1:
	$(MAKE) -C $(CWD)/NewPlan

CONVERT2: EUROPA1
	( cd $(CWD)/NewPlan/ModelLoader/converter/; jam; )


RUN-CAMERA: CONVERT2 IDEA
	( ln -s -f $(IPC_LIB_DIR) $(CWD)/ipc-lib; )
	( ln -s -f $(IPC_DIR) $(CWD)/ipc; )
	( cd ./CameraControl/Model; ./run nominal; )

RUN-CAMERA-FAST: CONVERT2 IDEA-FAST
	( ln -s -f $(IPC_LIB_DIR) $(CWD)/ipc-lib; )
	( ln -s -f $(IPC_DIR) $(CWD)/ipc; )
	( cd ./CameraControl/Model; ./run nominal fast; )

veryclean:
	$(MAKE) -C $(CWD)/IDEA-DEV veryclean
	$(RM) -r -f $(CWD)/$(JAM_VERSION)
	$(RM) -r -f $(CWD)/$(XERCES_VERSION)
	$(RM) -r -f $(CWD)/ACE_wrappers
	$(RM) -r -f $(CWD)/$(IPC_VERSION)
	$(RM) -r -f $(CWD)/ipc
	$(RM) -r -f $(CWD)/CameraControl/Model/ipc-lib

