# -*- Mode: makefile -*-
#      CVS: $Id: Makefile,v 1.2 2005/07/15 22:22:56 rijsman Exp $
#      Tag: $name$
#     Info: $CVSROOT/Copyright.txt

target: install

ifndef IDEA_DIR
   IDEA_DIR= ./../
endif 

include $(IDEA_DIR)/Modules/IPC/ipcMakeOptions.imake

INCLUDE_DIRS := -I./Includes
INCLUDE_DIRS += -I$(IDEA_DIR)/Core/Utilities/Includes
INCLUDE_DIRS += -I$(IDEA_DIR)/TimingService/Includes
INCLUDE_DIRS += -I$(IDEA_DIR)/Modules/IPC/MetaTimingService/Includes
INCLUDE_DIRS += -I$(ACE_ROOT)

LIBS += -L$(ACE_ROOT)/ace -lACE

INCLUDE_DIR :=./Includes

LIBRARY := metacomrelay

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

LIBRARY_SOURCES := MetaCommunicationRelay.cc 
LIBRARY_INCLUDES := ./Includes/MetaCommunicationRelay.hh 

STRIPPED_LIBRARY_INCLUDES := $(subst $(INCLUDE_DIR)/,,$(LIBRARY_INCLUDES) )

LIBRARY_ST_OBJECTS := $(LIBRARY_SOURCES:.cc=$(IDEA_EXT).o)
LIBRARY_SH_OBJECTS := $(LIBRARY_SOURCES:.cc=$(IDEA_EXT)_sh.o)

SHARED_BINARY := metatimeservice_sh$(IDEA_EXT)
STATIC_BINARY := metatimeservice_st$(IDEA_EXT)

BINARY_SOURCES := Main.cc MetaTimingService.cc
BINARY_OBJECTS := $(BINARY_SOURCES:.cc=$(IDEA_EXT).o)

CFLAGS += $(INCLUDE_DIRS)

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

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

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

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

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

$(STATIC_BINARY): utilities_st metaipcrelay_st sharedtimingservice_st $(BINARY_OBJECTS)
	$(CCC) $(BINARY_OBJECTS) $(LIBS) $(INSTALL_LIB_DIR)/libmetacomrelay$(IDEA_EXT).a $(INSTALL_LIB_DIR)/libmetaipcrelay$(IDEA_EXT).a -L$(IPC_LIB_DIR) -lipc  $(INSTALL_LIB_DIR)/libsharedtimingservice$(IDEA_EXT).a  $(INSTALL_LIB_DIR)/libutils$(IDEA_EXT).a -o $@

utilities_sh:
	$(MAKE) -C $(IDEA_DIR)/Core/Utilities install-shared

utilities_st:
	$(MAKE) -C $(IDEA_DIR)/Core/Utilities install-static

metaipcrelay_st:
	$(MAKE) -C $(IDEA_DIR)/Modules/IPC/MetaTimingService install-static


sharedtimingservice_sh:
	$(MAKE) -C $(IDEA_DIR)/TimingService install-shared

sharedtimingservice_st:
	$(MAKE) -C $(IDEA_DIR)/TimingService install-static

install: checkace install-static install-shared
	@echo 'Finished installing IPC meta timing service.'

install-static-lib: installdirs $(STATIC_LIB_NAME)
	$(CP) $(STATIC_LIB_NAME) $(INSTALL_LIB_DIR)/.
	$(CP) -u $(LIBRARY_INCLUDES) $(INSTALL_INCLUDE_DIR)/.

install-static: checkace installdirs install-static-lib 

install-shared: checkace  installdirs $(SHARED_LIB_NAME)
	$(CP) $(SHARED_LIB_NAME).$(IDEA_VERSION_MAJOR).$(IDEA_VERSION_MINOR) $(INSTALL_LIB_DIR)/.
	$(LDCONFIG) -n $(INSTALL_LIB_DIR)

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

veryclean: clean
	$(RM) $(INSTALL_LIB_DIR)/$(STATIC_LIB_NAME) $(INSTALL_LIB_DIR)/$(SHARED_LIB_NAME)*
	$(RM) $(INSTALL_BIN_DIR)/$(STATIC_BINARY)
