# -*- Mode: makefile -*-
#      CVS: $Id: Makefile,v 1.8 2005/12/30 22:37:18 rijsman Exp $
#      Tag: $name$
#     Info: $CVSROOT/Copyright.txt

ifndef IDEA_DIR
   IDEA_DIR=../../../
endif 

target: all

LIBRARY = ipcrelay

REGISTER_LIBRARY = registeripcrelay

include ../ipcMakeOptions.imake

INCLUDE_DIRS := -I./Includes
INCLUDE_DIRS += -I$(IDEA_DIR)/Core/Utilities/Includes
INCLUDE_DIRS += -I$(IDEA_DIR)/Core/Agent/Includes
INCLUDE_DIRS += -I$(IDEA_DIR)/Core/PlanServer/Includes
INCLUDE_DIRS += -I$(IPC_INC_DIR)
INCLUDE_DIRS += -I$(ACE_ROOT)

INCLUDE_DIR :=./Includes

REGISTER_STATIC_LIB_NAME = $(LIB_PREFIX)$(REGISTER_LIBRARY)$(IDEA_EXT).$(STEXT)
REGISTER_SHARED_LIB_NAME = $(LIB_PREFIX)$(REGISTER_LIBRARY)$(IDEA_EXT).$(SHEXT)

STATIC_LIB_NAME = $(LIB_PREFIX)$(LIBRARY)$(IDEA_EXT).$(STEXT)
SHARED_LIB_NAME = $(LIB_PREFIX)$(LIBRARY)$(IDEA_EXT).$(SHEXT)

CURRENT_DIR := $(PWD)

SOURCES := IPCRelay.cc 
INCLUDES := $(wildcard $(INCLUDE_DIR)/*.hh)
STRIPPED_INCLUDES := $(subst $(INCLUDE_DIR)/,,$(INCLUDES) )

REGISTER_SOURCES := RegisterIPCRelay.cc

REGISTER_OBJECTS := $(REGISTER_SOURCES:.cc=$(IDEA_EXT).o)
REGISTER_SH_OBJECTS := $(REGISTER_SOURCES:.cc=_sh$(IDEA_EXT).o)

OBJECTS := $(SOURCES:.cc=$(IDEA_EXT).o)
SH_OBJECTS := $(SOURCES:.cc=_sh$(IDEA_EXT).o)

CFLAGS += $(INCLUDE_DIRS)

LIBS_SH += -L$(INSTALL_LIB_DIR) 
LIBS_SH += -lagent$(IDEA_EXT)

$(STATIC_LIB_NAME): $(OBJECTS)
	$(AR) $@ $?
	$(RANLIB) $@

$(REGISTER_STATIC_LIB_NAME): $(REGISTER_OBJECTS) 
	$(AR) $@ $?
	$(RANLIB) $@

$(SHARED_LIB_NAME): $(SH_OBJECTS)
	$(LD) $(SHARE_LINK_FLAG) -o $@.$(IDEA_VERSION_MAJOR).$(IDEA_VERSION_MINOR) $(SH_OBJECTS) 

$(REGISTER_SHARED_LIB_NAME): $(REGISTER_SH_OBJECTS)
	$(LD) $(SHARE_LINK_FLAG) -o $@.$(IDEA_VERSION_MAJOR).$(IDEA_VERSION_MINOR) $(REGISTER_SH_OBJECTS) 

agent:	
	$(MAKE) -C $(IDEA_DIR)/Core/Agent install-static

$(OBJECTS): %$(IDEA_EXT).o : %.cc
	$(CCC) $(CFLAGS) -c $< -o $@

$(REGISTER_OBJECTS): %$(IDEA_EXT).o : %.cc
	$(CCC) $(CFLAGS) -fno-implicit-templates -c $< -o $@

$(SH_OBJECTS): %_sh$(IDEA_EXT).o : %.cc
	$(CCC) $(SHARE_FLAG) $(CFLAGS) -c $< -o $@

$(REGISTER_SH_OBJECTS): %_sh$(IDEA_EXT).o : %.cc
	$(CCC) $(SHARE_FLAG) $(CFLAGS) -fno-implicit-templates -c $< -o $@

$(IPC_INC_DIR): $(IPC_DIR)
	$(MAKE) -C $(IPC_DIR)/src $(IPC_MAKE_OPTIONS) install

all: $(STATIC_LIB_NAME) $(SHARED_LIB_NAME) $(REGISTER_STATIC_LIB_NAME) $(REGISTER_SHARED_LIB_NAME)

static: $(IPC_INC_DIR) $(STATIC_LIB_NAME) $(REGISTER_STATIC_LIB_NAME)

shared: $(IPC_INC_DIR) $(SHARED_LIB_NAME) $(REGISTER_SHARED_LIB_NAME)

install: install-static install-shared

install-shared: installdirs shared
	$(CP) $(SHARED_LIB_NAME).$(IDEA_VERSION_MAJOR).$(IDEA_VERSION_MINOR) $(INSTALL_LIB_DIR)/.
	$(CP) $(REGISTER_SHARED_LIB_NAME).$(IDEA_VERSION_MAJOR).$(IDEA_VERSION_MINOR) $(INSTALL_LIB_DIR)/.
	$(LDCONFIG) -n $(INSTALL_LIB_DIR)
	$(CP) -u $(INCLUDES) $(INSTALL_INCLUDE_DIR)/.

install-static: installdirs static
	$(CP) $(STATIC_LIB_NAME) $(INSTALL_LIB_DIR)/.
	$(CP) $(REGISTER_STATIC_LIB_NAME) $(INSTALL_LIB_DIR)/.
	$(CP) -u $(INCLUDES) $(INSTALL_INCLUDE_DIR)/.

clean:
	$(RM) *~ *.a *.so* *.o $(INCLUDE_DIR)/*~

veryclean: clean
	$(RM) $(INSTALL_LIB_DIR)/$(REGISTER_STATIC_LIB_NAME) $(INSTALL_LIB_DIR)/$(REGISTER_SHARED_LIB_NAME)*
	$(RM) $(INSTALL_LIB_DIR)/$(STATIC_LIB_NAME) $(INSTALL_LIB_DIR)/$(SHARED_LIB_NAME)*
	$(CD) $(INSTALL_INCLUDE_DIR); $(RM) $(STRIPPED_INCLUDES)
