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

ifndef IDEA_DIR
   IDEA_DIR=../..
endif 

target: all

LIBRARY = reactiveplanner

REGISTER_LIBRARY = registerreactiveplanner

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

include $(IDEA_DIR)/ideaMakeOptions.imake

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 := ReactivePlanner.cc ReactivePlannerFactory.cc ReactivePlannerImpl.cc ReactivePlannerRunner.cc ReactivePlannerUpdatePolicy.cc 
INCLUDES := $(wildcard $(INCLUDE_DIR)/*.hh)

STRIPPED_INCLUDES := $(subst $(INCLUDE_DIR)/,,$(INCLUDES) )

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

REGISTER_SOURCES := RegisterReactivePlanner.cc

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

CFLAGS += $(INCLUDE_DIRS)

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

$(STATIC_LIB_NAME): $(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) 

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

$(REGISTER_OBJECTS): %$(IDEA_EXT).o : %.cc
	$(CCC) $(CFLAGS) -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) -c $< -o $@

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

static: $(STATIC_LIB_NAME) $(REGISTER_STATIC_LIB_NAME)

shared: $(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)
